From f8ef1e94c30d4db0c8e7a648e5f81c113593e3d3 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 23 Jul 2013 22:14:52 -0400 Subject: inch-like progress on defining the API for AudioBackend and separating AudioEngine from this --- libs/ardour/ardour/audioengine.h | 116 +----- libs/ardour/ardour/jack_audiobackend.h | 101 +++++ libs/ardour/ardour/port_manager.h | 50 +++ libs/ardour/audioengine.cc | 708 +++------------------------------ libs/ardour/jack_audiobackend.cc | 597 +++++++++++++++++++++++++++ libs/ardour/panner_manager.cc | 1 + 6 files changed, 816 insertions(+), 757 deletions(-) create mode 100644 libs/ardour/ardour/jack_audiobackend.h create mode 100644 libs/ardour/ardour/port_manager.h create mode 100644 libs/ardour/jack_audiobackend.cc diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 165ad6744f..7f04aa05be 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -69,20 +69,18 @@ public: AudioEngine (std::string client_name, std::string session_uuid); virtual ~AudioEngine (); - jack_client_t* jack() const; - bool connected() const { return _jack != 0; } - - bool is_realtime () const; + static int discover_backends(); + std::vector available_backends() const; ProcessThread* main_thread() const { return _main_thread; } std::string client_name() const { return jack_client_name; } - int reconnect_to_jack (); - int disconnect_from_jack(); - int stop (bool forever = false); int start (); + int pause (); + int freewheel (bool); + bool running() const { return _running; } Glib::Threads::Mutex& process_lock() { return _process_lock; } @@ -120,14 +118,6 @@ public: return jack_last_frame_time (_priv_jack); } - pframes_t transport_frame () const { - const jack_client_t* _priv_jack = _jack; - if (!_running || !_priv_jack) { - return 0; - } - return jack_get_current_transport_frame (_priv_jack); - } - int request_buffer_size (pframes_t); framecnt_t processed_frames() const { return _processed_frames; } @@ -143,62 +133,13 @@ public: void set_session (Session *); void remove_session (); // not a replacement for SessionHandle::session_going_away() - class PortRegistrationFailure : public std::exception { - public: - PortRegistrationFailure (std::string const & why = "") - : reason (why) {} - - ~PortRegistrationFailure () throw () {} - - virtual const char *what() const throw () { return reason.c_str(); } - - private: - std::string reason; - }; - class NoBackendAvailable : public std::exception { public: virtual const char *what() const throw() { return "could not connect to engine backend"; } }; - boost::shared_ptr register_input_port (DataType, const std::string& portname); - boost::shared_ptr register_output_port (DataType, const std::string& portname); - int unregister_port (boost::shared_ptr); - - bool port_is_physical (const std::string&) const; - void request_jack_monitors_input (const std::string&, bool) const; - void split_cycle (pframes_t offset); - int connect (const std::string& source, const std::string& destination); - int disconnect (const std::string& source, const std::string& destination); - int disconnect (boost::shared_ptr); - - const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags); - - bool can_request_hardware_monitoring (); - - ChanCount n_physical_outputs () const; - ChanCount n_physical_inputs () const; - - void get_physical_outputs (DataType type, std::vector&); - void get_physical_inputs (DataType type, std::vector&); - - boost::shared_ptr get_port_by_name (const std::string &); - void port_renamed (const std::string&, const std::string&); - - enum TransportState { - TransportStopped = JackTransportStopped, - TransportRolling = JackTransportRolling, - TransportLooping = JackTransportLooping, - TransportStarting = JackTransportStarting - }; - - void transport_start (); - void transport_stop (); - void transport_locate (framepos_t); - TransportState transport_state (); - int reset_timebase (); void update_latencies (); @@ -263,8 +204,6 @@ _ the regular process() call to session->process() is not made. private: static AudioEngine* _instance; - jack_client_t* volatile _jack; /* could be reset to null by SIGPIPE or another thread */ - std::string jack_client_name; Glib::Threads::Mutex _process_lock; Glib::Threads::Cond session_removed; bool session_remove_pending; @@ -289,6 +228,7 @@ private: Glib::Threads::Thread* m_meter_thread; ProcessThread* _main_thread; + SerializedRCUManager ports; boost::shared_ptr register_port (DataType type, const std::string& portname, bool input); @@ -297,58 +237,14 @@ private: void* process_thread (); void remove_all_ports (); - ChanCount n_physical (unsigned long) const; - void get_physical (DataType, unsigned long, std::vector &); - void port_registration_failure (const std::string& portname); - static int _xrun_callback (void *arg); -#ifdef HAVE_JACK_SESSION - static void _session_callback (jack_session_event_t *event, void *arg); -#endif - static int _graph_order_callback (void *arg); - static void* _process_thread (void *arg); - static int _sample_rate_callback (pframes_t nframes, void *arg); - static int _bufsize_callback (pframes_t nframes, void *arg); - static void _jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int, void*); - static int _jack_sync_callback (jack_transport_state_t, jack_position_t*, void *arg); - static void _freewheel_callback (int , void *arg); - static void _registration_callback (jack_port_id_t, int, void *); - static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); - - void jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int); - int jack_sync_callback (jack_transport_state_t, jack_position_t*); - int jack_bufsize_callback (pframes_t); - int jack_sample_rate_callback (pframes_t); - void freewheel_callback (int); - void connect_callback (jack_port_id_t, jack_port_id_t, int); - - void set_jack_callbacks (); - - static void _latency_callback (jack_latency_callback_mode_t, void*); - void jack_latency_callback (jack_latency_callback_mode_t); - - int connect_to_jack (std::string client_name, std::string session_uuid); - - static void halted (void *); - static void halted_info (jack_status_t,const char*,void *); - void meter_thread (); void start_metering_thread (); void stop_metering_thread (); static gint m_meter_exit; - struct ThreadData { - AudioEngine* engine; - boost::function f; - size_t stacksize; - - ThreadData (AudioEngine* ae, boost::function fp, size_t stacksz) - : engine (ae) , f (fp) , stacksize (stacksz) {} - }; - - static void* _start_process_thread (void*); void parameter_changed (const std::string&); PBD::ScopedConnection config_connection; }; diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h new file mode 100644 index 0000000000..07214ee77a --- /dev/null +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -0,0 +1,101 @@ +/* + 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. + +*/ + +#ifndef __ardour_jack_audiobackend_h__ +#define __ardour_jack_audiobackend_h__ + +#include +#include + +#include + +#include "ardour/audio_backend.h" + +namespace ARDOUR { + +class JACKAudioBackend : public { + public: + JACKAudioBackend (AudioEngine& e); + ~JACKAudioBackend (); + + std::vector enumerate_devices () const; + std::vector available_sample_rates (const std::string& device) const; + std::vector available_buffer_sizes (const std::string& device) const; + + int set_parameters (const Parameters&); + int get_parameters (Parameters&) const; + + int start (); + int stop (); + int pause (); + int freewheel (); + + private: + jack_client_t* volatile _jack; /* could be reset to null by SIGPIPE or another thread */ + std::string jack_client_name; + + static int _xrun_callback (void *arg); + static int _graph_order_callback (void *arg); + static void* _process_thread (void *arg); + static int _sample_rate_callback (pframes_t nframes, void *arg); + static int _bufsize_callback (pframes_t nframes, void *arg); + static void _jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int, void*); + static int _jack_sync_callback (jack_transport_state_t, jack_position_t*, void *arg); + static void _freewheel_callback (int , void *arg); + static void _registration_callback (jack_port_id_t, int, void *); + static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); + static void _latency_callback (jack_latency_callback_mode_t, void*);# + static void halted (void *); + static void halted_info (jack_status_t,const char*,void *); +ifdef HAVE_JACK_SESSION + static void _session_callback (jack_session_event_t *event, void *arg); +#endif + + void jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int); + int jack_sync_callback (jack_transport_state_t, jack_position_t*); + int jack_bufsize_callback (pframes_t); + int jack_sample_rate_callback (pframes_t); + void freewheel_callback (int); + void connect_callback (jack_port_id_t, jack_port_id_t, int); + int process_callback (pframes_t nframes); + void jack_latency_callback (jack_latency_callback_mode_t); + + void set_jack_callbacks (); + int connect_to_jack (std::string client_name, std::string session_uuid); + + struct ThreadData { + JACKAudioBackend* engine; + boost::function f; + size_t stacksize; + + ThreadData (JACKAudioBackend* e, boost::function fp, size_t stacksz) + : engine (e) , f (fp) , stacksize (stacksz) {} + }; + + void* process_thread (); + static void* _start_process_thread (void*); + + ChanCount n_physical (unsigned long) const; + void get_physical (DataType, unsigned long, std::vector &); +}; + +} + +#endif /* __ardour_audiobackend_h__ */ + diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h new file mode 100644 index 0000000000..8a363899ea --- /dev/null +++ b/libs/ardour/ardour/port_manager.h @@ -0,0 +1,50 @@ +namespace ARDOUR + +class PortManager +{ + public: + PortManager() {} + virtual ~PortManager() {} + + /* Port registration */ + + virtual boost::shared_ptr register_input_port (DataType, const std::string& portname) = 0; + virtual boost::shared_ptr register_output_port (DataType, const std::string& portname) = 0; + virtual int unregister_port (boost::shared_ptr) = 0; + + /* Port connectivity */ + + virtual int connect (const std::string& source, const std::string& destination) = 0; + virtual int disconnect (const std::string& source, const std::string& destination) = 0; + virtual int disconnect (boost::shared_ptr) = 0; + + /* other Port management */ + + virtual bool port_is_physical (const std::string&) const = 0; + virtual void get_physical_outputs (DataType type, std::vector&) = 0; + virtual void get_physical_inputs (DataType type, std::vector&) = 0; + virtual boost::shared_ptr get_port_by_name (const std::string &) = 0; + virtual void port_renamed (const std::string&, const std::string&) = 0; + virtual ChanCount n_physical_outputs () const = 0; + virtual ChanCount n_physical_inputs () const = 0; + virtual const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags) = 0; + + /* per-Port monitoring */ + + virtual bool can_request_input_monitoring () const = 0; + virtual void request_input_monitoring (const std::string&, bool) const = 0; + + class PortRegistrationFailure : public std::exception { + public: + PortRegistrationFailure (std::string const & why = "") + : reason (why) {} + + ~PortRegistrationFailure () throw () {} + + virtual const char *what() const throw () { return reason.c_str(); } + + private: + std::string reason; + }; + +}; diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 08de54960c..1166b906f8 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -58,17 +58,9 @@ using namespace PBD; gint AudioEngine::m_meter_exit; AudioEngine* AudioEngine::_instance = 0; -#define GET_PRIVATE_JACK_POINTER(j) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return; } -#define GET_PRIVATE_JACK_POINTER_RET(j,r) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return r; } - -AudioEngine::AudioEngine (string client_name, string session_uuid) - : _jack (0) - , session_remove_pending (false) +AudioEngine::AudioEngine () + : session_remove_pending (false) , session_removal_countdown (-1) - , _running (false) - , _has_run (false) - , _buffer_size (0) - , _frame_rate (0) , monitor_check_interval (INT32_MAX) , last_monitor_check (0) , _processed_frames (0) @@ -80,14 +72,8 @@ AudioEngine::AudioEngine (string client_name, string session_uuid) , _main_thread (0) , ports (new Ports) { - _instance = this; /* singleton */ - g_atomic_int_set (&m_meter_exit, 0); - if (connect_to_jack (client_name, session_uuid)) { - throw NoBackendAvailable (); - } - Port::set_engine (this); } @@ -98,16 +84,19 @@ AudioEngine::~AudioEngine () { Glib::Threads::Mutex::Lock tm (_process_lock); session_removed.signal (); - - if (_running) { - jack_client_close (_jack); - _jack = 0; - } - stop_metering_thread (); } } +AudioEngine* +AudioEngine::create () +{ + if (_instance) { + return _instance; + } + return new AudioEngine; +} + jack_client_t* AudioEngine::jack() const { @@ -131,49 +120,6 @@ _thread_init_callback (void * /*arg*/) MIDI::JackMIDIPort::set_process_thread (pthread_self()); } -static void -ardour_jack_error (const char* msg) -{ - error << "JACK: " << msg << endmsg; -} - -void -AudioEngine::set_jack_callbacks () -{ - GET_PRIVATE_JACK_POINTER (_jack); - - if (jack_on_info_shutdown) { - jack_on_info_shutdown (_priv_jack, halted_info, this); - } else { - jack_on_shutdown (_priv_jack, halted, this); - } - - jack_set_thread_init_callback (_priv_jack, _thread_init_callback, this); - jack_set_process_thread (_priv_jack, _process_thread, this); - jack_set_sample_rate_callback (_priv_jack, _sample_rate_callback, this); - jack_set_buffer_size_callback (_priv_jack, _bufsize_callback, this); - jack_set_graph_order_callback (_priv_jack, _graph_order_callback, this); - jack_set_port_registration_callback (_priv_jack, _registration_callback, this); - jack_set_port_connect_callback (_priv_jack, _connect_callback, this); - jack_set_xrun_callback (_priv_jack, _xrun_callback, this); - jack_set_sync_callback (_priv_jack, _jack_sync_callback, this); - jack_set_freewheel_callback (_priv_jack, _freewheel_callback, this); - - if (_session && _session->config.get_jack_time_master()) { - jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this); - } - -#ifdef HAVE_JACK_SESSION - if( jack_set_session_callback) - jack_set_session_callback (_priv_jack, _session_callback, this); -#endif - - if (jack_set_latency_callback) { - jack_set_latency_callback (_priv_jack, _latency_callback, this); - } - - jack_set_error_function (ardour_jack_error); -} int AudioEngine::start () @@ -240,180 +186,6 @@ AudioEngine::stop (bool forever) } -bool -AudioEngine::get_sync_offset (pframes_t& offset) const -{ - -#ifdef HAVE_JACK_VIDEO_SUPPORT - - GET_PRIVATE_JACK_POINTER_RET (_jack, false); - - jack_position_t pos; - - if (_priv_jack) { - (void) jack_transport_query (_priv_jack, &pos); - - if (pos.valid & JackVideoFrameOffset) { - offset = pos.video_offset; - return true; - } - } -#else - /* keep gcc happy */ - offset = 0; -#endif - - return false; -} - -void -AudioEngine::_jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, - jack_position_t* pos, int new_position, void *arg) -{ - static_cast (arg)->jack_timebase_callback (state, nframes, pos, new_position); -} - -void -AudioEngine::jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, - jack_position_t* pos, int new_position) -{ - if (_jack && _session && _session->synced_to_jack()) { - _session->jack_timebase_callback (state, nframes, pos, new_position); - } -} - -int -AudioEngine::_jack_sync_callback (jack_transport_state_t state, jack_position_t* pos, void* arg) -{ - return static_cast (arg)->jack_sync_callback (state, pos); -} - -int -AudioEngine::jack_sync_callback (jack_transport_state_t state, jack_position_t* pos) -{ - if (_jack && _session) { - return _session->jack_sync_callback (state, pos); - } - - return true; -} - -int -AudioEngine::_xrun_callback (void *arg) -{ - AudioEngine* ae = static_cast (arg); - if (ae->connected()) { - ae->Xrun (); /* EMIT SIGNAL */ - } - return 0; -} - -#ifdef HAVE_JACK_SESSION -void -AudioEngine::_session_callback (jack_session_event_t *event, void *arg) -{ - AudioEngine* ae = static_cast (arg); - if (ae->connected()) { - ae->JackSessionEvent ( event ); /* EMIT SIGNAL */ - } -} -#endif - -int -AudioEngine::_graph_order_callback (void *arg) -{ - AudioEngine* ae = static_cast (arg); - - if (ae->connected() && !ae->port_remove_in_progress) { - ae->GraphReordered (); /* EMIT SIGNAL */ - } - - return 0; -} - -void* -AudioEngine::_process_thread (void *arg) -{ - return static_cast (arg)->process_thread (); -} - -void -AudioEngine::_freewheel_callback (int onoff, void *arg) -{ - static_cast(arg)->freewheel_callback (onoff); -} - -void -AudioEngine::freewheel_callback (int onoff) -{ - _freewheeling = onoff; - - if (onoff) { - _pre_freewheel_mmc_enabled = MIDI::Manager::instance()->mmc()->send_enabled (); - MIDI::Manager::instance()->mmc()->enable_send (false); - } else { - MIDI::Manager::instance()->mmc()->enable_send (_pre_freewheel_mmc_enabled); - } -} - -void -AudioEngine::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg) -{ - AudioEngine* ae = static_cast (arg); - - if (!ae->port_remove_in_progress) { - ae->PortRegisteredOrUnregistered (); /* EMIT SIGNAL */ - } -} - -void -AudioEngine::_latency_callback (jack_latency_callback_mode_t mode, void* arg) -{ - return static_cast (arg)->jack_latency_callback (mode); -} - -void -AudioEngine::_connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn, void* arg) -{ - AudioEngine* ae = static_cast (arg); - ae->connect_callback (id_a, id_b, conn); -} - -void -AudioEngine::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn) -{ - if (port_remove_in_progress) { - return; - } - - GET_PRIVATE_JACK_POINTER (_jack); - - jack_port_t* jack_port_a = jack_port_by_id (_priv_jack, id_a); - jack_port_t* jack_port_b = jack_port_by_id (_priv_jack, id_b); - - boost::shared_ptr port_a; - boost::shared_ptr port_b; - Ports::iterator x; - boost::shared_ptr pr = ports.reader (); - - - x = pr->find (make_port_name_relative (jack_port_name (jack_port_a))); - if (x != pr->end()) { - port_a = x->second; - } - - x = pr->find (make_port_name_relative (jack_port_name (jack_port_b))); - if (x != pr->end()) { - port_b = x->second; - } - - PortConnectedOrDisconnected ( - port_a, jack_port_name (jack_port_a), - port_b, jack_port_name (jack_port_b), - conn == 0 ? false : true - ); /* EMIT SIGNAL */ -} - void AudioEngine::split_cycle (pframes_t offset) { @@ -430,30 +202,6 @@ AudioEngine::split_cycle (pframes_t offset) } } -void* -AudioEngine::process_thread () -{ - /* JACK doesn't do this for us when we use the wait API - */ - - _thread_init_callback (0); - - _main_thread = new ProcessThread; - - while (1) { - GET_PRIVATE_JACK_POINTER_RET(_jack,0); - - pframes_t nframes = jack_cycle_wait (_priv_jack); - - if (process_callback (nframes)) { - return 0; - } - - jack_cycle_signal (_priv_jack, 0); - } - - return 0; -} /** Method called by our ::process_thread when there is work to be done. * @param nframes Number of frames to process. @@ -644,97 +392,6 @@ AudioEngine::process_callback (pframes_t nframes) return 0; } -int -AudioEngine::_sample_rate_callback (pframes_t nframes, void *arg) -{ - return static_cast (arg)->jack_sample_rate_callback (nframes); -} - -int -AudioEngine::jack_sample_rate_callback (pframes_t nframes) -{ - _frame_rate = nframes; - _usecs_per_cycle = (int) floor ((((double) frames_per_cycle() / nframes)) * 1000000.0); - - /* check for monitor input change every 1/10th of second */ - - monitor_check_interval = nframes / 10; - last_monitor_check = 0; - - if (_session) { - _session->set_frame_rate (nframes); - } - - SampleRateChanged (nframes); /* EMIT SIGNAL */ - - return 0; -} - -void -AudioEngine::jack_latency_callback (jack_latency_callback_mode_t mode) -{ - if (_session) { - _session->update_latency (mode == JackPlaybackLatency); - } -} - -int -AudioEngine::_bufsize_callback (pframes_t nframes, void *arg) -{ - return static_cast (arg)->jack_bufsize_callback (nframes); -} - -int -AudioEngine::jack_bufsize_callback (pframes_t nframes) -{ - /* if the size has not changed, this should be a no-op */ - - if (nframes == _buffer_size) { - return 0; - } - - GET_PRIVATE_JACK_POINTER_RET (_jack, 1); - - _buffer_size = nframes; - _usecs_per_cycle = (int) floor ((((double) nframes / frame_rate())) * 1000000.0); - last_monitor_check = 0; - - if (jack_port_type_get_buffer_size) { - _raw_buffer_sizes[DataType::AUDIO] = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_AUDIO_TYPE); - _raw_buffer_sizes[DataType::MIDI] = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_MIDI_TYPE); - } else { - - /* Old version of JACK. - - These crude guesses, see below where we try to get the right answers. - - Note that our guess for MIDI deliberatey tries to overestimate - by a little. It would be nicer if we could get the actual - size from a port, but we have to use this estimate in the - event that there are no MIDI ports currently. If there are - the value will be adjusted below. - */ - - _raw_buffer_sizes[DataType::AUDIO] = nframes * sizeof (Sample); - _raw_buffer_sizes[DataType::MIDI] = nframes * 4 - (nframes/2); - } - - { - Glib::Threads::Mutex::Lock lm (_process_lock); - - boost::shared_ptr p = ports.reader(); - - for (Ports::iterator i = p->begin(); i != p->end(); ++i) { - i->second->reset(); - } - } - - if (_session) { - _session->set_block_size (_buffer_size); - } - - return 0; -} void AudioEngine::stop_metering_thread () @@ -759,8 +416,9 @@ void AudioEngine::meter_thread () { pthread_set_name (X_("meter")); + while (true) { - Glib::usleep (10000); + Glib::usleep (10000); /* 1/100th sec interval */ if (g_atomic_int_get(&m_meter_exit)) { break; } @@ -1032,7 +690,7 @@ AudioEngine::raw_buffer_size (DataType t) ARDOUR::pframes_t AudioEngine::frames_per_cycle () const { - GET_PRIVATE_JACK_POINTER_RET (_jack,0); + GET_PRIVATE_JACK_POINTER_RET (_jack,0); if (_buffer_size == 0) { return jack_get_buffer_size (_jack); } else { @@ -1110,60 +768,6 @@ AudioEngine::get_ports (const string& port_name_pattern, const string& type_name return jack_get_ports (_priv_jack, port_name_pattern.c_str(), type_name_pattern.c_str(), flags); } -void -AudioEngine::halted_info (jack_status_t code, const char* reason, void *arg) -{ - /* called from jack shutdown handler */ - - AudioEngine* ae = static_cast (arg); - bool was_running = ae->_running; - - ae->stop_metering_thread (); - - ae->_running = false; - ae->_buffer_size = 0; - ae->_frame_rate = 0; - ae->_jack = 0; - - if (was_running) { - MIDI::JackMIDIPort::JackHalted (); /* EMIT SIGNAL */ -#ifdef HAVE_JACK_ON_INFO_SHUTDOWN - switch (code) { - case JackBackendError: - ae->Halted(reason); /* EMIT SIGNAL */ - break; - default: - ae->Halted(""); /* EMIT SIGNAL */ - } -#else - ae->Halted(""); /* EMIT SIGNAL */ -#endif - } -} - -void -AudioEngine::halted (void *arg) -{ - cerr << "HALTED by JACK\n"; - - /* called from jack shutdown handler */ - - AudioEngine* ae = static_cast (arg); - bool was_running = ae->_running; - - ae->stop_metering_thread (); - - ae->_running = false; - ae->_buffer_size = 0; - ae->_frame_rate = 0; - ae->_jack = 0; - - if (was_running) { - MIDI::JackMIDIPort::JackHalted (); /* EMIT SIGNAL */ - ae->Halted(""); /* EMIT SIGNAL */ - } -} - void AudioEngine::died () { @@ -1267,34 +871,6 @@ AudioEngine::get_physical_outputs (DataType type, vector& outs) get_physical (type, JackPortIsInput, outs); } -void -AudioEngine::transport_stop () -{ - GET_PRIVATE_JACK_POINTER (_jack); - jack_transport_stop (_priv_jack); -} - -void -AudioEngine::transport_start () -{ - GET_PRIVATE_JACK_POINTER (_jack); - jack_transport_start (_priv_jack); -} - -void -AudioEngine::transport_locate (framepos_t where) -{ - GET_PRIVATE_JACK_POINTER (_jack); - jack_transport_locate (_priv_jack, where); -} - -AudioEngine::TransportState -AudioEngine::transport_state () -{ - GET_PRIVATE_JACK_POINTER_RET (_jack, ((TransportState) JackTransportStopped)); - jack_position_t pos; - return (TransportState) jack_transport_query (_priv_jack, &pos); -} int AudioEngine::reset_timebase () @@ -1310,20 +886,6 @@ AudioEngine::reset_timebase () return 0; } -int -AudioEngine::freewheel (bool onoff) -{ - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); - - if (onoff != _freewheeling) { - return jack_set_freewheel (_priv_jack, onoff); - - } else { - /* already doing what has been asked for */ - return 0; - } -} - void AudioEngine::remove_all_ports () { @@ -1349,148 +911,6 @@ AudioEngine::remove_all_ports () port_remove_in_progress = false; } -int -AudioEngine::connect_to_jack (string client_name, string session_uuid) -{ - EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); - boost::scoped_ptr current_epa; - jack_status_t status; - - /* revert all environment settings back to whatever they were when ardour started - */ - - if (global_epa) { - current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */ - global_epa->restore (); - } - - jack_client_name = client_name; /* might be reset below */ -#ifdef HAVE_JACK_SESSION - if (! session_uuid.empty()) - _jack = jack_client_open (jack_client_name.c_str(), JackSessionID, &status, session_uuid.c_str()); - else -#endif - _jack = jack_client_open (jack_client_name.c_str(), JackNullOption, &status, 0); - - if (_jack == NULL) { - // error message is not useful here - return -1; - } - - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); - - if (status & JackNameNotUnique) { - jack_client_name = jack_get_client_name (_priv_jack); - } - - return 0; -} - -int -AudioEngine::disconnect_from_jack () -{ - GET_PRIVATE_JACK_POINTER_RET (_jack, 0); - - if (_running) { - stop_metering_thread (); - } - - { - Glib::Threads::Mutex::Lock lm (_process_lock); - jack_client_close (_priv_jack); - _jack = 0; - } - - _buffer_size = 0; - _frame_rate = 0; - _raw_buffer_sizes.clear(); - - if (_running) { - _running = false; - MIDI::JackMIDIPort::JackHalted (); /* EMIT SIGNAL */ - Stopped(); /* EMIT SIGNAL */ - } - - return 0; -} - -int -AudioEngine::reconnect_to_jack () -{ - if (_running) { - disconnect_from_jack (); - /* XXX give jackd a chance */ - Glib::usleep (250000); - } - - if (connect_to_jack (jack_client_name, "")) { - error << _("failed to connect to JACK") << endmsg; - return -1; - } - - Ports::iterator i; - - boost::shared_ptr p = ports.reader (); - - for (i = p->begin(); i != p->end(); ++i) { - if (i->second->reestablish ()) { - break; - } - } - - if (i != p->end()) { - /* failed */ - remove_all_ports (); - return -1; - } - - GET_PRIVATE_JACK_POINTER_RET (_jack,-1); - - MIDI::Manager::instance()->reestablish (_priv_jack); - - if (_session) { - _session->reset_jack_connection (_priv_jack); - jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); - _session->set_frame_rate (jack_get_sample_rate (_priv_jack)); - } - - last_monitor_check = 0; - - set_jack_callbacks (); - - if (jack_activate (_priv_jack) == 0) { - _running = true; - _has_run = true; - } else { - return -1; - } - - /* re-establish connections */ - - for (i = p->begin(); i != p->end(); ++i) { - i->second->reconnect (); - } - - MIDI::Manager::instance()->reconnect (); - - Running (); /* EMIT SIGNAL*/ - - start_metering_thread (); - - return 0; -} - -int -AudioEngine::request_buffer_size (pframes_t nframes) -{ - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); - - if (nframes == jack_get_buffer_size (_priv_jack)) { - return 0; - } - - return jack_set_buffer_size (_priv_jack, nframes); -} string AudioEngine::make_port_name_relative (string portname) const @@ -1540,39 +960,6 @@ AudioEngine::port_is_mine (const string& portname) const return true; } -bool -AudioEngine::is_realtime () const -{ - GET_PRIVATE_JACK_POINTER_RET (_jack,false); - return jack_is_realtime (_priv_jack); -} - -int -AudioEngine::create_process_thread (boost::function f, pthread_t* thread, size_t stacksize) -{ - GET_PRIVATE_JACK_POINTER_RET (_jack, 0); - ThreadData* td = new ThreadData (this, f, stacksize); - - if (jack_client_create_thread (_priv_jack, thread, jack_client_real_time_priority (_priv_jack), - jack_is_realtime (_priv_jack), _start_process_thread, td)) { - return -1; - } - - return 0; -} - -void* -AudioEngine::_start_process_thread (void* arg) -{ - ThreadData* td = reinterpret_cast (arg); - boost::function f = td->f; - delete td; - - f (); - - return 0; -} - bool AudioEngine::port_is_physical (const std::string& portname) const { @@ -1588,32 +975,59 @@ AudioEngine::port_is_physical (const std::string& portname) const } void -AudioEngine::request_jack_monitors_input (const std::string& portname, bool yn) const +AudioEngine::destroy () { - GET_PRIVATE_JACK_POINTER(_jack); + delete _instance; + _instance = 0; +} - jack_port_t *port = jack_port_by_name (_priv_jack, portname.c_str()); +int +AudioEngine::discover_backends () +{ + vector backend_modules; + AudioBackend* backend; - if (!port) { - return; - } + Glib::PatternSpec so_extension_pattern("*.so"); + Glib::PatternSpec dylib_extension_pattern("*.dylib"); - jack_port_request_monitor (port, yn); -} + find_matching_files_in_search_path (backend_search_path (), + so_extension_pattern, backend_modules); -void -AudioEngine::update_latencies () -{ - if (jack_recompute_total_latencies) { - GET_PRIVATE_JACK_POINTER (_jack); - jack_recompute_total_latencies (_priv_jack); - } + find_matching_files_in_search_path (backend_search_path (), + dylib_extension_pattern, backend_modules); + + DEBUG_TRACE (DEBUG::Panning, string_compose (_("looking for backends in %1"), backend_search_path().to_string())); + + for (vector::iterator i = backend_modules.begin(); i != backend_modules.end(); ++i) { + if ((backend = backend_discover (*i)) != 0) { + _backends.insert (make_pair (backend->name(), backend)); + } + } } -void -AudioEngine::destroy () +AudioBackend* +AudioEngine::backend_discover (string path) { - delete _instance; - _instance = 0; -} + Glib::Module* module = new Glib::Module(path); + AudioBackend* (*dfunc)(void); + void* func = 0; + + if (!module) { + error << string_compose(_("AudioEngine: cannot load module \"%1\" (%2)"), path, + Glib::Module::get_last_error()) << endmsg; + delete module; + return 0; + } + if (!module->get_symbol("backend_factory", func)) { + error << string_compose(_("AudioEngine: module \"%1\" has no factory function."), path) << endmsg; + error << Glib::Module::get_last_error() << endmsg; + delete module; + return 0; + } + + dfunc = (AudioBackend* (*)(void))func; + AudioBackend* backend = dfunc(); + + return backend; +} diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc new file mode 100644 index 0000000000..b5e21b8207 --- /dev/null +++ b/libs/ardour/jack_audiobackend.cc @@ -0,0 +1,597 @@ +#include "ardour/jack_audiobackend.h" + +#define GET_PRIVATE_JACK_POINTER(j) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return; } +#define GET_PRIVATE_JACK_POINTER_RET(j,r) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return r; } + +int +JACKAudioBackend::start () +{ + Glib::Threads::Mutex::Lock lm (_state_lock); + + if (running()) { + /* already running */ + return 1; + } +} + +int +JACKAudioBackend::stop () +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + + { + Glib::Threads::Mutex::Lock lm (_process_lock); + jack_client_close (_priv_jack); + _jack = 0; + } + + _buffer_size = 0; + _frame_rate = 0; + _raw_buffer_sizes.clear(); + + return 0; +} + +int +JACKAudioBackend::pause () +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + + if (_priv_jack) { + jack_deactivate (_priv_jack); + } + + return 0; +} + +int +JACKAudioBackend::freewheel (bool onoff) +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + + if (onoff == _freewheeling) { + /* already doing what has been asked for */ + + return 0; + } + + return jack_set_freewheel (_priv_jack, onoff); +} + +int +JACKAudioBackend::set_parameters (const Parameters& params) +{ + return 0; +} + +int +JACKAudioBackend::get_parameters (Parameters& params) const +{ + return 0; +} + +/*--- private support methods ---*/ + +int +JACKAudioBackend::connect_to_jack (string client_name, string session_uuid) +{ + EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); + boost::scoped_ptr current_epa; + jack_status_t status; + + /* revert all environment settings back to whatever they were when ardour started + */ + + if (global_epa) { + current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */ + global_epa->restore (); + } + + jack_client_name = client_name; /* might be reset below */ +#ifdef HAVE_JACK_SESSION + if (!session_uuid.empty()) + _jack = jack_client_open (jack_client_name.c_str(), JackSessionID, &status, session_uuid.c_str()); + else +#endif + _jack = jack_client_open (jack_client_name.c_str(), JackNullOption, &status, 0); + + if (_jack == NULL) { + // error message is not useful here + return -1; + } + + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + + if (status & JackNameNotUnique) { + jack_client_name = jack_get_client_name (_priv_jack); + } + + return 0; +} + +int +JACKAudioBackend::disconnect_from_jack () +{ + +int +AudioEngine::reconnect_to_jack () +{ + if (_running) { + disconnect_from_jack (); + /* XXX give jackd a chance */ + Glib::usleep (250000); + } + + if (connect_to_jack (jack_client_name, "")) { + error << _("failed to connect to JACK") << endmsg; + return -1; + } + + Ports::iterator i; + + boost::shared_ptr p = ports.reader (); + + for (i = p->begin(); i != p->end(); ++i) { + if (i->second->reestablish ()) { + break; + } + } + + if (i != p->end()) { + /* failed */ + remove_all_ports (); + return -1; + } + + GET_PRIVATE_JACK_POINTER_RET (_jack,-1); + + MIDI::Manager::instance()->reestablish (_priv_jack); + + if (_session) { + _session->reset_jack_connection (_priv_jack); + jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); + _session->set_frame_rate (jack_get_sample_rate (_priv_jack)); + } + + last_monitor_check = 0; + + set_jack_callbacks (); + + if (jack_activate (_priv_jack) == 0) { + _running = true; + _has_run = true; + } else { + return -1; + } + + /* re-establish connections */ + + for (i = p->begin(); i != p->end(); ++i) { + i->second->reconnect (); + } + + MIDI::Manager::instance()->reconnect (); + + Running (); /* EMIT SIGNAL*/ + + start_metering_thread (); + + return 0; +} + +int +JACKAudioBackend::request_buffer_size (pframes_t nframes) +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + + if (nframes == jack_get_buffer_size (_priv_jack)) { + return 0; + } + + return jack_set_buffer_size (_priv_jack, nframes); +} + +/* --- TRANSPORT STATE MANAGEMENT --- */ + +void +AudioEngine::transport_stop () +{ + GET_PRIVATE_JACK_POINTER (_jack); + jack_transport_stop (_priv_jack); +} + +void +AudioEngine::transport_start () +{ + GET_PRIVATE_JACK_POINTER (_jack); + jack_transport_start (_priv_jack); +} + +void +AudioEngine::transport_locate (framepos_t where) +{ + GET_PRIVATE_JACK_POINTER (_jack); + jack_transport_locate (_priv_jack, where); +} + +framepos_t +AudioEngine::transport_frame () const +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, 0); + return jack_get_current_transport_frame (_priv_jack); +} + +AudioEngine::TransportState +AudioEngine::transport_state () +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, ((TransportState) JackTransportStopped)); + jack_position_t pos; + return (TransportState) jack_transport_query (_priv_jack, &pos); +} + + +/* JACK Callbacks */ + +static void +ardour_jack_error (const char* msg) +{ + error << "JACK: " << msg << endmsg; +} + +void +JACKAudioBackend::set_jack_callbacks () +{ + GET_PRIVATE_JACK_POINTER (_jack); + + if (jack_on_info_shutdown) { + jack_on_info_shutdown (_priv_jack, halted_info, this); + } else { + jack_on_shutdown (_priv_jack, halted, this); + } + + jack_set_thread_init_callback (_priv_jack, _thread_init_callback, this); + jack_set_process_thread (_priv_jack, _process_thread, this); + jack_set_sample_rate_callback (_priv_jack, _sample_rate_callback, this); + jack_set_buffer_size_callback (_priv_jack, _bufsize_callback, this); + jack_set_graph_order_callback (_priv_jack, _graph_order_callback, this); + jack_set_port_registration_callback (_priv_jack, _registration_callback, this); + jack_set_port_connect_callback (_priv_jack, _connect_callback, this); + jack_set_xrun_callback (_priv_jack, _xrun_callback, this); + jack_set_sync_callback (_priv_jack, _jack_sync_callback, this); + jack_set_freewheel_callback (_priv_jack, _freewheel_callback, this); + + if (_session && _session->config.get_jack_time_master()) { + jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this); + } + +#ifdef HAVE_JACK_SESSION + if( jack_set_session_callback) + jack_set_session_callback (_priv_jack, _session_callback, this); +#endif + + if (jack_set_latency_callback) { + jack_set_latency_callback (_priv_jack, _latency_callback, this); + } + + jack_set_error_function (ardour_jack_error); +} + +void +JACKAudioBackend::_jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, + jack_position_t* pos, int new_position, void *arg) +{ + static_cast (arg)->jack_timebase_callback (state, nframes, pos, new_position); +} + +void +JACKAudioBackend::jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, + jack_position_t* pos, int new_position) +{ + if (_jack && _session && _session->synced_to_jack()) { + _session->jack_timebase_callback (state, nframes, pos, new_position); + } +} + +int +JACKAudioBackend::_jack_sync_callback (jack_transport_state_t state, jack_position_t* pos, void* arg) +{ + return static_cast (arg)->jack_sync_callback (state, pos); +} + +int +JACKAudioBackend::jack_sync_callback (jack_transport_state_t state, jack_position_t* pos) +{ + if (_jack && _session) { + return _session->jack_sync_callback (state, pos); + } + + return true; +} + +int +JACKAudioBackend::_xrun_callback (void *arg) +{ + AudioEngine* ae = static_cast (arg); + if (ae->connected()) { + ae->Xrun (); /* EMIT SIGNAL */ + } + return 0; +} + +#ifdef HAVE_JACK_SESSION +void +JACKAudioBackend::_session_callback (jack_session_event_t *event, void *arg) +{ + AudioEngine* ae = static_cast (arg); + if (ae->connected()) { + ae->JackSessionEvent ( event ); /* EMIT SIGNAL */ + } +} +#endif + +int +JACKAudioBackend::_graph_order_callback (void *arg) +{ + AudioEngine* ae = static_cast (arg); + + if (ae->connected() && !ae->port_remove_in_progress) { + ae->GraphReordered (); /* EMIT SIGNAL */ + } + + return 0; +} + +void +JACKAudioBackend::_freewheel_callback (int onoff, void *arg) +{ + static_cast(arg)->freewheel_callback (onoff); +} + +void +JACKAudioBackend::freewheel_callback (int onoff) +{ + _freewheeling = onoff; + + if (onoff) { + _pre_freewheel_mmc_enabled = MIDI::Manager::instance()->mmc()->send_enabled (); + MIDI::Manager::instance()->mmc()->enable_send (false); + } else { + MIDI::Manager::instance()->mmc()->enable_send (_pre_freewheel_mmc_enabled); + } +} + +void +JACKAudioBackend::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg) +{ + AudioEngine* ae = static_cast (arg); + + if (!ae->port_remove_in_progress) { + ae->PortRegisteredOrUnregistered (); /* EMIT SIGNAL */ + } +} + +void +JACKAudioBackend::_latency_callback (jack_latency_callback_mode_t mode, void* arg) +{ + return static_cast (arg)->jack_latency_callback (mode); +} + +void +JACKAudioBackend::_connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn, void* arg) +{ + AudioEngine* ae = static_cast (arg); + ae->connect_callback (id_a, id_b, conn); +} + +void +JACKAudioBackend::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn) +{ + if (port_remove_in_progress) { + return; + } + + GET_PRIVATE_JACK_POINTER (_jack); + + jack_port_t* jack_port_a = jack_port_by_id (_priv_jack, id_a); + jack_port_t* jack_port_b = jack_port_by_id (_priv_jack, id_b); + + boost::shared_ptr port_a; + boost::shared_ptr port_b; + Ports::iterator x; + boost::shared_ptr pr = ports.reader (); + + + x = pr->find (make_port_name_relative (jack_port_name (jack_port_a))); + if (x != pr->end()) { + port_a = x->second; + } + + x = pr->find (make_port_name_relative (jack_port_name (jack_port_b))); + if (x != pr->end()) { + port_b = x->second; + } + + PortConnectedOrDisconnected ( + port_a, jack_port_name (jack_port_a), + port_b, jack_port_name (jack_port_b), + conn == 0 ? false : true + ); /* EMIT SIGNAL */ +} + +void* +JACKAudioBackend::_process_thread (void *arg) +{ + return static_cast (arg)->process_thread (); +} + +void* +JACKAudioBackend::process_thread () +{ + /* JACK doesn't do this for us when we use the wait API + */ + + _thread_init_callback (0); + + _main_thread = new ProcessThread; + + while (1) { + GET_PRIVATE_JACK_POINTER_RET(_jack,0); + + pframes_t nframes = jack_cycle_wait (_priv_jack); + + if (process_callback (nframes)) { + return 0; + } + + jack_cycle_signal (_priv_jack, 0); + } + + return 0; +} + +int +JACKAudioBackend::_sample_rate_callback (pframes_t nframes, void *arg) +{ + return static_cast (arg)->jack_sample_rate_callback (nframes); +} + +int +JACKAudioBackend::jack_sample_rate_callback (pframes_t nframes) +{ + _frame_rate = nframes; + _usecs_per_cycle = (int) floor ((((double) frames_per_cycle() / nframes)) * 1000000.0); + + /* check for monitor input change every 1/10th of second */ + + monitor_check_interval = nframes / 10; + last_monitor_check = 0; + + if (_session) { + _session->set_frame_rate (nframes); + } + + SampleRateChanged (nframes); /* EMIT SIGNAL */ + + return 0; +} + +void +JACKAudioBackend::jack_latency_callback (jack_latency_callback_mode_t mode) +{ + if (_session) { + _session->update_latency (mode == JackPlaybackLatency); + } +} + +int +JACKAudioBackend::_bufsize_callback (pframes_t nframes, void *arg) +{ + return static_cast (arg)->jack_bufsize_callback (nframes); +} + +int +JACKAudioBackend::jack_bufsize_callback (pframes_t nframes) +{ + /* if the size has not changed, this should be a no-op */ + + if (nframes == _buffer_size) { + return 0; + } + + GET_PRIVATE_JACK_POINTER_RET (_jack, 1); + + _buffer_size = nframes; + _usecs_per_cycle = (int) floor ((((double) nframes / frame_rate())) * 1000000.0); + last_monitor_check = 0; + + if (jack_port_type_get_buffer_size) { + _raw_buffer_sizes[DataType::AUDIO] = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_AUDIO_TYPE); + _raw_buffer_sizes[DataType::MIDI] = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_MIDI_TYPE); + } else { + + /* Old version of JACK. + + These crude guesses, see below where we try to get the right answers. + + Note that our guess for MIDI deliberatey tries to overestimate + by a little. It would be nicer if we could get the actual + size from a port, but we have to use this estimate in the + event that there are no MIDI ports currently. If there are + the value will be adjusted below. + */ + + _raw_buffer_sizes[DataType::AUDIO] = nframes * sizeof (Sample); + _raw_buffer_sizes[DataType::MIDI] = nframes * 4 - (nframes/2); + } + + { + Glib::Threads::Mutex::Lock lm (_process_lock); + + boost::shared_ptr p = ports.reader(); + + for (Ports::iterator i = p->begin(); i != p->end(); ++i) { + i->second->reset(); + } + } + + if (_session) { + _session->set_block_size (_buffer_size); + } + + return 0; +} + +void +JACKAudioBackend::halted_info (jack_status_t code, const char* reason, void *arg) +{ + /* called from jack shutdown handler */ + + AudioEngine* ae = static_cast (arg); + bool was_running = ae->_running; + + ae->stop_metering_thread (); + + ae->_running = false; + ae->_buffer_size = 0; + ae->_frame_rate = 0; + ae->_jack = 0; + + if (was_running) { + MIDI::JackMIDIPort::JackHalted (); /* EMIT SIGNAL */ +#ifdef HAVE_JACK_ON_INFO_SHUTDOWN + switch (code) { + case JackBackendError: + ae->Halted(reason); /* EMIT SIGNAL */ + break; + default: + ae->Halted(""); /* EMIT SIGNAL */ + } +#else + ae->Halted(""); /* EMIT SIGNAL */ +#endif + } +} + +void +JACKAudioBackend::halted (void *arg) +{ + cerr << "HALTED by JACK\n"; + + /* called from jack shutdown handler */ + + AudioEngine* ae = static_cast (arg); + bool was_running = ae->_running; + + ae->stop_metering_thread (); + + ae->_running = false; + ae->_buffer_size = 0; + ae->_frame_rate = 0; + ae->_jack = 0; + + if (was_running) { + MIDI::JackMIDIPort::JackHalted (); /* EMIT SIGNAL */ + ae->Halted(""); /* EMIT SIGNAL */ + } +} + diff --git a/libs/ardour/panner_manager.cc b/libs/ardour/panner_manager.cc index c3601d41de..94e8d4ff2f 100644 --- a/libs/ardour/panner_manager.cc +++ b/libs/ardour/panner_manager.cc @@ -79,6 +79,7 @@ PannerManager::discover_panners () panner_discover (*i); } } + int PannerManager::panner_discover (string path) { -- cgit v1.2.3 From 18d352bb6ef1b9b878d2bca2c400d7e221ac6640 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 23 Jul 2013 22:15:21 -0400 Subject: changes to audioengine.h --- libs/ardour/ardour/audioengine.h | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 7f04aa05be..5a064f5183 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -85,38 +85,6 @@ public: Glib::Threads::Mutex& process_lock() { return _process_lock; } - framecnt_t frame_rate () const; - pframes_t frames_per_cycle () const; - - size_t raw_buffer_size(DataType t); - - int usecs_per_cycle () const { return _usecs_per_cycle; } - - bool get_sync_offset (pframes_t & offset) const; - - pframes_t frames_since_cycle_start () { - jack_client_t* _priv_jack = _jack; - if (!_running || !_priv_jack) { - return 0; - } - return jack_frames_since_cycle_start (_priv_jack); - } - - pframes_t frame_time () { - jack_client_t* _priv_jack = _jack; - if (!_running || !_priv_jack) { - return 0; - } - return jack_frame_time (_priv_jack); - } - - pframes_t frame_time_at_cycle_start () { - jack_client_t* _priv_jack = _jack; - if (!_running || !_priv_jack) { - return 0; - } - return jack_last_frame_time (_priv_jack); - } int request_buffer_size (pframes_t); -- cgit v1.2.3 From 17588cc9be3522c806d4c9b734714e0b164b5ae2 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 23 Jul 2013 22:18:22 -0400 Subject: pre-initial version of AudioBackend API (still under heavy development) --- libs/ardour/ardour/audio_backend.h | 242 +++++++++++++++++++++++++++++++++++++ 1 file changed, 242 insertions(+) create mode 100644 libs/ardour/ardour/audio_backend.h diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h new file mode 100644 index 0000000000..d286fbd9c2 --- /dev/null +++ b/libs/ardour/ardour/audio_backend.h @@ -0,0 +1,242 @@ +/* + 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. + +*/ + +#ifndef __ardour_audiobackend_h__ +#define __ardour_audiobackend_h__ + +#include +#include + +#include +#include + +namespace ARDOUR { + +class AudioEngine; + +class AudioBackend { + public: + + enum State { + Stopped = 0x1, + Running = 0x2, + Paused = 0x4, + Freewheeling = 0x8, + }; + + AudioBackend (AudioEngine& e) : engine (e), _state (Stopped) {} + virtual ~AudioBackend () {} + + /** return true if the underlying mechanism/API is still available + * for us to utilize. return false if some or all of the AudioBackend + * API can no longer be effectively used. + */ + virtual bool connected() const = 0; + + /** return true if the callback from the underlying mechanism/API + * (CoreAudio, JACK, ASIO etc.) occurs in a thread subject to realtime + * constraints. Return false otherwise. + */ + virtual bool is_realtime () const = 0; + + /* Discovering devices and parameters */ + + /** Returns a collection of strings identifying devices known + * to this backend. Any of these strings may be used to identify a + * device in other calls to the backend, though any of them may become + * invalid at any time. + */ + virtual std::vector enumerate_devices () const = 0; + /** Returns a collection of float identifying sample rates that are + * potentially usable with the hardware identified by @param device. + * Any of these values may be supplied in other calls to this backend + * as the desired sample rate to use with the name device, but the + * requested sample rate may turn out to be unavailable, or become invalid + * at any time. + */ + virtual std::vector available_sample_rates (const std::string& device) const = 0; + /** Returns a collection of uint32 identifying buffer sizes that are + * potentially usable with the hardware identified by @param device. + * Any of these values may be supplied in other calls to this backend + * as the desired buffer size to use with the name device, but the + * requested buffer size may turn out to be unavailable, or become invalid + * at any time. + */ + virtual std::vector available_buffer_sizes (const std::string& device) const = 0; + + struct Parameters { + std::string device_name; + float sample_rate; + uint32_t buffer_size; + uint32_t systemic_input_latency; + uint32_t systemic_output_latency; + uint32_t input_channels; + uint32_t output_channels; + }; + + virtual int set_parameters (const Parameters&) = 0; + virtual int get_parameters (Parameters&) const = 0; + + /* Basic state control */ + + /** Start using the device named in the most recent call + * to set_parameters(), with the parameters also provided + * to that call. + * + * At some undetermined time after this function is successfully called, + * the backend will start calling the ::process_callback() method of + * the AudioEngine referenced by @param engine. These calls will + * occur in a thread created by and/or under the control of the backend. + * + * Return zero if successful, negative values otherwise. + */ + virtual int start () = 0; + + /** Stop using the device named in the most recent call to set_parameters(). + * + * If the function is successfully called, no subsequent calls to the + * process_callback() of @param engine will be made after the function + * returns, until set_parameters() and start() are called again. + * + * The backend is considered to be un-configured after a successful + * return, and requires a call to set_parameters() before it can be + * start()-ed again. See pause() for a way to avoid this. stop() should + * only be used when reconfiguration is required OR when there are no + * plans to use the backend in the future with a reconfiguration. + * + * Return zero if successful, 1 if the device is not in use, negative values on error + */ + virtual int stop () = 0; + + /** Temporarily cease using the device named in the most recent call to set_parameters(). + * + * If the function is successfully called, no subsequent calls to the + * process_callback() of @param engine will be made after the function + * returns, until start() is called again. + * + * The backend will retain its existing parameter configuration after a successful + * return, and requires a call to set_parameters() before it can be + * start()-ed again. See pause() for a way to avoid this. stop() should + * only be used when reconfiguration is required OR when there are no + * plans to use the backend in the future with a reconfiguration. + * + * Return zero if successful, 1 if the device is not in use, negative values on error + */ + virtual int pause () = 0; + + /** While remaining connected to the device, and without changing its + * configuration, start (or stop) calling the process_callback() of @param engine + * without waiting for the device. + * + * If @param start_stop is true, begin this behaviour, otherwise cease this + * behaviour if it currently occuring, and return to calling + * process_callback() of @param engine by waiting for the device. + * + * Return zero on success, non-zero otherwise. + */ + virtual int freewheel (bool start_stop) = 0; + + /** return the fraction of the time represented by the current buffer + * size that is being used for each buffer process cycle, as a value + * from 0.0 to 1.0 + */ + virtual float get_cpu_load() const = 0; + + /* Transport Control (JACK is the only audio API that currently offers + the concept of shared transport control) + */ + + /** Attempt to change the transport state to TransportRolling. + */ + virtual void transport_start () {} + /** Attempt to change the transport state to TransportStopped. + */ + virtual void transport_stop () {} + /** return the current transport state + */ + virtual TransportState transport_state () { return TransportStopped; } + /** Attempt to locate the transport to @param pos + */ + virtual void transport_locate (framepos_t pos) {} + /** Return the current transport location, in samples measured + * from the origin (defined by the transport time master) + */ + virtual framepos_t transport_frame() { return 0; } + + virtual framecnt_t sample_rate () const; + virtual pframes_t samples_per_cycle () const; + virtual int usecs_per_cycle () const { return _usecs_per_cycle; } + virtual size_t raw_buffer_size (DataType t); + + /* Process time */ + + /** return the time according to the sample clock in use, measured in + * samples since an arbitrary zero time in the past. The value should + * increase monotonically and linearly, without interruption from any + * source (including CPU frequency scaling). + * + * It is extremely likely that any implementation will use a DLL, since + * this function can be called from any thread, at any time, and must be + * able to accurately determine the correct sample time. + */ + virtual pframes_t sample_time () = 0; + + /** return the time according to the sample clock in use when the current + * buffer process cycle began. + * + * Can ONLY be called from within a process() callback tree (which + * implies that it can only be called by a process thread) + */ + virtual pframes_t sample_time_at_cycle_start () = 0; + + /** return the time since the current buffer process cycle started, + * in samples, according to the sample clock in use. + * + * Can ONLY be called from within a process() callback tree (which + * implies that it can only be called by a process thread) + */ + virtual pframes_t samples_since_cycle_start () = 0; + + /** return true if it possible to determine the offset in samples of the + * first video frame that starts within the current buffer process cycle, + * measured from the first sample of the cycle. If returning true, + * set @param offset to that offset. + * + * Eg. if it can be determined that the first video frame within the cycle + * starts 28 samples after the first sample of the cycle, then this method + * should return true and set @param offset to 28. + * + * May be impossible to support outside of JACK, which has specific support + * (in some cases, hardware support) for this feature. + * + * Can ONLY be called from within a process() callback tree (which implies + * that it can only be called by a process thread) + */ + virtual bool get_sync_offset (pframes_t& offset) const { return 0; } + + private: + AudioEngine& engine; + Parameters _last_requested_parameters; + State _state; +}; + +} + +#endif /* __ardour_audiobackend_h__ */ + -- cgit v1.2.3 From 3d95822716d2e52b54a5bdbe7be4478ab034f8db Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 24 Jul 2013 08:36:04 -0400 Subject: more miscellaneous changes for audioengine, all of this is still far from actually compiling --- gtk2_ardour/ardour_ui.cc | 2 +- gtk2_ardour/main.cc | 34 ++--- gtk2_ardour/opts.cc | 10 +- gtk2_ardour/opts.h | 4 +- libs/ardour/ardour/audio_backend.h | 161 ++++++++++++++++++--- libs/ardour/ardour/audioengine.h | 277 +++++++++++++++++-------------------- libs/ardour/ardour/port.h | 6 +- libs/ardour/ardour/port_manager.h | 138 ++++++++++++------ libs/ardour/audioengine.cc | 7 +- libs/ardour/jack_audiobackend.cc | 115 ++++++++++++++- libs/ardour/port.cc | 16 +-- 11 files changed, 510 insertions(+), 260 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 556dee99fe..aa71040f46 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -396,7 +396,7 @@ ARDOUR_UI::create_engine () loading_message (_("Starting audio engine")); try { - engine = new ARDOUR::AudioEngine (ARDOUR_COMMAND_LINE::jack_client_name, ARDOUR_COMMAND_LINE::jack_session_uuid); + engine = new ARDOUR::AudioEngine (ARDOUR_COMMAND_LINE::backend_client_name, ARDOUR_COMMAND_LINE::backend_session_uuid); } catch (...) { diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc index 21e5343979..e5a7e8d580 100644 --- a/gtk2_ardour/main.cc +++ b/gtk2_ardour/main.cc @@ -372,33 +372,29 @@ static void load_custom_fonts() { #endif static gboolean -tell_about_jack_death (void* /* ignored */) +tell_about_backend_death (void* /* ignored */) { if (AudioEngine::instance()->processed_frames() == 0) { /* died during startup */ - MessageDialog msg (_("JACK exited"), false); + MessageDialog msg (string_compose (_("The audio backend (%1) has failed, or terminated"), AudioEngine::instance()->current_backend_name()), false); msg.set_position (Gtk::WIN_POS_CENTER); msg.set_secondary_text (string_compose (_( -"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."), PROGRAM_NAME)); +Click OK to exit %1."), PROGRAM_NAME, AudioEngine::instance()->current_backend_name())); msg.run (); _exit (0); } else { - /* engine has already run, so this is a mid-session JACK death */ - - MessageDialog* msg = manage (new MessageDialog (_("JACK exited"), false)); - msg->set_secondary_text (string_compose (_( -"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"), PROGRAM_NAME)); + /* engine has already run, so this is a mid-session backend death */ + + MessageDialog msg (string_compose (_("The audio backend (%1) has failed, or terminated"), AudioEngine::instance()->current_backend_name()), false); + msg->set_secondary_text (string_compose (_("%2 exited unexpectedly, and without notifying %1."), + PROGRAM_NAME, AudioEngine::instance()->current_backend_name())); msg->present (); } return false; /* do not call again */ @@ -407,15 +403,15 @@ session at this time, because we would lose your connection information.\n"), PR static void sigpipe_handler (int /*signal*/) { - /* XXX fix this so that we do this again after a reconnect to JACK + /* XXX fix this so that we do this again after a reconnect to the backend */ - static bool done_the_jack_thing = false; + static bool done_the_backend_thing = false; - if (!done_the_jack_thing) { + if (!done_the_backend_thing) { AudioEngine::instance()->died (); - g_idle_add (tell_about_jack_death, 0); - done_the_jack_thing = true; + g_idle_add (tell_about_backend_death, 0); + done_the_backend_thing = true; } } diff --git a/gtk2_ardour/opts.cc b/gtk2_ardour/opts.cc index b29f106bfe..90d753af4c 100644 --- a/gtk2_ardour/opts.cc +++ b/gtk2_ardour/opts.cc @@ -32,7 +32,8 @@ using namespace std; string ARDOUR_COMMAND_LINE::session_name = ""; -string ARDOUR_COMMAND_LINE::jack_client_name = "ardour"; +string ARDOUR_COMMAND_LINE::backend_client_name = "ardour"; +string ARDOUR_COMMAND_LINE::backend_session_uuid; bool ARDOUR_COMMAND_LINE::show_key_actions = false; bool ARDOUR_COMMAND_LINE::no_splash = false; bool ARDOUR_COMMAND_LINE::just_version = false; @@ -45,7 +46,6 @@ string ARDOUR_COMMAND_LINE::keybindings_path = ""; /* empty means use builtin de std::string ARDOUR_COMMAND_LINE::menus_file = "ardour.menus"; bool ARDOUR_COMMAND_LINE::finder_invoked_ardour = false; string ARDOUR_COMMAND_LINE::immediate_save; -string ARDOUR_COMMAND_LINE::jack_session_uuid; string ARDOUR_COMMAND_LINE::load_template; bool ARDOUR_COMMAND_LINE::check_announcements = true; @@ -60,7 +60,7 @@ print_help (const char *execname) << _(" -h, --help Print this message\n") << _(" -a, --no-announcements Do not contact website for announcements\n") << _(" -b, --bindings Print all possible keyboard binding names\n") - << _(" -c, --name Use a specific jack client name, default is ardour\n") + << _(" -c, --name Use a specific backend client name, default is ardour\n") << _(" -d, --disable-plugins Disable all plugins in an existing session\n") << _(" -D, --debug Set debug flags. Use \"-D list\" to see available options\n") << _(" -n, --no-splash Do not show splash screen\n") @@ -199,7 +199,7 @@ ARDOUR_COMMAND_LINE::parse_opts (int argc, char *argv[]) break; case 'c': - jack_client_name = optarg; + backend_client_name = optarg; break; case 'C': @@ -215,7 +215,7 @@ ARDOUR_COMMAND_LINE::parse_opts (int argc, char *argv[]) break; case 'U': - jack_session_uuid = optarg; + backend_session_uuid = optarg; break; default: diff --git a/gtk2_ardour/opts.h b/gtk2_ardour/opts.h index b9faa36d72..fdf29157d2 100644 --- a/gtk2_ardour/opts.h +++ b/gtk2_ardour/opts.h @@ -28,7 +28,8 @@ extern std::string session_name; extern bool show_key_actions; extern bool no_splash; extern bool just_version; -extern std::string jack_client_name; +extern std::string backend_client_name; +extern std::string backend_session_uuid; extern bool use_vst; extern bool new_session; extern char* curvetest_file; @@ -39,7 +40,6 @@ extern std::string keybindings_path; extern std::string menus_file; extern bool finder_invoked_ardour; extern std::string immediate_save; -extern std::string jack_session_uuid; extern std::string load_template; extern bool check_announcements; diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index d286fbd9c2..98f6c4d8a7 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -80,24 +80,102 @@ class AudioBackend { */ virtual std::vector available_buffer_sizes (const std::string& device) const = 0; - struct Parameters { - std::string device_name; - float sample_rate; - uint32_t buffer_size; - uint32_t systemic_input_latency; - uint32_t systemic_output_latency; - uint32_t input_channels; - uint32_t output_channels; + /** Returns the maximum number of input channels that are potentially + * usable with the hardware identified by @param device. Any number from 1 + * to the value returned may be supplied in other calls to this backend as + * the input channel count to use with the name device, but the requested + * count may turn out to be unavailable, or become invalid at any time. + */ + virtual uint32_t available_input_channel_count (const std::string& device) const = 0; + + /** Returns the maximum number of output channels that are potentially + * usable with the hardware identified by @param device. Any number from 1 + * to the value returned may be supplied in other calls to this backend as + * the output channel count to use with the name device, but the requested + * count may turn out to be unavailable, or become invalid at any time. + */ + virtual uint32_t available_output_channel_count (const std::string& device) const = 0; + + enum SampleFormat { + Signed16bitInteger, + Signed24bitInteger, + Signed32bitInteger, + FloatingPoint }; - virtual int set_parameters (const Parameters&) = 0; - virtual int get_parameters (Parameters&) const = 0; + /* Set the hardware parameters. + * + * If called when the current state is stopped or paused, + * the changes will not take effect until the state changes to running. + * + * If called while running, the state will change as fast as the + * implementation allows. + * + * All set_*() methods return zero on success, non-zero otherwise. + */ + + /** Set the name of the device to be used + */ + virtual int set_device_name (const std::string&) = 0; + /** Set the sample rate to be used + */ + virtual int set_sample_rate (float) = 0; + /** Set the buffer size to be used. + * + * The device is assumed to use a double buffering scheme, so that one + * buffer's worth of data can be processed by hardware while software works + * on the other buffer. All known suitable audio APIs support this model + * (though ALSA allows for alternate numbers of buffers, and CoreAudio + * doesn't directly expose the concept). + */ + virtual int set_buffer_size (uint32_t) = 0; + /** Set the preferred underlying hardware sample format + * + * This does not change the sample format (32 bit float) read and + * written to the device via the Port API. + */ + virtual int set_sample_format (SampleFormat) = 0; + /** Set the preferred underlying hardware data layout. + * If @param yn is true, then the hardware will interleave + * samples for successive channels; otherwise, the hardware will store + * samples for a single channel contiguously. + * + * Setting this does not change the fact that all data streams + * to and from Ports are mono (essentially, non-interleaved) + */ + virtual int set_interleaved (bool yn) = 0; + /** Set the number of input channels that should be used + */ + virtual int set_input_channels (uint32_t) = 0; + /** Set the number of output channels that should be used + */ + virtual int set_output_channels (uint32_t) = 0; + /** Set the (additional) input latency that cannot be determined via + * the implementation's underlying code (e.g. latency from + * external D-A/D-A converters. Units are samples. + */ + virtual int set_systemic_input_latency (uint32_t) = 0; + /** Set the (additional) output latency that cannot be determined via + * the implementation's underlying code (e.g. latency from + * external D-A/D-A converters. Units are samples. + */ + virtual int set_systemic_output_latency (uint32_t) = 0; + + virtual std::string get_device_name () const = 0; + virtual float get_sample_rate () const = 0; + virtual uint32_t get_buffer_size () const = 0; + virtual SampleFormat get_sample_format () const = 0; + virtual bool get_interleaved () const = 0; + virtual uint32_t get_input_channels () const = 0; + virtual uint32_t get_output_channels () const = 0; + virtual uint32_t get_systemic_input_latency () const = 0; + virtual uint32_t get_systemic_output_latency () const = 0; /* Basic state control */ /** Start using the device named in the most recent call - * to set_parameters(), with the parameters also provided - * to that call. + * to set_device(), with the parameters set by various + * the most recent calls to set_sample_rate() etc. etc. * * At some undetermined time after this function is successfully called, * the backend will start calling the ::process_callback() method of @@ -108,14 +186,14 @@ class AudioBackend { */ virtual int start () = 0; - /** Stop using the device named in the most recent call to set_parameters(). + /** Stop using the device currently in use. * * If the function is successfully called, no subsequent calls to the * process_callback() of @param engine will be made after the function - * returns, until set_parameters() and start() are called again. + * returns, until parameters are reset and start() are called again. * * The backend is considered to be un-configured after a successful - * return, and requires a call to set_parameters() before it can be + * return, and requires calls to set hardware parameters before it can be * start()-ed again. See pause() for a way to avoid this. stop() should * only be used when reconfiguration is required OR when there are no * plans to use the backend in the future with a reconfiguration. @@ -131,10 +209,8 @@ class AudioBackend { * returns, until start() is called again. * * The backend will retain its existing parameter configuration after a successful - * return, and requires a call to set_parameters() before it can be - * start()-ed again. See pause() for a way to avoid this. stop() should - * only be used when reconfiguration is required OR when there are no - * plans to use the backend in the future with a reconfiguration. + * return, and does NOT require any calls to set hardware parameters before it can be + * start()-ed again. * * Return zero if successful, 1 if the device is not in use, negative values on error */ @@ -142,9 +218,15 @@ class AudioBackend { /** While remaining connected to the device, and without changing its * configuration, start (or stop) calling the process_callback() of @param engine - * without waiting for the device. + * without waiting for the device. Once process_callback() has returned, it + * will be called again immediately, thus allowing for faster-than-realtime + * processing. + * + * All registered ports remain in existence and all connections remain + * unaltered. However, any physical ports should NOT be used by the + * process_callback() during freewheeling - the data behaviour is undefined. * - * If @param start_stop is true, begin this behaviour, otherwise cease this + * If @param start_stop is true, begin this behaviour; otherwise cease this * behaviour if it currently occuring, and return to calling * process_callback() of @param engine by waiting for the device. * @@ -155,7 +237,13 @@ class AudioBackend { /** return the fraction of the time represented by the current buffer * size that is being used for each buffer process cycle, as a value * from 0.0 to 1.0 - */ + * + * E.g. if the buffer size represents 5msec and current processing + * takes 1msec, the returned value should be 0.2. + * + * Implementations can feel free to smooth the values returned over + * time (e.g. high pass filtering, or its equivalent). + */ virtual float get_cpu_load() const = 0; /* Transport Control (JACK is the only audio API that currently offers @@ -179,6 +267,16 @@ class AudioBackend { */ virtual framepos_t transport_frame() { return 0; } + /** If @param yn is true, become the time master for any inter-application transport + * timebase, otherwise cease to be the time master for the same. + * + * Return zero on success, non-zero otherwise + * + * JACK is the only currently known audio API with the concept of a shared + * transport timebase. + */ + virtual int set_time_master (bool yn) { return 0; } + virtual framecnt_t sample_rate () const; virtual pframes_t samples_per_cycle () const; virtual int usecs_per_cycle () const { return _usecs_per_cycle; } @@ -229,11 +327,28 @@ class AudioBackend { * that it can only be called by a process thread) */ virtual bool get_sync_offset (pframes_t& offset) const { return 0; } + + /** Create a new thread suitable for running part of the buffer process + * cycle (i.e. Realtime scheduling, memory allocation, etc. etc are all + * correctly setup), with a stack size given in bytes by specified @param + * stacksize. The thread will begin executing @param func, and will exit + * when that function returns. + */ + virtual int create_process_thread (boost::function func, pthread_t*, size_t stacksize) = 0; private: AudioEngine& engine; - Parameters _last_requested_parameters; State _state; + + std::string _target_device; + float _target_sample_rate; + uint32_t _target_buffer_size; + SampleFormat _target_sample_format; + bool _target_interleaved; + uint32_t _target_input_channels; + uint32_t _target_output_channels; + uin32_t _target_systemic_input_latency; + uin32_t _target_systemic_input_latency; }; } diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 5a064f5183..a3f16ff376 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -33,7 +33,6 @@ #include -#include "pbd/rcu.h" #include "pbd/signals.h" #include "pbd/stacktrace.h" @@ -60,163 +59,145 @@ class MidiPort; class Port; class Session; class ProcessThread; +class AudioBackend; class AudioEngine : public SessionHandlePtr { public: - typedef std::map > Ports; - - AudioEngine (std::string client_name, std::string session_uuid); - virtual ~AudioEngine (); - - static int discover_backends(); - std::vector available_backends() const; - - ProcessThread* main_thread() const { return _main_thread; } - - std::string client_name() const { return jack_client_name; } - - int stop (bool forever = false); - int start (); - int pause (); - int freewheel (bool); + typedef std::map > Ports; - bool running() const { return _running; } - - Glib::Threads::Mutex& process_lock() { return _process_lock; } - - - int request_buffer_size (pframes_t); - - framecnt_t processed_frames() const { return _processed_frames; } - - float get_cpu_load() { - jack_client_t* _priv_jack = _jack; - if (!_running || !_priv_jack) { - return 0; - } - return jack_cpu_load (_priv_jack); - } - - void set_session (Session *); - void remove_session (); // not a replacement for SessionHandle::session_going_away() - - class NoBackendAvailable : public std::exception { - public: - virtual const char *what() const throw() { return "could not connect to engine backend"; } - }; - - void split_cycle (pframes_t offset); - - int reset_timebase (); - - void update_latencies (); - - /* start/stop freewheeling */ - - int freewheel (bool onoff); - bool freewheeling() const { return _freewheeling; } - - /* this signal is sent for every process() cycle while freewheeling. -_ the regular process() call to session->process() is not made. - */ - - PBD::Signal1 Freewheel; - - PBD::Signal0 Xrun; - - /* this signal is if JACK notifies us of a graph order event */ + AudioEngine (std::string client_name, std::string session_uuid); + virtual ~AudioEngine (); + + static int discover_backends(); + std::vector available_backends() const; + std::string current_backend_name () const; - PBD::Signal0 GraphReordered; + ProcessThread* main_thread() const { return _main_thread; } + + std::string client_name() const { return backend_client_name; } + + int stop (bool forever = false); + int start (); + int pause (); + int freewheel (bool onoff); + bool freewheeling() const { return _freewheeling; } + + bool running() const { return _running; } + Glib::Threads::Mutex& process_lock() { return _process_lock; } + + int request_buffer_size (pframes_t); + + framecnt_t processed_frames() const { return _processed_frames; } + + float get_cpu_load(); + + void set_session (Session *); + void remove_session (); // not a replacement for SessionHandle::session_going_away() + + class NoBackendAvailable : public std::exception { + public: + virtual const char *what() const throw() { return "could not connect to engine backend"; } + }; + + void split_cycle (pframes_t offset); + + int reset_timebase (); + + void update_latencies (); + + /* this signal is sent for every process() cycle while freewheeling. + (the regular process() call to session->process() is not made) + */ + + PBD::Signal1 Freewheel; + + PBD::Signal0 Xrun; + + /* this signal is if the backend notifies us of a graph order event */ + + PBD::Signal0 GraphReordered; + #ifdef HAVE_JACK_SESSION - PBD::Signal1 JackSessionEvent; + PBD::Signal1 JackSessionEvent; #endif - - - /* this signal is emitted if the sample rate changes */ - - PBD::Signal1 SampleRateChanged; - - /* this signal is sent if JACK ever disconnects us */ - - PBD::Signal1 Halted; - - /* these two are emitted when the engine itself is - started and stopped - */ - - PBD::Signal0 Running; - PBD::Signal0 Stopped; - - /** Emitted if a JACK port is registered or unregistered */ - PBD::Signal0 PortRegisteredOrUnregistered; - - /** Emitted if a JACK port is connected or disconnected. - * The Port parameters are the ports being connected / disconnected, or 0 if they are not known to Ardour. - * The std::string parameters are the (long) port names. - * The bool parameter is true if ports were connected, or false for disconnected. - */ - PBD::Signal5, std::string, boost::weak_ptr, std::string, bool> PortConnectedOrDisconnected; - - std::string make_port_name_relative (std::string) const; - std::string make_port_name_non_relative (std::string) const; - bool port_is_mine (const std::string&) const; - - static AudioEngine* instance() { return _instance; } - static void destroy(); - void died (); - - int create_process_thread (boost::function, pthread_t*, size_t stacksize); - -private: - static AudioEngine* _instance; - - Glib::Threads::Mutex _process_lock; - Glib::Threads::Cond session_removed; - bool session_remove_pending; - frameoffset_t session_removal_countdown; - gain_t session_removal_gain; - gain_t session_removal_gain_step; - bool _running; - bool _has_run; - mutable framecnt_t _buffer_size; - std::map _raw_buffer_sizes; - mutable framecnt_t _frame_rate; - /// number of frames between each check for changes in monitor input - framecnt_t monitor_check_interval; - /// time of the last monitor check in frames - framecnt_t last_monitor_check; - /// the number of frames processed since start() was called - framecnt_t _processed_frames; - bool _freewheeling; - bool _pre_freewheel_mmc_enabled; - int _usecs_per_cycle; - bool port_remove_in_progress; - Glib::Threads::Thread* m_meter_thread; - ProcessThread* _main_thread; - - - SerializedRCUManager ports; - - boost::shared_ptr register_port (DataType type, const std::string& portname, bool input); - - int process_callback (pframes_t nframes); - void* process_thread (); - void remove_all_ports (); - - void port_registration_failure (const std::string& portname); - - void meter_thread (); - void start_metering_thread (); - void stop_metering_thread (); - - static gint m_meter_exit; - - void parameter_changed (const std::string&); - PBD::ScopedConnection config_connection; + + /* this signal is emitted if the sample rate changes */ + + PBD::Signal1 SampleRateChanged; + + /* this signal is sent if the backend ever disconnects us */ + + PBD::Signal1 Halted; + + /* these two are emitted when the engine itself is + started and stopped + */ + + PBD::Signal0 Running; + PBD::Signal0 Stopped; + + /** Emitted if a Port is registered or unregistered */ + PBD::Signal0 PortRegisteredOrUnregistered; + + /** Emitted if a Port is connected or disconnected. + * The Port parameters are the ports being connected / disconnected, or 0 if they are not known to Ardour. + * The std::string parameters are the (long) port names. + * The bool parameter is true if ports were connected, or false for disconnected. + */ + PBD::Signal5, std::string, boost::weak_ptr, std::string, bool> PortConnectedOrDisconnected; + + std::string make_port_name_relative (std::string) const; + std::string make_port_name_non_relative (std::string) const; + bool port_is_mine (const std::string&) const; + + static AudioEngine* instance() { return _instance; } + static void destroy(); + void died (); + + /* The backend will cause this at the appropriate time(s) + */ + int process_callback (pframes_t nframes); + + private: + static AudioEngine* _instance; + + Glib::Threads::Mutex _process_lock; + Glib::Threads::Cond session_removed; + bool session_remove_pending; + frameoffset_t session_removal_countdown; + gain_t session_removal_gain; + gain_t session_removal_gain_step; + bool _running; + bool _has_run; + mutable framecnt_t _buffer_size; + std::map _raw_buffer_sizes; + mutable framecnt_t _frame_rate; + /// number of frames between each check for changes in monitor input + framecnt_t monitor_check_interval; + /// time of the last monitor check in frames + framecnt_t last_monitor_check; + /// the number of frames processed since start() was called + framecnt_t _processed_frames; + bool _freewheeling; + bool _pre_freewheel_mmc_enabled; + int _usecs_per_cycle; + bool port_remove_in_progress; + Glib::Threads::Thread* m_meter_thread; + ProcessThread* _main_thread; + + + void meter_thread (); + void start_metering_thread (); + void stop_metering_thread (); + + static gint m_meter_exit; + + void parameter_changed (const std::string&); + PBD::ScopedConnection config_connection; }; - + } // namespace ARDOUR #endif /* __ardour_audioengine_h__ */ diff --git a/libs/ardour/ardour/port.h b/libs/ardour/ardour/port.h index e225117d94..5afe8e2806 100644 --- a/libs/ardour/ardour/port.h +++ b/libs/ardour/ardour/port.h @@ -90,11 +90,11 @@ public: virtual int connect (Port *); int disconnect (Port *); - void ensure_jack_monitors_input (bool); - bool jack_monitoring_input () const; + void request_monitor_input (bool); + void ensure_monitor_input (bool); + bool monitoring_input () const; int reestablish (); int reconnect (); - void request_jack_monitors_input (bool); bool last_monitor() const { return _last_monitor; } void set_last_monitor (bool yn) { _last_monitor = yn; } diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index 8a363899ea..f6aedc02a1 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -1,50 +1,108 @@ -namespace ARDOUR +/* + 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. + +*/ + +#ifndef __libardour_port_manager_h__ +#define __libardour_port_manager_h__ + +#include +#include +#include +#include + +#include + +#include + +#include "pbd/rcu.h" + +#include "ardour/chan_count.h" + +namespace ARDOUR { + +class Port; class PortManager { public: - PortManager() {} - virtual ~PortManager() {} - - /* Port registration */ - - virtual boost::shared_ptr register_input_port (DataType, const std::string& portname) = 0; - virtual boost::shared_ptr register_output_port (DataType, const std::string& portname) = 0; - virtual int unregister_port (boost::shared_ptr) = 0; - - /* Port connectivity */ - - virtual int connect (const std::string& source, const std::string& destination) = 0; - virtual int disconnect (const std::string& source, const std::string& destination) = 0; - virtual int disconnect (boost::shared_ptr) = 0; + typedef std::map > Ports; + + PortManager(); + virtual ~PortManager() {} + + /* Port registration */ + + virtual boost::shared_ptr register_input_port (DataType, const std::string& portname) = 0; + virtual boost::shared_ptr register_output_port (DataType, const std::string& portname) = 0; + virtual int unregister_port (boost::shared_ptr) = 0; + + /* Port connectivity */ + + virtual int connect (const std::string& source, const std::string& destination) = 0; + virtual int disconnect (const std::string& source, const std::string& destination) = 0; + virtual int disconnect (boost::shared_ptr) = 0; + + /* other Port management */ + + virtual bool port_is_physical (const std::string&) const = 0; + virtual void get_physical_outputs (DataType type, std::vector&) = 0; + virtual void get_physical_inputs (DataType type, std::vector&) = 0; + virtual boost::shared_ptr get_port_by_name (const std::string &) = 0; + virtual void port_renamed (const std::string&, const std::string&) = 0; + virtual ChanCount n_physical_outputs () const = 0; + virtual ChanCount n_physical_inputs () const = 0; + virtual const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags) = 0; + + void remove_all_ports (); + + /* per-Port monitoring */ + + virtual bool can_request_input_monitoring () const = 0; + virtual void request_input_monitoring (const std::string&, bool) const = 0; + + class PortRegistrationFailure : public std::exception { + public: + PortRegistrationFailure (std::string const & why = "") + : reason (why) {} - /* other Port management */ + ~PortRegistrationFailure () throw () {} - virtual bool port_is_physical (const std::string&) const = 0; - virtual void get_physical_outputs (DataType type, std::vector&) = 0; - virtual void get_physical_inputs (DataType type, std::vector&) = 0; - virtual boost::shared_ptr get_port_by_name (const std::string &) = 0; - virtual void port_renamed (const std::string&, const std::string&) = 0; - virtual ChanCount n_physical_outputs () const = 0; - virtual ChanCount n_physical_inputs () const = 0; - virtual const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags) = 0; - - /* per-Port monitoring */ + virtual const char *what() const throw () { return reason.c_str(); } - virtual bool can_request_input_monitoring () const = 0; - virtual void request_input_monitoring (const std::string&, bool) const = 0; + private: + std::string reason; + }; - class PortRegistrationFailure : public std::exception { - public: - PortRegistrationFailure (std::string const & why = "") - : reason (why) {} - - ~PortRegistrationFailure () throw () {} - - virtual const char *what() const throw () { return reason.c_str(); } - - private: - std::string reason; - }; + protected: + typedef void* PortHandle; + PortHandle register (const std::string&, DataType type, Port::Flags); + void unregister (PortHandle); + bool connected (PortHandle); + int disconnect_all (PortHandle); + bool connected_to (PortHandle, const std::string); + int get_connections (PortHandle, std::vector&); + private: + SerializedRCUManager ports; + boost::shared_ptr register_port (DataType type, const std::string& portname, bool input); + void port_registration_failure (const std::string& portname); }; + +} + +#endif /* __libardour_port_manager_h__ */ diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 1166b906f8..25a55b5aaf 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -70,7 +70,6 @@ AudioEngine::AudioEngine () , port_remove_in_progress (false) , m_meter_thread (0) , _main_thread (0) - , ports (new Ports) { g_atomic_int_set (&m_meter_exit, 0); @@ -330,7 +329,7 @@ AudioEngine::process_callback (pframes_t nframes) bool x; - if (i->second->last_monitor() != (x = i->second->jack_monitoring_input ())) { + if (i->second->last_monitor() != (x = i->second->monitoring_input ())) { i->second->set_last_monitor (x); /* XXX I think this is dangerous, due to a likely mutex in the signal handlers ... @@ -878,9 +877,9 @@ AudioEngine::reset_timebase () GET_PRIVATE_JACK_POINTER_RET (_jack, -1); if (_session) { if (_session->config.get_jack_time_master()) { - return jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this); + _backend->set_time_master (true); } else { - return jack_release_timebase (_jack); + _backend->set_time_master (false); } } return 0; diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index b5e21b8207..2d614a80a0 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -114,7 +114,7 @@ JACKAudioBackend::disconnect_from_jack () { int -AudioEngine::reconnect_to_jack () +JACKAudioBackend::reconnect_to_jack () { if (_running) { disconnect_from_jack (); @@ -194,41 +194,116 @@ JACKAudioBackend::request_buffer_size (pframes_t nframes) /* --- TRANSPORT STATE MANAGEMENT --- */ void -AudioEngine::transport_stop () +JACKAudioBackend::transport_stop () { GET_PRIVATE_JACK_POINTER (_jack); jack_transport_stop (_priv_jack); } void -AudioEngine::transport_start () +JACKAudioBackend::transport_start () { GET_PRIVATE_JACK_POINTER (_jack); jack_transport_start (_priv_jack); } void -AudioEngine::transport_locate (framepos_t where) +JACKAudioBackend::transport_locate (framepos_t where) { GET_PRIVATE_JACK_POINTER (_jack); jack_transport_locate (_priv_jack, where); } framepos_t -AudioEngine::transport_frame () const +JACKAudioBackend::transport_frame () const { GET_PRIVATE_JACK_POINTER_RET (_jack, 0); return jack_get_current_transport_frame (_priv_jack); } -AudioEngine::TransportState -AudioEngine::transport_state () +JACKAudioBackend::TransportState +JACKAudioBackend::transport_state () { GET_PRIVATE_JACK_POINTER_RET (_jack, ((TransportState) JackTransportStopped)); jack_position_t pos; return (TransportState) jack_transport_query (_priv_jack, &pos); } +int +JACKAudioBackend::set_time_master (bool yn) +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + if (yn) { + return jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this); + } else { + return jack_release_timebase (_jack); + } +} + +/* process-time */ + +framecnt_t frame_rate () const; +pframes_t frames_per_cycle () const; + +size_t raw_buffer_size(DataType t); + +int usecs_per_cycle () const { return _usecs_per_cycle; } + +bool +JACKAudioBackend::get_sync_offset (pframes_t& offset) const +{ + +#ifdef HAVE_JACK_VIDEO_SUPPORT + + GET_PRIVATE_JACK_POINTER_RET (_jack, false); + + jack_position_t pos; + + if (_priv_jack) { + (void) jack_transport_query (_priv_jack, &pos); + + if (pos.valid & JackVideoFrameOffset) { + offset = pos.video_offset; + return true; + } + } +#else + /* keep gcc happy */ + offset = 0; +#endif + + return false; +} + +pframes_t +JACKAudioBackend::frames_since_cycle_start () +{ + jack_client_t* _priv_jack = _jack; + if (!_running || !_priv_jack) { + return 0; + } + return jack_frames_since_cycle_start (_priv_jack); +} + +pframes_t +JACKAudioBackend::frame_time () +{ + jack_client_t* _priv_jack = _jack; + if (!_running || !_priv_jack) { + return 0; + } + return jack_frame_time (_priv_jack); +} + +pframes_t +JACKAudioBackend::frame_time_at_cycle_start () +{ + jack_client_t* _priv_jack = _jack; + if (!_running || !_priv_jack) { + return 0; + } + return jack_last_frame_time (_priv_jack); +} /* JACK Callbacks */ @@ -418,6 +493,32 @@ JACKAudioBackend::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, in ); /* EMIT SIGNAL */ } +int +JACKAudioBackend::create_process_thread (boost::function f, pthread_t* thread, size_t stacksize) +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, 0); + ThreadData* td = new ThreadData (this, f, stacksize); + + if (jack_client_create_thread (_priv_jack, thread, jack_client_real_time_priority (_priv_jack), + jack_is_realtime (_priv_jack), _start_process_thread, td)) { + return -1; + } + + return 0; +} + +void* +JACKAudioBackend::_start_process_thread (void* arg) +{ + ThreadData* td = reinterpret_cast (arg); + boost::function f = td->f; + delete td; + + f (); + + return 0; +} + void* JACKAudioBackend::_process_thread (void *arg) { diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index 3473b73617..859f1ff8ab 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -242,13 +242,19 @@ Port::set_engine (AudioEngine* e) } void -Port::ensure_jack_monitors_input (bool yn) +Port::request_monitor_input (bool yn) +{ + jack_port_request_monitor (_jack_port, yn); +} + +void +Port::ensure_monitor_input (bool yn) { jack_port_ensure_monitor (_jack_port, yn); } bool -Port::jack_monitoring_input () const +Port::monitoring_input () const { return jack_port_monitoring_input (_jack_port); } @@ -490,12 +496,6 @@ Port::set_name (std::string const & n) return r; } -void -Port::request_jack_monitors_input (bool yn) -{ - jack_port_request_monitor (_jack_port, yn); -} - bool Port::physically_connected () const { -- cgit v1.2.3 From 9ac6bb9befa047a6c349bed02d40da84600b67cc Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 24 Jul 2013 19:29:45 -0400 Subject: part-way through getting the audioengine changes to compile --- libs/ardour/ardour/audio_backend.h | 35 +- libs/ardour/ardour/audio_diskstream.h | 4 +- libs/ardour/ardour/audio_port.h | 2 +- libs/ardour/ardour/audioengine.h | 62 ++- libs/ardour/ardour/backend_search_path.h | 39 ++ libs/ardour/ardour/data_type.h | 27 +- libs/ardour/ardour/directory_names.h | 1 + libs/ardour/ardour/jack_audiobackend.h | 12 + libs/ardour/ardour/midi_buffer.h | 1 - libs/ardour/ardour/midi_port.h | 2 +- libs/ardour/ardour/port.h | 26 +- libs/ardour/ardour/port_engine.h | 139 +++++ libs/ardour/ardour/port_manager.h | 60 +- libs/ardour/ardour/types.h | 19 + libs/ardour/audio_diskstream.cc | 12 +- libs/ardour/audio_port.cc | 10 +- libs/ardour/audioengine.cc | 706 +++++++----------------- libs/ardour/backend_search_path.cc | 45 ++ libs/ardour/bundle.cc | 13 +- libs/ardour/capturing_processor.cc | 2 +- libs/ardour/directory_names.cc | 1 + libs/ardour/export_channel.cc | 2 +- libs/ardour/export_graph_builder.cc | 4 +- libs/ardour/globals.cc | 2 +- libs/ardour/internal_send.cc | 2 +- libs/ardour/jack_audiobackend.cc | 76 ++- libs/ardour/ltc_slave.cc | 14 +- libs/ardour/midi_buffer.cc | 49 -- libs/ardour/midi_diskstream.cc | 4 +- libs/ardour/midi_port.cc | 42 +- libs/ardour/midi_ui.cc | 2 +- libs/ardour/mtc_slave.cc | 8 +- libs/ardour/port.cc | 46 +- libs/ardour/wscript | 21 +- libs/midi++2/jack_midi_port.cc | 123 ++--- libs/midi++2/manager.cc | 24 +- libs/midi++2/midi++/jack_midi_port.h | 21 +- libs/midi++2/midi++/manager.h | 10 +- libs/midi++2/midi++/mmc.h | 8 +- libs/midi++2/mmc.cc | 8 +- libs/midi++2/wscript | 3 +- libs/surfaces/mackie/mackie_control_protocol.cc | 2 +- libs/surfaces/mackie/surface_port.cc | 6 +- 43 files changed, 854 insertions(+), 841 deletions(-) create mode 100644 libs/ardour/ardour/backend_search_path.h create mode 100644 libs/ardour/ardour/port_engine.h create mode 100644 libs/ardour/backend_search_path.cc diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 98f6c4d8a7..7ae48c4c46 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -33,16 +33,16 @@ class AudioEngine; class AudioBackend { public: - enum State { - Stopped = 0x1, - Running = 0x2, - Paused = 0x4, - Freewheeling = 0x8, - }; - - AudioBackend (AudioEngine& e) : engine (e), _state (Stopped) {} + AudioBackend (AudioEngine& e) : engine (e){} virtual ~AudioBackend () {} + /** Return the name of this backend. + * + * Should use a well-known, unique term. Expected examples + * might include "JACK", "CoreAudio", "ASIO" etc. + */ + virtual std::string name() const = 0; + /** return true if the underlying mechanism/API is still available * for us to utilize. return false if some or all of the AudioBackend * API can no longer be effectively used. @@ -261,7 +261,7 @@ class AudioBackend { virtual TransportState transport_state () { return TransportStopped; } /** Attempt to locate the transport to @param pos */ - virtual void transport_locate (framepos_t pos) {} + virtual void transport_locate (framepos_t /*pos*/) {} /** Return the current transport location, in samples measured * from the origin (defined by the transport time master) */ @@ -275,11 +275,11 @@ class AudioBackend { * JACK is the only currently known audio API with the concept of a shared * transport timebase. */ - virtual int set_time_master (bool yn) { return 0; } + virtual int set_time_master (bool /*yn*/) { return 0; } virtual framecnt_t sample_rate () const; virtual pframes_t samples_per_cycle () const; - virtual int usecs_per_cycle () const { return _usecs_per_cycle; } + virtual int usecs_per_cycle () const { return 1000000 * (samples_per_cycle() / sample_rate()); } virtual size_t raw_buffer_size (DataType t); /* Process time */ @@ -326,7 +326,7 @@ class AudioBackend { * Can ONLY be called from within a process() callback tree (which implies * that it can only be called by a process thread) */ - virtual bool get_sync_offset (pframes_t& offset) const { return 0; } + virtual bool get_sync_offset (pframes_t& /*offset*/) const { return false; } /** Create a new thread suitable for running part of the buffer process * cycle (i.e. Realtime scheduling, memory allocation, etc. etc are all @@ -338,17 +338,6 @@ class AudioBackend { private: AudioEngine& engine; - State _state; - - std::string _target_device; - float _target_sample_rate; - uint32_t _target_buffer_size; - SampleFormat _target_sample_format; - bool _target_interleaved; - uint32_t _target_input_channels; - uint32_t _target_output_channels; - uin32_t _target_systemic_input_latency; - uin32_t _target_systemic_input_latency; }; } diff --git a/libs/ardour/ardour/audio_diskstream.h b/libs/ardour/ardour/audio_diskstream.h index cbc6b93fe0..21efc5c20c 100644 --- a/libs/ardour/ardour/audio_diskstream.h +++ b/libs/ardour/ardour/audio_diskstream.h @@ -114,7 +114,7 @@ class AudioDiskstream : public Diskstream XMLNode& get_state(void); int set_state(const XMLNode& node, int version); - void request_jack_monitors_input (bool); + void request_input_monitoring (bool); static void swap_by_ptr (Sample *first, Sample *last) { while (first < last) { @@ -159,7 +159,7 @@ class AudioDiskstream : public Diskstream std::string name; bool is_physical () const; - void request_jack_monitors_input (bool) const; + void request_input_monitoring (bool) const; }; /** Information about one of our channels */ diff --git a/libs/ardour/ardour/audio_port.h b/libs/ardour/ardour/audio_port.h index 7f084a5c85..a473dda418 100644 --- a/libs/ardour/ardour/audio_port.h +++ b/libs/ardour/ardour/audio_port.h @@ -48,7 +48,7 @@ class AudioPort : public Port protected: friend class AudioEngine; - AudioPort (std::string const &, Flags); + AudioPort (std::string const &, PortFlags); /* special access for engine only */ Sample* engine_get_whole_audio_buffer (); diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index a3f16ff376..422e12e9d8 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -47,6 +47,7 @@ #include "ardour/session_handle.h" #include "ardour/types.h" #include "ardour/chan_count.h" +#include "ardour/port_manager.h" #ifdef HAVE_JACK_SESSION #include @@ -61,37 +62,60 @@ class Session; class ProcessThread; class AudioBackend; -class AudioEngine : public SessionHandlePtr +class AudioEngine : public SessionHandlePtr, public PortManager { public: - typedef std::map > Ports; - - AudioEngine (std::string client_name, std::string session_uuid); + + static AudioEngine* create (const std::string& client_name, const std::string& session_uuid); + virtual ~AudioEngine (); - static int discover_backends(); + int discover_backends(); std::vector available_backends() const; std::string current_backend_name () const; + int set_backend (const std::string&); ProcessThread* main_thread() const { return _main_thread; } std::string client_name() const { return backend_client_name; } - - int stop (bool forever = false); - int start (); - int pause (); - int freewheel (bool onoff); + + /* START BACKEND PROXY API + * + * See audio_backend.h for full documentation and semantics. These wrappers + * just forward to a backend implementation. + */ + + int start (); + int stop (); + int pause (); + int freewheel (bool start_stop); + float get_cpu_load() const ; + void transport_start (); + void transport_stop (); + TransportState transport_state (); + void transport_locate (framepos_t pos); + framepos_t transport_frame(); + framecnt_t sample_rate () const; + pframes_t samples_per_cycle () const; + int usecs_per_cycle () const; + size_t raw_buffer_size (DataType t); + pframes_t sample_time (); + pframes_t sample_time_at_cycle_start (); + pframes_t samples_since_cycle_start (); + bool get_sync_offset (pframes_t& offset) const; + int create_process_thread (boost::function func, pthread_t*, size_t stacksize); + + /* END BACKEND PROXY API */ + bool freewheeling() const { return _freewheeling; } - bool running() const { return _running; } + Glib::Threads::Mutex& process_lock() { return _process_lock; } int request_buffer_size (pframes_t); framecnt_t processed_frames() const { return _processed_frames; } - float get_cpu_load(); - void set_session (Session *); void remove_session (); // not a replacement for SessionHandle::session_going_away() @@ -161,8 +185,11 @@ public: int process_callback (pframes_t nframes); private: + AudioEngine (const std::string& client_name, const std::string& session_uuid); + static AudioEngine* _instance; - + + AudioBackend* _backend; Glib::Threads::Mutex _process_lock; Glib::Threads::Cond session_removed; bool session_remove_pending; @@ -187,6 +214,8 @@ public: Glib::Threads::Thread* m_meter_thread; ProcessThread* _main_thread; + std::string backend_client_name; + std::string backend_session_uuid; void meter_thread (); void start_metering_thread (); @@ -196,6 +225,11 @@ public: void parameter_changed (const std::string&); PBD::ScopedConnection config_connection; + + typedef std::map BackendMap; + BackendMap _backends; + AudioBackend* backend_discover (const std::string&); + void drop_backend (); }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/backend_search_path.h b/libs/ardour/ardour/backend_search_path.h new file mode 100644 index 0000000000..2adc22bd6f --- /dev/null +++ b/libs/ardour/ardour/backend_search_path.h @@ -0,0 +1,39 @@ +/* + Copyright (C) 2011 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 __ardour_backend_search_path_h__ +#define __ardour_backend_search_path_h__ + +#include "pbd/search_path.h" + +namespace ARDOUR { + + /** + * return a SearchPath containing directories in which to look for + * backend plugins. + * + * If ARDOUR_BACKEND_PATH is defined then the SearchPath returned + * will contain only those directories specified in it, otherwise it will + * contain the user and system directories which may contain audio/MIDI + * backends. + */ + PBD::SearchPath backend_search_path (); + +} // namespace ARDOUR + +#endif /* __ardour_backend_search_path_h__ */ diff --git a/libs/ardour/ardour/data_type.h b/libs/ardour/ardour/data_type.h index 6a016ae75a..b4129e2629 100644 --- a/libs/ardour/ardour/data_type.h +++ b/libs/ardour/ardour/data_type.h @@ -21,11 +21,11 @@ #define __ardour_data_type_h__ #include -#include +#include +#include namespace ARDOUR { - /** A type of Data Ardour is capable of processing. * * The majority of this class is dedicated to conversion to and from various @@ -61,33 +61,25 @@ public: /** Construct from a string (Used for loading from XML and Ports) * The string can be as in an XML file (eg "audio" or "midi"), or a - * Jack type string (from jack_port_type) */ + */ DataType(const std::string& str) : _symbol(NIL) { - if (str == "audio" || str == JACK_DEFAULT_AUDIO_TYPE) + if (!g_ascii_strncasecmp(str.c_str(), "audio", str.length())) { _symbol = AUDIO; - else if (str == "midi" || str == JACK_DEFAULT_MIDI_TYPE) + } else if (!g_ascii_strncasecmp(str.c_str(), "midi", str.length())) { _symbol = MIDI; - } - - /** Get the Jack type this DataType corresponds to */ - const char* to_jack_type() const { - switch (_symbol) { - case AUDIO: return JACK_DEFAULT_AUDIO_TYPE; - case MIDI: return JACK_DEFAULT_MIDI_TYPE; - default: return ""; } } /** Inverse of the from-string constructor */ const char* to_string() const { switch (_symbol) { - case AUDIO: return "audio"; - case MIDI: return "midi"; - default: return "unknown"; // reeeally shouldn't ever happen + case AUDIO: return "audio"; + case MIDI: return "midi"; + default: return "unknown"; // reeeally shouldn't ever happen } } - + const char* to_i18n_string () const; inline operator uint32_t() const { return (uint32_t)_symbol; } @@ -125,7 +117,6 @@ private: }; - } // namespace ARDOUR #endif // __ardour_data_type_h__ diff --git a/libs/ardour/ardour/directory_names.h b/libs/ardour/ardour/directory_names.h index 9f7c778d33..935cdd977b 100644 --- a/libs/ardour/ardour/directory_names.h +++ b/libs/ardour/ardour/directory_names.h @@ -38,6 +38,7 @@ extern const char* const route_templates_dir_name; extern const char* const surfaces_dir_name; extern const char* const user_config_dir_name; extern const char* const panner_dir_name; +extern const char* const backend_dir_name; }; diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 07214ee77a..2e12d521cd 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -93,6 +93,18 @@ ifdef HAVE_JACK_SESSION ChanCount n_physical (unsigned long) const; void get_physical (DataType, unsigned long, std::vector &); + + /* pffooo */ + + std::string _target_device; + float _target_sample_rate; + uint32_t _target_buffer_size; + SampleFormat _target_sample_format; + bool _target_interleaved; + uint32_t _target_input_channels; + uint32_t _target_output_channels; + uin32_t _target_systemic_input_latency; + uin32_t _target_systemic_input_latency; }; } diff --git a/libs/ardour/ardour/midi_buffer.h b/libs/ardour/ardour/midi_buffer.h index 5ef5e4c845..781396a598 100644 --- a/libs/ardour/ardour/midi_buffer.h +++ b/libs/ardour/ardour/midi_buffer.h @@ -44,7 +44,6 @@ public: void copy(const MidiBuffer& copy); bool push_back(const Evoral::MIDIEvent& event); - bool push_back(const jack_midi_event_t& event); bool push_back(TimeType time, size_t size, const uint8_t* data); uint8_t* reserve(TimeType time, size_t size); diff --git a/libs/ardour/ardour/midi_port.h b/libs/ardour/ardour/midi_port.h index 5dc55398cb..e14c7926fb 100644 --- a/libs/ardour/ardour/midi_port.h +++ b/libs/ardour/ardour/midi_port.h @@ -59,7 +59,7 @@ class MidiPort : public Port { protected: friend class AudioEngine; - MidiPort (const std::string& name, Flags); + MidiPort (const std::string& name, PortFlags); private: MidiBuffer* _buffer; diff --git a/libs/ardour/ardour/port.h b/libs/ardour/ardour/port.h index 5afe8e2806..6186ce7748 100644 --- a/libs/ardour/ardour/port.h +++ b/libs/ardour/ardour/port.h @@ -30,6 +30,7 @@ #include "pbd/signals.h" #include "ardour/data_type.h" +#include "ardour/port_engine.h" #include "ardour/types.h" namespace ARDOUR { @@ -40,11 +41,6 @@ class Buffer; class Port : public boost::noncopyable { public: - enum Flags { - IsInput = JackPortIsInput, - IsOutput = JackPortIsOutput, - }; - virtual ~Port (); static void set_connecting_blocked( bool yn ) { @@ -62,7 +58,7 @@ public: int set_name (std::string const &); /** @return flags */ - Flags flags () const { + PortFlags flags () const { return _flags; } @@ -90,8 +86,8 @@ public: virtual int connect (Port *); int disconnect (Port *); - void request_monitor_input (bool); - void ensure_monitor_input (bool); + void request_input_monitoring (bool); + void ensure_input_monitoring (bool); bool monitoring_input () const; int reestablish (); int reconnect (); @@ -99,7 +95,7 @@ public: bool last_monitor() const { return _last_monitor; } void set_last_monitor (bool yn) { _last_monitor = yn; } - jack_port_t* jack_port() const { return _jack_port; } + PortEngine::PortHandle port_handle() { return _port_handle; } void get_connected_latency_range (jack_latency_range_t& range, bool playback) const; @@ -122,8 +118,6 @@ public: bool physically_connected () const; - static void set_engine (AudioEngine *); - PBD::Signal1 MonitorInputChanged; static PBD::Signal2,boost::shared_ptr > PostDisconnect; static PBD::Signal0 PortDrop; @@ -143,9 +137,9 @@ public: protected: - Port (std::string const &, DataType, Flags); + Port (std::string const &, DataType, PortFlags); - jack_port_t* _jack_port; ///< JACK port + PortEngine::PortHandle _port_handle; static bool _connecting_blocked; static pframes_t _global_port_buffer_offset; /* access only from process() tree */ @@ -156,15 +150,13 @@ protected: jack_latency_range_t _private_playback_latency; jack_latency_range_t _private_capture_latency; - static AudioEngine* _engine; ///< the AudioEngine - private: std::string _name; ///< port short name - Flags _flags; ///< flags + PortFlags _flags; ///< flags bool _last_monitor; /** ports that we are connected to, kept so that we can - reconnect to JACK when required + reconnect to the backend when required */ std::set _connections; diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h new file mode 100644 index 0000000000..3bea32620e --- /dev/null +++ b/libs/ardour/ardour/port_engine.h @@ -0,0 +1,139 @@ +/* + 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. + +*/ + +#ifndef __libardour_port_engine_h__ +#define __libardour_port_engine_h__ + +#include +#include + +#include + +#include "ardour/data_type.h" +#include "ardour/types.h" + +namespace ARDOUR { + +/** PortEngine is an abstract base class that defines the functionality + * required by Ardour. + * + * A Port is basically an endpoint for a datastream (which can either be + * continuous, like audio, or event-based, like MIDI). Ports have buffers + * associated with them into which data can be written (if they are output + * ports) and from which data can be read (if they input ports). Ports can be + * connected together so that data written to an output port can be read from + * an input port. These connections can be 1:1, 1:N OR N:1. + * + * Ports may be associated with software only, or with hardware. Hardware + * related ports are often referred to as physical, and correspond to some + * relevant physical entity on a hardware device, such as an audio jack or a + * MIDI connector. Physical ports may be potentially asked to monitor their + * inputs, though some implementations may not support this. + * + * Most physical ports will also be considered "terminal", which means that + * data delivered there or read from there will go to or comes from a system + * outside of the PortEngine implementation's control (e.g. the analog domain + * for audio, or external MIDI devices for MIDI). Non-physical ports can also + * be considered "terminal". For example, the output port of a software + * synthesizer is a terminal port, because the data contained in its buffer + * does not and cannot be considered to come from any other port - it is + * synthesized by its owner. + * + * Ports also have latency associated with them. Each port has a playback + * latency and a capture latency: + * + * capture latency: how long since the data read from the buffer of a + * port arrived at at a terminal port. The data will have + * come from the "outside world" if the terminal port is also + * physical, or will have been synthesized by the entity that + * owns the terminal port. + * + * playback latency: how long until the data written to the buffer of + * port will reach a terminal port. + * + * + * For more detailed questions about the PortEngine API, consult the JACK API + * documentation, on which this entire object is based. + */ + +class PortEngine { + public: + PortEngine() {} + virtual ~PortEngine(); + + /* We use void* here so that the API can be defined for any implementation. + * + * We could theoretically use a template (PortEngine) and define + * PortHandle as T, but this complicates the desired inheritance + * pattern in which FooPortEngine handles things for the Foo API, + * rather than being a derivative of PortEngine. + */ + + typedef void* PortHandle; + + virtual bool connected() const = 0; + + virtual int set_port_name (PortHandle, const std::string&) = 0; + virtual std::string get_port_name (PortHandle) const = 0; + virtual PortHandle* get_port_by_name (const std::string&) const = 0; + + virtual PortHandle register_port (const std::string&, DataType::Symbol, ARDOUR::PortFlags) = 0; + virtual void unregister_port (PortHandle) = 0; + virtual bool connected (PortHandle) = 0; + virtual int disconnect_all (PortHandle) = 0; + virtual bool connected_to (PortHandle, const std::string&) = 0; + virtual int get_connections (PortHandle, std::vector&) = 0; + virtual bool physically_connected (PortHandle) = 0; + virtual int connect (PortHandle, const std::string&) = 0; + virtual int disconnect (PortHandle, const std::string&) = 0; + + /* MIDI */ + + virtual void midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) = 0; + virtual int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size) = 0; + virtual uint32_t get_midi_event_count (void* port_buffer); + virtual void midi_clear (void* port_buffer); + + /* Monitoring */ + + virtual bool can_monitor_input() const = 0; + virtual int request_input_monitoring (PortHandle, bool) = 0; + virtual int ensure_input_monitoring (PortHandle, bool) = 0; + virtual bool monitoring_input (PortHandle) = 0; + + /* Latency management + */ + + struct LatencyRange { + uint32_t min; + uint32_t max; + }; + + virtual void set_latency_range (PortHandle, int dir, LatencyRange) = 0; + virtual LatencyRange get_latency_range (PortHandle, int dir) = 0; + virtual LatencyRange get_connected_latency_range (PortHandle, int dir) = 0; + + virtual void* get_buffer (PortHandle, pframes_t) = 0; + + virtual pframes_t last_frame_time () const = 0; +}; + +} + +#endif /* __libardour_port_engine_h__ */ diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index f6aedc02a1..399ab46b34 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -32,11 +32,11 @@ #include "pbd/rcu.h" #include "ardour/chan_count.h" +#include "ardour/port.h" +#include "ardour/port_engine.h" namespace ARDOUR { -class Port; - class PortManager { public: @@ -44,36 +44,44 @@ class PortManager PortManager(); virtual ~PortManager() {} + + PortEngine& port_engine() { return *_impl; } /* Port registration */ - virtual boost::shared_ptr register_input_port (DataType, const std::string& portname) = 0; - virtual boost::shared_ptr register_output_port (DataType, const std::string& portname) = 0; - virtual int unregister_port (boost::shared_ptr) = 0; + boost::shared_ptr register_input_port (DataType, const std::string& portname); + boost::shared_ptr register_output_port (DataType, const std::string& portname); + int unregister_port (boost::shared_ptr); /* Port connectivity */ - virtual int connect (const std::string& source, const std::string& destination) = 0; - virtual int disconnect (const std::string& source, const std::string& destination) = 0; - virtual int disconnect (boost::shared_ptr) = 0; - + int connect (const std::string& source, const std::string& destination); + int disconnect (const std::string& source, const std::string& destination); + int disconnect (boost::shared_ptr); + bool connected (const std::string&); + /* other Port management */ - virtual bool port_is_physical (const std::string&) const = 0; - virtual void get_physical_outputs (DataType type, std::vector&) = 0; - virtual void get_physical_inputs (DataType type, std::vector&) = 0; - virtual boost::shared_ptr get_port_by_name (const std::string &) = 0; - virtual void port_renamed (const std::string&, const std::string&) = 0; - virtual ChanCount n_physical_outputs () const = 0; - virtual ChanCount n_physical_inputs () const = 0; - virtual const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags) = 0; + bool port_is_physical (const std::string&) const; + void get_physical_outputs (DataType type, std::vector&); + void get_physical_inputs (DataType type, std::vector&); + boost::shared_ptr get_port_by_name (const std::string &); + void port_renamed (const std::string&, const std::string&); + ChanCount n_physical_outputs () const; + ChanCount n_physical_inputs () const; + const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags); void remove_all_ports (); /* per-Port monitoring */ - virtual bool can_request_input_monitoring () const = 0; - virtual void request_input_monitoring (const std::string&, bool) const = 0; + bool can_request_input_monitoring () const; + void request_input_monitoring (const std::string&, bool) const; + void ensure_input_monitoring (const std::string&, bool) const; + + std::string make_port_name_relative (const std::string&) const; + std::string make_port_name_non_relative (const std::string&) const; + bool port_is_mine (const std::string&) const; class PortRegistrationFailure : public std::exception { public: @@ -82,23 +90,17 @@ class PortManager ~PortRegistrationFailure () throw () {} - virtual const char *what() const throw () { return reason.c_str(); } + const char *what() const throw () { return reason.c_str(); } private: std::string reason; }; + protected: - typedef void* PortHandle; - PortHandle register (const std::string&, DataType type, Port::Flags); - void unregister (PortHandle); - bool connected (PortHandle); - int disconnect_all (PortHandle); - bool connected_to (PortHandle, const std::string); - int get_connections (PortHandle, std::vector&); - - private: + PortEngine* _impl; SerializedRCUManager ports; + boost::shared_ptr register_port (DataType type, const std::string& portname, bool input); void port_registration_failure (const std::string& portname); }; diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index 11cdb79575..390f1e4fec 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -584,6 +584,25 @@ namespace ARDOUR { FadeSymmetric, }; + enum TransportState { + /* these values happen to match the constants used by JACK but + this equality cannot be assumed. + */ + TransportStopped = 0, + TransportRolling = 1, + TransportLooping = 2, + TransportStarting = 3, + }; + + enum PortFlags { + /* these values happen to match the constants used by JACK but + this equality cannot be assumed. + */ + IsInput = 1, + IsOutput = 2, + }; + + } // namespace ARDOUR diff --git a/libs/ardour/audio_diskstream.cc b/libs/ardour/audio_diskstream.cc index c302e06681..5c98271e5f 100644 --- a/libs/ardour/audio_diskstream.cc +++ b/libs/ardour/audio_diskstream.cc @@ -1729,7 +1729,7 @@ AudioDiskstream::prep_record_enable () if (Config->get_monitoring_model() == HardwareMonitoring) { for (ChannelList::iterator chan = c->begin(); chan != c->end(); ++chan) { - (*chan)->source.request_jack_monitors_input (!(_session.config.get_auto_input() && rolling)); + (*chan)->source.request_input_monitoring (!(_session.config.get_auto_input() && rolling)); capturing_sources.push_back ((*chan)->write_source); (*chan)->write_source->mark_streaming_write_started (); } @@ -1750,7 +1750,7 @@ AudioDiskstream::prep_record_disable () boost::shared_ptr c = channels.reader(); if (Config->get_monitoring_model() == HardwareMonitoring) { for (ChannelList::iterator chan = c->begin(); chan != c->end(); ++chan) { - (*chan)->source.request_jack_monitors_input (false); + (*chan)->source.request_input_monitoring (false); } } capturing_sources.clear (); @@ -2016,12 +2016,12 @@ AudioDiskstream::allocate_temporary_buffers () } void -AudioDiskstream::request_jack_monitors_input (bool yn) +AudioDiskstream::request_input_monitoring (bool yn) { boost::shared_ptr c = channels.reader(); for (ChannelList::iterator chan = c->begin(); chan != c->end(); ++chan) { - (*chan)->source.request_jack_monitors_input (yn); + (*chan)->source.request_input_monitoring (yn); } } @@ -2344,13 +2344,13 @@ AudioDiskstream::ChannelSource::is_physical () const } void -AudioDiskstream::ChannelSource::request_jack_monitors_input (bool yn) const +AudioDiskstream::ChannelSource::request_input_monitoring (bool yn) const { if (name.empty()) { return; } - return AudioEngine::instance()->request_jack_monitors_input (name, yn); + return AudioEngine::instance()->request_input_monitoring (name, yn); } AudioDiskstream::ChannelInfo::ChannelInfo (framecnt_t playback_bufsize, framecnt_t capture_bufsize, framecnt_t speed_size, framecnt_t wrap_size) diff --git a/libs/ardour/audio_port.cc b/libs/ardour/audio_port.cc index 240224ea5e..6a86360b69 100644 --- a/libs/ardour/audio_port.cc +++ b/libs/ardour/audio_port.cc @@ -21,13 +21,17 @@ #include "pbd/stacktrace.h" #include "ardour/audio_buffer.h" +#include "ardour/audioengine.h" #include "ardour/audio_port.h" #include "ardour/data_type.h" +#include "ardour/port_engine.h" using namespace ARDOUR; using namespace std; -AudioPort::AudioPort (const std::string& name, Flags flags) +#define port_engine AudioEngine::instance()->port_engine() + +AudioPort::AudioPort (const std::string& name, PortFlags flags) : Port (name, DataType::AUDIO, flags) , _buffer (new AudioBuffer (0)) { @@ -73,7 +77,7 @@ AudioBuffer& AudioPort::get_audio_buffer (pframes_t nframes) { /* caller must hold process lock */ - _buffer->set_data ((Sample *) jack_port_get_buffer (_jack_port, _cycle_nframes) + + _buffer->set_data ((Sample *) port_engine.get_buffer (_port_handle, _cycle_nframes) + _global_port_buffer_offset + _port_buffer_offset, nframes); return *_buffer; } @@ -82,7 +86,7 @@ Sample* AudioPort::engine_get_whole_audio_buffer () { /* caller must hold process lock */ - return (Sample *) jack_port_get_buffer (_jack_port, _cycle_nframes); + return (Sample *) port_engine.get_buffer (_port_handle, _cycle_nframes); } diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 25a55b5aaf..1e43c590a0 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -25,11 +25,14 @@ #include #include +#include +#include +#include "pbd/epa.h" +#include "pbd/file_utils.h" #include "pbd/pthread_utils.h" #include "pbd/stacktrace.h" #include "pbd/unknown_type.h" -#include "pbd/epa.h" #include @@ -39,7 +42,9 @@ #include "midi++/manager.h" #include "ardour/audio_port.h" +#include "ardour/audio_backend.h" #include "ardour/audioengine.h" +#include "ardour/backend_search_path.h" #include "ardour/buffer.h" #include "ardour/cycle_timer.h" #include "ardour/internal_send.h" @@ -58,8 +63,9 @@ using namespace PBD; gint AudioEngine::m_meter_exit; AudioEngine* AudioEngine::_instance = 0; -AudioEngine::AudioEngine () - : session_remove_pending (false) +AudioEngine::AudioEngine (const std::string& bcn, const std::string& bsu) + : _backend (0) + , session_remove_pending (false) , session_removal_countdown (-1) , monitor_check_interval (INT32_MAX) , last_monitor_check (0) @@ -70,14 +76,16 @@ AudioEngine::AudioEngine () , port_remove_in_progress (false) , m_meter_thread (0) , _main_thread (0) + , backend_client_name (bcn) + , backend_session_uuid (bsu) { g_atomic_int_set (&m_meter_exit, 0); - - Port::set_engine (this); } AudioEngine::~AudioEngine () { + drop_backend (); + config_connection.disconnect (); { @@ -88,18 +96,38 @@ AudioEngine::~AudioEngine () } AudioEngine* -AudioEngine::create () +AudioEngine::create (const std::string& bcn, const std::string& bsu) { if (_instance) { return _instance; } - return new AudioEngine; + return new AudioEngine (bcn, bsu); } -jack_client_t* -AudioEngine::jack() const +void +AudioEngine::drop_backend () { - return _jack; + if (_backend) { + _backend->stop (); + delete _backend; + _backend = 0; + } +} + +int +AudioEngine::set_backend (const std::string& name) +{ + BackendMap::iterator b = _backends.find (name); + + if (b == _backends.end()) { + return -1; + } + + drop_backend (); + + _backend = b->second; + + return 0; } void @@ -120,70 +148,6 @@ _thread_init_callback (void * /*arg*/) } -int -AudioEngine::start () -{ - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); - - if (!_running) { - - if (!jack_port_type_get_buffer_size) { - warning << _("This version of JACK is old - you should upgrade to a newer version that supports jack_port_type_get_buffer_size()") << endmsg; - } - - if (_session) { - BootMessage (_("Connect session to engine")); - _session->set_frame_rate (jack_get_sample_rate (_priv_jack)); - } - - /* a proxy for whether jack_activate() will definitely call the buffer size - * callback. with older versions of JACK, this function symbol will be null. - * this is reliable, but not clean. - */ - - if (!jack_port_type_get_buffer_size) { - jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); - } - - _processed_frames = 0; - last_monitor_check = 0; - - set_jack_callbacks (); - - if (jack_activate (_priv_jack) == 0) { - _running = true; - _has_run = true; - Running(); /* EMIT SIGNAL */ - } else { - // error << _("cannot activate JACK client") << endmsg; - } - } - - return _running ? 0 : -1; -} - -int -AudioEngine::stop (bool forever) -{ - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); - - if (_priv_jack) { - if (forever) { - disconnect_from_jack (); - } else { - jack_deactivate (_priv_jack); - MIDI::JackMIDIPort::JackHalted (); /* EMIT SIGNAL */ - Stopped(); /* EMIT SIGNAL */ - } - } - - if (forever) { - stop_metering_thread (); - } - - return _running ? -1 : 0; -} - void AudioEngine::split_cycle (pframes_t offset) @@ -208,7 +172,6 @@ AudioEngine::split_cycle (pframes_t offset) int AudioEngine::process_callback (pframes_t nframes) { - GET_PRIVATE_JACK_POINTER_RET(_jack,0); Glib::Threads::Mutex::Lock tm (_process_lock, Glib::Threads::TRY_LOCK); PT_TIMING_REF; @@ -436,7 +399,7 @@ AudioEngine::set_session (Session *s) start_metering_thread (); - pframes_t blocksize = jack_get_buffer_size (_jack); + pframes_t blocksize = _backend->get_buffer_size (); /* page in as much of the session process code as we can before we really start running. @@ -484,549 +447,290 @@ AudioEngine::remove_session () remove_all_ports (); } + void -AudioEngine::port_registration_failure (const std::string& portname) +AudioEngine::died () { - GET_PRIVATE_JACK_POINTER (_jack); - string full_portname = jack_client_name; - full_portname += ':'; - full_portname += portname; - - - jack_port_t* p = jack_port_by_name (_priv_jack, full_portname.c_str()); - string reason; + /* called from a signal handler for SIGPIPE */ - if (p) { - reason = string_compose (_("a port with the name \"%1\" already exists: check for duplicated track/bus names"), portname); - } else { - reason = string_compose (_("No more JACK ports are available. You will need to stop %1 and restart JACK with more ports if you need this many tracks."), PROGRAM_NAME); - } + stop_metering_thread (); - throw PortRegistrationFailure (string_compose (_("AudioEngine: cannot register port \"%1\": %2"), portname, reason).c_str()); + _running = false; + _buffer_size = 0; + _frame_rate = 0; } -boost::shared_ptr -AudioEngine::register_port (DataType dtype, const string& portname, bool input) +int +AudioEngine::reset_timebase () { - boost::shared_ptr newport; - - try { - if (dtype == DataType::AUDIO) { - newport.reset (new AudioPort (portname, (input ? Port::IsInput : Port::IsOutput))); - } else if (dtype == DataType::MIDI) { - newport.reset (new MidiPort (portname, (input ? Port::IsInput : Port::IsOutput))); + if (_session) { + if (_session->config.get_jack_time_master()) { + _backend->set_time_master (true); } else { - throw PortRegistrationFailure("unable to create port (unknown type)"); + _backend->set_time_master (false); } - - RCUWriter writer (ports); - boost::shared_ptr ps = writer.get_copy (); - ps->insert (make_pair (make_port_name_relative (portname), newport)); - - /* writer goes out of scope, forces update */ - - return newport; - } - - catch (PortRegistrationFailure& err) { - throw err; - } catch (std::exception& e) { - throw PortRegistrationFailure(string_compose( - _("unable to create port: %1"), e.what()).c_str()); - } catch (...) { - throw PortRegistrationFailure("unable to create port (unknown error)"); } + return 0; } -boost::shared_ptr -AudioEngine::register_input_port (DataType type, const string& portname) -{ - return register_port (type, portname, true); -} -boost::shared_ptr -AudioEngine::register_output_port (DataType type, const string& portname) +void +AudioEngine::destroy () { - return register_port (type, portname, false); + delete _instance; + _instance = 0; } int -AudioEngine::unregister_port (boost::shared_ptr port) +AudioEngine::discover_backends () { - /* caller must hold process lock */ - - if (!_running) { - /* probably happening when the engine has been halted by JACK, - in which case, there is nothing we can do here. - */ - return 0; - } - - { - RCUWriter writer (ports); - boost::shared_ptr ps = writer.get_copy (); - Ports::iterator x = ps->find (make_port_name_relative (port->name())); + vector backend_modules; + AudioBackend* backend; - if (x != ps->end()) { - ps->erase (x); - } + _backends.clear (); - /* writer goes out of scope, forces update */ - } + Glib::PatternSpec so_extension_pattern("*.so"); + Glib::PatternSpec dylib_extension_pattern("*.dylib"); - ports.flush (); + find_matching_files_in_search_path (backend_search_path (), + so_extension_pattern, backend_modules); - return 0; -} + find_matching_files_in_search_path (backend_search_path (), + dylib_extension_pattern, backend_modules); -int -AudioEngine::connect (const string& source, const string& destination) -{ - int ret; + DEBUG_TRACE (DEBUG::Panning, string_compose (_("looking for backends in %1"), backend_search_path().to_string())); - if (!_running) { - if (!_has_run) { - fatal << _("connect called before engine was started") << endmsg; - /*NOTREACHED*/ - } else { - return -1; + for (vector::iterator i = backend_modules.begin(); i != backend_modules.end(); ++i) { + if ((backend = backend_discover (*i)) != 0) { + _backends.insert (make_pair (backend->name(), backend)); } } - string s = make_port_name_non_relative (source); - string d = make_port_name_non_relative (destination); - + return _backends.size(); +} - boost::shared_ptr src = get_port_by_name (s); - boost::shared_ptr dst = get_port_by_name (d); +AudioBackend* +AudioEngine::backend_discover (const string& path) +{ + Glib::Module* module = new Glib::Module(path); + AudioBackend* (*dfunc)(void); + void* func = 0; - if (src) { - ret = src->connect (d); - } else if (dst) { - ret = dst->connect (s); - } else { - /* neither port is known to us, and this API isn't intended for use as a general patch bay */ - ret = -1; + if (!module) { + error << string_compose(_("AudioEngine: cannot load module \"%1\" (%2)"), path, + Glib::Module::get_last_error()) << endmsg; + delete module; + return 0; } - if (ret > 0) { - /* already exists - no error, no warning */ - } else if (ret < 0) { - error << string_compose(_("AudioEngine: cannot connect %1 (%2) to %3 (%4)"), - source, s, destination, d) - << endmsg; + if (!module->get_symbol("backend_factory", func)) { + error << string_compose(_("AudioEngine: module \"%1\" has no factory function."), path) << endmsg; + error << Glib::Module::get_last_error() << endmsg; + delete module; + return 0; } - return ret; + dfunc = (AudioBackend* (*)(void))func; + AudioBackend* backend = dfunc(); + + return backend; } +/* BACKEND PROXY WRAPPERS */ + int -AudioEngine::disconnect (const string& source, const string& destination) +AudioEngine::start () { - int ret; - - if (!_running) { - if (!_has_run) { - fatal << _("disconnect called before engine was started") << endmsg; - /*NOTREACHED*/ - } else { - return -1; - } + if (!_backend) { + return -1; } - string s = make_port_name_non_relative (source); - string d = make_port_name_non_relative (destination); - - boost::shared_ptr src = get_port_by_name (s); - boost::shared_ptr dst = get_port_by_name (d); + if (!_running) { - if (src) { - ret = src->disconnect (d); - } else if (dst) { - ret = dst->disconnect (s); - } else { - /* neither port is known to us, and this API isn't intended for use as a general patch bay */ - ret = -1; - } - return ret; -} + if (_session) { + BootMessage (_("Connect session to engine")); + _session->set_frame_rate (_backend->sample_rate()); + } -int -AudioEngine::disconnect (boost::shared_ptr port) -{ - GET_PRIVATE_JACK_POINTER_RET (_jack,-1); + _processed_frames = 0; + last_monitor_check = 0; - if (!_running) { - if (!_has_run) { - fatal << _("disconnect called before engine was started") << endmsg; - /*NOTREACHED*/ + if (_backend->start() == 0) { + _running = true; + _has_run = true; + Running(); /* EMIT SIGNAL */ } else { - return -1; + /* should report error? */ } } - - return port->disconnect_all (); + + return _running ? 0 : -1; } -ARDOUR::framecnt_t -AudioEngine::frame_rate () const +int +AudioEngine::stop () { - GET_PRIVATE_JACK_POINTER_RET (_jack, 0); - if (_frame_rate == 0) { - return (_frame_rate = jack_get_sample_rate (_priv_jack)); - } else { - return _frame_rate; + if (!_backend) { + return 0; } + + return _backend->stop (); } -size_t -AudioEngine::raw_buffer_size (DataType t) -{ - std::map::const_iterator s = _raw_buffer_sizes.find(t); - return (s != _raw_buffer_sizes.end()) ? s->second : 0; -} - -ARDOUR::pframes_t -AudioEngine::frames_per_cycle () const +int +AudioEngine::pause () { - GET_PRIVATE_JACK_POINTER_RET (_jack,0); - if (_buffer_size == 0) { - return jack_get_buffer_size (_jack); - } else { - return _buffer_size; + if (!_backend) { + return 0; } + + return _backend->pause (); } -/** @param name Full or short name of port - * @return Corresponding Port or 0. - */ - -boost::shared_ptr -AudioEngine::get_port_by_name (const string& portname) +int +AudioEngine::freewheel (bool start_stop) { - if (!_running) { - if (!_has_run) { - fatal << _("get_port_by_name() called before engine was started") << endmsg; - /*NOTREACHED*/ - } else { - boost::shared_ptr (); - } + if (!_backend) { + return -1; } - if (!port_is_mine (portname)) { - /* not an ardour port */ - return boost::shared_ptr (); - } - - boost::shared_ptr pr = ports.reader(); - std::string rel = make_port_name_relative (portname); - Ports::iterator x = pr->find (rel); + /* _freewheeling will be set when first Freewheel signal occurs */ - if (x != pr->end()) { - /* its possible that the port was renamed by some 3rd party and - we don't know about it. check for this (the check is quick - and cheap), and if so, rename the port (which will alter - the port map as a side effect). - */ - const std::string check = make_port_name_relative (jack_port_name (x->second->jack_port())); - if (check != rel) { - x->second->set_name (check); - } - return x->second; - } - - return boost::shared_ptr (); + return _backend->freewheel (start_stop); } -void -AudioEngine::port_renamed (const std::string& old_relative_name, const std::string& new_relative_name) +float +AudioEngine::get_cpu_load() const { - RCUWriter writer (ports); - boost::shared_ptr p = writer.get_copy(); - Ports::iterator x = p->find (old_relative_name); - - if (x != p->end()) { - boost::shared_ptr port = x->second; - p->erase (x); - p->insert (make_pair (new_relative_name, port)); + if (!_backend) { + return 0.0; } + return _backend->get_cpu_load (); } -const char ** -AudioEngine::get_ports (const string& port_name_pattern, const string& type_name_pattern, uint32_t flags) +void +AudioEngine::transport_start () { - GET_PRIVATE_JACK_POINTER_RET (_jack,0); - if (!_running) { - if (!_has_run) { - fatal << _("get_ports called before engine was started") << endmsg; - /*NOTREACHED*/ - } else { - return 0; - } + if (!_backend) { + return; } - return jack_get_ports (_priv_jack, port_name_pattern.c_str(), type_name_pattern.c_str(), flags); + return _backend->transport_start (); } void -AudioEngine::died () -{ - /* called from a signal handler for SIGPIPE */ - - stop_metering_thread (); - - _running = false; - _buffer_size = 0; - _frame_rate = 0; - _jack = 0; -} - -bool -AudioEngine::can_request_hardware_monitoring () +AudioEngine::transport_stop () { - GET_PRIVATE_JACK_POINTER_RET (_jack,false); - const char ** ports; - - if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortCanMonitor)) == 0) { - return false; + if (!_backend) { + return; } - - free (ports); - - return true; + return _backend->transport_stop (); } -ChanCount -AudioEngine::n_physical (unsigned long flags) const +TransportState +AudioEngine::transport_state () { - ChanCount c; - - GET_PRIVATE_JACK_POINTER_RET (_jack, c); - - const char ** ports = jack_get_ports (_priv_jack, NULL, NULL, JackPortIsPhysical | flags); - if (ports == 0) { - return c; + if (!_backend) { + return TransportStopped; } - - for (uint32_t i = 0; ports[i]; ++i) { - if (!strstr (ports[i], "Midi-Through")) { - DataType t (jack_port_type (jack_port_by_name (_jack, ports[i]))); - c.set (t, c.get (t) + 1); - } - } - - free (ports); - - return c; -} - -ChanCount -AudioEngine::n_physical_inputs () const -{ - return n_physical (JackPortIsInput); -} - -ChanCount -AudioEngine::n_physical_outputs () const -{ - return n_physical (JackPortIsOutput); + return _backend->transport_state (); } void -AudioEngine::get_physical (DataType type, unsigned long flags, vector& phy) +AudioEngine::transport_locate (framepos_t pos) { - GET_PRIVATE_JACK_POINTER (_jack); - const char ** ports; - - if ((ports = jack_get_ports (_priv_jack, NULL, type.to_jack_type(), JackPortIsPhysical | flags)) == 0) { + if (!_backend) { return; } + return _backend->transport_locate (pos); +} - if (ports) { - for (uint32_t i = 0; ports[i]; ++i) { - if (strstr (ports[i], "Midi-Through")) { - continue; - } - phy.push_back (ports[i]); - } - free (ports); +framepos_t +AudioEngine::transport_frame() +{ + if (!_backend) { + return 0; } + return _backend->transport_frame (); } -/** Get physical ports for which JackPortIsOutput is set; ie those that correspond to - * a physical input connector. - */ -void -AudioEngine::get_physical_inputs (DataType type, vector& ins) +framecnt_t +AudioEngine::sample_rate () const { - get_physical (type, JackPortIsOutput, ins); + if (!_backend) { + return 0; + } + return _backend->sample_rate (); } -/** Get physical ports for which JackPortIsInput is set; ie those that correspond to - * a physical output connector. - */ -void -AudioEngine::get_physical_outputs (DataType type, vector& outs) +pframes_t +AudioEngine::samples_per_cycle () const { - get_physical (type, JackPortIsInput, outs); + if (!_backend) { + return 0; + } + return _backend->samples_per_cycle (); } - int -AudioEngine::reset_timebase () +AudioEngine::usecs_per_cycle () const { - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); - if (_session) { - if (_session->config.get_jack_time_master()) { - _backend->set_time_master (true); - } else { - _backend->set_time_master (false); - } + if (!_backend) { + return -1; } - return 0; + return _backend->start (); } -void -AudioEngine::remove_all_ports () +size_t +AudioEngine::raw_buffer_size (DataType t) { - /* make sure that JACK callbacks that will be invoked as we cleanup - * ports know that they have nothing to do. - */ - - port_remove_in_progress = true; - - /* process lock MUST be held by caller - */ - - { - RCUWriter writer (ports); - boost::shared_ptr ps = writer.get_copy (); - ps->clear (); + if (!_backend) { + return -1; } - - /* clear dead wood list in RCU */ - - ports.flush (); - - port_remove_in_progress = false; + return _backend->raw_buffer_size (t); } - -string -AudioEngine::make_port_name_relative (string portname) const +pframes_t +AudioEngine::sample_time () { - string::size_type len; - string::size_type n; - - len = portname.length(); - - for (n = 0; n < len; ++n) { - if (portname[n] == ':') { - break; - } - } - - if ((n != len) && (portname.substr (0, n) == jack_client_name)) { - return portname.substr (n+1); + if (!_backend) { + return 0; } - - return portname; + return _backend->sample_time (); } -string -AudioEngine::make_port_name_non_relative (string portname) const +pframes_t +AudioEngine::sample_time_at_cycle_start () { - string str; - - if (portname.find_first_of (':') != string::npos) { - return portname; + if (!_backend) { + return 0; } - - str = jack_client_name; - str += ':'; - str += portname; - - return str; + return _backend->sample_time_at_cycle_start (); } -bool -AudioEngine::port_is_mine (const string& portname) const +pframes_t +AudioEngine::samples_since_cycle_start () { - if (portname.find_first_of (':') != string::npos) { - if (portname.substr (0, jack_client_name.length ()) != jack_client_name) { - return false; - } - } - return true; + if (!_backend) { + return 0; + } + return _backend->samples_since_cycle_start (); } bool -AudioEngine::port_is_physical (const std::string& portname) const -{ - GET_PRIVATE_JACK_POINTER_RET(_jack, false); - - jack_port_t *port = jack_port_by_name (_priv_jack, portname.c_str()); - - if (!port) { - return false; - } - - return jack_port_flags (port) & JackPortIsPhysical; -} - -void -AudioEngine::destroy () +AudioEngine::get_sync_offset (pframes_t& offset) const { - delete _instance; - _instance = 0; + if (!_backend) { + return false; + } + return _backend->get_sync_offset (offset); } int -AudioEngine::discover_backends () +AudioEngine::create_process_thread (boost::function func, pthread_t* thr, size_t stacksize) { - vector backend_modules; - AudioBackend* backend; - - Glib::PatternSpec so_extension_pattern("*.so"); - Glib::PatternSpec dylib_extension_pattern("*.dylib"); - - find_matching_files_in_search_path (backend_search_path (), - so_extension_pattern, backend_modules); - - find_matching_files_in_search_path (backend_search_path (), - dylib_extension_pattern, backend_modules); - - DEBUG_TRACE (DEBUG::Panning, string_compose (_("looking for backends in %1"), backend_search_path().to_string())); - - for (vector::iterator i = backend_modules.begin(); i != backend_modules.end(); ++i) { - if ((backend = backend_discover (*i)) != 0) { - _backends.insert (make_pair (backend->name(), backend)); - } + if (!_backend) { + return -1; } + return _backend->create_process_thread (func, thr, stacksize); } -AudioBackend* -AudioEngine::backend_discover (string path) -{ - Glib::Module* module = new Glib::Module(path); - AudioBackend* (*dfunc)(void); - void* func = 0; - - if (!module) { - error << string_compose(_("AudioEngine: cannot load module \"%1\" (%2)"), path, - Glib::Module::get_last_error()) << endmsg; - delete module; - return 0; - } - - if (!module->get_symbol("backend_factory", func)) { - error << string_compose(_("AudioEngine: module \"%1\" has no factory function."), path) << endmsg; - error << Glib::Module::get_last_error() << endmsg; - delete module; - return 0; - } - - dfunc = (AudioBackend* (*)(void))func; - AudioBackend* backend = dfunc(); - - return backend; -} diff --git a/libs/ardour/backend_search_path.cc b/libs/ardour/backend_search_path.cc new file mode 100644 index 0000000000..9a0425094b --- /dev/null +++ b/libs/ardour/backend_search_path.cc @@ -0,0 +1,45 @@ +/* + 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. + +*/ + +#include + +#include "ardour/backend_search_path.h" +#include "ardour/directory_names.h" +#include "ardour/filesystem_paths.h" + +namespace { + const char * const backend_env_variable_name = "ARDOUR_BACKEND_PATH"; +} // anonymous + +using namespace PBD; + +namespace ARDOUR { + +SearchPath +backend_search_path () +{ + SearchPath spath(user_config_directory ()); + spath += ardour_dll_directory (); + spath.add_subdirectory_to_paths(backend_dir_name); + + spath += SearchPath(Glib::getenv(backend_env_variable_name)); + return spath; +} + +} // namespace ARDOUR diff --git a/libs/ardour/bundle.cc b/libs/ardour/bundle.cc index 0ac62d7076..9d5640491f 100644 --- a/libs/ardour/bundle.cc +++ b/libs/ardour/bundle.cc @@ -454,16 +454,13 @@ Bundle::connected_to_anything (AudioEngine& engine) Bundle::PortList const & ports = channel_ports (i); for (uint32_t j = 0; j < ports.size(); ++j) { - /* ports[j] may not be an Ardour port, so use JACK directly + + /* ports[j] may not be an Ardour port, so use the port manager directly rather than doing it with Port. */ - jack_port_t* jp = jack_port_by_name (engine.jack(), ports[j].c_str()); - if (jp) { - const char ** c = jack_port_get_all_connections (engine.jack(), jp); - if (c) { - jack_free (c); - return true; - } + + if (engine.connected (ports[j])) { + return true; } } } diff --git a/libs/ardour/capturing_processor.cc b/libs/ardour/capturing_processor.cc index c4b463aba7..f14e018097 100644 --- a/libs/ardour/capturing_processor.cc +++ b/libs/ardour/capturing_processor.cc @@ -28,7 +28,7 @@ namespace ARDOUR { CapturingProcessor::CapturingProcessor (Session & session) : Processor (session, X_("capture point")) - , block_size (session.engine().frames_per_cycle()) + , block_size (AudioEngine::instance()->samples_per_cycle()) { realloc_buffers (); } diff --git a/libs/ardour/directory_names.cc b/libs/ardour/directory_names.cc index 0632c6f8f2..af7f7f550c 100644 --- a/libs/ardour/directory_names.cc +++ b/libs/ardour/directory_names.cc @@ -37,6 +37,7 @@ const char* const templates_dir_name = X_("templates"); const char* const route_templates_dir_name = X_("route_templates"); const char* const surfaces_dir_name = X_("surfaces"); const char* const panner_dir_name = X_("panners"); +const char* const backend_dir_name = X_("backends"); /* these should end up using variants of PROGRAM_NAME */ #ifdef __APPLE__ diff --git a/libs/ardour/export_channel.cc b/libs/ardour/export_channel.cc index 9b3f50e85d..82e5d80244 100644 --- a/libs/ardour/export_channel.cc +++ b/libs/ardour/export_channel.cc @@ -117,7 +117,7 @@ RegionExportChannelFactory::RegionExportChannelFactory (Session * session, Audio : region (region) , track (track) , type (type) - , frames_per_cycle (session->engine().frames_per_cycle ()) + , frames_per_cycle (session->engine().samples_per_cycle ()) , buffers_up_to_date (false) , region_start (region.position()) , position (region_start) diff --git a/libs/ardour/export_graph_builder.cc b/libs/ardour/export_graph_builder.cc index c7875c0b9b..301914b0ae 100644 --- a/libs/ardour/export_graph_builder.cc +++ b/libs/ardour/export_graph_builder.cc @@ -54,7 +54,7 @@ ExportGraphBuilder::ExportGraphBuilder (Session const & session) : session (session) , thread_pool (hardware_concurrency()) { - process_buffer_frames = session.engine().frames_per_cycle(); + process_buffer_frames = session.engine().samples_per_cycle(); } ExportGraphBuilder::~ExportGraphBuilder () @@ -505,7 +505,7 @@ ExportGraphBuilder::ChannelConfig::ChannelConfig (ExportGraphBuilder & parent, F config = new_config; - framecnt_t max_frames = parent.session.engine().frames_per_cycle(); + framecnt_t max_frames = parent.session.engine().samples_per_cycle(); interleaver.reset (new Interleaver ()); interleaver->init (new_config.channel_config->get_n_chans(), max_frames); diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index 4c91956ffd..b2833db4fa 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -338,7 +338,7 @@ void ARDOUR::init_post_engine () { /* the MIDI Manager is needed by the ControlProtocolManager */ - MIDI::Manager::create (AudioEngine::instance()->jack()); + MIDI::Manager::create (AudioEngine::instance()->port_engine()); ControlProtocolManager::instance().discover_control_protocols (); diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc index 26631d0fad..4b8c469a9d 100644 --- a/libs/ardour/internal_send.cc +++ b/libs/ardour/internal_send.cc @@ -310,7 +310,7 @@ bool InternalSend::configure_io (ChanCount in, ChanCount out) { bool ret = Send::configure_io (in, out); - set_block_size (_session.engine().frames_per_cycle()); + set_block_size (_session.engine().samples_per_cycle()); return ret; } diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 2d614a80a0..46e270f0ca 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -6,12 +6,43 @@ int JACKAudioBackend::start () { - Glib::Threads::Mutex::Lock lm (_state_lock); + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + + if (!_running) { + + if (!jack_port_type_get_buffer_size) { + warning << _("This version of JACK is old - you should upgrade to a newer version that supports jack_port_type_get_buffer_size()") << endmsg; + } + + if (_session) { + BootMessage (_("Connect session to engine")); + _session->set_frame_rate (jack_get_sample_rate (_priv_jack)); + } + + /* a proxy for whether jack_activate() will definitely call the buffer size + * callback. with older versions of JACK, this function symbol will be null. + * this is reliable, but not clean. + */ + + if (!jack_port_type_get_buffer_size) { + jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); + } + + _processed_frames = 0; + last_monitor_check = 0; - if (running()) { - /* already running */ - return 1; + set_jack_callbacks (); + + if (jack_activate (_priv_jack) == 0) { + _running = true; + _has_run = true; + Running(); /* EMIT SIGNAL */ + } else { + // error << _("cannot activate JACK client") << endmsg; + } } + + return _running ? 0 : -1; } int @@ -70,6 +101,39 @@ JACKAudioBackend::get_parameters (Parameters& params) const return 0; } +/* parameters */ + +ARDOUR::pframes_t +AudioEngine::frames_per_cycle () const +{ + GET_PRIVATE_JACK_POINTER_RET (_jack,0); + if (_buffer_size == 0) { + return jack_get_buffer_size (_jack); + } else { + return _buffer_size; + } +} + +ARDOUR::framecnt_t +AudioEngine::frame_rate () const +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, 0); + if (_frame_rate == 0) { + return (_frame_rate = jack_get_sample_rate (_priv_jack)); + } else { + return _frame_rate; + } +} + +size_t +AudioEngine::raw_buffer_size (DataType t) +{ + std::map::const_iterator s = _raw_buffer_sizes.find(t); + return (s != _raw_buffer_sizes.end()) ? s->second : 0; +} + + + /*--- private support methods ---*/ int @@ -539,8 +603,8 @@ JACKAudioBackend::process_thread () GET_PRIVATE_JACK_POINTER_RET(_jack,0); pframes_t nframes = jack_cycle_wait (_priv_jack); - - if (process_callback (nframes)) { + + if (engine.process_callback (nframes)) { return 0; } diff --git a/libs/ardour/ltc_slave.cc b/libs/ardour/ltc_slave.cc index 8d08fd6bb5..fecab5b606 100644 --- a/libs/ardour/ltc_slave.cc +++ b/libs/ardour/ltc_slave.cc @@ -420,15 +420,15 @@ bool LTC_Slave::speed_and_position (double& speed, framepos_t& pos) { bool engine_init_called = false; - framepos_t now = session.engine().frame_time_at_cycle_start(); + framepos_t now = session.engine().sample_time_at_cycle_start(); framepos_t sess_pos = session.transport_frame(); // corresponds to now - framecnt_t nframes = session.engine().frames_per_cycle(); + framecnt_t nframes = session.engine().samples_per_cycle(); - jack_default_audio_sample_t *in; + Sample* in; boost::shared_ptr ltcport = session.ltc_input_port(); - in = (jack_default_audio_sample_t*) jack_port_get_buffer (ltcport->jack_port(), nframes); + in = (Sample*) AudioEngine::instance()->port_engine().get_buffer (ltcport->port_handle(), nframes); frameoffset_t skip = now - (monotonic_cnt + nframes); monotonic_cnt = now; @@ -441,7 +441,7 @@ LTC_Slave::speed_and_position (double& speed, framepos_t& pos) else if (engine_dll_initstate != transport_direction && ltc_speed != 0) { engine_dll_initstate = transport_direction; init_engine_dll(last_ltc_frame + rint(ltc_speed * double(2 * nframes + now - last_timestamp)), - session.engine().frames_per_cycle()); + session.engine().samples_per_cycle()); engine_init_called = true; } @@ -521,8 +521,8 @@ LTC_Slave::speed_and_position (double& speed, framepos_t& pos) t0 = t1; t1 += b * e + e2; e2 += c * e; - speed_flt = (t1 - t0) / double(session.engine().frames_per_cycle()); - DEBUG_TRACE (DEBUG::LTC, string_compose ("LTC engine DLL t0:%1 t1:%2 err:%3 spd:%4 ddt:%5\n", t0, t1, e, speed_flt, e2 - session.engine().frames_per_cycle() )); + speed_flt = (t1 - t0) / double(session.engine().samples_per_cycle()); + DEBUG_TRACE (DEBUG::LTC, string_compose ("LTC engine DLL t0:%1 t1:%2 err:%3 spd:%4 ddt:%5\n", t0, t1, e, speed_flt, e2 - session.engine().samples_per_cycle() )); } else { DEBUG_TRACE (DEBUG::LTC, string_compose ("LTC adjusting elapsed (no DLL) from %1 by %2\n", elapsed, (2 * nframes * ltc_speed))); speed_flt = 0; diff --git a/libs/ardour/midi_buffer.cc b/libs/ardour/midi_buffer.cc index b47c3ca152..0b0e61000d 100644 --- a/libs/ardour/midi_buffer.cc +++ b/libs/ardour/midi_buffer.cc @@ -190,55 +190,6 @@ MidiBuffer::push_back(TimeType time, size_t size, const uint8_t* data) return true; } - -/** Push an event into the buffer. - * - * Note that the raw MIDI pointed to by ev will be COPIED and unmodified. - * That is, the caller still owns it, if it needs freeing it's Not My Problem(TM). - * Realtime safe. - * @return false if operation failed (not enough room) - */ -bool -MidiBuffer::push_back(const jack_midi_event_t& ev) -{ - const size_t stamp_size = sizeof(TimeType); - - if (_size + stamp_size + ev.size >= _capacity) { - cerr << "MidiBuffer::push_back failed (buffer is full)" << endl; - return false; - } - - if (!Evoral::midi_event_is_valid(ev.buffer, ev.size)) { - cerr << "WARNING: MidiBuffer ignoring illegal MIDI event" << endl; - return false; - } - -#ifndef NDEBUG - if (DEBUG::MidiIO & PBD::debug_bits) { - DEBUG_STR_DECL(a); - DEBUG_STR_APPEND(a, string_compose ("midibuffer %1 push jack event @ %2 sz %3 ", this, ev.time, ev.size)); - for (size_t i=0; i < ev.size; ++i) { - DEBUG_STR_APPEND(a,hex); - DEBUG_STR_APPEND(a,"0x"); - DEBUG_STR_APPEND(a,(int)ev.buffer[i]); - DEBUG_STR_APPEND(a,' '); - } - DEBUG_STR_APPEND(a,'\n'); - DEBUG_TRACE (DEBUG::MidiIO, DEBUG_STR(a).str()); - } -#endif - - uint8_t* const write_loc = _data + _size; - *((TimeType*)write_loc) = ev.time; - memcpy(write_loc + stamp_size, ev.buffer, ev.size); - - _size += stamp_size + ev.size; - _silent = false; - - return true; -} - - /** Reserve space for a new event in the buffer. * * This call is for copying MIDI directly into the buffer, the data location diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc index 9c11e818ac..ff6147d285 100644 --- a/libs/ardour/midi_diskstream.cc +++ b/libs/ardour/midi_diskstream.cc @@ -1097,7 +1097,7 @@ MidiDiskstream::prep_record_enable () boost::shared_ptr sp = _source_port.lock (); if (sp && Config->get_monitoring_model() == HardwareMonitoring) { - sp->request_jack_monitors_input (!(_session.config.get_auto_input() && rolling)); + sp->request_input_monitoring (!(_session.config.get_auto_input() && rolling)); } return true; @@ -1250,7 +1250,7 @@ MidiDiskstream::ensure_jack_monitors_input (bool yn) boost::shared_ptr sp = _source_port.lock (); if (sp) { - sp->ensure_jack_monitors_input (yn); + sp->ensure_input_monitoring (yn); } } diff --git a/libs/ardour/midi_port.cc b/libs/ardour/midi_port.cc index 72150f8cfc..9191a57080 100644 --- a/libs/ardour/midi_port.cc +++ b/libs/ardour/midi_port.cc @@ -26,7 +26,9 @@ using namespace ARDOUR; using namespace std; -MidiPort::MidiPort (const std::string& name, Flags flags) +#define port_engine AudioEngine::instance()->port_engine() + +MidiPort::MidiPort (const std::string& name, PortFlags flags) : Port (name, DataType::MIDI, flags) , _has_been_mixed_down (false) , _resolve_required (false) @@ -48,7 +50,7 @@ MidiPort::cycle_start (pframes_t nframes) _buffer->clear (); if (sends_output ()) { - jack_midi_clear_buffer (jack_port_get_buffer (_jack_port, nframes)); + port_engine.midi_clear (port_engine.get_buffer (_port_handle, nframes)); } } @@ -63,31 +65,33 @@ MidiPort::get_midi_buffer (pframes_t nframes) if (_input_active) { - void* jack_buffer = jack_port_get_buffer (_jack_port, nframes); - const pframes_t event_count = jack_midi_get_event_count (jack_buffer); + void* buffer = port_engine.get_buffer (_port_handle, nframes); + const pframes_t event_count = port_engine.get_midi_event_count (buffer); - /* suck all relevant MIDI events from the JACK MIDI port buffer + /* suck all relevant MIDI events from the MIDI port buffer into our MidiBuffer */ for (pframes_t i = 0; i < event_count; ++i) { - jack_midi_event_t ev; + pframes_t timestamp; + size_t size; + uint8_t* buf; - jack_midi_event_get (&ev, jack_buffer, i); + port_engine.midi_event_get (timestamp, size, &buf, buffer, i); - if (ev.buffer[0] == 0xfe) { + if (buf[0] == 0xfe) { /* throw away active sensing */ continue; } /* check that the event is in the acceptable time range */ - if ((ev.time >= (_global_port_buffer_offset + _port_buffer_offset)) && - (ev.time < (_global_port_buffer_offset + _port_buffer_offset + nframes))) { - _buffer->push_back (ev); + if ((timestamp >= (_global_port_buffer_offset + _port_buffer_offset)) && + (timestamp < (_global_port_buffer_offset + _port_buffer_offset + nframes))) { + _buffer->push_back (timestamp, size, buf); } else { - cerr << "Dropping incoming MIDI at time " << ev.time << "; offset=" + cerr << "Dropping incoming MIDI at time " << timestamp << "; offset=" << _global_port_buffer_offset << " limit=" << (_global_port_buffer_offset + _port_buffer_offset + nframes) << "\n"; } @@ -121,7 +125,7 @@ MidiPort::cycle_split () } void -MidiPort::resolve_notes (void* jack_buffer, MidiBuffer::TimeType when) +MidiPort::resolve_notes (void* port_buffer, MidiBuffer::TimeType when) { for (uint8_t channel = 0; channel <= 0xF; channel++) { @@ -132,13 +136,13 @@ MidiPort::resolve_notes (void* jack_buffer, MidiBuffer::TimeType when) * that prioritize sustain over AllNotesOff */ - if (jack_midi_event_write (jack_buffer, when, ev, 3) != 0) { + if (port_engine.midi_event_put (port_buffer, when, ev, 3) != 0) { cerr << "failed to deliver sustain-zero on channel " << channel << " on port " << name() << endl; } ev[1] = MIDI_CTL_ALL_NOTES_OFF; - if (jack_midi_event_write (jack_buffer, 0, ev, 3) != 0) { + if (port_engine.midi_event_put (port_buffer, 0, ev, 3) != 0) { cerr << "failed to deliver ALL NOTES OFF on channel " << channel << " on port " << name() << endl; } } @@ -149,11 +153,11 @@ MidiPort::flush_buffers (pframes_t nframes) { if (sends_output ()) { - void* jack_buffer = jack_port_get_buffer (_jack_port, nframes); - + void* port_buffer = port_engine.get_buffer (_port_handle, nframes); + if (_resolve_required) { /* resolve all notes at the start of the buffer */ - resolve_notes (jack_buffer, 0); + resolve_notes (port_buffer, 0); _resolve_required = false; } @@ -166,7 +170,7 @@ MidiPort::flush_buffers (pframes_t nframes) assert (ev.time() < (nframes + _global_port_buffer_offset + _port_buffer_offset)); if (ev.time() >= _global_port_buffer_offset + _port_buffer_offset) { - if (jack_midi_event_write (jack_buffer, (jack_nframes_t) ev.time(), ev.buffer(), ev.size()) != 0) { + if (port_engine.midi_event_put (port_buffer, (pframes_t) ev.time(), ev.buffer(), ev.size()) != 0) { cerr << "write failed, drop flushed note off on the floor, time " << ev.time() << " > " << _global_port_buffer_offset + _port_buffer_offset << endl; } diff --git a/libs/ardour/midi_ui.cc b/libs/ardour/midi_ui.cc index 78da32e427..0d9ac17601 100644 --- a/libs/ardour/midi_ui.cc +++ b/libs/ardour/midi_ui.cc @@ -107,7 +107,7 @@ MidiControlUI::midi_input_handler (IOCondition ioc, MIDI::Port* port) CrossThreadChannel::drain (port->selectable()); DEBUG_TRACE (DEBUG::MidiIO, string_compose ("data available on %1\n", port->name())); - framepos_t now = _session.engine().frame_time(); + framepos_t now = _session.engine().sample_time(); port->parse (now); } diff --git a/libs/ardour/mtc_slave.cc b/libs/ardour/mtc_slave.cc index 8ce0722d8b..0f2761c350 100644 --- a/libs/ardour/mtc_slave.cc +++ b/libs/ardour/mtc_slave.cc @@ -579,7 +579,7 @@ MTC_Slave::init_engine_dll (framepos_t pos, framepos_t inc) bool MTC_Slave::speed_and_position (double& speed, framepos_t& pos) { - framepos_t now = session.engine().frame_time_at_cycle_start(); + framepos_t now = session.engine().sample_time_at_cycle_start(); framepos_t sess_pos = session.transport_frame(); // corresponds to now //sess_pos -= session.engine().frames_since_cycle_start(); @@ -593,7 +593,7 @@ MTC_Slave::speed_and_position (double& speed, framepos_t& pos) if (last.timestamp == 0) { engine_dll_initstate = 0; } else if (engine_dll_initstate != transport_direction && last.speed != 0) { engine_dll_initstate = transport_direction; - init_engine_dll(last.position, session.engine().frames_per_cycle()); + init_engine_dll(last.position, session.engine().samples_per_cycle()); engine_dll_reinitialized = true; } @@ -643,8 +643,8 @@ MTC_Slave::speed_and_position (double& speed, framepos_t& pos) te0 = te1; te1 += be * e + ee2; ee2 += ce * e; - speed_flt = (te1 - te0) / double(session.engine().frames_per_cycle()); - DEBUG_TRACE (DEBUG::MTC, string_compose ("engine DLL t0:%1 t1:%2 err:%3 spd:%4 ddt:%5\n", te0, te1, e, speed_flt, ee2 - session.engine().frames_per_cycle() )); + speed_flt = (te1 - te0) / double(session.engine().samples_per_cycle()); + DEBUG_TRACE (DEBUG::MTC, string_compose ("engine DLL t0:%1 t1:%2 err:%3 spd:%4 ddt:%5\n", te0, te1, e, speed_flt, ee2 - session.engine().samples_per_cycle() )); } } diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index 859f1ff8ab..5a1750a878 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -30,6 +30,7 @@ #include "ardour/audioengine.h" #include "ardour/debug.h" #include "ardour/port.h" +#include "ardour/port_engine.h" #include "i18n.h" @@ -40,13 +41,17 @@ using namespace PBD; PBD::Signal2, boost::shared_ptr > Port::PostDisconnect; PBD::Signal0 Port::PortDrop; -AudioEngine* Port::_engine = 0; bool Port::_connecting_blocked = false; pframes_t Port::_global_port_buffer_offset = 0; pframes_t Port::_cycle_nframes = 0; +/* a handy define to shorten what would otherwise be a needlessly verbose + * repeated phrase + */ +#define port_engine AudioEngine::instance()->port_engine() + /** @param n Port short name */ -Port::Port (std::string const & n, DataType t, Flags f) +Port::Port (std::string const & n, DataType t, PortFlags f) : _port_buffer_offset (0) , _name (n) , _flags (f) @@ -64,15 +69,15 @@ Port::Port (std::string const & n, DataType t, Flags f) assert (_name.find_first_of (':') == std::string::npos); - if (!_engine->connected()) { + if (!port_engine.connected()) { throw failed_constructor (); } - if ((_jack_port = jack_port_register (_engine->jack (), _name.c_str (), t.to_jack_type (), _flags, 0)) == 0) { + if ((_jack_port = port_engine.register_port (_name, t.to_port_type (), _flags)) == 0) { cerr << "Failed to register JACK port \"" << _name << "\", reason is unknown from here\n"; throw failed_constructor (); } - + PortDrop.connect_same_thread (drop_connection, boost::bind (&Port::drop, this)); } @@ -85,11 +90,9 @@ Port::~Port () void Port::drop () { - if (_jack_port) { - if (_engine->jack ()) { - jack_port_unregister (_engine->jack (), _jack_port); - } - _jack_port = 0; + if (_port_handle) { + port_engine.unregister_port (port_handle); + _port_handle = 0; } } @@ -97,7 +100,7 @@ Port::drop () bool Port::connected () const { - return (jack_port_connected (_jack_port) != 0); + return (port_engine.connected (_port_handle) != 0); } int @@ -191,9 +194,9 @@ Port::disconnect (std::string const & other) int r = 0; if (sends_output ()) { - r = jack_disconnect (_engine->jack (), this_fullname.c_str (), other_fullname.c_str ()); + r = _engine->disconnect (this_fullname, other_fullname); } else { - r = jack_disconnect (_engine->jack (), other_fullname.c_str (), this_fullname.c_str ()); + r = _engine->disconnect (other_fullname, this_fullname); } if (r == 0) { @@ -236,27 +239,22 @@ Port::disconnect (Port* o) } void -Port::set_engine (AudioEngine* e) -{ - _engine = e; -} - -void -Port::request_monitor_input (bool yn) +Port::request_input_monitoring (bool yn) { - jack_port_request_monitor (_jack_port, yn); + port_eengine.request_input_monitoring (_port_handle, yn); } void -Port::ensure_monitor_input (bool yn) +Port::ensure_input_monitoring (bool yn) { - jack_port_ensure_monitor (_jack_port, yn); + port_engine.ensure_input_monitoring (_port_handle, yn); } bool Port::monitoring_input () const { - return jack_port_monitoring_input (_jack_port); + + return port_engine.monitoring_input (_port_handle); } void diff --git a/libs/ardour/wscript b/libs/ardour/wscript index ea08636ea8..20908e5260 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -1,4 +1,4 @@ -#!/usr/bin/env python +1#!/usr/bin/env python from waflib.extras import autowaf as autowaf from waflib import Options import os @@ -432,6 +432,25 @@ def build(bld): elif bld.env['build_target'] == 'x86_64': obj.source += [ 'sse_functions_xmm.cc', 'sse_functions_64bit.s' ] + # the JACK audio backend + + obj = bld.shlib (features = 'c cxx cshlib cxxshlib', source='jack_audiobackend.cc') + obj.cxxflags = [ '-fPIC' ] + obj.name = 'jack_audiobackend' + obj.target = 'jack_audiobackend' + obj.uselib = [ 'JACK' ] + obj.use = [ 'ardour' ] + obj.vnum = '1.0.0' + obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') + obj.includes = [ '.' ] + obj.defines = [ + 'PACKAGE="' + I18N_PACKAGE + '"', + 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"', + 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"', + 'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"', + ] + + # i18n if bld.is_defined('ENABLE_NLS'): mo_files = bld.path.ant_glob('po/*.mo') diff --git a/libs/midi++2/jack_midi_port.cc b/libs/midi++2/jack_midi_port.cc index 05df3171fa..372a7891c9 100644 --- a/libs/midi++2/jack_midi_port.cc +++ b/libs/midi++2/jack_midi_port.cc @@ -22,9 +22,6 @@ #include #include -#include -#include - #include "pbd/xml++.h" #include "pbd/error.h" #include "pbd/failed_constructor.h" @@ -45,37 +42,34 @@ template class EventRingBuffer; } pthread_t JackMIDIPort::_process_thread; -Signal0 JackMIDIPort::JackHalted; +Signal0 JackMIDIPort::EngineHalted; Signal0 JackMIDIPort::MakeConnections; -JackMIDIPort::JackMIDIPort (string const & name, Flags flags, jack_client_t* jack_client) +JackMIDIPort::JackMIDIPort (string const & name, Flags flags, ARDOUR::PortEngine& pengine) : Port (name, flags) + , _port_engine (pengine) + , _port_handle (0) , _currently_in_cycle (false) , _nframes_this_cycle (0) - , _jack_client (jack_client) - , _jack_port (0) , _last_write_timestamp (0) , output_fifo (512) , input_fifo (1024) , xthread (true) { - assert (jack_client); init (name, flags); } -JackMIDIPort::JackMIDIPort (const XMLNode& node, jack_client_t* jack_client) +JackMIDIPort::JackMIDIPort (const XMLNode& node, ARDOUR::PortEngine& pengine) : Port (node) + , _port_engine (pengine) + , _port_handle (0) , _currently_in_cycle (false) , _nframes_this_cycle (0) - , _jack_client (jack_client) - , _jack_port (0) , _last_write_timestamp (0) , output_fifo (512) , input_fifo (1024) , xthread (true) { - assert (jack_client); - Descriptor desc (node); init (desc.tag, desc.flags); set_state (node); @@ -89,17 +83,15 @@ JackMIDIPort::init (const string& /*name*/, Flags /*flags*/) } MakeConnections.connect_same_thread (connect_connection, boost::bind (&JackMIDIPort::make_connections, this)); - JackHalted.connect_same_thread (halt_connection, boost::bind (&JackMIDIPort::jack_halted, this)); + EngineHalted.connect_same_thread (halt_connection, boost::bind (&JackMIDIPort::engine_halted, this)); } JackMIDIPort::~JackMIDIPort () { - if (_jack_port) { - if (_jack_client) { - jack_port_unregister (_jack_client, _jack_port); - _jack_port = 0; - } + if (_port_handle) { + _port_engine.unregister_port (_port_handle); + _port_handle = 0; } } @@ -143,7 +135,7 @@ JackMIDIPort::parse (framecnt_t timestamp) void JackMIDIPort::cycle_start (pframes_t nframes) { - assert (_jack_port); + assert (_port_handle); _currently_in_cycle = true; _nframes_this_cycle = nframes; @@ -151,21 +143,23 @@ JackMIDIPort::cycle_start (pframes_t nframes) assert(_nframes_this_cycle == nframes); if (sends_output()) { - void *buffer = jack_port_get_buffer (_jack_port, nframes); + void *buffer = _port_engine.get_buffer (_port_handle, nframes); jack_midi_clear_buffer (buffer); flush (buffer); } if (receives_input()) { - void* jack_buffer = jack_port_get_buffer(_jack_port, nframes); - const pframes_t event_count = jack_midi_get_event_count(jack_buffer); + void* buffer = _port_engine.get_buffer (_port_handle, nframes); + const pframes_t event_count = _port_engine.get_midi_event_count (buffer); - jack_midi_event_t ev; - timestamp_t cycle_start_frame = jack_last_frame_time (_jack_client); + pframes_t time; + size_t size; + uint8_t* buf; + timestamp_t cycle_start_frame = _port_engine.last_frame_time (); for (pframes_t i = 0; i < event_count; ++i) { - jack_midi_event_get (&ev, jack_buffer, i); - input_fifo.write (cycle_start_frame + ev.time, (Evoral::EventType) 0, ev.size, ev.buffer); + _port_engine.midi_event_get (time, size, &buf, buffer, i); + input_fifo.write (cycle_start_frame + time, (Evoral::EventType) 0, size, buf); } if (event_count) { @@ -178,7 +172,7 @@ void JackMIDIPort::cycle_end () { if (sends_output()) { - flush (jack_port_get_buffer (_jack_port, _nframes_this_cycle)); + flush (_port_engine.get_buffer (_port_handle, _nframes_this_cycle)); } _currently_in_cycle = false; @@ -186,10 +180,9 @@ JackMIDIPort::cycle_end () } void -JackMIDIPort::jack_halted () +JackMIDIPort::engine_halted () { - _jack_client = 0; - _jack_port = 0; + _port_handle = 0; } void @@ -216,7 +209,7 @@ JackMIDIPort::write (const byte * msg, size_t msglen, timestamp_t timestamp) { int ret = 0; - if (!_jack_client || !_jack_port) { + if (!_port_handle) { /* poof ! make it just vanish into thin air, since we are no longer connected to JACK. */ @@ -268,18 +261,18 @@ JackMIDIPort::write (const byte * msg, size_t msglen, timestamp_t timestamp) if (timestamp == 0) { timestamp = _last_write_timestamp; } - - if ((ret = jack_midi_event_write (jack_port_get_buffer (_jack_port, _nframes_this_cycle), - timestamp, msg, msglen)) == 0) { + + if ((ret = _port_engine.midi_event_put (_port_engine.get_buffer (_port_handle, _nframes_this_cycle), + timestamp, msg, msglen)) == 0) { ret = msglen; _last_write_timestamp = timestamp; } else { cerr << "write of " << msglen << " @ " << timestamp << " failed, port holds " - << jack_midi_get_event_count (jack_port_get_buffer (_jack_port, _nframes_this_cycle)) - << " port is " << _jack_port + << _port_engine.get_midi_event_count (_port_engine.get_buffer (_port_handle, _nframes_this_cycle)) + << " port is " << _port_handle << " ntf = " << _nframes_this_cycle - << " buf = " << jack_port_get_buffer (_jack_port, _nframes_this_cycle) + << " buf = " << _port_engine.get_buffer (_port_handle, _nframes_this_cycle) << " ret = " << ret << endl; PBD::stacktrace (cerr, 20); @@ -305,7 +298,7 @@ JackMIDIPort::write (const byte * msg, size_t msglen, timestamp_t timestamp) } void -JackMIDIPort::flush (void* jack_port_buffer) +JackMIDIPort::flush (void* port_buffer) { RingBuffer< Evoral::Event >::rw_vector vec = { { 0, 0 }, { 0, 0 } }; size_t written; @@ -320,8 +313,7 @@ JackMIDIPort::flush (void* jack_port_buffer) Evoral::Event* evp = vec.buf[0]; for (size_t n = 0; n < vec.len[0]; ++n, ++evp) { - jack_midi_event_write (jack_port_buffer, - (timestamp_t) evp->time(), evp->buffer(), evp->size()); + _port_engine.midi_event_put (port_buffer, (timestamp_t) evp->time(), evp->buffer(), evp->size()); } } @@ -329,8 +321,7 @@ JackMIDIPort::flush (void* jack_port_buffer) Evoral::Event* evp = vec.buf[1]; for (size_t n = 0; n < vec.len[1]; ++n, ++evp) { - jack_midi_event_write (jack_port_buffer, - (timestamp_t) evp->time(), evp->buffer(), evp->size()); + _port_engine.midi_event_put (port_buffer, (timestamp_t) evp->time(), evp->buffer(), evp->size()); } } @@ -364,8 +355,21 @@ JackMIDIPort::read (byte *, size_t) int JackMIDIPort::create_port () { - _jack_port = jack_port_register(_jack_client, _tagname.c_str(), JACK_DEFAULT_MIDI_TYPE, _flags, 0); - return _jack_port == 0 ? -1 : 0; + ARDOUR::PortFlags f = ARDOUR::PortFlags (0); + + /* convert MIDI::Port::Flags to ARDOUR::PortFlags ... sigh */ + + if (_flags & IsInput) { + f = ARDOUR::PortFlags (f | ARDOUR::IsInput); + } + + if (_flags & IsOutput) { + f = ARDOUR::PortFlags (f | ARDOUR::IsOutput); + } + + _port_handle = _port_engine.register_port (_tagname, ARDOUR::DataType::MIDI, f); + + return _port_handle == 0 ? -1 : 0; } XMLNode& @@ -386,18 +390,16 @@ JackMIDIPort::get_state () const write (device_inquiry, sizeof (device_inquiry), 0); #endif - if (_jack_port) { + if (_port_handle) { - const char** jc = jack_port_get_connections (_jack_port); + vector connections; + _port_engine.get_connections (_port_handle, connections); string connection_string; - if (jc) { - for (int i = 0; jc[i]; ++i) { - if (i > 0) { - connection_string += ','; - } - connection_string += jc[i]; + for (vector::iterator i = connections.begin(); i != connections.end(); ++i) { + if (i != connections.begin()) { + connection_string += ','; } - free (jc); + connection_string += *i; } if (!connection_string.empty()) { @@ -435,14 +437,8 @@ JackMIDIPort::make_connections () vector ports; split (_connections, ports, ','); for (vector::iterator x = ports.begin(); x != ports.end(); ++x) { - if (_jack_client) { - if (receives_input()) { - jack_connect (_jack_client, (*x).c_str(), jack_port_name (_jack_port)); - } else { - jack_connect (_jack_client, jack_port_name (_jack_port), (*x).c_str()); - } - /* ignore failures */ - } + _port_engine.connect (_port_handle, *x); + /* ignore failures */ } } @@ -462,9 +458,8 @@ JackMIDIPort::is_process_thread() } void -JackMIDIPort::reestablish (jack_client_t* jack) +JackMIDIPort::reestablish () { - _jack_client = jack; int const r = create_port (); if (r) { diff --git a/libs/midi++2/manager.cc b/libs/midi++2/manager.cc index 822c74e125..3df9681dd3 100644 --- a/libs/midi++2/manager.cc +++ b/libs/midi++2/manager.cc @@ -36,17 +36,17 @@ using namespace PBD; Manager *Manager::theManager = 0; -Manager::Manager (jack_client_t* jack) +Manager::Manager (ARDOUR::PortEngine& eng) : _ports (new PortList) { - _mmc = new MachineControl (this, jack); + _mmc = new MachineControl (this, eng); - _mtc_input_port = add_port (new MIDI::JackMIDIPort ("MTC in", Port::IsInput, jack)); - _mtc_output_port = add_port (new MIDI::JackMIDIPort ("MTC out", Port::IsOutput, jack)); - _midi_input_port = add_port (new MIDI::JackMIDIPort ("MIDI control in", Port::IsInput, jack)); - _midi_output_port = add_port (new MIDI::JackMIDIPort ("MIDI control out", Port::IsOutput, jack)); - _midi_clock_input_port = add_port (new MIDI::JackMIDIPort ("MIDI clock in", Port::IsInput, jack)); - _midi_clock_output_port = add_port (new MIDI::JackMIDIPort ("MIDI clock out", Port::IsOutput, jack)); + _mtc_input_port = add_port (new MIDI::JackMIDIPort ("MTC in", Port::IsInput, eng)); + _mtc_output_port = add_port (new MIDI::JackMIDIPort ("MTC out", Port::IsOutput, eng)); + _midi_input_port = add_port (new MIDI::JackMIDIPort ("MIDI control in", Port::IsInput, eng)); + _midi_output_port = add_port (new MIDI::JackMIDIPort ("MIDI control out", Port::IsOutput, eng)); + _midi_clock_input_port = add_port (new MIDI::JackMIDIPort ("MIDI clock in", Port::IsInput, eng)); + _midi_clock_output_port = add_port (new MIDI::JackMIDIPort ("MIDI clock out", Port::IsOutput, eng)); } Manager::~Manager () @@ -113,14 +113,14 @@ Manager::cycle_end() /** Re-register ports that disappear on JACK shutdown */ void -Manager::reestablish (jack_client_t* jack) +Manager::reestablish () { boost::shared_ptr pr = _ports.reader (); for (PortList::const_iterator p = pr->begin(); p != pr->end(); ++p) { JackMIDIPort* pp = dynamic_cast (*p); if (pp) { - pp->reestablish (jack); + pp->reestablish (); } } } @@ -157,10 +157,10 @@ Manager::port (string const & n) } void -Manager::create (jack_client_t* jack) +Manager::create (ARDOUR::PortEngine& eng) { assert (theManager == 0); - theManager = new Manager (jack); + theManager = new Manager (eng); } void diff --git a/libs/midi++2/midi++/jack_midi_port.h b/libs/midi++2/midi++/jack_midi_port.h index a8859387a4..492756067c 100644 --- a/libs/midi++2/midi++/jack_midi_port.h +++ b/libs/midi++2/midi++/jack_midi_port.h @@ -22,8 +22,6 @@ #include #include -#include - #include "pbd/xml++.h" #include "pbd/crossthread.h" #include "pbd/signals.h" @@ -36,6 +34,8 @@ #include "midi++/parser.h" #include "midi++/port.h" +#include "ardour/port_engine.h" + namespace MIDI { class Channel; @@ -43,8 +43,8 @@ class PortRequest; class JackMIDIPort : public Port { public: - JackMIDIPort (std::string const &, Port::Flags, jack_client_t *); - JackMIDIPort (const XMLNode&, jack_client_t *); + JackMIDIPort (std::string const &, Port::Flags, ARDOUR::PortEngine&); + JackMIDIPort (const XMLNode&, ARDOUR::PortEngine&); ~JackMIDIPort (); XMLNode& get_state () const; @@ -61,7 +61,7 @@ class JackMIDIPort : public Port { pframes_t nframes_this_cycle() const { return _nframes_this_cycle; } - void reestablish (jack_client_t *); + void reestablish (); void reconnect (); static void set_process_thread (pthread_t); @@ -69,13 +69,14 @@ class JackMIDIPort : public Port { static bool is_process_thread(); static PBD::Signal0 MakeConnections; - static PBD::Signal0 JackHalted; + static PBD::Signal0 EngineHalted; private: + ARDOUR::PortEngine& _port_engine; + ARDOUR::PortEngine::PortHandle _port_handle; + bool _currently_in_cycle; pframes_t _nframes_this_cycle; - jack_client_t* _jack_client; - jack_port_t* _jack_port; timestamp_t _last_write_timestamp; RingBuffer< Evoral::Event > output_fifo; Evoral::EventRingBuffer input_fifo; @@ -89,8 +90,8 @@ private: std::string _connections; PBD::ScopedConnection connect_connection; PBD::ScopedConnection halt_connection; - void flush (void* jack_port_buffer); - void jack_halted (); + void flush (void* port_buffer); + void engine_halted (); void make_connections (); void init (std::string const &, Flags); diff --git a/libs/midi++2/midi++/manager.h b/libs/midi++2/midi++/manager.h index c37ba392b4..7f4df5c6c8 100644 --- a/libs/midi++2/midi++/manager.h +++ b/libs/midi++2/midi++/manager.h @@ -29,6 +29,10 @@ #include "midi++/types.h" #include "midi++/port.h" +namespace ARDOUR { + class PortEngine; +} + namespace MIDI { class MachineControl; @@ -69,14 +73,14 @@ class Manager { boost::shared_ptr get_midi_ports() const { return _ports.reader (); } - static void create (jack_client_t* jack); + static void create (ARDOUR::PortEngine&); static Manager *instance () { return theManager; } static void destroy (); - void reestablish (jack_client_t *); + void reestablish (); void reconnect (); PBD::Signal0 PortsChanged; @@ -84,7 +88,7 @@ class Manager { private: /* This is a SINGLETON pattern */ - Manager (jack_client_t *); + Manager (ARDOUR::PortEngine&); static Manager *theManager; MIDI::MachineControl* _mmc; diff --git a/libs/midi++2/midi++/mmc.h b/libs/midi++2/midi++/mmc.h index 18204e3fa8..0f362678ce 100644 --- a/libs/midi++2/midi++/mmc.h +++ b/libs/midi++2/midi++/mmc.h @@ -22,11 +22,17 @@ #include #include "timecode/time.h" + #include "pbd/signals.h" #include "pbd/ringbuffer.h" + #include "midi++/types.h" #include "midi++/parser.h" +namespace ARDOUR { + class PortEngine; +} + namespace MIDI { class Port; @@ -89,7 +95,7 @@ class MachineControl cmdResume = 0x7F }; - MachineControl (Manager *, jack_client_t *); + MachineControl (Manager *, ARDOUR::PortEngine&); Port* input_port() { return _input_port; } Port* output_port() { return _output_port; } diff --git a/libs/midi++2/mmc.cc b/libs/midi++2/mmc.cc index 06eadb5b34..0a71463721 100644 --- a/libs/midi++2/mmc.cc +++ b/libs/midi++2/mmc.cc @@ -22,7 +22,9 @@ #include #include "timecode/time.h" + #include "pbd/error.h" + #include "midi++/mmc.h" #include "midi++/port.h" #include "midi++/jack_midi_port.h" @@ -196,15 +198,15 @@ static void build_mmc_cmd_map () } -MachineControl::MachineControl (Manager* m, jack_client_t* jack) +MachineControl::MachineControl (Manager* m, ARDOUR::PortEngine& pengine) { build_mmc_cmd_map (); _receive_device_id = 0x7f; _send_device_id = 0x7f; - _input_port = m->add_port (new JackMIDIPort ("MMC in", Port::IsInput, jack)); - _output_port = m->add_port (new JackMIDIPort ("MMC out", Port::IsOutput, jack)); + _input_port = m->add_port (new JackMIDIPort ("MMC in", Port::IsInput, pengine)); + _output_port = m->add_port (new JackMIDIPort ("MMC out", Port::IsOutput, pengine)); _input_port->parser()->mmc.connect_same_thread (port_connections, boost::bind (&MachineControl::process_mmc_message, this, _1, _2, _3)); _input_port->parser()->start.connect_same_thread (port_connections, boost::bind (&MachineControl::spp_start, this)); diff --git a/libs/midi++2/wscript b/libs/midi++2/wscript index ea8988110d..8a4f2f6c69 100644 --- a/libs/midi++2/wscript +++ b/libs/midi++2/wscript @@ -26,6 +26,7 @@ out = 'build' path_prefix = 'libs/midi++2/' + libmidi_sources = [ 'midi.cc', 'channel.cc', @@ -68,7 +69,7 @@ def build(bld): obj.cxxflags = [ '-fPIC', '-DWITH_JACK_MIDI' ] # everybody loves JACK obj.export_includes = ['.'] - obj.includes = ['.', '../surfaces/control_protocol'] + obj.includes = ['.', '../surfaces/control_protocol', '../ardour' ] obj.name = 'libmidipp' obj.target = 'midipp' obj.uselib = 'GLIBMM SIGCPP XML JACK OSX' diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index cfa6524f70..ffda2435d0 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -1236,7 +1236,7 @@ MackieControlProtocol::midi_input_handler (IOCondition ioc, MIDI::Port* port) } DEBUG_TRACE (DEBUG::MackieControl, string_compose ("data available on %1\n", port->name())); - framepos_t now = session->engine().frame_time(); + framepos_t now = session->engine().sample_time(); port->parse (now); } diff --git a/libs/surfaces/mackie/surface_port.cc b/libs/surfaces/mackie/surface_port.cc index 9f52f0dccd..44db30ab1b 100644 --- a/libs/surfaces/mackie/surface_port.cc +++ b/libs/surfaces/mackie/surface_port.cc @@ -59,10 +59,10 @@ SurfacePort::SurfacePort (Surface& s) _input_port = new MIDI::IPMIDIPort (_surface->mcp().ipmidi_base() +_surface->number()); _output_port = _input_port; } else { - jack_client_t* jack = MackieControlProtocol::instance()->get_session().engine().jack(); + ARDOUR::PortEngine& port_engine (ARDOUR::AudioEngine::instance()->port_engine()); - _input_port = new MIDI::JackMIDIPort (string_compose (_("%1 in"), _surface->name()), MIDI::Port::IsInput, jack); - _output_port =new MIDI::JackMIDIPort (string_compose (_("%1 out"), _surface->name()), MIDI::Port::IsOutput, jack); + _input_port = new MIDI::JackMIDIPort (string_compose (_("%1 in"), _surface->name()), MIDI::Port::IsInput, port_engine); + _output_port =new MIDI::JackMIDIPort (string_compose (_("%1 out"), _surface->name()), MIDI::Port::IsOutput, port_engine); /* MackieControl has its own thread for handling input from the input * port, and we don't want anything handling output from the output -- cgit v1.2.3 From 2af6491c1c779cda31b9a9bd8eee2fb47015e91f Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 24 Jul 2013 19:30:08 -0400 Subject: new file --- libs/ardour/port_manager.cc | 475 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 475 insertions(+) create mode 100644 libs/ardour/port_manager.cc diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc new file mode 100644 index 0000000000..c279cf6d27 --- /dev/null +++ b/libs/ardour/port_manager.cc @@ -0,0 +1,475 @@ +/* + 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. + +*/ + + +#include "ardour/port_manager.h" + +using namespace ARDOUR; + +PortManager::PortManager () + , ports (new Ports) +{ +} + +void +AudioEngine::remove_all_ports () +{ + /* make sure that JACK callbacks that will be invoked as we cleanup + * ports know that they have nothing to do. + */ + + port_remove_in_progress = true; + + /* process lock MUST be held by caller + */ + + { + RCUWriter writer (ports); + boost::shared_ptr ps = writer.get_copy (); + ps->clear (); + } + + /* clear dead wood list in RCU */ + + ports.flush (); + + port_remove_in_progress = false; +} + + +string +AudioEngine::make_port_name_relative (const string& portname) const +{ + string::size_type len; + string::size_type n; + + len = portname.length(); + + for (n = 0; n < len; ++n) { + if (portname[n] == ':') { + break; + } + } + + if ((n != len) && (portname.substr (0, n) == jack_client_name)) { + return portname.substr (n+1); + } + + return portname; +} + +string +AudioEngine::make_port_name_non_relative (const string& portname) const +{ + string str; + + if (portname.find_first_of (':') != string::npos) { + return portname; + } + + str = jack_client_name; + str += ':'; + str += portname; + + return str; +} + +bool +AudioEngine::port_is_mine (const string& portname) const +{ + if (portname.find_first_of (':') != string::npos) { + if (portname.substr (0, jack_client_name.length ()) != jack_client_name) { + return false; + } + } + return true; +} + +bool +AudioEngine::port_is_physical (const std::string& portname) const +{ + GET_PRIVATE_JACK_POINTER_RET(_jack, false); + + jack_port_t *port = jack_port_by_name (_priv_jack, portname.c_str()); + + if (!port) { + return false; + } + + return jack_port_flags (port) & JackPortIsPhysical; +} + +ChanCount +AudioEngine::n_physical (unsigned long flags) const +{ + ChanCount c; + + GET_PRIVATE_JACK_POINTER_RET (_jack, c); + + const char ** ports = jack_get_ports (_priv_jack, NULL, NULL, JackPortIsPhysical | flags); + if (ports == 0) { + return c; + } + + for (uint32_t i = 0; ports[i]; ++i) { + if (!strstr (ports[i], "Midi-Through")) { + DataType t (jack_port_type (jack_port_by_name (_jack, ports[i]))); + c.set (t, c.get (t) + 1); + } + } + + free (ports); + + return c; +} + +ChanCount +AudioEngine::n_physical_inputs () const +{ + return n_physical (JackPortIsInput); +} + +ChanCount +AudioEngine::n_physical_outputs () const +{ + return n_physical (JackPortIsOutput); +} + +void +AudioEngine::get_physical (DataType type, unsigned long flags, vector& phy) +{ + GET_PRIVATE_JACK_POINTER (_jack); + const char ** ports; + + if ((ports = jack_get_ports (_priv_jack, NULL, type.to_jack_type(), JackPortIsPhysical | flags)) == 0) { + return; + } + + if (ports) { + for (uint32_t i = 0; ports[i]; ++i) { + if (strstr (ports[i], "Midi-Through")) { + continue; + } + phy.push_back (ports[i]); + } + free (ports); + } +} + +/** Get physical ports for which JackPortIsOutput is set; ie those that correspond to + * a physical input connector. + */ +void +AudioEngine::get_physical_inputs (DataType type, vector& ins) +{ + get_physical (type, JackPortIsOutput, ins); +} + +/** Get physical ports for which JackPortIsInput is set; ie those that correspond to + * a physical output connector. + */ +void +AudioEngine::get_physical_outputs (DataType type, vector& outs) +{ + get_physical (type, JackPortIsInput, outs); +} + + +bool +AudioEngine::can_request_hardware_monitoring () +{ + GET_PRIVATE_JACK_POINTER_RET (_jack,false); + const char ** ports; + + if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortCanMonitor)) == 0) { + return false; + } + + free (ports); + + return true; +} + + +/** @param name Full or short name of port + * @return Corresponding Port or 0. + */ + +boost::shared_ptr +AudioEngine::get_port_by_name (const string& portname) +{ + if (!_running) { + if (!_has_run) { + fatal << _("get_port_by_name() called before engine was started") << endmsg; + /*NOTREACHED*/ + } else { + boost::shared_ptr (); + } + } + + if (!port_is_mine (portname)) { + /* not an ardour port */ + return boost::shared_ptr (); + } + + boost::shared_ptr pr = ports.reader(); + std::string rel = make_port_name_relative (portname); + Ports::iterator x = pr->find (rel); + + if (x != pr->end()) { + /* its possible that the port was renamed by some 3rd party and + we don't know about it. check for this (the check is quick + and cheap), and if so, rename the port (which will alter + the port map as a side effect). + */ + const std::string check = make_port_name_relative (jack_port_name (x->second->jack_port())); + if (check != rel) { + x->second->set_name (check); + } + return x->second; + } + + return boost::shared_ptr (); +} + +void +AudioEngine::port_renamed (const std::string& old_relative_name, const std::string& new_relative_name) +{ + RCUWriter writer (ports); + boost::shared_ptr p = writer.get_copy(); + Ports::iterator x = p->find (old_relative_name); + + if (x != p->end()) { + boost::shared_ptr port = x->second; + p->erase (x); + p->insert (make_pair (new_relative_name, port)); + } +} + +const char ** +AudioEngine::get_ports (const string& port_name_pattern, const string& type_name_pattern, uint32_t flags) +{ + GET_PRIVATE_JACK_POINTER_RET (_jack,0); + if (!_running) { + if (!_has_run) { + fatal << _("get_ports called before engine was started") << endmsg; + /*NOTREACHED*/ + } else { + return 0; + } + } + return jack_get_ports (_priv_jack, port_name_pattern.c_str(), type_name_pattern.c_str(), flags); +} + +void +AudioEngine::port_registration_failure (const std::string& portname) +{ + GET_PRIVATE_JACK_POINTER (_jack); + string full_portname = jack_client_name; + full_portname += ':'; + full_portname += portname; + + + jack_port_t* p = jack_port_by_name (_priv_jack, full_portname.c_str()); + string reason; + + if (p) { + reason = string_compose (_("a port with the name \"%1\" already exists: check for duplicated track/bus names"), portname); + } else { + reason = string_compose (_("No more JACK ports are available. You will need to stop %1 and restart JACK with more ports if you need this many tracks."), PROGRAM_NAME); + } + + throw PortRegistrationFailure (string_compose (_("AudioEngine: cannot register port \"%1\": %2"), portname, reason).c_str()); +} + +boost::shared_ptr +AudioEngine::register_port (DataType dtype, const string& portname, bool input) +{ + boost::shared_ptr newport; + + try { + if (dtype == DataType::AUDIO) { + newport.reset (new AudioPort (portname, (input ? Port::IsInput : Port::IsOutput))); + } else if (dtype == DataType::MIDI) { + newport.reset (new MidiPort (portname, (input ? Port::IsInput : Port::IsOutput))); + } else { + throw PortRegistrationFailure("unable to create port (unknown type)"); + } + + RCUWriter writer (ports); + boost::shared_ptr ps = writer.get_copy (); + ps->insert (make_pair (make_port_name_relative (portname), newport)); + + /* writer goes out of scope, forces update */ + + return newport; + } + + catch (PortRegistrationFailure& err) { + throw err; + } catch (std::exception& e) { + throw PortRegistrationFailure(string_compose( + _("unable to create port: %1"), e.what()).c_str()); + } catch (...) { + throw PortRegistrationFailure("unable to create port (unknown error)"); + } +} + +boost::shared_ptr +AudioEngine::register_input_port (DataType type, const string& portname) +{ + return register_port (type, portname, true); +} + +boost::shared_ptr +AudioEngine::register_output_port (DataType type, const string& portname) +{ + return register_port (type, portname, false); +} + +int +AudioEngine::unregister_port (boost::shared_ptr port) +{ + /* caller must hold process lock */ + + if (!_running) { + /* probably happening when the engine has been halted by JACK, + in which case, there is nothing we can do here. + */ + return 0; + } + + { + RCUWriter writer (ports); + boost::shared_ptr ps = writer.get_copy (); + Ports::iterator x = ps->find (make_port_name_relative (port->name())); + + if (x != ps->end()) { + ps->erase (x); + } + + /* writer goes out of scope, forces update */ + } + + ports.flush (); + + return 0; +} + +bool +PortManager::connected (const string& port_name) +{ + PortEngine::PortHandle handle = _impl->get_port_by_name (port_name); + + if (!handle) { + return false; + } + + return _impl->connected (handle); +} + +int +AudioEngine::connect (const string& source, const string& destination) +{ + int ret; + + if (!_running) { + if (!_has_run) { + fatal << _("connect called before engine was started") << endmsg; + /*NOTREACHED*/ + } else { + return -1; + } + } + + string s = make_port_name_non_relative (source); + string d = make_port_name_non_relative (destination); + + + boost::shared_ptr src = get_port_by_name (s); + boost::shared_ptr dst = get_port_by_name (d); + + if (src) { + ret = src->connect (d); + } else if (dst) { + ret = dst->connect (s); + } else { + /* neither port is known to us, and this API isn't intended for use as a general patch bay */ + ret = -1; + } + + if (ret > 0) { + /* already exists - no error, no warning */ + } else if (ret < 0) { + error << string_compose(_("AudioEngine: cannot connect %1 (%2) to %3 (%4)"), + source, s, destination, d) + << endmsg; + } + + return ret; +} + +int +AudioEngine::disconnect (const string& source, const string& destination) +{ + int ret; + + if (!_running) { + if (!_has_run) { + fatal << _("disconnect called before engine was started") << endmsg; + /*NOTREACHED*/ + } else { + return -1; + } + } + + string s = make_port_name_non_relative (source); + string d = make_port_name_non_relative (destination); + + boost::shared_ptr src = get_port_by_name (s); + boost::shared_ptr dst = get_port_by_name (d); + + if (src) { + ret = src->disconnect (d); + } else if (dst) { + ret = dst->disconnect (s); + } else { + /* neither port is known to us, and this API isn't intended for use as a general patch bay */ + ret = -1; + } + return ret; +} + +int +AudioEngine::disconnect (boost::shared_ptr port) +{ + GET_PRIVATE_JACK_POINTER_RET (_jack,-1); + + if (!_running) { + if (!_has_run) { + fatal << _("disconnect called before engine was started") << endmsg; + /*NOTREACHED*/ + } else { + return -1; + } + } + + return port->disconnect_all (); +} + -- cgit v1.2.3 From 20b1a7d9d8800f8fdca8379cba01cc39757c34fc Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 25 Jul 2013 12:36:54 -0400 Subject: most of libardour now actually compiles --- libs/ardour/ardour/audio_backend.h | 8 +- libs/ardour/ardour/jack_audiobackend.h | 52 ++++++++--- libs/ardour/ardour/jack_portengine.h | 34 +++++++ libs/ardour/ardour/port.h | 14 +-- libs/ardour/ardour/port_engine.h | 34 ++++--- libs/ardour/ardour/port_manager.h | 4 - libs/ardour/ardour/session.h | 2 +- libs/ardour/ardour/slave.h | 2 +- libs/ardour/ardour/types.h | 4 + libs/ardour/jack_audiobackend.cc | 47 ++++++++++ libs/ardour/ltc_slave.cc | 2 +- libs/ardour/port.cc | 160 ++++++++++----------------------- libs/ardour/port_insert.cc | 6 +- libs/ardour/route.cc | 16 ++-- libs/ardour/session.cc | 10 +-- libs/ardour/session_export.cc | 2 +- libs/ardour/session_ltc.cc | 4 +- libs/ardour/session_state.cc | 14 ++- libs/ardour/session_transport.cc | 10 ++- libs/ardour/slave.cc | 4 +- 20 files changed, 246 insertions(+), 183 deletions(-) create mode 100644 libs/ardour/ardour/jack_portengine.h diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 7ae48c4c46..e8511d0c57 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -17,8 +17,8 @@ */ -#ifndef __ardour_audiobackend_h__ -#define __ardour_audiobackend_h__ +#ifndef __libardour_audiobackend_h__ +#define __libardour_audiobackend_h__ #include #include @@ -26,6 +26,8 @@ #include #include +#include + namespace ARDOUR { class AudioEngine; @@ -342,5 +344,5 @@ class AudioBackend { } -#endif /* __ardour_audiobackend_h__ */ +#endif /* __libardour_audiobackend_h__ */ diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 2e12d521cd..218f08b55e 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -17,34 +17,62 @@ */ -#ifndef __ardour_jack_audiobackend_h__ -#define __ardour_jack_audiobackend_h__ +#ifndef __libardour_jack_audiobackend_h__ +#define __libardour_jack_audiobackend_h__ #include #include #include +#include +#ifdef HAVE_JACK_SESSION +#include +#endif + #include "ardour/audio_backend.h" namespace ARDOUR { -class JACKAudioBackend : public { +class JACKAudioBackend : public AudioBackend { public: JACKAudioBackend (AudioEngine& e); ~JACKAudioBackend (); + std::string name() const; + bool connected() const; + bool is_realtime () const; + std::vector enumerate_devices () const; std::vector available_sample_rates (const std::string& device) const; std::vector available_buffer_sizes (const std::string& device) const; - - int set_parameters (const Parameters&); - int get_parameters (Parameters&) const; + uint32_t available_input_channel_count (const std::string& device) const; + uint32_t available_output_channel_count (const std::string& device) const; + + int set_device_name (const std::string&); + int set_sample_rate (float); + int set_buffer_size (uint32_t); + int set_sample_format (SampleFormat); + int set_interleaved (bool yn); + int set_input_channels (uint32_t); + int set_output_channels (uint32_t); + int set_systemic_input_latency (uint32_t); + int set_systemic_output_latency (uint32_t); + + std::string get_device_name () const; + float get_sample_rate () const; + uint32_t get_buffer_size () const; + SampleFormat get_sample_format () const; + bool get_interleaved () const; + uint32_t get_input_channels () const; + uint32_t get_output_channels () const; + uint32_t get_systemic_input_latency () const; + uint32_t get_systemic_output_latency () const; int start (); int stop (); int pause (); - int freewheel (); + int freewheel (bool); private: jack_client_t* volatile _jack; /* could be reset to null by SIGPIPE or another thread */ @@ -60,10 +88,10 @@ class JACKAudioBackend : public { static void _freewheel_callback (int , void *arg); static void _registration_callback (jack_port_id_t, int, void *); static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); - static void _latency_callback (jack_latency_callback_mode_t, void*);# + static void _latency_callback (jack_latency_callback_mode_t, void*); static void halted (void *); static void halted_info (jack_status_t,const char*,void *); -ifdef HAVE_JACK_SESSION +#ifdef HAVE_JACK_SESSION static void _session_callback (jack_session_event_t *event, void *arg); #endif @@ -103,11 +131,11 @@ ifdef HAVE_JACK_SESSION bool _target_interleaved; uint32_t _target_input_channels; uint32_t _target_output_channels; - uin32_t _target_systemic_input_latency; - uin32_t _target_systemic_input_latency; + uint32_t _target_systemic_input_latency; + uint32_t _target_systemic_output_latency; }; -} +} // namespace #endif /* __ardour_audiobackend_h__ */ diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h new file mode 100644 index 0000000000..2456adc272 --- /dev/null +++ b/libs/ardour/ardour/jack_portengine.h @@ -0,0 +1,34 @@ +/* + 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. + +*/ + +#ifndef __libardour_jack_portengine_h__ +#define __libardour_jack_portengine_h__ + +namespace ARDOUR { + +class JACKPortEngine : public PortEngine +{ + public: + JACKPortEngine (const std::string& client_name, + const std::string& session_uuid); +}; + +} // namespace + +#endif /* __libardour_jack_portengine_h__ */ diff --git a/libs/ardour/ardour/port.h b/libs/ardour/ardour/port.h index 6186ce7748..06175de673 100644 --- a/libs/ardour/ardour/port.h +++ b/libs/ardour/ardour/port.h @@ -97,13 +97,13 @@ public: PortEngine::PortHandle port_handle() { return _port_handle; } - void get_connected_latency_range (jack_latency_range_t& range, bool playback) const; + void get_connected_latency_range (LatencyRange& range, bool playback) const; - void set_private_latency_range (jack_latency_range_t& range, bool playback); - const jack_latency_range_t& private_latency_range (bool playback) const; + void set_private_latency_range (LatencyRange& range, bool playback); + const LatencyRange& private_latency_range (bool playback) const; - void set_public_latency_range (jack_latency_range_t& range, bool playback) const; - jack_latency_range_t public_latency_range (bool playback) const; + void set_public_latency_range (LatencyRange& range, bool playback) const; + LatencyRange public_latency_range (bool playback) const; virtual void reset (); @@ -147,8 +147,8 @@ protected: framecnt_t _port_buffer_offset; /* access only from process() tree */ - jack_latency_range_t _private_playback_latency; - jack_latency_range_t _private_capture_latency; + LatencyRange _private_playback_latency; + LatencyRange _private_capture_latency; private: std::string _name; ///< port short name diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index 3bea32620e..8dc35ec8f5 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -87,28 +87,39 @@ class PortEngine { typedef void* PortHandle; - virtual bool connected() const = 0; + virtual bool connected() const = 0; + virtual void* private_handle() const = 0; virtual int set_port_name (PortHandle, const std::string&) = 0; virtual std::string get_port_name (PortHandle) const = 0; virtual PortHandle* get_port_by_name (const std::string&) const = 0; - virtual PortHandle register_port (const std::string&, DataType::Symbol, ARDOUR::PortFlags) = 0; + virtual std::string make_port_name_relative (const std::string& name) const = 0; + virtual std::string make_port_name_non_relative (const std::string& name) const = 0; + virtual bool port_is_mine (const std::string& fullname) const = 0; + + virtual PortHandle register_port (const std::string& shortname, ARDOUR::DataType, ARDOUR::PortFlags) = 0; virtual void unregister_port (PortHandle) = 0; + virtual bool connected (PortHandle) = 0; - virtual int disconnect_all (PortHandle) = 0; virtual bool connected_to (PortHandle, const std::string&) = 0; - virtual int get_connections (PortHandle, std::vector&) = 0; virtual bool physically_connected (PortHandle) = 0; + + virtual int get_connections (PortHandle, std::vector&) = 0; + virtual int connect (PortHandle, const std::string&) = 0; virtual int disconnect (PortHandle, const std::string&) = 0; + virtual int disconnect_all (PortHandle) = 0; + + virtual int connect (const std::string& src, const std::string& dst) = 0; + virtual int disconnect (const std::string& src, const std::string& dst) = 0; /* MIDI */ - virtual void midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) = 0; - virtual int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size) = 0; + virtual void midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) = 0; + virtual int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size) = 0; virtual uint32_t get_midi_event_count (void* port_buffer); - virtual void midi_clear (void* port_buffer); + virtual void midi_clear (void* port_buffer); /* Monitoring */ @@ -120,13 +131,8 @@ class PortEngine { /* Latency management */ - struct LatencyRange { - uint32_t min; - uint32_t max; - }; - - virtual void set_latency_range (PortHandle, int dir, LatencyRange) = 0; - virtual LatencyRange get_latency_range (PortHandle, int dir) = 0; + virtual void set_latency_range (PortHandle, bool for_playback, LatencyRange) = 0; + virtual LatencyRange get_latency_range (PortHandle, bool for_playback) = 0; virtual LatencyRange get_connected_latency_range (PortHandle, int dir) = 0; virtual void* get_buffer (PortHandle, pframes_t) = 0; diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index 399ab46b34..0e9a84ea8c 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -78,10 +78,6 @@ class PortManager bool can_request_input_monitoring () const; void request_input_monitoring (const std::string&, bool) const; void ensure_input_monitoring (const std::string&, bool) const; - - std::string make_port_name_relative (const std::string&) const; - std::string make_port_name_non_relative (const std::string&) const; - bool port_is_mine (const std::string&) const; class PortRegistrationFailure : public std::exception { public: diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index a149224607..a782680082 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -1213,7 +1213,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi framepos_t ltc_timecode_offset; bool ltc_timecode_negative_offset; - jack_latency_range_t ltc_out_latency; + LatencyRange ltc_out_latency; void ltc_tx_initialize(); void ltc_tx_cleanup(); diff --git a/libs/ardour/ardour/slave.h b/libs/ardour/ardour/slave.h index 9862824da9..88c9a09be7 100644 --- a/libs/ardour/ardour/slave.h +++ b/libs/ardour/ardour/slave.h @@ -391,7 +391,7 @@ public: PBD::ScopedConnectionList port_connections; PBD::ScopedConnection config_connection; - jack_latency_range_t ltc_slave_latency; + LatencyRange ltc_slave_latency; /* DLL - chase LTC */ int transport_direction; diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index 390f1e4fec..0167909ef3 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -602,6 +602,10 @@ namespace ARDOUR { IsOutput = 2, }; + struct LatencyRange { + uint32_t min; //< samples + uint32_t max; //< samples + }; } // namespace ARDOUR diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 46e270f0ca..f994e5fe40 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -1,8 +1,55 @@ +/* + 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. + +*/ + +#include + +#include "ardour/audioengine.h" +#include "ardour/types.h" #include "ardour/jack_audiobackend.h" +using namespace ARDOUR; +using std::string; + #define GET_PRIVATE_JACK_POINTER(j) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return; } #define GET_PRIVATE_JACK_POINTER_RET(j,r) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return r; } +JACKAudioBackend::JACKAudioBackend (AudioEngine& e) + : AudioBackend (e) + , _jack (0) + , _target_sample_rate (48000) + , _target_buffer_size (1024) + , _target_sample_format (FloatingPoint) + , _target_interleaved (false) + , _target_input_channels (-1) + , _target_output_channels (-1) + , _target_systemic_input_latency (0) + , _target_systemic_output_latency (0) +{ +} + +int +JACKAudioBackend::set_device_name (const string& dev) +{ + _target_device = dev; + return 0; +} + int JACKAudioBackend::start () { diff --git a/libs/ardour/ltc_slave.cc b/libs/ardour/ltc_slave.cc index fecab5b606..1085f44f1c 100644 --- a/libs/ardour/ltc_slave.cc +++ b/libs/ardour/ltc_slave.cc @@ -134,7 +134,7 @@ LTC_Slave::resync_latency() if (!session.deletion_in_progress() && session.ltc_output_io()) { /* check if Port exits */ boost::shared_ptr ltcport = session.ltc_input_port(); - ltcport->get_connected_latency_range(ltc_slave_latency, false); + ltcport->get_connected_latency_range (ltc_slave_latency, false); } } diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index 5a1750a878..fea2a041e0 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -63,7 +63,7 @@ Port::Port (std::string const & n, DataType t, PortFlags f) _private_capture_latency.max = 0; /* Unfortunately we have to pass the DataType into this constructor so that - we can create the right kind of JACK port; aside from this we'll use the + we can create the right kind of port; aside from this we'll use the virtual function type () to establish type. */ @@ -73,8 +73,8 @@ Port::Port (std::string const & n, DataType t, PortFlags f) throw failed_constructor (); } - if ((_jack_port = port_engine.register_port (_name, t.to_port_type (), _flags)) == 0) { - cerr << "Failed to register JACK port \"" << _name << "\", reason is unknown from here\n"; + if ((_port_handle = port_engine.register_port (_name, t, _flags)) == 0) { + cerr << "Failed to register port \"" << _name << "\", reason is unknown from here\n"; throw failed_constructor (); } @@ -91,7 +91,7 @@ void Port::drop () { if (_port_handle) { - port_engine.unregister_port (port_handle); + port_engine.unregister_port (_port_handle); _port_handle = 0; } } @@ -106,12 +106,12 @@ Port::connected () const int Port::disconnect_all () { - jack_port_disconnect (_engine->jack(), _jack_port); + port_engine.disconnect_all (_port_handle); _connections.clear (); /* a cheaper, less hacky way to do boost::shared_from_this() ... */ - boost::shared_ptr pself = _engine->get_port_by_name (name()); + boost::shared_ptr pself = AudioEngine::instance()->get_port_by_name (name()); PostDisconnect (pself, boost::shared_ptr()); // emit signal return 0; @@ -123,48 +123,28 @@ Port::disconnect_all () bool Port::connected_to (std::string const & o) const { - if (!_engine->connected()) { + if (!port_engine.connected()) { /* in some senses, this answer isn't the right one all the time, because we know about our connections and will re-establish - them when we reconnect to JACK. + them when we reconnect to the port engine. */ return false; } - return jack_port_connected_to (_jack_port, - _engine->make_port_name_non_relative(o).c_str ()); + return port_engine.connected_to (_port_handle, port_engine.make_port_name_non_relative (o)); } -/** @param o Filled in with port full names of ports that we are connected to */ int Port::get_connections (std::vector & c) const { - int n = 0; - - if (_engine->connected()) { - const char** jc = jack_port_get_connections (_jack_port); - if (jc) { - for (int i = 0; jc[i]; ++i) { - c.push_back (jc[i]); - ++n; - } - - if (jack_free) { - jack_free (jc); - } else { - free (jc); - } - } - } - - return n; + return port_engine.get_connections (_port_handle, c); } int Port::connect (std::string const & other) { - std::string const other_shrt = _engine->make_port_name_non_relative (other); - std::string const this_shrt = _engine->make_port_name_non_relative (_name); + std::string const other_name = port_engine.make_port_name_non_relative (other); + std::string const our_name = port_engine.make_port_name_non_relative (_name); int r = 0; @@ -173,9 +153,9 @@ Port::connect (std::string const & other) } if (sends_output ()) { - r = jack_connect (_engine->jack (), this_shrt.c_str (), other_shrt.c_str ()); + port_engine.connect (our_name, other_name); } else { - r = jack_connect (_engine->jack (), other_shrt.c_str (), this_shrt.c_str()); + port_engine.connect (other_name, our_name); } if (r == 0) { @@ -188,15 +168,15 @@ Port::connect (std::string const & other) int Port::disconnect (std::string const & other) { - std::string const other_fullname = _engine->make_port_name_non_relative (other); - std::string const this_fullname = _engine->make_port_name_non_relative (_name); + std::string const other_fullname = port_engine.make_port_name_non_relative (other); + std::string const this_fullname = port_engine.make_port_name_non_relative (_name); int r = 0; if (sends_output ()) { - r = _engine->disconnect (this_fullname, other_fullname); + r = port_engine.disconnect (this_fullname, other_fullname); } else { - r = _engine->disconnect (other_fullname, this_fullname); + r = port_engine.disconnect (other_fullname, this_fullname); } if (r == 0) { @@ -205,8 +185,8 @@ Port::disconnect (std::string const & other) /* a cheaper, less hacky way to do boost::shared_from_this() ... */ - boost::shared_ptr pself = _engine->get_port_by_name (name()); - boost::shared_ptr pother = _engine->get_port_by_name (other); + boost::shared_ptr pself = AudioEngine::instance()->get_port_by_name (name()); + boost::shared_ptr pother = AudioEngine::instance()->get_port_by_name (other); if (pself && pother) { /* Disconnecting from another Ardour port: need to allow @@ -241,7 +221,7 @@ Port::disconnect (Port* o) void Port::request_input_monitoring (bool yn) { - port_eengine.request_input_monitoring (_port_handle, yn); + port_engine.request_input_monitoring (_port_handle, yn); } void @@ -276,28 +256,23 @@ Port::increment_port_buffer_offset (pframes_t nframes) } void -Port::set_public_latency_range (jack_latency_range_t& range, bool playback) const +Port::set_public_latency_range (LatencyRange& range, bool playback) const { - /* this sets the visible latency that the rest of JACK sees. because we do latency - compensation, all (most) of our visible port latency values are identical. + /* this sets the visible latency that the rest of the port system + sees. because we do latency compensation, all (most) of our visible + port latency values are identical. */ - if (!jack_port_set_latency_range) { - return; - } - DEBUG_TRACE (DEBUG::Latency, string_compose ("SET PORT %1 %4 PUBLIC latency now [%2 - %3]\n", name(), range.min, range.max, (playback ? "PLAYBACK" : "CAPTURE")));; - jack_port_set_latency_range (_jack_port, - (playback ? JackPlaybackLatency : JackCaptureLatency), - &range); + port_engine.set_latency_range (_port_handle, playback, range); } void -Port::set_private_latency_range (jack_latency_range_t& range, bool playback) +Port::set_private_latency_range (LatencyRange& range, bool playback) { if (playback) { _private_playback_latency = range; @@ -315,12 +290,12 @@ Port::set_private_latency_range (jack_latency_range_t& range, bool playback) _private_capture_latency.max)); } - /* push to public (JACK) location so that everyone else can see it */ + /* push to public (port system) location so that everyone else can see it */ set_public_latency_range (range, playback); } -const jack_latency_range_t& +const LatencyRange& Port::private_latency_range (bool playback) const { if (playback) { @@ -340,14 +315,13 @@ Port::private_latency_range (bool playback) const } } -jack_latency_range_t +LatencyRange Port::public_latency_range (bool /*playback*/) const { - jack_latency_range_t r; + LatencyRange r; + + r = port_engine.get_latency_range (_port_handle, sends_output() ? true : false); - jack_port_get_latency_range (_jack_port, - sends_output() ? JackPlaybackLatency : JackCaptureLatency, - &r); DEBUG_TRACE (DEBUG::Latency, string_compose ( "GET PORT %1: %4 PUBLIC latency range %2 .. %3\n", name(), r.min, r.max, @@ -356,21 +330,9 @@ Port::public_latency_range (bool /*playback*/) const } void -Port::get_connected_latency_range (jack_latency_range_t& range, bool playback) const +Port::get_connected_latency_range (LatencyRange& range, bool playback) const { - if (!jack_port_get_latency_range) { - return; - } - vector connections; - jack_client_t* jack = _engine->jack(); - - if (!jack) { - range.min = 0; - range.max = 0; - PBD::warning << _("get_connected_latency_range() called while disconnected from JACK") << endmsg; - return; - } get_connections (connections); @@ -384,21 +346,18 @@ Port::get_connected_latency_range (jack_latency_range_t& range, bool playback) c for (vector::const_iterator c = connections.begin(); c != connections.end(); ++c) { - jack_latency_range_t lr; + LatencyRange lr; if (!AudioEngine::instance()->port_is_mine (*c)) { - /* port belongs to some other JACK client, use - * JACK to lookup its latency information. + /* port belongs to some other port-system client, use + * the port engine to lookup its latency information. */ - jack_port_t* remote_port = jack_port_by_name (_engine->jack(), (*c).c_str()); + PortEngine::PortHandle remote_port = port_engine.get_port_by_name (*c); if (remote_port) { - jack_port_get_latency_range ( - remote_port, - (playback ? JackPlaybackLatency : JackCaptureLatency), - &lr); + lr = port_engine.get_latency_range (remote_port, playback); DEBUG_TRACE (DEBUG::Latency, string_compose ( "\t%1 <-> %2 : latter has latency range %3 .. %4\n", @@ -442,15 +401,9 @@ Port::get_connected_latency_range (jack_latency_range_t& range, bool playback) c int Port::reestablish () { - jack_client_t* jack = _engine->jack(); - - if (!jack) { - return -1; - } - - _jack_port = jack_port_register (jack, _name.c_str(), type().to_jack_type(), _flags, 0); + _port_handle = port_engine.register_port (_name, type(), _flags); - if (_jack_port == 0) { + if (_port_handle == 0) { PBD::error << string_compose (_("could not reregister %1"), _name) << endmsg; return -1; } @@ -475,7 +428,7 @@ Port::reconnect () return 0; } -/** @param n Short port name (no JACK client name) */ +/** @param n Short port name (no port-system client name) */ int Port::set_name (std::string const & n) { @@ -483,10 +436,10 @@ Port::set_name (std::string const & n) return 0; } - int const r = jack_port_set_name (_jack_port, n.c_str()); + int const r = port_engine.set_port_name (_port_handle, n); if (r == 0) { - _engine->port_renamed (_name, n); + AudioEngine::instance()->port_renamed (_name, n); _name = n; } @@ -497,29 +450,6 @@ Port::set_name (std::string const & n) bool Port::physically_connected () const { - const char** jc = jack_port_get_connections (_jack_port); - - if (jc) { - for (int i = 0; jc[i]; ++i) { - - jack_port_t* port = jack_port_by_name (_engine->jack(), jc[i]); - - if (port && (jack_port_flags (port) & JackPortIsPhysical)) { - if (jack_free) { - jack_free (jc); - } else { - free (jc); - } - return true; - } - } - if (jack_free) { - jack_free (jc); - } else { - free (jc); - } - } - - return false; + return port_engine.physically_connected (_port_handle); } diff --git a/libs/ardour/port_insert.cc b/libs/ardour/port_insert.cc index c13927449a..b7f74b458e 100644 --- a/libs/ardour/port_insert.cc +++ b/libs/ardour/port_insert.cc @@ -72,7 +72,7 @@ PortInsert::start_latency_detection () void PortInsert::stop_latency_detection () { - _latency_flush_frames = signal_latency() + _session.engine().frames_per_cycle(); + _latency_flush_frames = signal_latency() + _session.engine().samples_per_cycle(); _latency_detect = false; } @@ -93,7 +93,7 @@ PortInsert::latency() const */ if (_measured_latency == 0) { - return _session.engine().frames_per_cycle() + _input->latency(); + return _session.engine().samples_per_cycle() + _input->latency(); } else { return _measured_latency; } @@ -240,7 +240,7 @@ PortInsert::signal_latency() const */ if (_measured_latency == 0) { - return _session.engine().frames_per_cycle() + _input->signal_latency(); + return _session.engine().samples_per_cycle() + _input->signal_latency(); } else { return _measured_latency; } diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 5c794fb379..c2965a4617 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -967,7 +967,7 @@ Route::add_processor (boost::shared_ptr processor, boost::shared_ptr< DEBUG_TRACE (DEBUG::Processors, string_compose ( "%1 adding processor %2\n", name(), processor->name())); - if (!_session.engine().connected() || !processor) { + if (!AudioEngine::instance()->port_engine().connected() || !processor) { return 1; } @@ -1132,7 +1132,7 @@ Route::add_processors (const ProcessorList& others, boost::shared_ptr loc = _processors.end (); } - if (!_session.engine().connected()) { + if (!_session.engine().port_engine().connected()) { return 1; } @@ -1329,7 +1329,7 @@ Route::ab_plugins (bool forward) void Route::clear_processors (Placement p) { - if (!_session.engine().connected()) { + if (!_session.engine().port_engine().connected()) { return; } @@ -1416,7 +1416,7 @@ Route::remove_processor (boost::shared_ptr processor, ProcessorStream return 0; } - if (!_session.engine().connected()) { + if (!_session.engine().port_engine().connected()) { return 1; } @@ -1508,7 +1508,7 @@ Route::remove_processors (const ProcessorList& to_be_deleted, ProcessorStreams* { ProcessorList deleted; - if (!_session.engine().connected()) { + if (!_session.engine().port_engine().connected()) { return 1; } @@ -3777,7 +3777,7 @@ Route::update_port_latencies (PortSet& from, PortSet& to, bool playback, framecn universally true, but the alternative is way too corner-case to worry about. */ - jack_latency_range_t all_connections; + LatencyRange all_connections; if (from.empty()) { all_connections.min = 0; @@ -3792,7 +3792,7 @@ Route::update_port_latencies (PortSet& from, PortSet& to, bool playback, framecn for (PortSet::iterator p = from.begin(); p != from.end(); ++p) { - jack_latency_range_t range; + LatencyRange range; p->get_connected_latency_range (range, playback); @@ -3857,7 +3857,7 @@ Route::set_public_port_latencies (framecnt_t value, bool playback) const latency compensation into account. */ - jack_latency_range_t range; + LatencyRange range; range.min = value; range.max = value; diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 914c6a9a77..1ea3732e3f 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -170,7 +170,7 @@ Session::Session (AudioEngine &eng, interpolation.add_channel_to (0, 0); - if (!eng.connected()) { + if (!eng.port_engine().connected()) { throw failed_constructor(); } @@ -346,8 +346,8 @@ Session::when_engine_running () BootMessage (_("Set block size and sample rate")); - set_block_size (_engine.frames_per_cycle()); - set_frame_rate (_engine.frame_rate()); + set_block_size (_engine.samples_per_cycle()); + set_frame_rate (_engine.sample_rate()); BootMessage (_("Using configuration")); @@ -4677,7 +4677,7 @@ Session::set_worst_playback_latency () _worst_output_latency = 0; - if (!_engine.connected()) { + if (!_engine.port_engine().connected()) { return; } @@ -4699,7 +4699,7 @@ Session::set_worst_capture_latency () _worst_input_latency = 0; - if (!_engine.connected()) { + if (!_engine.port_engine().connected()) { return; } diff --git a/libs/ardour/session_export.cc b/libs/ardour/session_export.cc index 0db4fc33bb..02bf48a0d6 100644 --- a/libs/ardour/session_export.cc +++ b/libs/ardour/session_export.cc @@ -147,7 +147,7 @@ Session::start_audio_export (framepos_t position) /* we are ready to go ... */ - if (!_engine.connected()) { + if (!_engine.port_engine().connected()) { return -1; } diff --git a/libs/ardour/session_ltc.cc b/libs/ardour/session_ltc.cc index f293970dd4..11c97ba147 100644 --- a/libs/ardour/session_ltc.cc +++ b/libs/ardour/session_ltc.cc @@ -56,7 +56,7 @@ using namespace Timecode; * This filter is adaptive so that fast vari-speed signals * will not be affected by it. */ -#define LTC_RISE_TIME(speed) MIN (100, MAX(40, (4000000 / ((speed==0)?1:speed) / engine().frame_rate()))) +#define LTC_RISE_TIME(speed) MIN (100, MAX(40, (4000000 / ((speed==0)?1:speed) / engine().sample_rate()))) #define TV_STANDARD(tcf) \ (timecode_to_frames_per_second(tcf)==25.0 ? LTC_TV_625_50 : \ @@ -534,7 +534,7 @@ Session::ltc_tx_send_time_code_for_cycle (framepos_t start_frame, framepos_t end * To do better than this, resampling (or a rewrite of the * encoder) is required. */ - ltc_speed -= ((ltc_enc_pos + ltc_enc_cnt - poff) - cycle_start_frame) / engine().frame_rate(); + ltc_speed -= ((ltc_enc_pos + ltc_enc_cnt - poff) - cycle_start_frame) / engine().sample_rate(); } diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 49a0eed559..aa0c90204d 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -155,7 +155,7 @@ Session::first_stage_init (string fullpath, string snapshot_name) set_history_depth (Config->get_history_depth()); - _current_frame_rate = _engine.frame_rate (); + _current_frame_rate = _engine.sample_rate (); _nominal_frame_rate = _current_frame_rate; _base_frame_rate = _current_frame_rate; @@ -736,7 +736,15 @@ Session::jack_session_event (jack_session_event_t * event) } } - jack_session_reply (_engine.jack(), event); + /* this won't be called if the port engine in use is not JACK, so we do + not have to worry about the type of PortEngine::private_handle() + */ + + jack_client_t* jack_client = (jack_client_t*) AudioEngine::instance()->port_engine().private_handle(); + + if (jack_client) { + jack_session_reply (jack_client, event); + } if (event->type == JackSessionSaveAndQuit) { Quit (); /* EMIT SIGNAL */ @@ -757,7 +765,7 @@ Session::save_state (string snapshot_name, bool pending, bool switch_to_snapshot return 1; } - if (!_engine.connected ()) { + if (!_engine.port_engine().connected ()) { error << string_compose (_("the %1 audio engine is not connected and state saving would lose all I/O connections. Session not saved"), PROGRAM_NAME) << endmsg; diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index b98a044d89..fea2fcd96a 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -44,6 +44,7 @@ #include "ardour/session.h" #include "ardour/slave.h" #include "ardour/operations.h" +#include "ardour/jack_portengine.h" #include "i18n.h" @@ -1416,6 +1417,13 @@ Session::switch_to_sync_source (SyncSource src) break; case JACK: + /* if we are not using JACK as the port engine, we can't do + * this + */ + if (dynamic_cast(&AudioEngine::instance()->port_engine())) { + return; + } + if (_slave && dynamic_cast(_slave)) { return; } @@ -1424,7 +1432,7 @@ Session::switch_to_sync_source (SyncSource src) return; } - new_slave = new JACK_Slave (_engine.jack()); + new_slave = new JACK_Slave ((jack_client_t*) AudioEngine::instance()->port_engine().private_handle()); break; default: diff --git a/libs/ardour/slave.cc b/libs/ardour/slave.cc index 1cbcba8ee6..e8c63b43c1 100644 --- a/libs/ardour/slave.cc +++ b/libs/ardour/slave.cc @@ -50,13 +50,13 @@ SlaveSessionProxy::transport_frame() const pframes_t SlaveSessionProxy::frames_since_cycle_start() const { - return session.engine().frames_since_cycle_start(); + return session.engine().samples_since_cycle_start(); } framepos_t SlaveSessionProxy::frame_time() const { - return session.engine().frame_time(); + return session.engine().sample_time(); } void -- cgit v1.2.3 From c7b000f401cedb4e05721bd94f5a1622027c2950 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 25 Jul 2013 22:40:21 -0400 Subject: start work on JACK specific audiobackend and port engine --- libs/ardour/jack_audiobackend.cc | 328 +++++++++++++++++++++++++++++++++++---- libs/ardour/jack_portengine.cc | 29 ++++ 2 files changed, 328 insertions(+), 29 deletions(-) create mode 100644 libs/ardour/jack_portengine.cc diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index f994e5fe40..589c298cdc 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -17,8 +17,13 @@ */ +#include #include +#include + +#include "pbd/epa.h" + #include "ardour/audioengine.h" #include "ardour/types.h" #include "ardour/jack_audiobackend.h" @@ -29,6 +34,20 @@ using std::string; #define GET_PRIVATE_JACK_POINTER(j) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return; } #define GET_PRIVATE_JACK_POINTER_RET(j,r) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return r; } +extern "C" { + + /* functions looked up using dlopen-and-cousins, and so naming scope + * must be non-mangled. + */ + + AudioBackend* backend_factory (AudioEngine& ae) + { + JACKAudioBackend* ab = new JACKAudioBackend (ae); + return ab; + } + +} + JACKAudioBackend::JACKAudioBackend (AudioEngine& e) : AudioBackend (e) , _jack (0) @@ -43,13 +62,274 @@ JACKAudioBackend::JACKAudioBackend (AudioEngine& e) { } +string +JACKAudioBackend::name() const +{ + return X_("JACK"); +} + +void* +JACKAudioBackend::private_handle() +{ + return _jack; +} + +bool +JACKAudioBackend::connected() const +{ + return (_jack != 0); +} + +bool +JACKAudioBackend::is_realtime () +{ + GET_PRIVATE_JACK_POINTER_RET (_jack,false); + return jack_is_realtime (_priv_jack); +} + +vector +JACKAudioBackend::enumerate_devices () const +{ + vector devices; + return devices; +} + +vector +JACKAudioBackend::available_sample_rates (const string& /*device*/) const +{ + vector f; + + if (_jack) { + f.push_back (get_sample_rate()); + return f; + } + + /* if JACK is not already running, just list a bunch of reasonable + values and let the future sort it all out. + */ + + f.push_back (8000.0); + f.push_back (16000.0); + f.push_back (24000.0); + f.push_back (32000.0); + f.push_back (44100.0); + f.push_back (48000.0); + f.push_back (88200.0); + f.push_back (96000.0); + f.push_back (192000.0); + f.push_back (384000.0); + + return f; +} + +vector +JACKAudioBackend::available_buffer_sizes (const string& /*device*/) const +{ + vector s; + + if (_jack) { + s.push_back (get_buffer_size()); + return s; + } + + s.push_back (8); + s.push_back (16); + s.push_back (32); + s.push_back (64); + s.push_back (128); + s.push_back (256); + s.push_back (512); + s.push_back (1024); + s.push_back (2048); + s.push_back (4096); + s.push_back (8192); + + return s; +} + +uint32_t +JACKAudioBackend::available_input_channel_count (const string& /*device*/) +{ + return 128; +} + +uint32_t +JACKAudioBackend::available_output_channel_count (const string& /*device*/) +{ + return 128; +} + +/* -- parameter setting -- */ + int JACKAudioBackend::set_device_name (const string& dev) { + if (_jack) { + /* need to stop and restart JACK for this to work, at present */ + return -1; + } + _target_device = dev; return 0; } +int +JACKAudioBackend::set_sample_rate (float sr) +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + + if (sr == jack_get_sample_rate (_priv_jack)) { + return 0; + } + + return jack_set_sample_rate (_priv_jack, lrintf (sr)); +} + +int +JACKAudioBackend::set_buffer_size (uint32_t nframes) +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + + if (nframes == jack_get_buffer_size (_priv_jack)) { + return 0; + } + + return jack_set_buffer_size (_priv_jack, nframes); +} + +int +JACKAudioBackend::set_sample_format (SampleFormat sf) +{ + /* as far as JACK clients are concerned, the hardware is always + * floating point format. + */ + if (sf == FloatingPoint) { + return 0; + } + return -1; +} + +int +JACKAudioBackend::set_interleaved (bool yn) +{ + /* as far as JACK clients are concerned, the hardware is always + * non-interleaved + */ + if (!yn) { + return 0; + } + return -1; +} + +int +JACKAudioBackend::set_input_channels (uint32_t cnt) +{ + if (_jack) { + return -1; + } + + _target_input_channels = cnt; +} + +int +JACKAudioBackend::set_output_channels (uint32_t cnt) +{ + if (_jack) { + return -1; + } + + _target_output_channels = cnt; +} + +int +JACKAudioBackend::set_systemic_input_latency (uint32_t l) +{ + if (_jack) { + return -1; + } + + _target_systemic_input_latency = l; +} + +int +JACKAudioBackend::set_systemic_output_latency (uint32_t l) +{ + if (_jack) { + return -1; + } + + _target_systemic_output_latency = l; +} + +/* --- Parameter retrieval --- */ + +std::string +JACKAudioBackend::get_device_name () const +{ +} + +float +JACKAudioBackend::get_sample_rate () const +{ + if (_jack) { + return _current_sample_rate; + } + return _target_sample_rate; +} + +uint32_t +JACKAudioBackend::get_buffer_size () const +{ + if (_jack) { + return _current_buffer_size; + } + return _target_buffer_size; +} + +SampleFormat +JACKAudioBackend::get_sample_format () const +{ + return FloatingPoint; +} + +bool +JACKAudioBackend::get_interleaved () const +{ + return false; +} + +uint32_t +JACKAudioBackend::get_input_channels () const +{ + if (_jack) { + return n_physical (JackPortIsInput); + } + return _target_input_channels; +} + +uint32_t +JACKAudioBackend::get_output_channels () const +{ + if (_jack) { + return n_physical (JackPortIsOutput); + } + return _target_output_channels; +} + +uint32_t +JACKAudioBackend::get_systemic_input_latency () const +{ + return _current_systemic_output_latency; +} + +uint32_t +JACKAudioBackend::get_systemic_output_latency () const +{ + return _current_systemic_output_latency; +} + +/* ---- BASIC STATE CONTROL API: start/stop/pause/freewheel --- */ + int JACKAudioBackend::start () { @@ -223,6 +503,7 @@ JACKAudioBackend::connect_to_jack (string client_name, string session_uuid) int JACKAudioBackend::disconnect_from_jack () { +} int JACKAudioBackend::reconnect_to_jack () @@ -290,18 +571,6 @@ JACKAudioBackend::reconnect_to_jack () return 0; } -int -JACKAudioBackend::request_buffer_size (pframes_t nframes) -{ - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); - - if (nframes == jack_get_buffer_size (_priv_jack)) { - return 0; - } - - return jack_set_buffer_size (_priv_jack, nframes); -} - /* --- TRANSPORT STATE MANAGEMENT --- */ void @@ -353,12 +622,22 @@ JACKAudioBackend::set_time_master (bool yn) /* process-time */ -framecnt_t frame_rate () const; -pframes_t frames_per_cycle () const; +framecnt_t +JACKAudioBackend::sample_rate () const +{ -size_t raw_buffer_size(DataType t); +} +pframes_t +JACKAudioBackend::samples_per_cycle () const +{ +} -int usecs_per_cycle () const { return _usecs_per_cycle; } +size_t +JACKAudioBackend::raw_buffer_size(DataType t) +{ + std::map::const_iterator s = _raw_buffer_sizes.find(t); + return (s != _raw_buffer_sizes.end()) ? s->second : 0; +} bool JACKAudioBackend::get_sync_offset (pframes_t& offset) const @@ -586,7 +865,6 @@ JACKAudioBackend::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, in Ports::iterator x; boost::shared_ptr pr = ports.reader (); - x = pr->find (make_port_name_relative (jack_port_name (jack_port_a))); if (x != pr->end()) { port_a = x->second; @@ -706,14 +984,14 @@ JACKAudioBackend::jack_bufsize_callback (pframes_t nframes) { /* if the size has not changed, this should be a no-op */ - if (nframes == _buffer_size) { + if (nframes == _current_buffer_size) { return 0; } GET_PRIVATE_JACK_POINTER_RET (_jack, 1); - _buffer_size = nframes; - _usecs_per_cycle = (int) floor ((((double) nframes / frame_rate())) * 1000000.0); + _current_buffer_size = nframes; + _current_usecs_per_cycle = (int) floor ((((double) nframes / frame_rate())) * 1000000.0); last_monitor_check = 0; if (jack_port_type_get_buffer_size) { @@ -736,15 +1014,7 @@ JACKAudioBackend::jack_bufsize_callback (pframes_t nframes) _raw_buffer_sizes[DataType::MIDI] = nframes * 4 - (nframes/2); } - { - Glib::Threads::Mutex::Lock lm (_process_lock); - - boost::shared_ptr p = ports.reader(); - - for (Ports::iterator i = p->begin(); i != p->end(); ++i) { - i->second->reset(); - } - } + BufferSizeChange (nframes); if (_session) { _session->set_block_size (_buffer_size); diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc new file mode 100644 index 0000000000..f830785bae --- /dev/null +++ b/libs/ardour/jack_portengine.cc @@ -0,0 +1,29 @@ +JACKPortEngine::physically_connected (PortHandle p) +{ + jack_port_t* _jack_port = (jack_port_t*) p; + + const char** jc = jack_port_get_connections (_jack_port); + + if (jc) { + for (int i = 0; jc[i]; ++i) { + + jack_port_t* port = jack_port_by_name (_engine->jack(), jc[i]); + + if (port && (jack_port_flags (port) & JackPortIsPhysical)) { + if (jack_free) { + jack_free (jc); + } else { + free (jc); + } + return true; + } + } + if (jack_free) { + jack_free (jc); + } else { + free (jc); + } + } + + return false; +} -- cgit v1.2.3 From a9691abf3b0eaca5e78bea9e8d1cb7ea700e2e1e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 29 Jul 2013 23:41:41 -0400 Subject: small steps toward getting this all working - add new JackConnection object to share jack_client_t between AudioBackend and PortEngine --- libs/ardour/ardour/audioengine.h | 5 +- libs/ardour/ardour/jack_audiobackend.h | 12 ++- libs/ardour/ardour/jack_connection.h | 35 ++++++++ libs/ardour/jack_audiobackend.cc | 149 ++++++++++++++------------------- libs/ardour/jack_connection.cc | 118 ++++++++++++++++++++++++++ libs/ardour/wscript | 5 +- 6 files changed, 233 insertions(+), 91 deletions(-) create mode 100644 libs/ardour/ardour/jack_connection.h create mode 100644 libs/ardour/jack_connection.cc diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 422e12e9d8..d7d9ca8224 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -182,7 +182,10 @@ public: /* The backend will cause this at the appropriate time(s) */ - int process_callback (pframes_t nframes); + int process_callback (pframes_t nframes); + + int buffer_size_change (pframes_t nframes); + int sample_rate_change (pframes_t nframes); private: AudioEngine (const std::string& client_name, const std::string& session_uuid); diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 218f08b55e..6d2683790c 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -34,6 +34,8 @@ namespace ARDOUR { +class JackConnection; + class JACKAudioBackend : public AudioBackend { public: JACKAudioBackend (AudioEngine& e); @@ -75,8 +77,7 @@ class JACKAudioBackend : public AudioBackend { int freewheel (bool); private: - jack_client_t* volatile _jack; /* could be reset to null by SIGPIPE or another thread */ - std::string jack_client_name; + JackConnection* _jack_connection; static int _xrun_callback (void *arg); static int _graph_order_callback (void *arg); @@ -89,8 +90,6 @@ class JACKAudioBackend : public AudioBackend { static void _registration_callback (jack_port_id_t, int, void *); static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); static void _latency_callback (jack_latency_callback_mode_t, void*); - static void halted (void *); - static void halted_info (jack_status_t,const char*,void *); #ifdef HAVE_JACK_SESSION static void _session_callback (jack_session_event_t *event, void *arg); #endif @@ -133,6 +132,11 @@ class JACKAudioBackend : public AudioBackend { uint32_t _target_output_channels; uint32_t _target_systemic_input_latency; uint32_t _target_systemic_output_latency; + + uint32_t _current_sample_rate; + uint32_t _current_buffer_size; + uint32_t _current_usecs_per_cycle; + }; } // namespace diff --git a/libs/ardour/ardour/jack_connection.h b/libs/ardour/ardour/jack_connection.h new file mode 100644 index 0000000000..02fb7c7e55 --- /dev/null +++ b/libs/ardour/ardour/jack_connection.h @@ -0,0 +1,35 @@ +#ifndef __libardour_jack_connection_h__ +#define __libardour_jack_connection_h__ + +#include +#include + +#include "pbd/signals.h" + +namespace ARDOUR { + +class JackConnection { + public: + JackConnection (const std::string& client_name, const std::string& session_uuid); + ~JackConnection (); + + int open (); + int close (); + bool connected () const { return _jack != 0; } + + jack_client_t* jack() const { return _jack; } + + PBD::Signal1 Disconnected; + + void halted_callback (); + void halted_info_callback (jack_status_t, const char*); + + private: + jack_client_t* volatile _jack; + std::string client_name; + std::string session_uuid; +}; + +} // namespace + +#endif /* __libardour_jack_connection_h__ */ diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 589c298cdc..bc2a1b9e3b 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -18,39 +18,65 @@ */ #include -#include #include -#include "pbd/epa.h" - #include "ardour/audioengine.h" #include "ardour/types.h" #include "ardour/jack_audiobackend.h" +#include "ardour/jack_connection.h" +#include "ardour/jack_portengine.h" using namespace ARDOUR; using std::string; -#define GET_PRIVATE_JACK_POINTER(j) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return; } -#define GET_PRIVATE_JACK_POINTER_RET(j,r) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return r; } +#define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(v)) { return; } +#define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(v)) { return r; } extern "C" { + /* functions looked up using dlopen-and-cousins, and so naming scope * must be non-mangled. */ - AudioBackend* backend_factory (AudioEngine& ae) + AudioBackend* backend_factory (AudioEngine& ae, void* backend_data) { - JACKAudioBackend* ab = new JACKAudioBackend (ae); + JACKAudioBackend* ab = new JACKAudioBackend (ae, backend_data); return ab; } + + PortEngine* portengine_factory (PortEngine& ae, void* backend_data) + { + JACKPortEngine* pe = new JACKPortEngine (ae, backend_data); + return pe; + } + + int + instantiate (const std::string& arg1, const std::string& arg2, void** backend_data) + { + JackConnection *jc; + try { + jc = new JackConnection (arg1, arg2); + } catch { + return -1; + } + + *backend_data = (void*) jc; + return 0; + } + int + deinstantiate (void* backend_data) + { + JackConnection* jc = static_cast (backend_data); + delete jc; + } } -JACKAudioBackend::JACKAudioBackend (AudioEngine& e) +JACKAudioBackend::JACKAudioBackend (AudioEngine& e, void* jc) : AudioBackend (e) - , _jack (0) + , _jack_connection (jc) , _target_sample_rate (48000) , _target_buffer_size (1024) , _target_sample_format (FloatingPoint) @@ -71,19 +97,19 @@ JACKAudioBackend::name() const void* JACKAudioBackend::private_handle() { - return _jack; + return _jack_connection->jack() } bool JACKAudioBackend::connected() const { - return (_jack != 0); + return (private_handle() != 0); } bool JACKAudioBackend::is_realtime () { - GET_PRIVATE_JACK_POINTER_RET (_jack,false); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack,false); return jack_is_realtime (_priv_jack); } @@ -176,7 +202,7 @@ JACKAudioBackend::set_device_name (const string& dev) int JACKAudioBackend::set_sample_rate (float sr) { - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); if (sr == jack_get_sample_rate (_priv_jack)) { return 0; @@ -188,7 +214,7 @@ JACKAudioBackend::set_sample_rate (float sr) int JACKAudioBackend::set_buffer_size (uint32_t nframes) { - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); if (nframes == jack_get_buffer_size (_priv_jack)) { return 0; @@ -333,7 +359,7 @@ JACKAudioBackend::get_systemic_output_latency () const int JACKAudioBackend::start () { - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); if (!_running) { @@ -375,7 +401,7 @@ JACKAudioBackend::start () int JACKAudioBackend::stop () { - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); { Glib::Threads::Mutex::Lock lm (_process_lock); @@ -393,7 +419,7 @@ JACKAudioBackend::stop () int JACKAudioBackend::pause () { - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); if (_priv_jack) { jack_deactivate (_priv_jack); @@ -405,7 +431,7 @@ JACKAudioBackend::pause () int JACKAudioBackend::freewheel (bool onoff) { - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); if (onoff == _freewheeling) { /* already doing what has been asked for */ @@ -433,9 +459,10 @@ JACKAudioBackend::get_parameters (Parameters& params) const ARDOUR::pframes_t AudioEngine::frames_per_cycle () const { - GET_PRIVATE_JACK_POINTER_RET (_jack,0); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack,0); + if (_buffer_size == 0) { - return jack_get_buffer_size (_jack); + return jack_get_buffer_size (_priv_jack); } else { return _buffer_size; } @@ -444,7 +471,7 @@ AudioEngine::frames_per_cycle () const ARDOUR::framecnt_t AudioEngine::frame_rate () const { - GET_PRIVATE_JACK_POINTER_RET (_jack, 0); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); if (_frame_rate == 0) { return (_frame_rate = jack_get_sample_rate (_priv_jack)); } else { @@ -463,58 +490,16 @@ AudioEngine::raw_buffer_size (DataType t) /*--- private support methods ---*/ -int -JACKAudioBackend::connect_to_jack (string client_name, string session_uuid) -{ - EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); - boost::scoped_ptr current_epa; - jack_status_t status; - - /* revert all environment settings back to whatever they were when ardour started - */ - - if (global_epa) { - current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */ - global_epa->restore (); - } - - jack_client_name = client_name; /* might be reset below */ -#ifdef HAVE_JACK_SESSION - if (!session_uuid.empty()) - _jack = jack_client_open (jack_client_name.c_str(), JackSessionID, &status, session_uuid.c_str()); - else -#endif - _jack = jack_client_open (jack_client_name.c_str(), JackNullOption, &status, 0); - - if (_jack == NULL) { - // error message is not useful here - return -1; - } - - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); - - if (status & JackNameNotUnique) { - jack_client_name = jack_get_client_name (_priv_jack); - } - - return 0; -} - -int -JACKAudioBackend::disconnect_from_jack () -{ -} - int JACKAudioBackend::reconnect_to_jack () { - if (_running) { - disconnect_from_jack (); + if (_jack_connection->connected()) { + _jack_connection->close (); /* XXX give jackd a chance */ Glib::usleep (250000); } - if (connect_to_jack (jack_client_name, "")) { + if (_jack_connection->open()) { error << _("failed to connect to JACK") << endmsg; return -1; } @@ -535,7 +520,7 @@ JACKAudioBackend::reconnect_to_jack () return -1; } - GET_PRIVATE_JACK_POINTER_RET (_jack,-1); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack,-1); MIDI::Manager::instance()->reestablish (_priv_jack); @@ -576,35 +561,35 @@ JACKAudioBackend::reconnect_to_jack () void JACKAudioBackend::transport_stop () { - GET_PRIVATE_JACK_POINTER (_jack); + GET_PRIVATE_JACK_POINTER (_priv_jack); jack_transport_stop (_priv_jack); } void JACKAudioBackend::transport_start () { - GET_PRIVATE_JACK_POINTER (_jack); + GET_PRIVATE_JACK_POINTER (_priv_jack); jack_transport_start (_priv_jack); } void JACKAudioBackend::transport_locate (framepos_t where) { - GET_PRIVATE_JACK_POINTER (_jack); + GET_PRIVATE_JACK_POINTER (_priv_jack); jack_transport_locate (_priv_jack, where); } framepos_t JACKAudioBackend::transport_frame () const { - GET_PRIVATE_JACK_POINTER_RET (_jack, 0); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); return jack_get_current_transport_frame (_priv_jack); } JACKAudioBackend::TransportState JACKAudioBackend::transport_state () { - GET_PRIVATE_JACK_POINTER_RET (_jack, ((TransportState) JackTransportStopped)); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, ((TransportState) JackTransportStopped)); jack_position_t pos; return (TransportState) jack_transport_query (_priv_jack, &pos); } @@ -612,7 +597,7 @@ JACKAudioBackend::transport_state () int JACKAudioBackend::set_time_master (bool yn) { - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); if (yn) { return jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this); } else { @@ -645,7 +630,7 @@ JACKAudioBackend::get_sync_offset (pframes_t& offset) const #ifdef HAVE_JACK_VIDEO_SUPPORT - GET_PRIVATE_JACK_POINTER_RET (_jack, false); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); jack_position_t pos; @@ -706,13 +691,7 @@ ardour_jack_error (const char* msg) void JACKAudioBackend::set_jack_callbacks () { - GET_PRIVATE_JACK_POINTER (_jack); - - if (jack_on_info_shutdown) { - jack_on_info_shutdown (_priv_jack, halted_info, this); - } else { - jack_on_shutdown (_priv_jack, halted, this); - } + GET_PRIVATE_JACK_POINTER (_priv_jack); jack_set_thread_init_callback (_priv_jack, _thread_init_callback, this); jack_set_process_thread (_priv_jack, _process_thread, this); @@ -855,7 +834,7 @@ JACKAudioBackend::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, in return; } - GET_PRIVATE_JACK_POINTER (_jack); + GET_PRIVATE_JACK_POINTER (_priv_jack); jack_port_t* jack_port_a = jack_port_by_id (_priv_jack, id_a); jack_port_t* jack_port_b = jack_port_by_id (_priv_jack, id_b); @@ -885,7 +864,7 @@ JACKAudioBackend::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, in int JACKAudioBackend::create_process_thread (boost::function f, pthread_t* thread, size_t stacksize) { - GET_PRIVATE_JACK_POINTER_RET (_jack, 0); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); ThreadData* td = new ThreadData (this, f, stacksize); if (jack_client_create_thread (_priv_jack, thread, jack_client_real_time_priority (_priv_jack), @@ -925,7 +904,7 @@ JACKAudioBackend::process_thread () _main_thread = new ProcessThread; while (1) { - GET_PRIVATE_JACK_POINTER_RET(_jack,0); + GET_PRIVATE_JACK_POINTER_RET(_priv_jack,0); pframes_t nframes = jack_cycle_wait (_priv_jack); @@ -988,7 +967,7 @@ JACKAudioBackend::jack_bufsize_callback (pframes_t nframes) return 0; } - GET_PRIVATE_JACK_POINTER_RET (_jack, 1); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 1); _current_buffer_size = nframes; _current_usecs_per_cycle = (int) floor ((((double) nframes / frame_rate())) * 1000000.0); diff --git a/libs/ardour/jack_connection.cc b/libs/ardour/jack_connection.cc new file mode 100644 index 0000000000..e0937ea767 --- /dev/null +++ b/libs/ardour/jack_connection.cc @@ -0,0 +1,118 @@ +/* + 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. + +*/ + +#include +#include + +#include "pbd/epa.h" + +#include "ardour/jack_connection.h" + +#define GET_PRIVATE_JACK_POINTER(j) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return; } +#define GET_PRIVATE_JACK_POINTER_RET(j,r) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return r; } + +using namespace ARDOUR; +using namespace PBD; + +static void jack_halted_callback (void* arg) +{ + JackConnection* jc = static_cast (arg); + jc->halted_callback (); +} + +static void jack_halted_info_callback (jack_status_t code, const char* reason, void* arg) +{ + JackConnection* jc = static_cast (arg); + jc->halted_info_callback (code, reason); +} + + +JackConnection::JackConnection (const std::string& arg1, const std::string& arg2) + : _jack (0) + , client_name (arg1) + , session_uuid (arg2) +{ +} + +JackConnection::~JackConnection () +{ + close (); +} + +int +JackConnection::open () +{ + EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); + boost::scoped_ptr current_epa; + jack_status_t status; + + /* revert all environment settings back to whatever they were when ardour started + */ + + if (global_epa) { + current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */ + global_epa->restore (); + } + + if ((_jack = jack_client_open (client_name.c_str(), JackSessionID, &status, session_uuid.c_str())) == 0) { + return -1; + } + + if (status & JackNameNotUnique) { + client_name = jack_get_client_name (_jack); + } + + /* attach halted handler */ + + if (jack_on_info_shutdown) { + jack_on_info_shutdown (_jack, jack_halted_info_callback, this); + } else { + jack_on_shutdown (_jack, jack_halted_callback, this); + } + + return 0; +} + +int +JackConnection::close () +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + + if (_priv_jack) { + return jack_client_close (_priv_jack); + } + + return 0; +} + +void +JackConnection::halted_callback () +{ + _jack = 0; + Disconnected (""); +} + +void +JackConnection::halted_info_callback (jack_status_t /*status*/, const char* reason) +{ + _jack = 0; + Disconnected (reason); +} + + diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 20908e5260..8eb52436e9 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -434,7 +434,10 @@ def build(bld): # the JACK audio backend - obj = bld.shlib (features = 'c cxx cshlib cxxshlib', source='jack_audiobackend.cc') + obj = bld.shlib (features = 'c cxx cshlib cxxshlib', + source = [ 'jack_connection.cc', + 'jack_audiobackend.cc' + ]) obj.cxxflags = [ '-fPIC' ] obj.name = 'jack_audiobackend' obj.target = 'jack_audiobackend' -- cgit v1.2.3 From 5e0c6af4062a2982fb90ad318973ab1d4beed2b9 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 30 Jul 2013 17:48:57 -0400 Subject: jack_audiobackend.cc finally compiles --- gtk2_ardour/ardour_ui.cc | 6 +- libs/ardour/ardour/audio_backend.h | 41 +-- libs/ardour/ardour/audioengine.h | 21 +- libs/ardour/ardour/jack_audiobackend.h | 57 ++- libs/ardour/ardour/jack_portengine.h | 75 +++- libs/ardour/ardour/port_manager.h | 8 +- libs/ardour/ardour/session.h | 4 +- libs/ardour/audioengine.cc | 144 +++++++- libs/ardour/jack_audiobackend.cc | 632 ++++++++++----------------------- libs/ardour/jack_connection.cc | 2 + libs/ardour/jack_portengine.cc | 71 ++++ libs/ardour/lv2_plugin.cc | 4 +- libs/ardour/port_manager.cc | 39 ++ libs/ardour/session_time.cc | 26 +- libs/ardour/wscript | 8 +- 15 files changed, 624 insertions(+), 514 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index aa71040f46..155826492b 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -396,7 +396,7 @@ ARDOUR_UI::create_engine () loading_message (_("Starting audio engine")); try { - engine = new ARDOUR::AudioEngine (ARDOUR_COMMAND_LINE::backend_client_name, ARDOUR_COMMAND_LINE::backend_session_uuid); + engine = ARDOUR::AudioEngine::create (ARDOUR_COMMAND_LINE::backend_client_name, ARDOUR_COMMAND_LINE::backend_session_uuid); } catch (...) { @@ -487,7 +487,7 @@ ARDOUR_UI::post_engine () update_disk_space (); update_cpu_load (); - update_sample_rate (engine->frame_rate()); + update_sample_rate (engine->sample_rate()); update_timecode_format (); Config->ParameterChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::parameter_changed, this, _1), gui_context()); @@ -923,7 +923,7 @@ If you still wish to quit, please use the\n\n\ _session = 0; } - engine->stop (true); + engine->stop (); quit (); } diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index e8511d0c57..4d6d6a6dd8 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -28,6 +28,8 @@ #include +#include "ardour/types.h" + namespace ARDOUR { class AudioEngine; @@ -45,6 +47,8 @@ class AudioBackend { */ virtual std::string name() const = 0; + virtual void* private_handle() const = 0; + /** return true if the underlying mechanism/API is still available * for us to utilize. return false if some or all of the AudioBackend * API can no longer be effectively used. @@ -98,13 +102,6 @@ class AudioBackend { */ virtual uint32_t available_output_channel_count (const std::string& device) const = 0; - enum SampleFormat { - Signed16bitInteger, - Signed24bitInteger, - Signed32bitInteger, - FloatingPoint - }; - /* Set the hardware parameters. * * If called when the current state is stopped or paused, @@ -163,15 +160,15 @@ class AudioBackend { */ virtual int set_systemic_output_latency (uint32_t) = 0; - virtual std::string get_device_name () const = 0; - virtual float get_sample_rate () const = 0; - virtual uint32_t get_buffer_size () const = 0; - virtual SampleFormat get_sample_format () const = 0; - virtual bool get_interleaved () const = 0; - virtual uint32_t get_input_channels () const = 0; - virtual uint32_t get_output_channels () const = 0; - virtual uint32_t get_systemic_input_latency () const = 0; - virtual uint32_t get_systemic_output_latency () const = 0; + virtual std::string device_name () const = 0; + virtual float sample_rate () const = 0; + virtual uint32_t buffer_size () const = 0; + virtual SampleFormat sample_format () const = 0; + virtual bool interleaved () const = 0; + virtual uint32_t input_channels () const = 0; + virtual uint32_t output_channels () const = 0; + virtual uint32_t systemic_input_latency () const = 0; + virtual uint32_t systemic_output_latency () const = 0; /* Basic state control */ @@ -246,7 +243,7 @@ class AudioBackend { * Implementations can feel free to smooth the values returned over * time (e.g. high pass filtering, or its equivalent). */ - virtual float get_cpu_load() const = 0; + virtual float cpu_load() const = 0; /* Transport Control (JACK is the only audio API that currently offers the concept of shared transport control) @@ -260,14 +257,14 @@ class AudioBackend { virtual void transport_stop () {} /** return the current transport state */ - virtual TransportState transport_state () { return TransportStopped; } + virtual TransportState transport_state () const { return TransportStopped; } /** Attempt to locate the transport to @param pos */ virtual void transport_locate (framepos_t /*pos*/) {} /** Return the current transport location, in samples measured * from the origin (defined by the transport time master) */ - virtual framepos_t transport_frame() { return 0; } + virtual framepos_t transport_frame() const { return 0; } /** If @param yn is true, become the time master for any inter-application transport * timebase, otherwise cease to be the time master for the same. @@ -279,9 +276,7 @@ class AudioBackend { */ virtual int set_time_master (bool /*yn*/) { return 0; } - virtual framecnt_t sample_rate () const; - virtual pframes_t samples_per_cycle () const; - virtual int usecs_per_cycle () const { return 1000000 * (samples_per_cycle() / sample_rate()); } + virtual int usecs_per_cycle () const { return 1000000 * (buffer_size() / sample_rate()); } virtual size_t raw_buffer_size (DataType t); /* Process time */ @@ -338,7 +333,7 @@ class AudioBackend { */ virtual int create_process_thread (boost::function func, pthread_t*, size_t stacksize) = 0; - private: + protected: AudioEngine& engine; }; diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index d7d9ca8224..4ac9221238 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -104,7 +104,8 @@ public: pframes_t samples_since_cycle_start (); bool get_sync_offset (pframes_t& offset) const; int create_process_thread (boost::function func, pthread_t*, size_t stacksize); - + bool is_realtime() const; + /* END BACKEND PROXY API */ bool freewheeling() const { return _freewheeling; } @@ -180,13 +181,21 @@ public: static void destroy(); void died (); - /* The backend will cause this at the appropriate time(s) + /* The backend will cause these at the appropriate time(s) */ - int process_callback (pframes_t nframes); + int process_callback (pframes_t nframes); + int buffer_size_change (pframes_t nframes); + int sample_rate_change (pframes_t nframes); + void freewheel_callback (bool); + void timebase_callback (TransportState state, pframes_t nframes, framepos_t pos, int new_position); + int sync_callback (TransportState state, framepos_t position); + int port_registration_callback (); + void latency_callback (bool for_playback); + void halted_callback (const char* reason); + + /* sets up the process callback thread */ + static void thread_init_callback (void *); - int buffer_size_change (pframes_t nframes); - int sample_rate_change (pframes_t nframes); - private: AudioEngine (const std::string& client_name, const std::string& session_uuid); diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 6d2683790c..8f6e636d1a 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -22,6 +22,7 @@ #include #include +#include #include @@ -38,10 +39,11 @@ class JackConnection; class JACKAudioBackend : public AudioBackend { public: - JACKAudioBackend (AudioEngine& e); + JACKAudioBackend (AudioEngine& e, void*); ~JACKAudioBackend (); std::string name() const; + void* private_handle() const; bool connected() const; bool is_realtime () const; @@ -61,34 +63,53 @@ class JACKAudioBackend : public AudioBackend { int set_systemic_input_latency (uint32_t); int set_systemic_output_latency (uint32_t); - std::string get_device_name () const; - float get_sample_rate () const; - uint32_t get_buffer_size () const; - SampleFormat get_sample_format () const; - bool get_interleaved () const; - uint32_t get_input_channels () const; - uint32_t get_output_channels () const; - uint32_t get_systemic_input_latency () const; - uint32_t get_systemic_output_latency () const; + std::string device_name () const; + float sample_rate () const; + uint32_t buffer_size () const; + SampleFormat sample_format () const; + bool interleaved () const; + uint32_t input_channels () const; + uint32_t output_channels () const; + uint32_t systemic_input_latency () const; + uint32_t systemic_output_latency () const; int start (); int stop (); int pause (); int freewheel (bool); + float cpu_load() const; + + pframes_t sample_time (); + pframes_t sample_time_at_cycle_start (); + pframes_t samples_since_cycle_start (); + + size_t raw_buffer_size (DataType t); + + int create_process_thread (boost::function func, pthread_t*, size_t stacksize); + + void transport_start (); + void transport_stop (); + void transport_locate (framepos_t /*pos*/); + TransportState transport_state () const; + framepos_t transport_frame() const; + + int set_time_master (bool /*yn*/); + bool get_sync_offset (pframes_t& /*offset*/) const; + private: - JackConnection* _jack_connection; + JackConnection* _jack_connection; //< shared with JACKPortEngine + bool _running; + bool _freewheeling; + std::map _raw_buffer_sizes; static int _xrun_callback (void *arg); - static int _graph_order_callback (void *arg); static void* _process_thread (void *arg); static int _sample_rate_callback (pframes_t nframes, void *arg); static int _bufsize_callback (pframes_t nframes, void *arg); static void _jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int, void*); static int _jack_sync_callback (jack_transport_state_t, jack_position_t*, void *arg); static void _freewheel_callback (int , void *arg); - static void _registration_callback (jack_port_id_t, int, void *); - static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); static void _latency_callback (jack_latency_callback_mode_t, void*); #ifdef HAVE_JACK_SESSION static void _session_callback (jack_session_event_t *event, void *arg); @@ -99,12 +120,12 @@ class JACKAudioBackend : public AudioBackend { int jack_bufsize_callback (pframes_t); int jack_sample_rate_callback (pframes_t); void freewheel_callback (int); - void connect_callback (jack_port_id_t, jack_port_id_t, int); int process_callback (pframes_t nframes); void jack_latency_callback (jack_latency_callback_mode_t); - + void disconnected (const char*); + void set_jack_callbacks (); - int connect_to_jack (std::string client_name, std::string session_uuid); + int reconnect_to_jack (); struct ThreadData { JACKAudioBackend* engine; @@ -136,6 +157,8 @@ class JACKAudioBackend : public AudioBackend { uint32_t _current_sample_rate; uint32_t _current_buffer_size; uint32_t _current_usecs_per_cycle; + uint32_t _current_systemic_input_latency; + uint32_t _current_systemic_output_latency; }; diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h index 2456adc272..60aa52fb6b 100644 --- a/libs/ardour/ardour/jack_portengine.h +++ b/libs/ardour/ardour/jack_portengine.h @@ -20,13 +20,84 @@ #ifndef __libardour_jack_portengine_h__ #define __libardour_jack_portengine_h__ +#include +#include + +#include + +#include "ardour/port_engine.h" +#include "ardour/types.h" + namespace ARDOUR { +class JackConnection; + class JACKPortEngine : public PortEngine { public: - JACKPortEngine (const std::string& client_name, - const std::string& session_uuid); + JACKPortEngine (void* arg); // argument is a JackConnection + + bool connected() const; + void* private_handle() const; + + int set_port_name (PortHandle, const std::string&); + std::string get_port_name (PortHandle) const; + PortHandle* get_port_by_name (const std::string&) const; + + std::string make_port_name_relative (const std::string& name) const; + std::string make_port_name_non_relative (const std::string& name) const; + bool port_is_mine (const std::string& fullname) const; + + PortHandle register_port (const std::string& shortname, ARDOUR::DataType, ARDOUR::PortFlags); + void unregister_port (PortHandle); + + bool connected (PortHandle); + bool connected_to (PortHandle, const std::string&); + bool physically_connected (PortHandle); + + int get_connections (PortHandle, std::vector&); + + int connect (PortHandle, const std::string&); + int disconnect (PortHandle, const std::string&); + int disconnect_all (PortHandle); + + int connect (const std::string& src, const std::string& dst); + int disconnect (const std::string& src, const std::string& dst); + + /* MIDI */ + + void midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index); + int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size); + uint32_t get_midi_event_count (void* port_buffer); + void midi_clear (void* port_buffer); + + /* Monitoring */ + + bool can_monitor_input() const; + int request_input_monitoring (PortHandle, bool); + int ensure_input_monitoring (PortHandle, bool); + bool monitoring_input (PortHandle); + + /* Latency management + */ + + void set_latency_range (PortHandle, bool for_playback, LatencyRange); + LatencyRange get_latency_range (PortHandle, bool for_playback); + LatencyRange get_connected_latency_range (PortHandle, int dir); + + void* get_buffer (PortHandle, pframes_t); + + pframes_t last_frame_time () const; + + private: + JackConnection* _jack_connection; + + static int _graph_order_callback (void *arg); + static void _registration_callback (jack_port_id_t, int, void *); + static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); + + void connect_callback (jack_port_id_t, jack_port_id_t, int); + }; } // namespace diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index 0e9a84ea8c..29a566aa2d 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -55,10 +55,12 @@ class PortManager /* Port connectivity */ - int connect (const std::string& source, const std::string& destination); - int disconnect (const std::string& source, const std::string& destination); - int disconnect (boost::shared_ptr); + int connect (const std::string& source, const std::string& destination); + int disconnect (const std::string& source, const std::string& destination); + int disconnect (boost::shared_ptr); bool connected (const std::string&); + int reestablish_ports (); + int reconnect_ports (); /* other Port management */ diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index a782680082..4c005ffa74 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -1426,8 +1426,8 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi */ std::list _current_trans_quarks; - void jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int); - int jack_sync_callback (jack_transport_state_t, jack_position_t*); + // void timebase_callback (TransportState, pframes_t, jack_position_t*, int); + int jack_sync_callback (TransportState, framepos_t); void reset_jack_connection (jack_client_t* jack); void process_rtop (SessionEvent*); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 1e43c590a0..1f26e12a3b 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -165,6 +165,33 @@ AudioEngine::split_cycle (pframes_t offset) } } +int +AudioEngine::sample_rate_change (pframes_t nframes) +{ + /* check for monitor input change every 1/10th of second */ + + monitor_check_interval = nframes / 10; + last_monitor_check = 0; + + if (_session) { + _session->set_frame_rate (nframes); + } + + SampleRateChanged (nframes); /* EMIT SIGNAL */ + + return 0; +} + +int +AudioEngine::buffer_size_change (pframes_t bufsiz) +{ + if (_session) { + _session->set_block_size (bufsiz); + last_monitor_check = 0; + } + + return 0; +} /** Method called by our ::process_thread when there is work to be done. * @param nframes Number of frames to process. @@ -399,7 +426,7 @@ AudioEngine::set_session (Session *s) start_metering_thread (); - pframes_t blocksize = _backend->get_buffer_size (); + pframes_t blocksize = _backend->buffer_size (); /* page in as much of the session process code as we can before we really start running. @@ -558,6 +585,12 @@ AudioEngine::start () if (_backend->start() == 0) { _running = true; _has_run = true; + last_monitor_check = 0; + + if (_session && _session->config.get_jack_time_master()) { + _backend->set_time_master (true); + } + Running(); /* EMIT SIGNAL */ } else { /* should report error? */ @@ -573,8 +606,19 @@ AudioEngine::stop () if (!_backend) { return 0; } - - return _backend->stop (); + + Glib::Threads::Mutex::Lock lm (_process_lock); + + if (_backend->stop () == 0) { + _running = false; + stop_metering_thread (); + + Stopped (); /* EMIT SIGNAL */ + + return 0; + } + + return -1; } int @@ -584,7 +628,13 @@ AudioEngine::pause () return 0; } - return _backend->pause (); + if (_backend->pause () == 0) { + _running = false; + Stopped(); /* EMIT SIGNAL */ + return 0; + } + + return -1; } int @@ -605,7 +655,17 @@ AudioEngine::get_cpu_load() const if (!_backend) { return 0.0; } - return _backend->get_cpu_load (); + return _backend->cpu_load (); +} + +bool +AudioEngine::is_realtime() const +{ + if (!_backend) { + return false; + } + + return _backend->is_realtime(); } void @@ -668,7 +728,7 @@ AudioEngine::samples_per_cycle () const if (!_backend) { return 0; } - return _backend->samples_per_cycle (); + return _backend->buffer_size (); } int @@ -677,7 +737,7 @@ AudioEngine::usecs_per_cycle () const if (!_backend) { return -1; } - return _backend->start (); + return _backend->usecs_per_cycle (); } size_t @@ -734,3 +794,73 @@ AudioEngine::create_process_thread (boost::function func, pthread_t* thr return _backend->create_process_thread (func, thr, stacksize); } + +void +AudioEngine::thread_init_callback (void* arg) +{ + /* make sure that anybody who needs to know about this thread + knows about it. + */ + + pthread_set_name (X_("audioengine")); + + PBD::notify_gui_about_thread_creation ("gui", pthread_self(), X_("AudioEngine"), 4096); + PBD::notify_gui_about_thread_creation ("midiui", pthread_self(), X_("AudioEngine"), 128); + + SessionEvent::create_per_thread_pool (X_("AudioEngine"), 512); + + MIDI::JackMIDIPort::set_process_thread (pthread_self()); + + if (arg) { + AudioEngine* ae = static_cast (arg); + /* the special thread created/managed by the backend */ + ae->_main_thread = new ProcessThread; + } +} + +/* XXXX +void +AudioEngine::timebase_callback (TransportState state, pframes_t nframes, jack_position_t pos, int new_position) +{ + if (_session && _session->synced_to_jack()) { + // _session->timebase_callback (state, nframes, pos, new_position); + } +} +*/ + +int +AudioEngine::sync_callback (TransportState state, framepos_t position) +{ + if (_session) { + return _session->jack_sync_callback (state, position); + } + return 0; +} + +void +AudioEngine::freewheel_callback (bool onoff) +{ + if (onoff) { + _pre_freewheel_mmc_enabled = MIDI::Manager::instance()->mmc()->send_enabled (); + MIDI::Manager::instance()->mmc()->enable_send (false); + } else { + MIDI::Manager::instance()->mmc()->enable_send (_pre_freewheel_mmc_enabled); + } +} + +void +AudioEngine::latency_callback (bool for_playback) +{ + if (_session) { + _session->update_latency (for_playback); + } +} + +void +AudioEngine::halted_callback (const char* why) +{ + stop_metering_thread (); + + MIDI::JackMIDIPort::EngineHalted (); /* EMIT SIGNAL */ + Halted (why); /* EMIT SIGNAL */ +} diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index bc2a1b9e3b..7575e8387e 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -20,6 +20,11 @@ #include #include +#include + +#include "pbd/error.h" + +#include "midi++/manager.h" #include "ardour/audioengine.h" #include "ardour/types.h" @@ -27,59 +32,24 @@ #include "ardour/jack_connection.h" #include "ardour/jack_portengine.h" +#include "i18n.h" + using namespace ARDOUR; +using namespace PBD; using std::string; +using std::vector; -#define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(v)) { return; } -#define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(v)) { return r; } - -extern "C" { - - - /* functions looked up using dlopen-and-cousins, and so naming scope - * must be non-mangled. - */ - - AudioBackend* backend_factory (AudioEngine& ae, void* backend_data) - { - JACKAudioBackend* ab = new JACKAudioBackend (ae, backend_data); - return ab; - } - - PortEngine* portengine_factory (PortEngine& ae, void* backend_data) - { - JACKPortEngine* pe = new JACKPortEngine (ae, backend_data); - return pe; - } - - int - instantiate (const std::string& arg1, const std::string& arg2, void** backend_data) - { - JackConnection *jc; - try { - jc = new JackConnection (arg1, arg2); - } catch { - return -1; - } - - *backend_data = (void*) jc; - return 0; - } - - int - deinstantiate (void* backend_data) - { - JackConnection* jc = static_cast (backend_data); - delete jc; - } -} +#define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return; } +#define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return r; } JACKAudioBackend::JACKAudioBackend (AudioEngine& e, void* jc) : AudioBackend (e) - , _jack_connection (jc) + , _jack_connection (static_cast(jc)) + , _running (false) + , _freewheeling (false) , _target_sample_rate (48000) , _target_buffer_size (1024) - , _target_sample_format (FloatingPoint) + , _target_sample_format (FormatFloat) , _target_interleaved (false) , _target_input_channels (-1) , _target_output_channels (-1) @@ -95,9 +65,9 @@ JACKAudioBackend::name() const } void* -JACKAudioBackend::private_handle() +JACKAudioBackend::private_handle() const { - return _jack_connection->jack() + return _jack_connection->jack(); } bool @@ -107,7 +77,7 @@ JACKAudioBackend::connected() const } bool -JACKAudioBackend::is_realtime () +JACKAudioBackend::is_realtime () const { GET_PRIVATE_JACK_POINTER_RET (_priv_jack,false); return jack_is_realtime (_priv_jack); @@ -125,8 +95,8 @@ JACKAudioBackend::available_sample_rates (const string& /*device*/) const { vector f; - if (_jack) { - f.push_back (get_sample_rate()); + if (connected()) { + f.push_back (sample_rate()); return f; } @@ -153,8 +123,8 @@ JACKAudioBackend::available_buffer_sizes (const string& /*device*/) const { vector s; - if (_jack) { - s.push_back (get_buffer_size()); + if (connected()) { + s.push_back (buffer_size()); return s; } @@ -174,13 +144,13 @@ JACKAudioBackend::available_buffer_sizes (const string& /*device*/) const } uint32_t -JACKAudioBackend::available_input_channel_count (const string& /*device*/) +JACKAudioBackend::available_input_channel_count (const string& /*device*/) const { return 128; } uint32_t -JACKAudioBackend::available_output_channel_count (const string& /*device*/) +JACKAudioBackend::available_output_channel_count (const string& /*device*/) const { return 128; } @@ -190,7 +160,7 @@ JACKAudioBackend::available_output_channel_count (const string& /*device*/) int JACKAudioBackend::set_device_name (const string& dev) { - if (_jack) { + if (connected()) { /* need to stop and restart JACK for this to work, at present */ return -1; } @@ -203,12 +173,17 @@ int JACKAudioBackend::set_sample_rate (float sr) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + + if (!connected()) { + _target_sample_rate = sr; + return 0; + } if (sr == jack_get_sample_rate (_priv_jack)) { return 0; } - return jack_set_sample_rate (_priv_jack, lrintf (sr)); + return -1; } int @@ -216,6 +191,11 @@ JACKAudioBackend::set_buffer_size (uint32_t nframes) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + if (!connected()) { + _target_buffer_size = nframes; + return 0; + } + if (nframes == jack_get_buffer_size (_priv_jack)) { return 0; } @@ -229,7 +209,7 @@ JACKAudioBackend::set_sample_format (SampleFormat sf) /* as far as JACK clients are concerned, the hardware is always * floating point format. */ - if (sf == FloatingPoint) { + if (sf == FormatFloat) { return 0; } return -1; @@ -250,167 +230,179 @@ JACKAudioBackend::set_interleaved (bool yn) int JACKAudioBackend::set_input_channels (uint32_t cnt) { - if (_jack) { + if (connected()) { return -1; } _target_input_channels = cnt; + + return 0; } int JACKAudioBackend::set_output_channels (uint32_t cnt) { - if (_jack) { + if (connected()) { return -1; } _target_output_channels = cnt; + + return 0; } int JACKAudioBackend::set_systemic_input_latency (uint32_t l) { - if (_jack) { + if (connected()) { return -1; } _target_systemic_input_latency = l; + + return 0; } int JACKAudioBackend::set_systemic_output_latency (uint32_t l) { - if (_jack) { + if (connected()) { return -1; } _target_systemic_output_latency = l; + + return 0; } /* --- Parameter retrieval --- */ std::string -JACKAudioBackend::get_device_name () const +JACKAudioBackend::device_name () const { + return string(); } float -JACKAudioBackend::get_sample_rate () const +JACKAudioBackend::sample_rate () const { - if (_jack) { + if (connected()) { return _current_sample_rate; } return _target_sample_rate; } uint32_t -JACKAudioBackend::get_buffer_size () const +JACKAudioBackend::buffer_size () const { - if (_jack) { + if (connected()) { return _current_buffer_size; } return _target_buffer_size; } SampleFormat -JACKAudioBackend::get_sample_format () const +JACKAudioBackend::sample_format () const { - return FloatingPoint; + return FormatFloat; } bool -JACKAudioBackend::get_interleaved () const +JACKAudioBackend::interleaved () const { return false; } uint32_t -JACKAudioBackend::get_input_channels () const +JACKAudioBackend::input_channels () const { - if (_jack) { - return n_physical (JackPortIsInput); + if (connected()) { + return n_physical (JackPortIsInput).n_audio(); } return _target_input_channels; } uint32_t -JACKAudioBackend::get_output_channels () const +JACKAudioBackend::output_channels () const { - if (_jack) { - return n_physical (JackPortIsOutput); + if (connected()) { + return n_physical (JackPortIsOutput).n_audio(); } return _target_output_channels; } uint32_t -JACKAudioBackend::get_systemic_input_latency () const +JACKAudioBackend::systemic_input_latency () const { return _current_systemic_output_latency; } uint32_t -JACKAudioBackend::get_systemic_output_latency () const +JACKAudioBackend::systemic_output_latency () const { return _current_systemic_output_latency; } +size_t +JACKAudioBackend::raw_buffer_size(DataType t) +{ + std::map::const_iterator s = _raw_buffer_sizes.find(t); + return (s != _raw_buffer_sizes.end()) ? s->second : 0; +} + /* ---- BASIC STATE CONTROL API: start/stop/pause/freewheel --- */ int JACKAudioBackend::start () { - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - - if (!_running) { - - if (!jack_port_type_get_buffer_size) { - warning << _("This version of JACK is old - you should upgrade to a newer version that supports jack_port_type_get_buffer_size()") << endmsg; - } - - if (_session) { - BootMessage (_("Connect session to engine")); - _session->set_frame_rate (jack_get_sample_rate (_priv_jack)); - } - - /* a proxy for whether jack_activate() will definitely call the buffer size - * callback. with older versions of JACK, this function symbol will be null. - * this is reliable, but not clean. - */ - - if (!jack_port_type_get_buffer_size) { - jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); - } - - _processed_frames = 0; - last_monitor_check = 0; + if (!connected()) { + _jack_connection->open (); + } - set_jack_callbacks (); + engine.reestablish_ports (); + + if (!jack_port_type_get_buffer_size) { + warning << _("This version of JACK is old - you should upgrade to a newer version that supports jack_port_type_get_buffer_size()") << endmsg; + } + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - if (jack_activate (_priv_jack) == 0) { - _running = true; - _has_run = true; - Running(); /* EMIT SIGNAL */ - } else { - // error << _("cannot activate JACK client") << endmsg; - } + engine.sample_rate_change (jack_get_sample_rate (_priv_jack)); + + /* testing the nullity of this function name is a proxy for + * whether jack_activate() will definitely call the buffer size + * callback. with older versions of JACK, this function symbol + * will be null. this is sort of reliable, but not clean since + * weak symbol support is highly platform and compiler + * specific. + */ + if (!jack_port_type_get_buffer_size) { + jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); } - - return _running ? 0 : -1; + + set_jack_callbacks (); + + if (jack_activate (_priv_jack) == 0) { + _running = true; + } else { + // error << _("cannot activate JACK client") << endmsg; + } + + engine.reconnect_ports (); + + return 0; } int JACKAudioBackend::stop () { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + + _jack_connection->close (); - { - Glib::Threads::Mutex::Lock lm (_process_lock); - jack_client_close (_priv_jack); - _jack = 0; - } + _current_buffer_size = 0; + _current_sample_rate = 0; - _buffer_size = 0; - _frame_rate = 0; _raw_buffer_sizes.clear(); return 0; @@ -439,121 +431,12 @@ JACKAudioBackend::freewheel (bool onoff) return 0; } - return jack_set_freewheel (_priv_jack, onoff); -} - -int -JACKAudioBackend::set_parameters (const Parameters& params) -{ - return 0; -} - -int -JACKAudioBackend::get_parameters (Parameters& params) const -{ - return 0; -} - -/* parameters */ - -ARDOUR::pframes_t -AudioEngine::frames_per_cycle () const -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack,0); - - if (_buffer_size == 0) { - return jack_get_buffer_size (_priv_jack); - } else { - return _buffer_size; - } -} - -ARDOUR::framecnt_t -AudioEngine::frame_rate () const -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - if (_frame_rate == 0) { - return (_frame_rate = jack_get_sample_rate (_priv_jack)); - } else { - return _frame_rate; - } -} - -size_t -AudioEngine::raw_buffer_size (DataType t) -{ - std::map::const_iterator s = _raw_buffer_sizes.find(t); - return (s != _raw_buffer_sizes.end()) ? s->second : 0; -} - - - -/*--- private support methods ---*/ - -int -JACKAudioBackend::reconnect_to_jack () -{ - if (_jack_connection->connected()) { - _jack_connection->close (); - /* XXX give jackd a chance */ - Glib::usleep (250000); - } - - if (_jack_connection->open()) { - error << _("failed to connect to JACK") << endmsg; - return -1; - } - - Ports::iterator i; - - boost::shared_ptr p = ports.reader (); - - for (i = p->begin(); i != p->end(); ++i) { - if (i->second->reestablish ()) { - break; - } - } - - if (i != p->end()) { - /* failed */ - remove_all_ports (); - return -1; - } - - GET_PRIVATE_JACK_POINTER_RET (_priv_jack,-1); - - MIDI::Manager::instance()->reestablish (_priv_jack); - - if (_session) { - _session->reset_jack_connection (_priv_jack); - jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); - _session->set_frame_rate (jack_get_sample_rate (_priv_jack)); - } - - last_monitor_check = 0; - - set_jack_callbacks (); - - if (jack_activate (_priv_jack) == 0) { - _running = true; - _has_run = true; - } else { - return -1; - } - - /* re-establish connections */ - - for (i = p->begin(); i != p->end(); ++i) { - i->second->reconnect (); + if (jack_set_freewheel (_priv_jack, onoff) == 0) { + _freewheeling = true; + return 0; } - MIDI::Manager::instance()->reconnect (); - - Running (); /* EMIT SIGNAL*/ - - start_metering_thread (); - - return 0; + return -1; } /* --- TRANSPORT STATE MANAGEMENT --- */ @@ -586,8 +469,8 @@ JACKAudioBackend::transport_frame () const return jack_get_current_transport_frame (_priv_jack); } -JACKAudioBackend::TransportState -JACKAudioBackend::transport_state () +TransportState +JACKAudioBackend::transport_state () const { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, ((TransportState) JackTransportStopped)); jack_position_t pos; @@ -601,29 +484,12 @@ JACKAudioBackend::set_time_master (bool yn) if (yn) { return jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this); } else { - return jack_release_timebase (_jack); + return jack_release_timebase (_priv_jack); } } /* process-time */ -framecnt_t -JACKAudioBackend::sample_rate () const -{ - -} -pframes_t -JACKAudioBackend::samples_per_cycle () const -{ -} - -size_t -JACKAudioBackend::raw_buffer_size(DataType t) -{ - std::map::const_iterator s = _raw_buffer_sizes.find(t); - return (s != _raw_buffer_sizes.end()) ? s->second : 0; -} - bool JACKAudioBackend::get_sync_offset (pframes_t& offset) const { @@ -651,33 +517,24 @@ JACKAudioBackend::get_sync_offset (pframes_t& offset) const } pframes_t -JACKAudioBackend::frames_since_cycle_start () +JACKAudioBackend::sample_time () { - jack_client_t* _priv_jack = _jack; - if (!_running || !_priv_jack) { - return 0; - } - return jack_frames_since_cycle_start (_priv_jack); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_frame_time (_priv_jack); } pframes_t -JACKAudioBackend::frame_time () +JACKAudioBackend::sample_time_at_cycle_start () { - jack_client_t* _priv_jack = _jack; - if (!_running || !_priv_jack) { - return 0; - } - return jack_frame_time (_priv_jack); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_last_frame_time (_priv_jack); } pframes_t -JACKAudioBackend::frame_time_at_cycle_start () +JACKAudioBackend::samples_since_cycle_start () { - jack_client_t* _priv_jack = _jack; - if (!_running || !_priv_jack) { - return 0; - } - return jack_last_frame_time (_priv_jack); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_frames_since_cycle_start (_priv_jack); } /* JACK Callbacks */ @@ -693,21 +550,15 @@ JACKAudioBackend::set_jack_callbacks () { GET_PRIVATE_JACK_POINTER (_priv_jack); - jack_set_thread_init_callback (_priv_jack, _thread_init_callback, this); + jack_set_thread_init_callback (_priv_jack, AudioEngine::thread_init_callback, 0); + jack_set_process_thread (_priv_jack, _process_thread, this); jack_set_sample_rate_callback (_priv_jack, _sample_rate_callback, this); jack_set_buffer_size_callback (_priv_jack, _bufsize_callback, this); - jack_set_graph_order_callback (_priv_jack, _graph_order_callback, this); - jack_set_port_registration_callback (_priv_jack, _registration_callback, this); - jack_set_port_connect_callback (_priv_jack, _connect_callback, this); jack_set_xrun_callback (_priv_jack, _xrun_callback, this); jack_set_sync_callback (_priv_jack, _jack_sync_callback, this); jack_set_freewheel_callback (_priv_jack, _freewheel_callback, this); - if (_session && _session->config.get_jack_time_master()) { - jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this); - } - #ifdef HAVE_JACK_SESSION if( jack_set_session_callback) jack_set_session_callback (_priv_jack, _session_callback, this); @@ -724,40 +575,75 @@ void JACKAudioBackend::_jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, jack_position_t* pos, int new_position, void *arg) { - static_cast (arg)->jack_timebase_callback (state, nframes, pos, new_position); + static_cast (arg)->jack_timebase_callback (state, nframes, pos, new_position); } void -JACKAudioBackend::jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, - jack_position_t* pos, int new_position) +JACKAudioBackend::jack_timebase_callback (jack_transport_state_t state, pframes_t /*nframes*/, + jack_position_t* pos, int /*new_position*/) { - if (_jack && _session && _session->synced_to_jack()) { - _session->jack_timebase_callback (state, nframes, pos, new_position); + TransportState tstate; + framepos_t position; + + switch (state) { + case JackTransportStopped: + tstate = TransportStopped; + break; + case JackTransportRolling: + tstate = TransportRolling; + break; + case JackTransportLooping: + tstate = TransportLooping; + break; + case JackTransportStarting: + tstate = TransportStarting; + break; + } + + if (pos) { + position = pos->frame; } + + // engine.timebase_callback (tstate, nframes, position, new_position); } int JACKAudioBackend::_jack_sync_callback (jack_transport_state_t state, jack_position_t* pos, void* arg) { - return static_cast (arg)->jack_sync_callback (state, pos); + return static_cast (arg)->jack_sync_callback (state, pos); } int JACKAudioBackend::jack_sync_callback (jack_transport_state_t state, jack_position_t* pos) { - if (_jack && _session) { - return _session->jack_sync_callback (state, pos); + TransportState tstate; + + switch (state) { + case JackTransportStopped: + tstate = TransportStopped; + break; + case JackTransportRolling: + tstate = TransportRolling; + break; + case JackTransportLooping: + tstate = TransportLooping; + break; + case JackTransportStarting: + tstate = TransportStarting; + break; } + return engine.sync_callback (tstate, pos->frame); + return true; } int JACKAudioBackend::_xrun_callback (void *arg) { - AudioEngine* ae = static_cast (arg); + JACKAudioBackend* ae = static_cast (arg); if (ae->connected()) { - ae->Xrun (); /* EMIT SIGNAL */ + ae->engine.Xrun (); /* EMIT SIGNAL */ } return 0; } @@ -766,99 +652,30 @@ JACKAudioBackend::_xrun_callback (void *arg) void JACKAudioBackend::_session_callback (jack_session_event_t *event, void *arg) { - AudioEngine* ae = static_cast (arg); + JACKAudioBackend* ae = static_cast (arg); if (ae->connected()) { - ae->JackSessionEvent ( event ); /* EMIT SIGNAL */ + ae->engine.JackSessionEvent (event); /* EMIT SIGNAL */ } } #endif -int -JACKAudioBackend::_graph_order_callback (void *arg) -{ - AudioEngine* ae = static_cast (arg); - - if (ae->connected() && !ae->port_remove_in_progress) { - ae->GraphReordered (); /* EMIT SIGNAL */ - } - - return 0; -} - void JACKAudioBackend::_freewheel_callback (int onoff, void *arg) { - static_cast(arg)->freewheel_callback (onoff); + static_cast(arg)->freewheel_callback (onoff); } void JACKAudioBackend::freewheel_callback (int onoff) { _freewheeling = onoff; - - if (onoff) { - _pre_freewheel_mmc_enabled = MIDI::Manager::instance()->mmc()->send_enabled (); - MIDI::Manager::instance()->mmc()->enable_send (false); - } else { - MIDI::Manager::instance()->mmc()->enable_send (_pre_freewheel_mmc_enabled); - } -} - -void -JACKAudioBackend::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg) -{ - AudioEngine* ae = static_cast (arg); - - if (!ae->port_remove_in_progress) { - ae->PortRegisteredOrUnregistered (); /* EMIT SIGNAL */ - } + engine.freewheel_callback (onoff); } void JACKAudioBackend::_latency_callback (jack_latency_callback_mode_t mode, void* arg) { - return static_cast (arg)->jack_latency_callback (mode); -} - -void -JACKAudioBackend::_connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn, void* arg) -{ - AudioEngine* ae = static_cast (arg); - ae->connect_callback (id_a, id_b, conn); -} - -void -JACKAudioBackend::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn) -{ - if (port_remove_in_progress) { - return; - } - - GET_PRIVATE_JACK_POINTER (_priv_jack); - - jack_port_t* jack_port_a = jack_port_by_id (_priv_jack, id_a); - jack_port_t* jack_port_b = jack_port_by_id (_priv_jack, id_b); - - boost::shared_ptr port_a; - boost::shared_ptr port_b; - Ports::iterator x; - boost::shared_ptr pr = ports.reader (); - - x = pr->find (make_port_name_relative (jack_port_name (jack_port_a))); - if (x != pr->end()) { - port_a = x->second; - } - - x = pr->find (make_port_name_relative (jack_port_name (jack_port_b))); - if (x != pr->end()) { - port_b = x->second; - } - - PortConnectedOrDisconnected ( - port_a, jack_port_name (jack_port_a), - port_b, jack_port_name (jack_port_b), - conn == 0 ? false : true - ); /* EMIT SIGNAL */ + return static_cast (arg)->jack_latency_callback (mode); } int @@ -890,7 +707,7 @@ JACKAudioBackend::_start_process_thread (void* arg) void* JACKAudioBackend::_process_thread (void *arg) { - return static_cast (arg)->process_thread (); + return static_cast (arg)->process_thread (); } void* @@ -899,9 +716,7 @@ JACKAudioBackend::process_thread () /* JACK doesn't do this for us when we use the wait API */ - _thread_init_callback (0); - - _main_thread = new ProcessThread; + AudioEngine::thread_init_callback (this); while (1) { GET_PRIVATE_JACK_POINTER_RET(_priv_jack,0); @@ -921,41 +736,26 @@ JACKAudioBackend::process_thread () int JACKAudioBackend::_sample_rate_callback (pframes_t nframes, void *arg) { - return static_cast (arg)->jack_sample_rate_callback (nframes); + return static_cast (arg)->jack_sample_rate_callback (nframes); } int JACKAudioBackend::jack_sample_rate_callback (pframes_t nframes) { - _frame_rate = nframes; - _usecs_per_cycle = (int) floor ((((double) frames_per_cycle() / nframes)) * 1000000.0); - - /* check for monitor input change every 1/10th of second */ - - monitor_check_interval = nframes / 10; - last_monitor_check = 0; - - if (_session) { - _session->set_frame_rate (nframes); - } - - SampleRateChanged (nframes); /* EMIT SIGNAL */ - - return 0; + _current_sample_rate = nframes; + return engine.sample_rate_change (nframes); } void JACKAudioBackend::jack_latency_callback (jack_latency_callback_mode_t mode) { - if (_session) { - _session->update_latency (mode == JackPlaybackLatency); - } + engine.latency_callback (mode == JackPlaybackLatency); } int JACKAudioBackend::_bufsize_callback (pframes_t nframes, void *arg) { - return static_cast (arg)->jack_bufsize_callback (nframes); + return static_cast (arg)->jack_bufsize_callback (nframes); } int @@ -970,8 +770,7 @@ JACKAudioBackend::jack_bufsize_callback (pframes_t nframes) GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 1); _current_buffer_size = nframes; - _current_usecs_per_cycle = (int) floor ((((double) nframes / frame_rate())) * 1000000.0); - last_monitor_check = 0; + _current_usecs_per_cycle = (int) floor ((((double) nframes / sample_rate())) * 1000000.0); if (jack_port_type_get_buffer_size) { _raw_buffer_sizes[DataType::AUDIO] = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_AUDIO_TYPE); @@ -993,66 +792,29 @@ JACKAudioBackend::jack_bufsize_callback (pframes_t nframes) _raw_buffer_sizes[DataType::MIDI] = nframes * 4 - (nframes/2); } - BufferSizeChange (nframes); - - if (_session) { - _session->set_block_size (_buffer_size); - } + engine.buffer_size_change (nframes); return 0; } void -JACKAudioBackend::halted_info (jack_status_t code, const char* reason, void *arg) +JACKAudioBackend::disconnected (const char* why) { /* called from jack shutdown handler */ - AudioEngine* ae = static_cast (arg); - bool was_running = ae->_running; + bool was_running = _running; - ae->stop_metering_thread (); - - ae->_running = false; - ae->_buffer_size = 0; - ae->_frame_rate = 0; - ae->_jack = 0; + _running = false; + _current_buffer_size = 0; + _current_sample_rate = 0; if (was_running) { - MIDI::JackMIDIPort::JackHalted (); /* EMIT SIGNAL */ -#ifdef HAVE_JACK_ON_INFO_SHUTDOWN - switch (code) { - case JackBackendError: - ae->Halted(reason); /* EMIT SIGNAL */ - break; - default: - ae->Halted(""); /* EMIT SIGNAL */ - } -#else - ae->Halted(""); /* EMIT SIGNAL */ -#endif + engine.halted_callback (why); /* EMIT SIGNAL */ } } - -void -JACKAudioBackend::halted (void *arg) +float +JACKAudioBackend::cpu_load() const { - cerr << "HALTED by JACK\n"; - - /* called from jack shutdown handler */ - - AudioEngine* ae = static_cast (arg); - bool was_running = ae->_running; - - ae->stop_metering_thread (); - - ae->_running = false; - ae->_buffer_size = 0; - ae->_frame_rate = 0; - ae->_jack = 0; - - if (was_running) { - MIDI::JackMIDIPort::JackHalted (); /* EMIT SIGNAL */ - ae->Halted(""); /* EMIT SIGNAL */ - } + GET_PRIVATE_JACK_POINTER_RET(_priv_jack,0); + return jack_cpu_load (_priv_jack); } - diff --git a/libs/ardour/jack_connection.cc b/libs/ardour/jack_connection.cc index e0937ea767..b6ac28b22a 100644 --- a/libs/ardour/jack_connection.cc +++ b/libs/ardour/jack_connection.cc @@ -62,6 +62,8 @@ JackConnection::open () boost::scoped_ptr current_epa; jack_status_t status; + close (); + /* revert all environment settings back to whatever they were when ardour started */ diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc index f830785bae..99b0bd2b9a 100644 --- a/libs/ardour/jack_portengine.cc +++ b/libs/ardour/jack_portengine.cc @@ -1,3 +1,74 @@ +JACKPortEngine::init () +{ + jack_set_port_registration_callback (_priv_jack, _registration_callback, this); + jack_set_port_connect_callback (_priv_jack, _connect_callback, this); + jack_set_graph_order_callback (_priv_jack, _graph_order_callback, this); +} + +void +JACKPortEngine::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg) +{ + JACKPortEngine* pm = static_cast (arg); + + if (!pm->port_remove_in_progress) { + pm->engine.PortRegisteredOrUnregistered (); /* EMIT SIGNAL */ + } +} + +void +JACKPortEngine::_connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn, void* arg) +{ + JACKPortEngine* pm = static_cast (arg); + pm->connect_callback (id_a, id_b, conn); +} + +void +JACKPortEngine::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn) +{ + if (port_remove_in_progress) { + return; + } + + GET_PRIVATE_JACK_POINTER (_priv_jack); + + jack_port_t* jack_port_a = jack_port_by_id (_priv_jack, id_a); + jack_port_t* jack_port_b = jack_port_by_id (_priv_jack, id_b); + + boost::shared_ptr port_a; + boost::shared_ptr port_b; + Ports::iterator x; + boost::shared_ptr pr = ports.reader (); + + x = pr->find (make_port_name_relative (jack_port_name (jack_port_a))); + if (x != pr->end()) { + port_a = x->second; + } + + x = pr->find (make_port_name_relative (jack_port_name (jack_port_b))); + if (x != pr->end()) { + port_b = x->second; + } + + PortConnectedOrDisconnected ( + port_a, jack_port_name (jack_port_a), + port_b, jack_port_name (jack_port_b), + conn == 0 ? false : true + ); /* EMIT SIGNAL */ +} + +int +JACKPortEngine::_graph_order_callback (void *arg) +{ + JACKPortEngine* pm = static_cast (arg); + + if (pm->connected() && !pm->port_remove_in_progress) { + pm->engine.GraphReordered (); /* EMIT SIGNAL */ + } + + return 0; +} + + JACKPortEngine::physically_connected (PortHandle p) { jack_port_t* _jack_port = (jack_port_t*) p; diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index 5ea76934a5..1f0859bc8d 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -289,7 +289,7 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate) _latency_control_port = 0; _next_cycle_start = std::numeric_limits::max(); _next_cycle_speed = 1.0; - _block_length = _engine.frames_per_cycle(); + _block_length = _engine.samples_per_cycle(); _seq_size = _engine.raw_buffer_size(DataType::MIDI); _state_version = 0; _was_activated = false; @@ -1901,7 +1901,7 @@ LV2Plugin::Impl::designated_input (const char* uri, void** bufptrs[], void** buf return port; } -static bool lv2_filter (const string& str, void *arg) +static bool lv2_filter (const string& str, void* /*arg*/) { /* Not a dotfile, has a prefix before a period, suffix is "lv2" */ diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index c279cf6d27..1a08849791 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -473,3 +473,42 @@ AudioEngine::disconnect (boost::shared_ptr port) return port->disconnect_all (); } +int +PortManager::reestablish_ports () +{ + Ports::iterator i; + + boost::shared_ptr p = ports.reader (); + + for (i = p->begin(); i != p->end(); ++i) { + if (i->second->reestablish ()) { + break; + } + } + + if (i != p->end()) { + /* failed */ + remove_all_ports (); + return -1; + } + + MIDI::Manager::instance()->reestablish (); + + return 0; +} + +int +PortManager::reconnect_ports () +{ + boost::shared_ptr p = ports.reader (); + + /* re-establish connections */ + + for (i = p->begin(); i != p->end(); ++i) { + i->second->reconnect (); + } + + MIDI::Manager::instance()->reconnect (); + + return 0; +} diff --git a/libs/ardour/session_time.cc b/libs/ardour/session_time.cc index 18805afa90..088712f625 100644 --- a/libs/ardour/session_time.cc +++ b/libs/ardour/session_time.cc @@ -180,31 +180,30 @@ Session::timecode_time (Timecode::Time &t) } int -Session::jack_sync_callback (jack_transport_state_t state, - jack_position_t* pos) +Session::jack_sync_callback (TransportState state, framepos_t pos) { bool slave = synced_to_jack(); switch (state) { - case JackTransportStopped: - if (slave && _transport_frame != pos->frame && post_transport_work() == 0) { - request_locate (pos->frame, false); + case TransportStopped: + if (slave && _transport_frame != pos && post_transport_work() == 0) { + request_locate (pos, false); // cerr << "SYNC: stopped, locate to " << pos->frame << " from " << _transport_frame << endl; return false; } else { return true; } - case JackTransportStarting: + case TransportStarting: // cerr << "SYNC: starting @ " << pos->frame << " a@ " << _transport_frame << " our work = " << post_transport_work() << " pos matches ? " << (_transport_frame == pos->frame) << endl; if (slave) { - return _transport_frame == pos->frame && post_transport_work() == 0; + return _transport_frame == pos && post_transport_work() == 0; } else { return true; } break; - case JackTransportRolling: + case TransportRolling: // cerr << "SYNC: rolling slave = " << slave << endl; if (slave) { start_transport (); @@ -212,17 +211,21 @@ Session::jack_sync_callback (jack_transport_state_t state, break; default: - error << string_compose (_("Unknown JACK transport state %1 in sync callback"), state) + error << string_compose (_("Unknown transport state %1 in sync callback"), state) << endmsg; } return true; } +/* XXX REQUIRES SOMEWAY TO EFFICIENTLY ACCESS jack_position_t WITHOUT BRIDGING + * THE ENTIRE DATA STRUCTURE + */ +#if 0 void -Session::jack_timebase_callback (jack_transport_state_t /*state*/, +Session::jack_timebase_callback (TransportState /*state*/, pframes_t /*nframes*/, - jack_position_t* pos, + framepos_t pos, int /*new_position*/) { Timecode::BBT_Time bbt; @@ -299,6 +302,7 @@ Session::jack_timebase_callback (jack_transport_state_t /*state*/, } #endif } +#endif /* jack data structure issues */ ARDOUR::framecnt_t Session::convert_to_frames (AnyTime const & position) diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 8eb52436e9..a4749d95aa 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -435,9 +435,11 @@ def build(bld): # the JACK audio backend obj = bld.shlib (features = 'c cxx cshlib cxxshlib', - source = [ 'jack_connection.cc', - 'jack_audiobackend.cc' - ]) + source = [ + 'jack_api.cc', + 'jack_connection.cc', + 'jack_audiobackend.cc' + ]) obj.cxxflags = [ '-fPIC' ] obj.name = 'jack_audiobackend' obj.target = 'jack_audiobackend' -- cgit v1.2.3 From fbfa0acebe01e85629c415bec849ca36324c56b1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 30 Jul 2013 23:26:46 -0400 Subject: remove compile errors (still will not link and JACKPortEngine is not close to done) --- gtk2_ardour/ardour_ui.cc | 14 +++++++------- gtk2_ardour/gain_meter.cc | 2 +- gtk2_ardour/global_port_matrix.cc | 26 ++++++++------------------ gtk2_ardour/main.cc | 4 ++-- gtk2_ardour/nsm.cc | 2 +- gtk2_ardour/port_group.cc | 12 ++++-------- gtk2_ardour/port_insert_ui.cc | 4 ++-- gtk2_ardour/rc_option_editor.cc | 4 ++-- gtk2_ardour/route_params_ui.cc | 2 +- gtk2_ardour/route_ui.cc | 2 +- gtk2_ardour/transcode_ffmpeg.cc | 2 +- gtk2_ardour/utils.cc | 2 +- gtk2_ardour/window_manager.cc | 2 +- libs/ardour/ardour/audioengine.h | 1 + libs/ardour/ardour/port_engine.h | 2 ++ libs/ardour/ardour/port_manager.h | 4 ++-- libs/ardour/audioengine.cc | 10 ++++++++++ libs/ardour/bundle.cc | 2 +- libs/ardour/jack_portengine.cc | 14 ++++++++++++++ libs/ardour/port_manager.cc | 18 ++++++++++++++++-- 20 files changed, 78 insertions(+), 51 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 155826492b..dc9018fc62 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -1049,16 +1049,16 @@ ARDOUR_UI::update_sample_rate (framecnt_t) } else { - framecnt_t rate = engine->frame_rate(); + framecnt_t rate = engine->sample_rate(); if (fmod (rate, 1000.0) != 0.0) { snprintf (buf, sizeof (buf), _("JACK: %.1f kHz / %4.1f ms"), - (float) rate/1000.0f, - (engine->frames_per_cycle() / (float) rate) * 1000.0f); + (float) rate / 1000.0f, + (engine->usecs_per_cycle() / 1000.0f)); } else { snprintf (buf, sizeof (buf), _("JACK: %" PRId64 " kHz / %4.1f ms"), rate/1000, - (engine->frames_per_cycle() / (float) rate) * 1000.0f); + (engine->usecs_per_cycle() * 1000.0f)); } } @@ -2044,7 +2044,7 @@ ARDOUR_UI::engine_running () Glib::RefPtr action; const char* action_name = 0; - switch (engine->frames_per_cycle()) { + switch (engine->samples_per_cycle()) { case 32: action_name = X_("JACKLatency32"); break; @@ -3817,7 +3817,7 @@ void ARDOUR_UI::disconnect_from_jack () { if (engine) { - if (engine->disconnect_from_jack ()) { + if (engine->pause ()) { MessageDialog msg (*editor, _("Could not disconnect from JACK")); msg.run (); } @@ -3830,7 +3830,7 @@ void ARDOUR_UI::reconnect_to_jack () { if (engine) { - if (engine->reconnect_to_jack ()) { + if (engine->start ()) { MessageDialog msg (*editor, _("Could not reconnect to JACK")); msg.run (); } diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index f142f21641..489564ec63 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -861,7 +861,7 @@ GainMeterBase::update_meters() } } -void GainMeterBase::color_handler(bool dpi) +void GainMeterBase::color_handler(bool /*dpi*/) { setup_meters(); } diff --git a/gtk2_ardour/global_port_matrix.cc b/gtk2_ardour/global_port_matrix.cc index 8c1fde3082..cdba7f5c27 100644 --- a/gtk2_ardour/global_port_matrix.cc +++ b/gtk2_ardour/global_port_matrix.cc @@ -82,9 +82,9 @@ GlobalPortMatrix::set_state (BundleChannel c[2], bool s) } else { /* two non-Ardour ports */ if (s) { - jack_connect (_session->engine().jack (), j->c_str(), i->c_str()); + AudioEngine::instance()->connect (*j, *i); } else { - jack_disconnect (_session->engine().jack (), j->c_str(), i->c_str()); + AudioEngine::instance()->disconnect (*j, *i); } } } @@ -113,33 +113,23 @@ GlobalPortMatrix::get_state (BundleChannel c[2]) const for (Bundle::PortList::const_iterator i = in_ports.begin(); i != in_ports.end(); ++i) { for (Bundle::PortList::const_iterator j = out_ports.begin(); j != out_ports.end(); ++j) { - boost::shared_ptr p = _session->engine().get_port_by_name (*i); - boost::shared_ptr q = _session->engine().get_port_by_name (*j); + boost::shared_ptr p = AudioEngine::instance()->get_port_by_name (*i); + boost::shared_ptr q = AudioEngine::instance()->get_port_by_name (*j); if (!p && !q) { /* two non-Ardour ports; things are slightly more involved */ /* XXX: is this the easiest way to do this? */ /* XXX: isn't this very inefficient? */ - jack_client_t* jack = _session->engine().jack (); - jack_port_t* jp = jack_port_by_name (jack, i->c_str()); - if (jp == 0) { + PortEngine::PortHandle ph = AudioEngine::instance()->port_engine().get_port_by_name (*i); + if (!ph) { return PortMatrixNode::NOT_ASSOCIATED; } - char const ** c = jack_port_get_all_connections (jack, jp); - - char const ** p = c; - - while (p && *p != 0) { - if (strcmp (*p, j->c_str()) == 0) { - free (c); - return PortMatrixNode::ASSOCIATED; - } - ++p; + if (AudioEngine::instance()->port_engine().connected (ph)) { + return PortMatrixNode::ASSOCIATED; } - free (c); return PortMatrixNode::NOT_ASSOCIATED; } diff --git a/gtk2_ardour/main.cc b/gtk2_ardour/main.cc index e5a7e8d580..e9b5da3e04 100644 --- a/gtk2_ardour/main.cc +++ b/gtk2_ardour/main.cc @@ -393,9 +393,9 @@ Click OK to exit %1."), PROGRAM_NAME, AudioEngine::instance()->current_backend_n /* engine has already run, so this is a mid-session backend death */ MessageDialog msg (string_compose (_("The audio backend (%1) has failed, or terminated"), AudioEngine::instance()->current_backend_name()), false); - msg->set_secondary_text (string_compose (_("%2 exited unexpectedly, and without notifying %1."), + msg.set_secondary_text (string_compose (_("%2 exited unexpectedly, and without notifying %1."), PROGRAM_NAME, AudioEngine::instance()->current_backend_name())); - msg->present (); + msg.present (); } return false; /* do not call again */ } diff --git a/gtk2_ardour/nsm.cc b/gtk2_ardour/nsm.cc index 18d88fec0a..e3ceba355f 100644 --- a/gtk2_ardour/nsm.cc +++ b/gtk2_ardour/nsm.cc @@ -50,7 +50,7 @@ NSM_Client::command_open(const char* name, int r = ERR_OK; ARDOUR_COMMAND_LINE::session_name = name; - ARDOUR_COMMAND_LINE::jack_client_name = client_id; + ARDOUR_COMMAND_LINE::backend_client_name = client_id; if (ARDOUR_UI::instance()->get_session_parameters(true, false, "")) { return ERR_GENERAL; diff --git a/gtk2_ardour/port_group.cc b/gtk2_ardour/port_group.cc index 925bebc307..24c603fa0a 100644 --- a/gtk2_ardour/port_group.cc +++ b/gtk2_ardour/port_group.cc @@ -500,11 +500,7 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp lpnc += ':'; const char ** ports = 0; - if (type == DataType::NIL) { - ports = session->engine().get_ports ("", "", inputs ? JackPortIsInput : JackPortIsOutput); - } else { - ports = session->engine().get_ports ("", type.to_jack_type(), inputs ? JackPortIsInput : JackPortIsOutput); - } + ports = AudioEngine::instance()->get_ports ("", type, inputs ? IsInput : IsOutput); if (ports) { @@ -545,9 +541,9 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp /* can't use the audio engine for this as we are looking at non-Ardour ports */ - jack_port_t* jp = jack_port_by_name (session->engine().jack(), p.c_str()); - if (jp) { - DataType t (jack_port_type (jp)); + PortEngine::PortHandle ph = AudioEngine::instance()->port_engine().get_port_by_name (p); + if (ph) { + DataType t (AudioEngine::instance()->port_engine().port_data_type (ph)); if (t != DataType::NIL) { if (port_has_prefix (p, N_("system:")) || port_has_prefix (p, N_("alsa_pcm")) || diff --git a/gtk2_ardour/port_insert_ui.cc b/gtk2_ardour/port_insert_ui.cc index 0511b357db..3c495f0e79 100644 --- a/gtk2_ardour/port_insert_ui.cc +++ b/gtk2_ardour/port_insert_ui.cc @@ -66,7 +66,7 @@ PortInsertUI::PortInsertUI (Gtk::Window* parent, ARDOUR::Session* sess, boost::s void PortInsertUI::update_latency_display () { - framecnt_t const sample_rate = input_selector.session()->engine().frame_rate(); + framecnt_t const sample_rate = AudioEngine::instance()->sample_rate(); if (sample_rate == 0) { latency_display.set_text (_("Disconnected from audio engine")); } else { @@ -93,7 +93,7 @@ PortInsertUI::check_latency_measurement () } char buf[128]; - framecnt_t const sample_rate = AudioEngine::instance()->frame_rate(); + framecnt_t const sample_rate = AudioEngine::instance()->sample_rate(); if (sample_rate == 0) { latency_display.set_text (_("Disconnected from audio engine")); diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 501d76262b..55d1e60101 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -1460,8 +1460,8 @@ RCOptionEditor::RCOptionEditor () #ifndef __APPLE__ /* no JACK monitoring on CoreAudio */ - if (AudioEngine::instance()->can_request_hardware_monitoring()) { - mm->add (HardwareMonitoring, _("JACK")); + if (AudioEngine::instance()->port_engine().can_monitor_input()) { + mm->add (HardwareMonitoring, _("via Audio Driver")); } #endif mm->add (SoftwareMonitoring, _("ardour")); diff --git a/gtk2_ardour/route_params_ui.cc b/gtk2_ardour/route_params_ui.cc index 87ccfde3ba..bd8edde448 100644 --- a/gtk2_ardour/route_params_ui.cc +++ b/gtk2_ardour/route_params_ui.cc @@ -276,7 +276,7 @@ RouteParams_UI::cleanup_latency_frame () void RouteParams_UI::setup_latency_frame () { - latency_widget = new LatencyGUI (*(_route->output()), _session->frame_rate(), _session->engine().frames_per_cycle()); + latency_widget = new LatencyGUI (*(_route->output()), _session->frame_rate(), AudioEngine::instance()->samples_per_cycle()); char buf[128]; snprintf (buf, sizeof (buf), _("Playback delay: %" PRId64 " samples"), _route->initial_delay()); diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc index bbc60ef425..9e6bebfe0e 100644 --- a/gtk2_ardour/route_ui.cc +++ b/gtk2_ardour/route_ui.cc @@ -1692,7 +1692,7 @@ RouteUI::map_frozen () void RouteUI::adjust_latency () { - LatencyDialog dialog (_route->name() + _(" latency"), *(_route->output()), _session->frame_rate(), _session->engine().frames_per_cycle()); + LatencyDialog dialog (_route->name() + _(" latency"), *(_route->output()), _session->frame_rate(), AudioEngine::instance()->samples_per_cycle()); } void diff --git a/gtk2_ardour/transcode_ffmpeg.cc b/gtk2_ardour/transcode_ffmpeg.cc index 9e4aa39fa0..b35f843d15 100644 --- a/gtk2_ardour/transcode_ffmpeg.cc +++ b/gtk2_ardour/transcode_ffmpeg.cc @@ -392,7 +392,7 @@ TranscodeFfmpeg::encode (std::string outfile, std::string inf_a, std::string inf } bool -TranscodeFfmpeg::extract_audio (std::string outfile, ARDOUR::framecnt_t samplerate, unsigned int stream) +TranscodeFfmpeg::extract_audio (std::string outfile, ARDOUR::framecnt_t /*samplerate*/, unsigned int stream) { if (!probeok) return false; if (stream >= m_audio.size()) return false; diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index d4bc460269..6c2330414d 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -348,7 +348,7 @@ emulate_key_event (Gtk::Widget* w, unsigned int keyval) ev.state = 0; ev.keyval = keyval; ev.length = 0; - ev.string = (gchar*) ""; + ev.string = (const gchar*) ""; ev.hardware_keycode = keymapkey[0].keycode; ev.group = keymapkey[0].group; g_free(keymapkey); diff --git a/gtk2_ardour/window_manager.cc b/gtk2_ardour/window_manager.cc index 5fa1b6c7b0..3ab9e1adff 100644 --- a/gtk2_ardour/window_manager.cc +++ b/gtk2_ardour/window_manager.cc @@ -410,7 +410,7 @@ ProxyBase::hide () } bool -ProxyBase::handle_win_event (GdkEventAny *ev) +ProxyBase::handle_win_event (GdkEventAny* /*ev*/) { hide(); return true; diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 4ac9221238..db1f59d19f 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -105,6 +105,7 @@ public: bool get_sync_offset (pframes_t& offset) const; int create_process_thread (boost::function func, pthread_t*, size_t stacksize); bool is_realtime() const; + bool connected() const; /* END BACKEND PROXY API */ diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index 8dc35ec8f5..3044426ff9 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -94,6 +94,8 @@ class PortEngine { virtual std::string get_port_name (PortHandle) const = 0; virtual PortHandle* get_port_by_name (const std::string&) const = 0; + DataType port_data_type (PortHandle) const; + virtual std::string make_port_name_relative (const std::string& name) const = 0; virtual std::string make_port_name_non_relative (const std::string& name) const = 0; virtual bool port_is_mine (const std::string& fullname) const = 0; diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index 29a566aa2d..38c8d8bf98 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -58,7 +58,7 @@ class PortManager int connect (const std::string& source, const std::string& destination); int disconnect (const std::string& source, const std::string& destination); int disconnect (boost::shared_ptr); - bool connected (const std::string&); + bool has_connections (const std::string&); int reestablish_ports (); int reconnect_ports (); @@ -71,7 +71,7 @@ class PortManager void port_renamed (const std::string&, const std::string&); ChanCount n_physical_outputs () const; ChanCount n_physical_inputs () const; - const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags); + const char ** get_ports (const std::string& port_name_pattern, DataType type, uint32_t flags); void remove_all_ports (); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 1f26e12a3b..b24008cd4e 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -668,6 +668,16 @@ AudioEngine::is_realtime() const return _backend->is_realtime(); } +bool +AudioEngine::connected() const +{ + if (!_backend) { + return false; + } + + return _backend->connected(); +} + void AudioEngine::transport_start () { diff --git a/libs/ardour/bundle.cc b/libs/ardour/bundle.cc index 9d5640491f..162db6c793 100644 --- a/libs/ardour/bundle.cc +++ b/libs/ardour/bundle.cc @@ -459,7 +459,7 @@ Bundle::connected_to_anything (AudioEngine& engine) rather than doing it with Port. */ - if (engine.connected (ports[j])) { + if (engine.has_connections (ports[j])) { return true; } } diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc index 99b0bd2b9a..b2534d47f5 100644 --- a/libs/ardour/jack_portengine.cc +++ b/libs/ardour/jack_portengine.cc @@ -98,3 +98,17 @@ JACKPortEngine::physically_connected (PortHandle p) return false; } + +DataType +JACKPortEngine::port_data_type (PortHandle p) +{ + const char* t = jack_port_type (p); + + if (strcmp (p, JACK_DEFAULT_AUDIO_TYPE) == 0) { + return DataType::AUDIO; + } else if (strcmp (p, JACK_DEFAULT_MIDI_TYPE) == 0) { + return DataType::MIDI; + } + + return DataType::NIL; +} diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index 1a08849791..0c7f4b46e5 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -263,7 +263,7 @@ AudioEngine::port_renamed (const std::string& old_relative_name, const std::stri } const char ** -AudioEngine::get_ports (const string& port_name_pattern, const string& type_name_pattern, uint32_t flags) +AudioEngine::get_ports (const string& port_name_pattern, DataType type, uint32_t flags) { GET_PRIVATE_JACK_POINTER_RET (_jack,0); if (!_running) { @@ -274,7 +274,21 @@ AudioEngine::get_ports (const string& port_name_pattern, const string& type_name return 0; } } - return jack_get_ports (_priv_jack, port_name_pattern.c_str(), type_name_pattern.c_str(), flags); + + const char* jack_type_string; + + switch (type) { + case DataType::AUDIO: + jack_type_string = JACK_DEFAULT_AUDIO_TYPE; + break; + case DataType::AUDIO: + jack_type_string = JACK_DEFAULT_MIDI_TYPE; + break; + case DataType::NIL + return 0; + } + + return jack_get_ports (_priv_jack, port_name_pattern.c_str(), jack_type_string, flags); } void -- cgit v1.2.3 From b5239317d4657ad689ef7ef4d11c1fb6ae3e699b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 31 Jul 2013 19:47:20 -0400 Subject: more stuff compiles --- libs/ardour/ardour/audio_backend.h | 23 ++- libs/ardour/ardour/audio_port.h | 8 +- libs/ardour/ardour/audioengine.h | 18 +-- libs/ardour/ardour/jack_audiobackend.h | 6 +- libs/ardour/ardour/jack_connection.h | 4 +- libs/ardour/ardour/jack_portengine.h | 24 ++- libs/ardour/ardour/midi_port.h | 4 +- libs/ardour/ardour/port_engine.h | 52 +++++-- libs/ardour/ardour/port_manager.h | 49 ++++-- libs/ardour/ardour/types.h | 7 +- libs/ardour/audioengine.cc | 39 +++-- libs/ardour/jack_audiobackend.cc | 4 +- libs/ardour/jack_connection.cc | 6 +- libs/ardour/jack_portengine.cc | 253 +++++++++++++++++++++++++----- libs/ardour/port.cc | 13 +- libs/ardour/port_manager.cc | 277 +++++++++++---------------------- libs/ardour/wscript | 1 + 17 files changed, 478 insertions(+), 310 deletions(-) diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 4d6d6a6dd8..44525c8353 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -33,6 +33,8 @@ namespace ARDOUR { class AudioEngine; +class PortEngine; +class PortManager; class AudioBackend { public: @@ -47,15 +49,18 @@ class AudioBackend { */ virtual std::string name() const = 0; + /** Return a private, type-free pointer to any data + * that might be useful to a concrete implementation + */ virtual void* private_handle() const = 0; - /** return true if the underlying mechanism/API is still available + /** Return true if the underlying mechanism/API is still available * for us to utilize. return false if some or all of the AudioBackend * API can no longer be effectively used. */ virtual bool connected() const = 0; - /** return true if the callback from the underlying mechanism/API + /** Return true if the callback from the underlying mechanism/API * (CoreAudio, JACK, ASIO etc.) occurs in a thread subject to realtime * constraints. Return false otherwise. */ @@ -160,6 +165,8 @@ class AudioBackend { */ virtual int set_systemic_output_latency (uint32_t) = 0; + /* Retrieving parameters */ + virtual std::string device_name () const = 0; virtual float sample_rate () const = 0; virtual uint32_t buffer_size () const = 0; @@ -337,7 +344,17 @@ class AudioBackend { AudioEngine& engine; }; -} +struct AudioBackendInfo { + const char* name; + + int (*instantiate) (const std::string& arg1, const std::string& arg2); + int (*deinstantiate) (void); + + boost::shared_ptr (*backend_factory) (AudioEngine&); + boost::shared_ptr (*portengine_factory) (PortManager&); +}; + +} // namespace #endif /* __libardour_audiobackend_h__ */ diff --git a/libs/ardour/ardour/audio_port.h b/libs/ardour/ardour/audio_port.h index a473dda418..f5affb0580 100644 --- a/libs/ardour/ardour/audio_port.h +++ b/libs/ardour/ardour/audio_port.h @@ -46,10 +46,12 @@ class AudioPort : public Port AudioBuffer& get_audio_buffer (pframes_t nframes); protected: - friend class AudioEngine; - + friend class PortManager; AudioPort (std::string const &, PortFlags); - /* special access for engine only */ + + protected: + friend class AudioEngine; + /* special access for engine only (hah, C++) */ Sample* engine_get_whole_audio_buffer (); private: diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index db1f59d19f..9e9da62ce0 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -61,6 +61,7 @@ class Port; class Session; class ProcessThread; class AudioBackend; +class AudioBackendInfo; class AudioEngine : public SessionHandlePtr, public PortManager { @@ -164,16 +165,6 @@ public: PBD::Signal0 Running; PBD::Signal0 Stopped; - /** Emitted if a Port is registered or unregistered */ - PBD::Signal0 PortRegisteredOrUnregistered; - - /** Emitted if a Port is connected or disconnected. - * The Port parameters are the ports being connected / disconnected, or 0 if they are not known to Ardour. - * The std::string parameters are the (long) port names. - * The bool parameter is true if ports were connected, or false for disconnected. - */ - PBD::Signal5, std::string, boost::weak_ptr, std::string, bool> PortConnectedOrDisconnected; - std::string make_port_name_relative (std::string) const; std::string make_port_name_non_relative (std::string) const; bool port_is_mine (const std::string&) const; @@ -202,7 +193,8 @@ public: static AudioEngine* _instance; - AudioBackend* _backend; + boost::shared_ptr _backend; + Glib::Threads::Mutex _process_lock; Glib::Threads::Cond session_removed; bool session_remove_pending; @@ -239,9 +231,9 @@ public: void parameter_changed (const std::string&); PBD::ScopedConnection config_connection; - typedef std::map BackendMap; + typedef std::map BackendMap; BackendMap _backends; - AudioBackend* backend_discover (const std::string&); + AudioBackendInfo* backend_discover (const std::string&); void drop_backend (); }; diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 8f6e636d1a..0855b8e90f 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -26,6 +26,8 @@ #include +#include + #include #ifdef HAVE_JACK_SESSION #include @@ -39,7 +41,7 @@ class JackConnection; class JACKAudioBackend : public AudioBackend { public: - JACKAudioBackend (AudioEngine& e, void*); + JACKAudioBackend (AudioEngine& e, boost::shared_ptr); ~JACKAudioBackend (); std::string name() const; @@ -98,7 +100,7 @@ class JACKAudioBackend : public AudioBackend { bool get_sync_offset (pframes_t& /*offset*/) const; private: - JackConnection* _jack_connection; //< shared with JACKPortEngine + boost::shared_ptr _jack_connection; //< shared with JACKPortEngine bool _running; bool _freewheeling; std::map _raw_buffer_sizes; diff --git a/libs/ardour/ardour/jack_connection.h b/libs/ardour/ardour/jack_connection.h index 02fb7c7e55..543a70c439 100644 --- a/libs/ardour/ardour/jack_connection.h +++ b/libs/ardour/ardour/jack_connection.h @@ -13,6 +13,8 @@ class JackConnection { JackConnection (const std::string& client_name, const std::string& session_uuid); ~JackConnection (); + const std::string& client_name() const { return _client_name; } + int open (); int close (); bool connected () const { return _jack != 0; } @@ -26,7 +28,7 @@ class JackConnection { private: jack_client_t* volatile _jack; - std::string client_name; + std::string _client_name; std::string session_uuid; }; diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h index 60aa52fb6b..80e34f3c92 100644 --- a/libs/ardour/ardour/jack_portengine.h +++ b/libs/ardour/ardour/jack_portengine.h @@ -25,6 +25,8 @@ #include +#include + #include "ardour/port_engine.h" #include "ardour/types.h" @@ -35,11 +37,13 @@ class JackConnection; class JACKPortEngine : public PortEngine { public: - JACKPortEngine (void* arg); // argument is a JackConnection + JACKPortEngine (PortManager&, boost::shared_ptr); bool connected() const; void* private_handle() const; + const std::string& my_name() const; + int set_port_name (PortHandle, const std::string&); std::string get_port_name (PortHandle) const; PortHandle* get_port_by_name (const std::string&) const; @@ -48,6 +52,10 @@ class JACKPortEngine : public PortEngine std::string make_port_name_non_relative (const std::string& name) const; bool port_is_mine (const std::string& fullname) const; + int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const; + + DataType port_data_type (PortHandle) const; + PortHandle register_port (const std::string& shortname, ARDOUR::DataType, ARDOUR::PortFlags); void unregister_port (PortHandle); @@ -85,17 +93,25 @@ class JACKPortEngine : public PortEngine LatencyRange get_latency_range (PortHandle, bool for_playback); LatencyRange get_connected_latency_range (PortHandle, int dir); - void* get_buffer (PortHandle, pframes_t); + bool port_is_physical (PortHandle) const; + void get_physical_outputs (DataType type, std::vector&); + void get_physical_inputs (DataType type, std::vector&); + ChanCount n_physical_outputs () const; + ChanCount n_physical_inputs () const; - pframes_t last_frame_time () const; + void* get_buffer (PortHandle, pframes_t); + framecnt_t last_frame_time () const; + private: - JackConnection* _jack_connection; + boost::shared_ptr _jack_connection; static int _graph_order_callback (void *arg); static void _registration_callback (jack_port_id_t, int, void *); static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); + int graph_order_callback (); + void connect_callback (jack_port_id_t, jack_port_id_t, int); }; diff --git a/libs/ardour/ardour/midi_port.h b/libs/ardour/ardour/midi_port.h index e14c7926fb..4a9a2ededc 100644 --- a/libs/ardour/ardour/midi_port.h +++ b/libs/ardour/ardour/midi_port.h @@ -57,9 +57,9 @@ class MidiPort : public Port { MidiBuffer& get_midi_buffer (pframes_t nframes); protected: - friend class AudioEngine; + friend class PortManager; - MidiPort (const std::string& name, PortFlags); + MidiPort (const std::string& name, PortFlags); private: MidiBuffer* _buffer; diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index 3044426ff9..5992a48a85 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -30,6 +30,8 @@ namespace ARDOUR { +class PortManager; + /** PortEngine is an abstract base class that defines the functionality * required by Ardour. * @@ -74,7 +76,7 @@ namespace ARDOUR { class PortEngine { public: - PortEngine() {} + PortEngine (PortManager& pm) : manager (pm) {} virtual ~PortEngine(); /* We use void* here so that the API can be defined for any implementation. @@ -90,32 +92,37 @@ class PortEngine { virtual bool connected() const = 0; virtual void* private_handle() const = 0; + virtual const std::string& my_name() const = 0; + virtual int set_port_name (PortHandle, const std::string&) = 0; virtual std::string get_port_name (PortHandle) const = 0; virtual PortHandle* get_port_by_name (const std::string&) const = 0; - DataType port_data_type (PortHandle) const; + /* Discovering the set of ports whose names, types and flags match + * specified values. + */ + + virtual int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const = 0; - virtual std::string make_port_name_relative (const std::string& name) const = 0; - virtual std::string make_port_name_non_relative (const std::string& name) const = 0; - virtual bool port_is_mine (const std::string& fullname) const = 0; + virtual DataType port_data_type (PortHandle) const = 0; virtual PortHandle register_port (const std::string& shortname, ARDOUR::DataType, ARDOUR::PortFlags) = 0; - virtual void unregister_port (PortHandle) = 0; + virtual void unregister_port (PortHandle) = 0; + + /* Connection management */ + + virtual int connect (const std::string& src, const std::string& dst) = 0; + virtual int disconnect (const std::string& src, const std::string& dst) = 0; + + virtual int connect (PortHandle, const std::string&) = 0; + virtual int disconnect (PortHandle, const std::string&) = 0; + virtual int disconnect_all (PortHandle) = 0; virtual bool connected (PortHandle) = 0; virtual bool connected_to (PortHandle, const std::string&) = 0; virtual bool physically_connected (PortHandle) = 0; - virtual int get_connections (PortHandle, std::vector&) = 0; - virtual int connect (PortHandle, const std::string&) = 0; - virtual int disconnect (PortHandle, const std::string&) = 0; - virtual int disconnect_all (PortHandle) = 0; - - virtual int connect (const std::string& src, const std::string& dst) = 0; - virtual int disconnect (const std::string& src, const std::string& dst) = 0; - /* MIDI */ virtual void midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) = 0; @@ -137,9 +144,24 @@ class PortEngine { virtual LatencyRange get_latency_range (PortHandle, bool for_playback) = 0; virtual LatencyRange get_connected_latency_range (PortHandle, int dir) = 0; + /* Discovering physical ports */ + + virtual bool port_is_physical (PortHandle) const = 0; + virtual void get_physical_outputs (DataType type, std::vector&) = 0; + virtual void get_physical_inputs (DataType type, std::vector&) = 0; + virtual ChanCount n_physical_outputs () const = 0; + virtual ChanCount n_physical_inputs () const = 0; + + /* getting the port buffer. untyped (void*) because this will return + * buffers containing different data depending on the port type + */ + virtual void* get_buffer (PortHandle, pframes_t) = 0; - virtual pframes_t last_frame_time () const = 0; + virtual framecnt_t last_frame_time() const = 0; + + protected: + PortManager& manager; }; } diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index 38c8d8bf98..5838ac66af 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -42,9 +42,10 @@ class PortManager public: typedef std::map > Ports; - PortManager(); + PortManager (); virtual ~PortManager() {} + void set_port_engine (PortEngine& pe); PortEngine& port_engine() { return *_impl; } /* Port registration */ @@ -62,16 +63,28 @@ class PortManager int reestablish_ports (); int reconnect_ports (); + bool connected (const std::string&); + bool connected_to (const std::string&, const std::string&); + bool physically_connected (const std::string&); + int get_connections (const std::string&, std::vector&); + + /* Naming */ + + boost::shared_ptr get_port_by_name (const std::string &); + void port_renamed (const std::string&, const std::string&); + std::string make_port_name_relative (const std::string& name) const; + std::string make_port_name_non_relative (const std::string& name) const; + bool port_is_mine (const std::string& fullname) const; + /* other Port management */ - bool port_is_physical (const std::string&) const; - void get_physical_outputs (DataType type, std::vector&); - void get_physical_inputs (DataType type, std::vector&); - boost::shared_ptr get_port_by_name (const std::string &); - void port_renamed (const std::string&, const std::string&); + bool port_is_physical (const std::string&) const; + void get_physical_outputs (DataType type, std::vector&); + void get_physical_inputs (DataType type, std::vector&); ChanCount n_physical_outputs () const; ChanCount n_physical_inputs () const; - const char ** get_ports (const std::string& port_name_pattern, DataType type, uint32_t flags); + + int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&); void remove_all_ports (); @@ -94,15 +107,33 @@ class PortManager std::string reason; }; + /* the port engine will invoke these callbacks when the time is right */ + + void registration_callback (); + int graph_order_callback (); + void connect_callback (const std::string&, const std::string&, bool connection); + + bool port_remove_in_progress() const { return _port_remove_in_progress; } + + /** Emitted if a Port is registered or unregistered */ + PBD::Signal0 PortRegisteredOrUnregistered; + + /** Emitted if a Port is connected or disconnected. + * The Port parameters are the ports being connected / disconnected, or 0 if they are not known to Ardour. + * The std::string parameters are the (long) port names. + * The bool parameter is true if ports were connected, or false for disconnected. + */ + PBD::Signal5, std::string, boost::weak_ptr, std::string, bool> PortConnectedOrDisconnected; protected: - PortEngine* _impl; + boost::shared_ptr _impl; SerializedRCUManager ports; + bool _port_remove_in_progress; boost::shared_ptr register_port (DataType type, const std::string& portname, bool input); void port_registration_failure (const std::string& portname); }; -} +} // namespace #endif /* __libardour_port_manager_h__ */ diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index 0167909ef3..b00b03e060 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -598,8 +598,11 @@ namespace ARDOUR { /* these values happen to match the constants used by JACK but this equality cannot be assumed. */ - IsInput = 1, - IsOutput = 2, + IsInput = 0x1, + IsOutput = 0x2, + IsPhysical = 0x4, + CanMonitor = 0x8, + IsTerminal = 0x10 }; struct LatencyRange { diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index b24008cd4e..3d1bf6e77e 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -64,8 +64,7 @@ gint AudioEngine::m_meter_exit; AudioEngine* AudioEngine::_instance = 0; AudioEngine::AudioEngine (const std::string& bcn, const std::string& bsu) - : _backend (0) - , session_remove_pending (false) + : session_remove_pending (false) , session_removal_countdown (-1) , monitor_check_interval (INT32_MAX) , last_monitor_check (0) @@ -109,8 +108,7 @@ AudioEngine::drop_backend () { if (_backend) { _backend->stop (); - delete _backend; - _backend = 0; + _backend.reset (); } } @@ -125,7 +123,15 @@ AudioEngine::set_backend (const std::string& name) drop_backend (); - _backend = b->second; + try { + + _backend = b->second->backend_factory (*this); + _impl = b->second->portengine_factory (*this); + + } catch (...) { + error << string_compose (_("Could not create backend for %1"), name) << endmsg; + return -1; + } return 0; } @@ -512,7 +518,6 @@ int AudioEngine::discover_backends () { vector backend_modules; - AudioBackend* backend; _backends.clear (); @@ -528,20 +533,23 @@ AudioEngine::discover_backends () DEBUG_TRACE (DEBUG::Panning, string_compose (_("looking for backends in %1"), backend_search_path().to_string())); for (vector::iterator i = backend_modules.begin(); i != backend_modules.end(); ++i) { - if ((backend = backend_discover (*i)) != 0) { - _backends.insert (make_pair (backend->name(), backend)); + + AudioBackendInfo* info; + + if ((info = backend_discover (*i)) != 0) { + _backends.insert (make_pair (info->name, info)); } } return _backends.size(); } -AudioBackend* +AudioBackendInfo* AudioEngine::backend_discover (const string& path) { Glib::Module* module = new Glib::Module(path); - AudioBackend* (*dfunc)(void); - void* func = 0; + AudioBackendInfo* info; + void* sym = 0; if (!module) { error << string_compose(_("AudioEngine: cannot load module \"%1\" (%2)"), path, @@ -550,17 +558,16 @@ AudioEngine::backend_discover (const string& path) return 0; } - if (!module->get_symbol("backend_factory", func)) { - error << string_compose(_("AudioEngine: module \"%1\" has no factory function."), path) << endmsg; + if (!module->get_symbol("descriptor", sym)) { + error << string_compose(_("AudioEngine: backend at \"%1\" has no descriptor."), path) << endmsg; error << Glib::Module::get_last_error() << endmsg; delete module; return 0; } - dfunc = (AudioBackend* (*)(void))func; - AudioBackend* backend = dfunc(); + info = (AudioBackendInfo*) sym; - return backend; + return info; } /* BACKEND PROXY WRAPPERS */ diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 7575e8387e..b993135f5a 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -42,9 +42,9 @@ using std::vector; #define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return; } #define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return r; } -JACKAudioBackend::JACKAudioBackend (AudioEngine& e, void* jc) +JACKAudioBackend::JACKAudioBackend (AudioEngine& e, boost::shared_ptr jc) : AudioBackend (e) - , _jack_connection (static_cast(jc)) + , _jack_connection (jc) , _running (false) , _freewheeling (false) , _target_sample_rate (48000) diff --git a/libs/ardour/jack_connection.cc b/libs/ardour/jack_connection.cc index b6ac28b22a..d2b69c31fb 100644 --- a/libs/ardour/jack_connection.cc +++ b/libs/ardour/jack_connection.cc @@ -45,7 +45,7 @@ static void jack_halted_info_callback (jack_status_t code, const char* reason, v JackConnection::JackConnection (const std::string& arg1, const std::string& arg2) : _jack (0) - , client_name (arg1) + , _client_name (arg1) , session_uuid (arg2) { } @@ -72,12 +72,12 @@ JackConnection::open () global_epa->restore (); } - if ((_jack = jack_client_open (client_name.c_str(), JackSessionID, &status, session_uuid.c_str())) == 0) { + if ((_jack = jack_client_open (_client_name.c_str(), JackSessionID, &status, session_uuid.c_str())) == 0) { return -1; } if (status & JackNameNotUnique) { - client_name = jack_get_client_name (_jack); + _client_name = jack_get_client_name (_jack); } /* attach halted handler */ diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc index b2534d47f5..4a6f3a1fca 100644 --- a/libs/ardour/jack_portengine.cc +++ b/libs/ardour/jack_portengine.cc @@ -1,5 +1,60 @@ -JACKPortEngine::init () +#define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return; } +#define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return r; } + +static uint32_t +ardour_port_flags_to_jack_flags (PortFlags flags) +{ + uint32_t jack_flags = 0; + + if (flags & PortIsInput) { + jack_flags |= JackPortIsInput; + } + if (flags & IsInput) { + jack_flags |= JackPortIsOutput; + } + if (flags & IsOutput) { + jack_flags |= JackPortIsTerminal; + } + if (flags & IsPhysical) { + jack_flags |= JackPortIsPhysical; + } + if (flags & CanMonitor) { + jack_flags |= JackPortCanMonitor; + } + + return jack_flags; +} + +static DataType +jack_port_type_to_ardour_data_type (const char* jack_type) +{ + if (strcmp (jack_type, JACK_DEFAULT_AUDIO_TYPE) == 0) { + return DataType::AUDIO; + } else if (strcmp (jack_type, JACK_DEFAULT_MIDI_TYPE) == 0) { + return DataType::MIDI; + } + return DataType::NIL; +} + +static const char* +ardour_data_type_to_jack_port_type (DataType d) { + switch (d) { + case DataType::AUDIO: + return JACK_DEFAULT_AUDIO_TYPE; + case DataType::MIDI: + return JACK_DEFAULT_MIDI_TYPE; + } + + return ""; +} + +JACKPortEngine::JACKPortEngine (PortManager& pm, boost::shared_ptr jc) + : PortEngine (pm) + , _jack_connection (jc) +{ + jack_client_t* client = _jack_connection-> + jack_set_port_registration_callback (_priv_jack, _registration_callback, this); jack_set_port_connect_callback (_priv_jack, _connect_callback, this); jack_set_graph_order_callback (_priv_jack, _graph_order_callback, this); @@ -8,67 +63,46 @@ JACKPortEngine::init () void JACKPortEngine::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg) { - JACKPortEngine* pm = static_cast (arg); - - if (!pm->port_remove_in_progress) { - pm->engine.PortRegisteredOrUnregistered (); /* EMIT SIGNAL */ - } + static_cast (arg)->_manager->registration_callback (); } void JACKPortEngine::_connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn, void* arg) { - JACKPortEngine* pm = static_cast (arg); - pm->connect_callback (id_a, id_b, conn); + static_cast (arg)->connect_callback (id_a, id_b, conn); } void JACKPortEngine::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn) { - if (port_remove_in_progress) { + if (_manager->port_remove_in_progress()) { return; } GET_PRIVATE_JACK_POINTER (_priv_jack); - jack_port_t* jack_port_a = jack_port_by_id (_priv_jack, id_a); - jack_port_t* jack_port_b = jack_port_by_id (_priv_jack, id_b); + jack_port_t* a = jack_port_by_id (_priv_jack, id_a); + jack_port_t* b = jack_port_by_id (_priv_jack, id_b); - boost::shared_ptr port_a; - boost::shared_ptr port_b; - Ports::iterator x; - boost::shared_ptr pr = ports.reader (); - - x = pr->find (make_port_name_relative (jack_port_name (jack_port_a))); - if (x != pr->end()) { - port_a = x->second; - } - - x = pr->find (make_port_name_relative (jack_port_name (jack_port_b))); - if (x != pr->end()) { - port_b = x->second; - } - - PortConnectedOrDisconnected ( - port_a, jack_port_name (jack_port_a), - port_b, jack_port_name (jack_port_b), - conn == 0 ? false : true - ); /* EMIT SIGNAL */ + _manager->connect_callback (jack_port_name (a), jack_port_name (b), conn == 0 ? false : true); } int JACKPortEngine::_graph_order_callback (void *arg) { - JACKPortEngine* pm = static_cast (arg); + return static_cast (arg)->graph_order_callback (); +} - if (pm->connected() && !pm->port_remove_in_progress) { - pm->engine.GraphReordered (); /* EMIT SIGNAL */ +int +JACKPortEngine::graph_order_callback () +{ + if (_jack_connection->connected()) { + _manager->graph_order_callback (); } - + return 0; } - JACKPortEngine::physically_connected (PortHandle p) { jack_port_t* _jack_port = (jack_port_t*) p; @@ -102,13 +136,148 @@ JACKPortEngine::physically_connected (PortHandle p) DataType JACKPortEngine::port_data_type (PortHandle p) { - const char* t = jack_port_type (p); + return jack_port_type_to_ardour_data_type (jack_port_type (p)); +} - if (strcmp (p, JACK_DEFAULT_AUDIO_TYPE) == 0) { - return DataType::AUDIO; - } else if (strcmp (p, JACK_DEFAULT_MIDI_TYPE) == 0) { - return DataType::MIDI; +const string& +JACKPortEngine::my_name() const +{ + return _client_name; +} + +bool +JACKPortEngine::port_is_physical (PortHandle* ph) const +{ + if (!ph) { + return false; + } + + return jack_port_flags (ph) & JackPortIsPhysical; +} + +int +JACKPortEngine::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) +{ + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack,0); + + const char** ports = jack_get_ports (_priv_jack, port_name_pattern.c_str(), + ardour_data_type_to_jack_port_type (type), + ardour_port_flags_to_jack_flags (flags)); + + if (ports == 0) { + return s; } - return DataType::NIL; + for (uint32_t i = 0; ports[i]; ++i) { + s.push_back (ports[i]); + jack_free (ports[i]); + } + + jack_free (ports); + + return s.size(); +} + +ChanCount +JACKPortEngine::n_physical (unsigned long flags) const +{ + ChanCount c; + + GET_PRIVATE_JACK_POINTER_RET (_jack, c); + + const char ** ports = jack_get_ports (_priv_jack, NULL, NULL, JackPortIsPhysical | flags); + + if (ports) { + for (uint32_t i = 0; ports[i]; ++i) { + if (!strstr (ports[i], "Midi-Through")) { + DataType t (jack_port_type (jack_port_by_name (_jack, ports[i]))); + c.set (t, c.get (t) + 1); + jack_free (ports[i]); + } + } + + jack_free (ports); + } + + return c; +} + +ChanCount +JACKPortEngine::n_physical_inputs () const +{ + return n_physical (JackPortIsInput); +} + +ChanCount +JACKPortEngine::n_physical_outputs () const +{ + return n_physical (JackPortIsOutput); +} + +void +JACKPortEngine::get_physical (DataType type, unsigned long flags, vector& phy) +{ + GET_PRIVATE_JACK_POINTER (_priv_jack); + const char ** ports; + + if ((ports = jack_get_ports (_priv_jack, NULL, type.to_jack_type(), JackPortIsPhysical | flags)) == 0) { + return; + } + + if (ports) { + for (uint32_t i = 0; ports[i]; ++i) { + if (strstr (ports[i], "Midi-Through")) { + continue; + } + phy.push_back (ports[i]); + jack_free (ports[i]); + } + jack_free (ports); + } +} + +/** Get physical ports for which JackPortIsOutput is set; ie those that correspond to + * a physical input connector. + */ +void +JACKPortEngine::get_physical_inputs (DataType type, vector& ins) +{ + get_physical (type, JackPortIsOutput, ins); +} + +/** Get physical ports for which JackPortIsInput is set; ie those that correspond to + * a physical output connector. + */ +void +JACKPortEngine::get_physical_outputs (DataType type, vector& outs) +{ + get_physical (type, JackPortIsInput, outs); +} + + +bool +JACKPortEngine::can_request_hardware_monitoring () +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack,false); + const char ** ports; + + if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortCanMonitor)) == 0) { + return false; + } + + for (uint32_t i = 0; ports[i]; ++i) { + jack_free (ports[i]); + } + + jack_free (ports); + + return true; +} + +framecnt_t +JACKPortEngine::last_frame_time () const +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_last_frame_time (_priv_jack); } diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index fea2a041e0..5aa6ad0ae7 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -49,6 +49,7 @@ pframes_t Port::_cycle_nframes = 0; * repeated phrase */ #define port_engine AudioEngine::instance()->port_engine() +#define port_manager AudioEngine::instance() /** @param n Port short name */ Port::Port (std::string const & n, DataType t, PortFlags f) @@ -111,7 +112,7 @@ Port::disconnect_all () /* a cheaper, less hacky way to do boost::shared_from_this() ... */ - boost::shared_ptr pself = AudioEngine::instance()->get_port_by_name (name()); + boost::shared_ptr pself = port_manager->get_port_by_name (name()); PostDisconnect (pself, boost::shared_ptr()); // emit signal return 0; @@ -131,7 +132,7 @@ Port::connected_to (std::string const & o) const return false; } - return port_engine.connected_to (_port_handle, port_engine.make_port_name_non_relative (o)); + return port_engine.connected_to (_port_handle, AudioEngine::instance()->make_port_name_non_relative (o)); } int @@ -143,8 +144,8 @@ Port::get_connections (std::vector & c) const int Port::connect (std::string const & other) { - std::string const other_name = port_engine.make_port_name_non_relative (other); - std::string const our_name = port_engine.make_port_name_non_relative (_name); + std::string const other_name = AudioEngine::instance()->make_port_name_non_relative (other); + std::string const our_name = AudioEngine::instance()->make_port_name_non_relative (_name); int r = 0; @@ -168,8 +169,8 @@ Port::connect (std::string const & other) int Port::disconnect (std::string const & other) { - std::string const other_fullname = port_engine.make_port_name_non_relative (other); - std::string const this_fullname = port_engine.make_port_name_non_relative (_name); + std::string const other_fullname = port_manager->make_port_name_non_relative (other); + std::string const this_fullname = port_manager->make_port_name_non_relative (_name); int r = 0; diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index 0c7f4b46e5..9c5eaa998b 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -17,24 +17,35 @@ */ +#include "pbd/error.h" + +#include "midi++/manager.h" #include "ardour/port_manager.h" +#include "ardour/audio_port.h" +#include "ardour/midi_port.h" + +#include "i18n.h" using namespace ARDOUR; +using namespace PBD; +using std::string; +using std::vector; PortManager::PortManager () - , ports (new Ports) + : ports (new Ports) + , _port_remove_in_progress (false) { } void -AudioEngine::remove_all_ports () +PortManager::remove_all_ports () { /* make sure that JACK callbacks that will be invoked as we cleanup * ports know that they have nothing to do. */ - port_remove_in_progress = true; + _port_remove_in_progress = true; /* process lock MUST be held by caller */ @@ -49,15 +60,16 @@ AudioEngine::remove_all_ports () ports.flush (); - port_remove_in_progress = false; + _port_remove_in_progress = false; } string -AudioEngine::make_port_name_relative (const string& portname) const +PortManager::make_port_name_relative (const string& portname) const { string::size_type len; string::size_type n; + string self = _impl->my_name(); len = portname.length(); @@ -67,7 +79,7 @@ AudioEngine::make_port_name_relative (const string& portname) const } } - if ((n != len) && (portname.substr (0, n) == jack_client_name)) { + if ((n != len) && (portname.substr (0, n) == self)) { return portname.substr (n+1); } @@ -75,7 +87,7 @@ AudioEngine::make_port_name_relative (const string& portname) const } string -AudioEngine::make_port_name_non_relative (const string& portname) const +PortManager::make_port_name_non_relative (const string& portname) const { string str; @@ -83,7 +95,7 @@ AudioEngine::make_port_name_non_relative (const string& portname) const return portname; } - str = jack_client_name; + str = _impl->my_name(); str += ':'; str += portname; @@ -91,136 +103,40 @@ AudioEngine::make_port_name_non_relative (const string& portname) const } bool -AudioEngine::port_is_mine (const string& portname) const +PortManager::port_is_mine (const string& portname) const { + string self = _impl->my_name(); + if (portname.find_first_of (':') != string::npos) { - if (portname.substr (0, jack_client_name.length ()) != jack_client_name) { + if (portname.substr (0, self.length ()) != self) { return false; } } - return true; -} - -bool -AudioEngine::port_is_physical (const std::string& portname) const -{ - GET_PRIVATE_JACK_POINTER_RET(_jack, false); - - jack_port_t *port = jack_port_by_name (_priv_jack, portname.c_str()); - - if (!port) { - return false; - } - - return jack_port_flags (port) & JackPortIsPhysical; -} - -ChanCount -AudioEngine::n_physical (unsigned long flags) const -{ - ChanCount c; - - GET_PRIVATE_JACK_POINTER_RET (_jack, c); - - const char ** ports = jack_get_ports (_priv_jack, NULL, NULL, JackPortIsPhysical | flags); - if (ports == 0) { - return c; - } - - for (uint32_t i = 0; ports[i]; ++i) { - if (!strstr (ports[i], "Midi-Through")) { - DataType t (jack_port_type (jack_port_by_name (_jack, ports[i]))); - c.set (t, c.get (t) + 1); - } - } - - free (ports); - - return c; -} - -ChanCount -AudioEngine::n_physical_inputs () const -{ - return n_physical (JackPortIsInput); -} - -ChanCount -AudioEngine::n_physical_outputs () const -{ - return n_physical (JackPortIsOutput); -} - -void -AudioEngine::get_physical (DataType type, unsigned long flags, vector& phy) -{ - GET_PRIVATE_JACK_POINTER (_jack); - const char ** ports; - - if ((ports = jack_get_ports (_priv_jack, NULL, type.to_jack_type(), JackPortIsPhysical | flags)) == 0) { - return; - } - if (ports) { - for (uint32_t i = 0; ports[i]; ++i) { - if (strstr (ports[i], "Midi-Through")) { - continue; - } - phy.push_back (ports[i]); - } - free (ports); - } -} - -/** Get physical ports for which JackPortIsOutput is set; ie those that correspond to - * a physical input connector. - */ -void -AudioEngine::get_physical_inputs (DataType type, vector& ins) -{ - get_physical (type, JackPortIsOutput, ins); -} - -/** Get physical ports for which JackPortIsInput is set; ie those that correspond to - * a physical output connector. - */ -void -AudioEngine::get_physical_outputs (DataType type, vector& outs) -{ - get_physical (type, JackPortIsInput, outs); + return true; } - bool -AudioEngine::can_request_hardware_monitoring () +PortManager::port_is_physical (const std::string& portname) const { - GET_PRIVATE_JACK_POINTER_RET (_jack,false); - const char ** ports; - - if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortCanMonitor)) == 0) { + PortEngine::PortHandle ph = _impl->get_port_by_name (portname); + if (!ph) { return false; } - free (ports); - - return true; + return _impl->port_is_physical (ph); } - /** @param name Full or short name of port * @return Corresponding Port or 0. */ boost::shared_ptr -AudioEngine::get_port_by_name (const string& portname) +PortManager::get_port_by_name (const string& portname) { - if (!_running) { - if (!_has_run) { - fatal << _("get_port_by_name() called before engine was started") << endmsg; - /*NOTREACHED*/ - } else { - boost::shared_ptr (); - } + if (!_impl->connected()) { + fatal << _("get_port_by_name() called before engine was started") << endmsg; + /*NOTREACHED*/ } if (!port_is_mine (portname)) { @@ -238,7 +154,7 @@ AudioEngine::get_port_by_name (const string& portname) and cheap), and if so, rename the port (which will alter the port map as a side effect). */ - const std::string check = make_port_name_relative (jack_port_name (x->second->jack_port())); + const std::string check = make_port_name_relative (_impl->get_port_name (x->second->port_handle())); if (check != rel) { x->second->set_name (check); } @@ -249,7 +165,7 @@ AudioEngine::get_port_by_name (const string& portname) } void -AudioEngine::port_renamed (const std::string& old_relative_name, const std::string& new_relative_name) +PortManager::port_renamed (const std::string& old_relative_name, const std::string& new_relative_name) { RCUWriter writer (ports); boost::shared_ptr p = writer.get_copy(); @@ -262,66 +178,42 @@ AudioEngine::port_renamed (const std::string& old_relative_name, const std::stri } } -const char ** -AudioEngine::get_ports (const string& port_name_pattern, DataType type, uint32_t flags) +int +PortManager::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) { - GET_PRIVATE_JACK_POINTER_RET (_jack,0); - if (!_running) { - if (!_has_run) { - fatal << _("get_ports called before engine was started") << endmsg; - /*NOTREACHED*/ - } else { - return 0; - } - } - - const char* jack_type_string; - - switch (type) { - case DataType::AUDIO: - jack_type_string = JACK_DEFAULT_AUDIO_TYPE; - break; - case DataType::AUDIO: - jack_type_string = JACK_DEFAULT_MIDI_TYPE; - break; - case DataType::NIL - return 0; - } - - return jack_get_ports (_priv_jack, port_name_pattern.c_str(), jack_type_string, flags); + return _impl->get_ports (port_name_pattern, type, flags, s); } void -AudioEngine::port_registration_failure (const std::string& portname) +PortManager::port_registration_failure (const std::string& portname) { - GET_PRIVATE_JACK_POINTER (_jack); - string full_portname = jack_client_name; + string full_portname = _impl->my_name(); full_portname += ':'; full_portname += portname; - jack_port_t* p = jack_port_by_name (_priv_jack, full_portname.c_str()); + PortEngine::PortHandle p = _impl->get_port_by_name (full_portname); string reason; if (p) { reason = string_compose (_("a port with the name \"%1\" already exists: check for duplicated track/bus names"), portname); } else { - reason = string_compose (_("No more JACK ports are available. You will need to stop %1 and restart JACK with more ports if you need this many tracks."), PROGRAM_NAME); + reason = string_compose (_("No more ports are available. You will need to stop %1 and restart with more ports if you need this many tracks."), PROGRAM_NAME); } throw PortRegistrationFailure (string_compose (_("AudioEngine: cannot register port \"%1\": %2"), portname, reason).c_str()); } boost::shared_ptr -AudioEngine::register_port (DataType dtype, const string& portname, bool input) +PortManager::register_port (DataType dtype, const string& portname, bool input) { boost::shared_ptr newport; try { if (dtype == DataType::AUDIO) { - newport.reset (new AudioPort (portname, (input ? Port::IsInput : Port::IsOutput))); + newport.reset (new AudioPort (portname, (input ? IsInput : IsOutput))); } else if (dtype == DataType::MIDI) { - newport.reset (new MidiPort (portname, (input ? Port::IsInput : Port::IsOutput))); + newport.reset (new MidiPort (portname, (input ? IsInput : IsOutput))); } else { throw PortRegistrationFailure("unable to create port (unknown type)"); } @@ -346,23 +238,23 @@ AudioEngine::register_port (DataType dtype, const string& portname, bool input) } boost::shared_ptr -AudioEngine::register_input_port (DataType type, const string& portname) +PortManager::register_input_port (DataType type, const string& portname) { return register_port (type, portname, true); } boost::shared_ptr -AudioEngine::register_output_port (DataType type, const string& portname) +PortManager::register_output_port (DataType type, const string& portname) { return register_port (type, portname, false); } int -AudioEngine::unregister_port (boost::shared_ptr port) +PortManager::unregister_port (boost::shared_ptr port) { /* caller must hold process lock */ - if (!_running) { + if (!_impl->connected()) { /* probably happening when the engine has been halted by JACK, in which case, there is nothing we can do here. */ @@ -399,23 +291,17 @@ PortManager::connected (const string& port_name) } int -AudioEngine::connect (const string& source, const string& destination) +PortManager::connect (const string& source, const string& destination) { int ret; - if (!_running) { - if (!_has_run) { - fatal << _("connect called before engine was started") << endmsg; - /*NOTREACHED*/ - } else { - return -1; - } + if (!_impl->connected()) { + return -1; } string s = make_port_name_non_relative (source); string d = make_port_name_non_relative (destination); - boost::shared_ptr src = get_port_by_name (s); boost::shared_ptr dst = get_port_by_name (d); @@ -440,17 +326,12 @@ AudioEngine::connect (const string& source, const string& destination) } int -AudioEngine::disconnect (const string& source, const string& destination) +PortManager::disconnect (const string& source, const string& destination) { int ret; - if (!_running) { - if (!_has_run) { - fatal << _("disconnect called before engine was started") << endmsg; - /*NOTREACHED*/ - } else { - return -1; - } + if (!_impl->connected()) { + return -1; } string s = make_port_name_non_relative (source); @@ -471,19 +352,8 @@ AudioEngine::disconnect (const string& source, const string& destination) } int -AudioEngine::disconnect (boost::shared_ptr port) +PortManager::disconnect (boost::shared_ptr port) { - GET_PRIVATE_JACK_POINTER_RET (_jack,-1); - - if (!_running) { - if (!_has_run) { - fatal << _("disconnect called before engine was started") << endmsg; - /*NOTREACHED*/ - } else { - return -1; - } - } - return port->disconnect_all (); } @@ -518,7 +388,7 @@ PortManager::reconnect_ports () /* re-establish connections */ - for (i = p->begin(); i != p->end(); ++i) { + for (Ports::iterator i = p->begin(); i != p->end(); ++i) { i->second->reconnect (); } @@ -526,3 +396,36 @@ PortManager::reconnect_ports () return 0; } + +void +PortManager::connect_callback (const string& a, const string& b, bool conn) +{ + boost::shared_ptr port_a; + boost::shared_ptr port_b; + Ports::iterator x; + boost::shared_ptr pr = ports.reader (); + + x = pr->find (make_port_name_relative (a)); + if (x != pr->end()) { + port_a = x->second; + } + + x = pr->find (make_port_name_relative (b)); + if (x != pr->end()) { + port_b = x->second; + } + + PortConnectedOrDisconnected ( + port_a, a, + port_b, b, + conn + ); /* EMIT SIGNAL */ +} + +void +PortManager::registration_callback () +{ + if (!_port_remove_in_progress) { + PortRegisteredOrUnregistered (); /* EMIT SIGNAL */ + } +} diff --git a/libs/ardour/wscript b/libs/ardour/wscript index a4749d95aa..48cfda7bc2 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -148,6 +148,7 @@ libardour_sources = [ 'plugin_manager.cc', 'port.cc', 'port_insert.cc', + 'port_manager.cc', 'port_set.cc', 'process_thread.cc', 'processor.cc', -- cgit v1.2.3 From 18c68bfd12130b8a3e95c99d3c0472c8b7f377bc Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 31 Jul 2013 19:55:44 -0400 Subject: even more stuff compiles --- gtk2_ardour/port_group.cc | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/gtk2_ardour/port_group.cc b/gtk2_ardour/port_group.cc index 24c603fa0a..a25c2e0f84 100644 --- a/gtk2_ardour/port_group.cc +++ b/gtk2_ardour/port_group.cc @@ -499,16 +499,12 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp string lpnc = lpn; lpnc += ':'; - const char ** ports = 0; - ports = AudioEngine::instance()->get_ports ("", type, inputs ? IsInput : IsOutput); + vector ports; + if (AudioEngine::instance()->get_ports ("", type, inputs ? IsInput : IsOutput, ports) > 0) { - if (ports) { + for (vector::const_iterator s = ports.begin(); s != ports.end(); ) { - int n = 0; - - while (ports[n]) { - - std::string const p = ports[n]; + std::string const p = *s; if (!system->has_port(p) && !bus->has_port(p) && @@ -522,7 +518,7 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp */ if (p.find ("Midi-Through") != string::npos) { - ++n; + ++s; continue; } @@ -535,7 +531,7 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp if ((lp.find (N_(":monitor")) != string::npos) && (lp.find (lpn) != string::npos)) { - ++n; + ++s; continue; } @@ -556,10 +552,8 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp } } - ++n; + ++s; } - - free (ports); } for (DataType::iterator i = DataType::begin(); i != DataType::end(); ++i) { -- cgit v1.2.3 From 682ebad62bdc85df151ad0b81dc27cc9f3e71cec Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 1 Aug 2013 14:43:12 -0400 Subject: full compilation and linking (coding not finished, will not run) --- libs/ardour/ardour/audio_backend.h | 15 +- libs/ardour/ardour/audioengine.h | 18 +- libs/ardour/ardour/jack_audiobackend.h | 2 + libs/ardour/ardour/jack_portengine.h | 25 ++- libs/ardour/ardour/port_engine.h | 21 ++- libs/ardour/ardour/port_manager.h | 1 - libs/ardour/ardour/slave.h | 6 +- libs/ardour/audioengine.cc | 178 +++++++++++++++---- libs/ardour/bundle.cc | 4 +- libs/ardour/jack_audiobackend.cc | 7 + libs/ardour/jack_portengine.cc | 309 +++++++++++++++++++++++++++------ libs/ardour/jack_slave.cc | 33 +--- libs/ardour/port.cc | 12 -- libs/ardour/port_manager.cc | 71 +++++--- libs/ardour/route.cc | 10 +- libs/ardour/session.cc | 6 +- libs/ardour/session_export.cc | 2 +- libs/ardour/session_state.cc | 2 +- libs/ardour/session_transport.cc | 20 +-- libs/ardour/wscript | 4 +- libs/midi++2/jack_midi_port.cc | 2 +- 21 files changed, 536 insertions(+), 212 deletions(-) diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 44525c8353..3b68432b6f 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -296,18 +296,17 @@ class AudioBackend { * It is extremely likely that any implementation will use a DLL, since * this function can be called from any thread, at any time, and must be * able to accurately determine the correct sample time. + * + * Can be called from any thread. */ virtual pframes_t sample_time () = 0; - /** return the time according to the sample clock in use when the current - * buffer process cycle began. - * - * Can ONLY be called from within a process() callback tree (which - * implies that it can only be called by a process thread) + /** Return the time according to the sample clock in use when the most + * recent buffer process cycle began. Can be called from any thread. */ virtual pframes_t sample_time_at_cycle_start () = 0; - /** return the time since the current buffer process cycle started, + /** Return the time since the current buffer process cycle started, * in samples, according to the sample clock in use. * * Can ONLY be called from within a process() callback tree (which @@ -315,7 +314,7 @@ class AudioBackend { */ virtual pframes_t samples_since_cycle_start () = 0; - /** return true if it possible to determine the offset in samples of the + /** Return true if it possible to determine the offset in samples of the * first video frame that starts within the current buffer process cycle, * measured from the first sample of the cycle. If returning true, * set @param offset to that offset. @@ -339,6 +338,8 @@ class AudioBackend { * when that function returns. */ virtual int create_process_thread (boost::function func, pthread_t*, size_t stacksize) = 0; + + virtual void update_latencies () = 0; protected: AudioEngine& engine; diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 9e9da62ce0..0bbbe90ef4 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -108,6 +108,16 @@ public: bool is_realtime() const; bool connected() const; + int set_device_name (const std::string&); + int set_sample_rate (float); + int set_buffer_size (uint32_t); + int set_sample_format (SampleFormat); + int set_interleaved (bool yn); + int set_input_channels (uint32_t); + int set_output_channels (uint32_t); + int set_systemic_input_latency (uint32_t); + int set_systemic_output_latency (uint32_t); + /* END BACKEND PROXY API */ bool freewheeling() const { return _freewheeling; } @@ -115,7 +125,9 @@ public: Glib::Threads::Mutex& process_lock() { return _process_lock; } - int request_buffer_size (pframes_t); + int request_buffer_size (pframes_t samples) { + return set_buffer_size (samples); + } framecnt_t processed_frames() const { return _processed_frames; } @@ -165,10 +177,6 @@ public: PBD::Signal0 Running; PBD::Signal0 Stopped; - std::string make_port_name_relative (std::string) const; - std::string make_port_name_non_relative (std::string) const; - bool port_is_mine (const std::string&) const; - static AudioEngine* instance() { return _instance; } static void destroy(); void died (); diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 0855b8e90f..7104b814c2 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -99,6 +99,8 @@ class JACKAudioBackend : public AudioBackend { int set_time_master (bool /*yn*/); bool get_sync_offset (pframes_t& /*offset*/) const; + void update_latencies (); + private: boost::shared_ptr _jack_connection; //< shared with JACKPortEngine bool _running; diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h index 80e34f3c92..bee87532d3 100644 --- a/libs/ardour/ardour/jack_portengine.h +++ b/libs/ardour/ardour/jack_portengine.h @@ -38,8 +38,8 @@ class JACKPortEngine : public PortEngine { public: JACKPortEngine (PortManager&, boost::shared_ptr); + ~JACKPortEngine(); - bool connected() const; void* private_handle() const; const std::string& my_name() const; @@ -48,10 +48,6 @@ class JACKPortEngine : public PortEngine std::string get_port_name (PortHandle) const; PortHandle* get_port_by_name (const std::string&) const; - std::string make_port_name_relative (const std::string& name) const; - std::string make_port_name_non_relative (const std::string& name) const; - bool port_is_mine (const std::string& fullname) const; - int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const; DataType port_data_type (PortHandle) const; @@ -62,19 +58,16 @@ class JACKPortEngine : public PortEngine bool connected (PortHandle); bool connected_to (PortHandle, const std::string&); bool physically_connected (PortHandle); - int get_connections (PortHandle, std::vector&); - int connect (PortHandle, const std::string&); int disconnect (PortHandle, const std::string&); int disconnect_all (PortHandle); - int connect (const std::string& src, const std::string& dst); int disconnect (const std::string& src, const std::string& dst); /* MIDI */ - void midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index); + int midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index); int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size); uint32_t get_midi_event_count (void* port_buffer); void midi_clear (void* port_buffer); @@ -91,7 +84,8 @@ class JACKPortEngine : public PortEngine void set_latency_range (PortHandle, bool for_playback, LatencyRange); LatencyRange get_latency_range (PortHandle, bool for_playback); - LatencyRange get_connected_latency_range (PortHandle, int dir); + + /* Physical ports */ bool port_is_physical (PortHandle) const; void get_physical_outputs (DataType type, std::vector&); @@ -99,9 +93,13 @@ class JACKPortEngine : public PortEngine ChanCount n_physical_outputs () const; ChanCount n_physical_inputs () const; + /* Getting access to the data buffer for a port */ + void* get_buffer (PortHandle, pframes_t); - framecnt_t last_frame_time () const; + /* Miscellany */ + + pframes_t sample_time_at_cycle_start (); private: boost::shared_ptr _jack_connection; @@ -110,10 +108,11 @@ class JACKPortEngine : public PortEngine static void _registration_callback (jack_port_id_t, int, void *); static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); - int graph_order_callback (); - void connect_callback (jack_port_id_t, jack_port_id_t, int); + ChanCount n_physical (unsigned long flags) const; + void get_physical (DataType type, unsigned long flags, std::vector& phy) const; + }; } // namespace diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index 5992a48a85..e63c52630d 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -77,7 +77,7 @@ class PortManager; class PortEngine { public: PortEngine (PortManager& pm) : manager (pm) {} - virtual ~PortEngine(); + virtual ~PortEngine() {} /* We use void* here so that the API can be defined for any implementation. * @@ -89,7 +89,6 @@ class PortEngine { typedef void* PortHandle; - virtual bool connected() const = 0; virtual void* private_handle() const = 0; virtual const std::string& my_name() const = 0; @@ -125,10 +124,10 @@ class PortEngine { /* MIDI */ - virtual void midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) = 0; + virtual int midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) = 0; virtual int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size) = 0; - virtual uint32_t get_midi_event_count (void* port_buffer); - virtual void midi_clear (void* port_buffer); + virtual uint32_t get_midi_event_count (void* port_buffer) = 0; + virtual void midi_clear (void* port_buffer) = 0; /* Monitoring */ @@ -142,7 +141,6 @@ class PortEngine { virtual void set_latency_range (PortHandle, bool for_playback, LatencyRange) = 0; virtual LatencyRange get_latency_range (PortHandle, bool for_playback) = 0; - virtual LatencyRange get_connected_latency_range (PortHandle, int dir) = 0; /* Discovering physical ports */ @@ -158,7 +156,16 @@ class PortEngine { virtual void* get_buffer (PortHandle, pframes_t) = 0; - virtual framecnt_t last_frame_time() const = 0; + /* MIDI ports (the ones in libmidi++) need this to be able to correctly + * schedule MIDI events within their buffers. It is a bit odd that we + * expose this here, because it is also exposed by AudioBackend, but they + * only have access to a PortEngine object, not an AudioBackend. + * + * Return the time according to the sample clock in use when the current + * buffer process cycle began. + * + */ + virtual pframes_t sample_time_at_cycle_start () = 0; protected: PortManager& manager; diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index 5838ac66af..d88143d110 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -59,7 +59,6 @@ class PortManager int connect (const std::string& source, const std::string& destination); int disconnect (const std::string& source, const std::string& destination); int disconnect (boost::shared_ptr); - bool has_connections (const std::string&); int reestablish_ports (); int reconnect_ports (); diff --git a/libs/ardour/ardour/slave.h b/libs/ardour/ardour/slave.h index 88c9a09be7..4408da2d25 100644 --- a/libs/ardour/ardour/slave.h +++ b/libs/ardour/ardour/slave.h @@ -48,6 +48,7 @@ namespace ARDOUR { class TempoMap; class Session; +class AudioEngine; /** * @class Slave @@ -492,7 +493,7 @@ class MIDIClock_Slave : public Slave { class JACK_Slave : public Slave { public: - JACK_Slave (jack_client_t*); + JACK_Slave (AudioEngine&); ~JACK_Slave (); bool speed_and_position (double& speed, framepos_t& pos); @@ -502,11 +503,10 @@ class JACK_Slave : public Slave bool ok() const; framecnt_t resolution () const { return 1; } bool requires_seekahead () const { return false; } - void reset_client (jack_client_t* jack); bool is_always_synced() const { return true; } private: - jack_client_t* jack; + AudioEngine& engine; double speed; bool _starting; }; diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 3d1bf6e77e..05f59707a8 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -103,39 +103,6 @@ AudioEngine::create (const std::string& bcn, const std::string& bsu) return new AudioEngine (bcn, bsu); } -void -AudioEngine::drop_backend () -{ - if (_backend) { - _backend->stop (); - _backend.reset (); - } -} - -int -AudioEngine::set_backend (const std::string& name) -{ - BackendMap::iterator b = _backends.find (name); - - if (b == _backends.end()) { - return -1; - } - - drop_backend (); - - try { - - _backend = b->second->backend_factory (*this); - _impl = b->second->portengine_factory (*this); - - } catch (...) { - error << string_compose (_("Could not create backend for %1"), name) << endmsg; - return -1; - } - - return 0; -} - void _thread_init_callback (void * /*arg*/) { @@ -570,6 +537,60 @@ AudioEngine::backend_discover (const string& path) return info; } +vector +AudioEngine::available_backends() const +{ + vector r; + + for (BackendMap::const_iterator i = _backends.begin(); i != _backends.end(); ++i) { + r.push_back (i->first); + } + + return r; +} + +string +AudioEngine::current_backend_name() const +{ + if (_backend) { + return _backend->name(); + } + return string(); +} + +void +AudioEngine::drop_backend () +{ + if (_backend) { + _backend->stop (); + _backend.reset (); + } +} + +int +AudioEngine::set_backend (const std::string& name) +{ + BackendMap::iterator b = _backends.find (name); + + if (b == _backends.end()) { + return -1; + } + + drop_backend (); + + try { + + _backend = b->second->backend_factory (*this); + _impl = b->second->portengine_factory (*this); + + } catch (...) { + error << string_compose (_("Could not create backend for %1"), name) << endmsg; + return -1; + } + + return 0; +} + /* BACKEND PROXY WRAPPERS */ int @@ -812,6 +833,89 @@ AudioEngine::create_process_thread (boost::function func, pthread_t* thr } +int +AudioEngine::set_device_name (const std::string& name) +{ + if (!_backend) { + return -1; + } + return _backend->set_device_name (name); +} + +int +AudioEngine::set_sample_rate (float sr) +{ + if (!_backend) { + return -1; + } + return _backend->set_sample_rate (sr); +} + +int +AudioEngine::set_buffer_size (uint32_t bufsiz) +{ + if (!_backend) { + return -1; + } + return _backend->set_buffer_size (bufsiz); +} + +int +AudioEngine::set_sample_format (SampleFormat sf) +{ + if (!_backend) { + return -1; + } + return _backend->set_sample_format (sf); +} + +int +AudioEngine::set_interleaved (bool yn) +{ + if (!_backend) { + return -1; + } + return _backend->set_interleaved (yn); +} + +int +AudioEngine::set_input_channels (uint32_t ic) +{ + if (!_backend) { + return -1; + } + return _backend->set_input_channels (ic); +} + +int +AudioEngine::set_output_channels (uint32_t oc) +{ + if (!_backend) { + return -1; + } + return _backend->set_output_channels (oc); +} + +int +AudioEngine::set_systemic_input_latency (uint32_t il) +{ + if (!_backend) { + return -1; + } + return _backend->set_systemic_input_latency (il); +} + +int +AudioEngine::set_systemic_output_latency (uint32_t ol) +{ + if (!_backend) { + return -1; + } + return _backend->set_systemic_output_latency (ol); +} + +/* END OF BACKEND PROXY API */ + void AudioEngine::thread_init_callback (void* arg) { @@ -873,6 +977,14 @@ AudioEngine::latency_callback (bool for_playback) } } +void +AudioEngine::update_latencies () +{ + if (_backend) { + _backend->update_latencies (); + } +} + void AudioEngine::halted_callback (const char* why) { diff --git a/libs/ardour/bundle.cc b/libs/ardour/bundle.cc index 162db6c793..be4b04e36a 100644 --- a/libs/ardour/bundle.cc +++ b/libs/ardour/bundle.cc @@ -450,6 +450,8 @@ Bundle::connected_to (boost::shared_ptr other, AudioEngine & engine) bool Bundle::connected_to_anything (AudioEngine& engine) { + PortManager& pm (engine); + for (uint32_t i = 0; i < nchannels().n_total(); ++i) { Bundle::PortList const & ports = channel_ports (i); @@ -459,7 +461,7 @@ Bundle::connected_to_anything (AudioEngine& engine) rather than doing it with Port. */ - if (engine.has_connections (ports[j])) { + if (pm.connected (ports[j])) { return true; } } diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index b993135f5a..04ee94a80c 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -818,3 +818,10 @@ JACKAudioBackend::cpu_load() const GET_PRIVATE_JACK_POINTER_RET(_priv_jack,0); return jack_cpu_load (_priv_jack); } + +void +JACKAudioBackend::update_latencies () +{ + GET_PRIVATE_JACK_POINTER (_priv_jack); + jack_recompute_total_latencies (_priv_jack); +} diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc index 4a6f3a1fca..7280c9ff24 100644 --- a/libs/ardour/jack_portengine.cc +++ b/libs/ardour/jack_portengine.cc @@ -1,3 +1,35 @@ +/* + 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. + +*/ + +#include +#include + +#include "pbd/failed_constructor.h" + +#include "ardour/jack_portengine.h" +#include "ardour/jack_connection.h" +#include "ardour/port_manager.h" + +using namespace ARDOUR; +using std::string; +using std::vector; + #define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return; } #define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return r; } @@ -6,13 +38,13 @@ ardour_port_flags_to_jack_flags (PortFlags flags) { uint32_t jack_flags = 0; - if (flags & PortIsInput) { + if (flags & IsInput) { jack_flags |= JackPortIsInput; } - if (flags & IsInput) { + if (flags & IsOutput) { jack_flags |= JackPortIsOutput; } - if (flags & IsOutput) { + if (flags & IsTerminal) { jack_flags |= JackPortIsTerminal; } if (flags & IsPhysical) { @@ -53,17 +85,63 @@ JACKPortEngine::JACKPortEngine (PortManager& pm, boost::shared_ptr + jack_client_t* client = _jack_connection->jack(); + + if (!client) { + throw failed_constructor (); + } + + /* register callbacks for stuff that is our responsibility */ + + jack_set_port_registration_callback (client, _registration_callback, this); + jack_set_port_connect_callback (client, _connect_callback, this); + jack_set_graph_order_callback (client, _graph_order_callback, this); +} + +JACKPortEngine::~JACKPortEngine () +{ + /* a default destructor would do this, and so would this one, + but we'll make it explicit in case we ever need to debug + the lifetime of the JACKConnection + */ + _jack_connection.reset (); +} + +void* +JACKPortEngine::private_handle() const +{ + return _jack_connection->jack(); +} + +int +JACKPortEngine::set_port_name (PortHandle port, const std::string& name) +{ + return jack_port_set_name ((jack_port_t*) port, name.c_str()); +} + +string +JACKPortEngine::get_port_name (PortHandle port) const +{ + return jack_port_name ((jack_port_t*) port); +} - jack_set_port_registration_callback (_priv_jack, _registration_callback, this); - jack_set_port_connect_callback (_priv_jack, _connect_callback, this); - jack_set_graph_order_callback (_priv_jack, _graph_order_callback, this); +PortEngine::PortHandle* +JACKPortEngine:: get_port_by_name (const std::string& name) const +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return (PortHandle*) jack_port_by_name (_priv_jack, name.c_str()); } void JACKPortEngine::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg) { - static_cast (arg)->_manager->registration_callback (); + static_cast (arg)->manager.registration_callback (); +} + +int +JACKPortEngine::_graph_order_callback (void *arg) +{ + return static_cast (arg)->manager.graph_order_callback (); } void @@ -75,7 +153,7 @@ JACKPortEngine::_connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int void JACKPortEngine::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn) { - if (_manager->port_remove_in_progress()) { + if (manager.port_remove_in_progress()) { return; } @@ -84,79 +162,90 @@ JACKPortEngine::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int jack_port_t* a = jack_port_by_id (_priv_jack, id_a); jack_port_t* b = jack_port_by_id (_priv_jack, id_b); - _manager->connect_callback (jack_port_name (a), jack_port_name (b), conn == 0 ? false : true); + manager.connect_callback (jack_port_name (a), jack_port_name (b), conn == 0 ? false : true); } -int -JACKPortEngine::_graph_order_callback (void *arg) +bool +JACKPortEngine::connected (PortHandle port) { - return static_cast (arg)->graph_order_callback (); + bool ret = false; + + const char** ports = jack_port_get_connections ((jack_port_t*) port); + + if (ports) { + ret = true; + } + + jack_free (ports); + + return ret; } -int -JACKPortEngine::graph_order_callback () +bool +JACKPortEngine::connected_to (PortHandle port, const std::string& other) { - if (_jack_connection->connected()) { - _manager->graph_order_callback (); + bool ret = false; + const char** ports = jack_port_get_connections ((jack_port_t*) port); + + if (ports) { + for (int i = 0; ports[i]; ++i) { + if (other == ports[i]) { + ret = true; + } + } + jack_free (ports); } - return 0; + return ret; } +bool JACKPortEngine::physically_connected (PortHandle p) { - jack_port_t* _jack_port = (jack_port_t*) p; + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); + jack_port_t* port = (jack_port_t*) p; - const char** jc = jack_port_get_connections (_jack_port); + const char** ports = jack_port_get_connections (port); - if (jc) { - for (int i = 0; jc[i]; ++i) { + if (ports) { + for (int i = 0; ports[i]; ++i) { - jack_port_t* port = jack_port_by_name (_engine->jack(), jc[i]); + jack_port_t* other = jack_port_by_name (_priv_jack, ports[i]); - if (port && (jack_port_flags (port) & JackPortIsPhysical)) { - if (jack_free) { - jack_free (jc); - } else { - free (jc); - } + if (other && (jack_port_flags (other) & JackPortIsPhysical)) { return true; } } - if (jack_free) { - jack_free (jc); - } else { - free (jc); - } + jack_free (ports); } return false; } DataType -JACKPortEngine::port_data_type (PortHandle p) +JACKPortEngine::port_data_type (PortHandle p) const { - return jack_port_type_to_ardour_data_type (jack_port_type (p)); + return jack_port_type_to_ardour_data_type (jack_port_type ((jack_port_t*) p)); } const string& JACKPortEngine::my_name() const { - return _client_name; + return _jack_connection->client_name(); } bool -JACKPortEngine::port_is_physical (PortHandle* ph) const +JACKPortEngine::port_is_physical (PortHandle ph) const { if (!ph) { return false; } - return jack_port_flags (ph) & JackPortIsPhysical; + return jack_port_flags ((jack_port_t*) ph) & JackPortIsPhysical; } int -JACKPortEngine::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) +JACKPortEngine::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) const { GET_PRIVATE_JACK_POINTER_RET (_priv_jack,0); @@ -166,12 +255,11 @@ JACKPortEngine::get_ports (const string& port_name_pattern, DataType type, PortF ardour_port_flags_to_jack_flags (flags)); if (ports == 0) { - return s; + return 0; } for (uint32_t i = 0; ports[i]; ++i) { s.push_back (ports[i]); - jack_free (ports[i]); } jack_free (ports); @@ -184,16 +272,15 @@ JACKPortEngine::n_physical (unsigned long flags) const { ChanCount c; - GET_PRIVATE_JACK_POINTER_RET (_jack, c); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, c); const char ** ports = jack_get_ports (_priv_jack, NULL, NULL, JackPortIsPhysical | flags); if (ports) { for (uint32_t i = 0; ports[i]; ++i) { if (!strstr (ports[i], "Midi-Through")) { - DataType t (jack_port_type (jack_port_by_name (_jack, ports[i]))); + DataType t (jack_port_type (jack_port_by_name (_priv_jack, ports[i]))); c.set (t, c.get (t) + 1); - jack_free (ports[i]); } } @@ -216,12 +303,12 @@ JACKPortEngine::n_physical_outputs () const } void -JACKPortEngine::get_physical (DataType type, unsigned long flags, vector& phy) +JACKPortEngine::get_physical (DataType type, unsigned long flags, vector& phy) const { GET_PRIVATE_JACK_POINTER (_priv_jack); const char ** ports; - if ((ports = jack_get_ports (_priv_jack, NULL, type.to_jack_type(), JackPortIsPhysical | flags)) == 0) { + if ((ports = jack_get_ports (_priv_jack, NULL, ardour_data_type_to_jack_port_type (type), JackPortIsPhysical | flags)) == 0) { return; } @@ -231,7 +318,6 @@ JACKPortEngine::get_physical (DataType type, unsigned long flags, vector continue; } phy.push_back (ports[i]); - jack_free (ports[i]); } jack_free (ports); } @@ -257,7 +343,7 @@ JACKPortEngine::get_physical_outputs (DataType type, vector& outs) bool -JACKPortEngine::can_request_hardware_monitoring () +JACKPortEngine::can_monitor_input () const { GET_PRIVATE_JACK_POINTER_RET (_priv_jack,false); const char ** ports; @@ -266,18 +352,131 @@ JACKPortEngine::can_request_hardware_monitoring () return false; } - for (uint32_t i = 0; ports[i]; ++i) { - jack_free (ports[i]); - } - jack_free (ports); return true; } -framecnt_t -JACKPortEngine::last_frame_time () const +pframes_t +JACKPortEngine::sample_time_at_cycle_start () { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); return jack_last_frame_time (_priv_jack); } + + +PortEngine::PortHandle +JACKPortEngine::register_port (const std::string& shortname, ARDOUR::DataType type, ARDOUR::PortFlags flags) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_port_register (_priv_jack, shortname.c_str(), + ardour_data_type_to_jack_port_type (type), + ardour_port_flags_to_jack_flags (flags), + 0); +} + +void +JACKPortEngine::unregister_port (PortHandle port) +{ + GET_PRIVATE_JACK_POINTER (_priv_jack); + (void) jack_port_unregister (_priv_jack, (jack_port_t*) port); +} + +int +JACKPortEngine::connect (PortHandle port, const std::string& other) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + return jack_connect (_priv_jack, jack_port_name ((jack_port_t*) port), other.c_str()); +} +int +JACKPortEngine::connect (const std::string& src, const std::string& dst) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + return jack_connect (_priv_jack, src.c_str(), dst.c_str()); +} + +int +JACKPortEngine::disconnect (PortHandle port, const std::string& other) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + return jack_disconnect (_priv_jack, jack_port_name ((jack_port_t*) port), other.c_str()); +} + +int +JACKPortEngine::disconnect (const std::string& src, const std::string& dst) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + return jack_disconnect (_priv_jack, src.c_str(), dst.c_str()); +} + +int +JACKPortEngine::disconnect_all (PortHandle port) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + return jack_port_disconnect (_priv_jack, (jack_port_t*) port); +} + + +int +JACKPortEngine::midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) +{ + jack_midi_event_t ev; + int ret; + + if ((ret = jack_midi_event_get (&ev, port_buffer, event_index)) == 0) { + timestamp = ev.time; + size = ev.size; + *buf = ev.buffer; + } + + return ret; +} + +int +JACKPortEngine::midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size) +{ + return jack_midi_event_write (port_buffer, timestamp, buffer, size); +} + +uint32_t +JACKPortEngine::get_midi_event_count (void* port_buffer) +{ + return jack_midi_get_event_count (port_buffer); +} + +void +JACKPortEngine::midi_clear (void* port_buffer) +{ + jack_midi_clear_buffer (port_buffer); +} + +void +JACKPortEngine::set_latency_range (PortHandle port, bool for_playback, LatencyRange r) +{ + jack_latency_range_t range; + + range.min = r.min; + range.max = r.max; + + jack_port_set_latency_range ((jack_port_t*) port, for_playback ? JackPlaybackLatency : JackCaptureLatency, &range); +} + +LatencyRange +JACKPortEngine::get_latency_range (PortHandle port, bool for_playback) +{ + jack_latency_range_t range; + LatencyRange ret; + + jack_port_get_latency_range ((jack_port_t*) port, for_playback ? JackPlaybackLatency : JackCaptureLatency, &range); + + ret.min = range.min; + ret.max = range.max; + + return ret; +} + +void* +JACKPortEngine::get_buffer (PortHandle port, pframes_t nframes) +{ + return jack_port_get_buffer ((jack_port_t*) port, nframes); +} diff --git a/libs/ardour/jack_slave.cc b/libs/ardour/jack_slave.cc index 4c2da4c6c4..4b2f3b1860 100644 --- a/libs/ardour/jack_slave.cc +++ b/libs/ardour/jack_slave.cc @@ -20,16 +20,14 @@ #include #include -#include -#include - +#include "ardour/audioengine.h" #include "ardour/slave.h" using namespace std; using namespace ARDOUR; -JACK_Slave::JACK_Slave (jack_client_t* j) - : jack (j) +JACK_Slave::JACK_Slave (AudioEngine& e) + : engine (e) { double x; framepos_t p; @@ -41,12 +39,6 @@ JACK_Slave::~JACK_Slave () { } -void -JACK_Slave::reset_client (jack_client_t* j) -{ - jack = j; -} - bool JACK_Slave::locked() const { @@ -62,33 +54,26 @@ JACK_Slave::ok() const bool JACK_Slave::speed_and_position (double& sp, framepos_t& position) { - jack_position_t pos; - jack_transport_state_t state; - - state = jack_transport_query (jack, &pos); - - switch (state) { - case JackTransportStopped: + switch (engine.transport_state()) { + case TransportStopped: speed = 0; _starting = false; break; - case JackTransportRolling: + case TransportRolling: speed = 1.0; _starting = false; break; - case JackTransportLooping: + case TransportLooping: speed = 1.0; _starting = false; break; - case JackTransportStarting: + case TransportStarting: _starting = true; // don't adjust speed here, just leave it as it was break; - default: - cerr << "WARNING: Unknown JACK transport state: " << state << endl; } sp = speed; - position = pos.frame; + position = engine.transport_frame(); return true; } diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index 5aa6ad0ae7..571d227711 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -70,10 +70,6 @@ Port::Port (std::string const & n, DataType t, PortFlags f) assert (_name.find_first_of (':') == std::string::npos); - if (!port_engine.connected()) { - throw failed_constructor (); - } - if ((_port_handle = port_engine.register_port (_name, t, _flags)) == 0) { cerr << "Failed to register port \"" << _name << "\", reason is unknown from here\n"; throw failed_constructor (); @@ -124,14 +120,6 @@ Port::disconnect_all () bool Port::connected_to (std::string const & o) const { - if (!port_engine.connected()) { - /* in some senses, this answer isn't the right one all the time, - because we know about our connections and will re-establish - them when we reconnect to the port engine. - */ - return false; - } - return port_engine.connected_to (_port_handle, AudioEngine::instance()->make_port_name_non_relative (o)); } diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index 9c5eaa998b..b5f280292e 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -127,6 +127,30 @@ PortManager::port_is_physical (const std::string& portname) const return _impl->port_is_physical (ph); } +void +PortManager::get_physical_outputs (DataType type, std::vector& s) +{ + _impl->get_physical_outputs (type, s); +} + +void +PortManager::get_physical_inputs (DataType type, std::vector& s) +{ + _impl->get_physical_inputs (type, s); +} + +ChanCount +PortManager::n_physical_outputs () const +{ + return _impl->n_physical_outputs (); +} + +ChanCount +PortManager::n_physical_inputs () const +{ + return _impl->n_physical_inputs (); +} + /** @param name Full or short name of port * @return Corresponding Port or 0. */ @@ -134,11 +158,6 @@ PortManager::port_is_physical (const std::string& portname) const boost::shared_ptr PortManager::get_port_by_name (const string& portname) { - if (!_impl->connected()) { - fatal << _("get_port_by_name() called before engine was started") << endmsg; - /*NOTREACHED*/ - } - if (!port_is_mine (portname)) { /* not an ardour port */ return boost::shared_ptr (); @@ -254,13 +273,6 @@ PortManager::unregister_port (boost::shared_ptr port) { /* caller must hold process lock */ - if (!_impl->connected()) { - /* probably happening when the engine has been halted by JACK, - in which case, there is nothing we can do here. - */ - return 0; - } - { RCUWriter writer (ports); boost::shared_ptr ps = writer.get_copy (); @@ -295,10 +307,6 @@ PortManager::connect (const string& source, const string& destination) { int ret; - if (!_impl->connected()) { - return -1; - } - string s = make_port_name_non_relative (source); string d = make_port_name_non_relative (destination); @@ -330,10 +338,6 @@ PortManager::disconnect (const string& source, const string& destination) { int ret; - if (!_impl->connected()) { - return -1; - } - string s = make_port_name_non_relative (source); string d = make_port_name_non_relative (destination); @@ -429,3 +433,30 @@ PortManager::registration_callback () PortRegisteredOrUnregistered (); /* EMIT SIGNAL */ } } + +bool +PortManager::can_request_input_monitoring () const +{ + return _impl->can_monitor_input (); +} + +void +PortManager::request_input_monitoring (const string& name, bool yn) const +{ + PortEngine::PortHandle ph = _impl->get_port_by_name (name); + + if (ph) { + _impl->request_input_monitoring (ph, yn); + } +} + +void +PortManager::ensure_input_monitoring (const string& name, bool yn) const +{ + PortEngine::PortHandle ph = _impl->get_port_by_name (name); + + if (ph) { + _impl->ensure_input_monitoring (ph, yn); + } +} + diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index c2965a4617..eabfbaacc0 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -967,7 +967,7 @@ Route::add_processor (boost::shared_ptr processor, boost::shared_ptr< DEBUG_TRACE (DEBUG::Processors, string_compose ( "%1 adding processor %2\n", name(), processor->name())); - if (!AudioEngine::instance()->port_engine().connected() || !processor) { + if (!AudioEngine::instance()->connected() || !processor) { return 1; } @@ -1132,7 +1132,7 @@ Route::add_processors (const ProcessorList& others, boost::shared_ptr loc = _processors.end (); } - if (!_session.engine().port_engine().connected()) { + if (!_session.engine().connected()) { return 1; } @@ -1329,7 +1329,7 @@ Route::ab_plugins (bool forward) void Route::clear_processors (Placement p) { - if (!_session.engine().port_engine().connected()) { + if (!_session.engine().connected()) { return; } @@ -1416,7 +1416,7 @@ Route::remove_processor (boost::shared_ptr processor, ProcessorStream return 0; } - if (!_session.engine().port_engine().connected()) { + if (!_session.engine().connected()) { return 1; } @@ -1508,7 +1508,7 @@ Route::remove_processors (const ProcessorList& to_be_deleted, ProcessorStreams* { ProcessorList deleted; - if (!_session.engine().port_engine().connected()) { + if (!_session.engine().connected()) { return 1; } diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 1ea3732e3f..e1634db536 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -170,7 +170,7 @@ Session::Session (AudioEngine &eng, interpolation.add_channel_to (0, 0); - if (!eng.port_engine().connected()) { + if (!eng.connected()) { throw failed_constructor(); } @@ -4677,7 +4677,7 @@ Session::set_worst_playback_latency () _worst_output_latency = 0; - if (!_engine.port_engine().connected()) { + if (!_engine.connected()) { return; } @@ -4699,7 +4699,7 @@ Session::set_worst_capture_latency () _worst_input_latency = 0; - if (!_engine.port_engine().connected()) { + if (!_engine.connected()) { return; } diff --git a/libs/ardour/session_export.cc b/libs/ardour/session_export.cc index 02bf48a0d6..0db4fc33bb 100644 --- a/libs/ardour/session_export.cc +++ b/libs/ardour/session_export.cc @@ -147,7 +147,7 @@ Session::start_audio_export (framepos_t position) /* we are ready to go ... */ - if (!_engine.port_engine().connected()) { + if (!_engine.connected()) { return -1; } diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index aa0c90204d..cae3b9720a 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -765,7 +765,7 @@ Session::save_state (string snapshot_name, bool pending, bool switch_to_snapshot return 1; } - if (!_engine.port_engine().connected ()) { + if (!_engine.connected ()) { error << string_compose (_("the %1 audio engine is not connected and state saving would lose all I/O connections. Session not saved"), PROGRAM_NAME) << endmsg; diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index fea2fcd96a..0b0351f506 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -44,7 +44,6 @@ #include "ardour/session.h" #include "ardour/slave.h" #include "ardour/operations.h" -#include "ardour/jack_portengine.h" #include "i18n.h" @@ -1417,13 +1416,6 @@ Session::switch_to_sync_source (SyncSource src) break; case JACK: - /* if we are not using JACK as the port engine, we can't do - * this - */ - if (dynamic_cast(&AudioEngine::instance()->port_engine())) { - return; - } - if (_slave && dynamic_cast(_slave)) { return; } @@ -1432,7 +1424,7 @@ Session::switch_to_sync_source (SyncSource src) return; } - new_slave = new JACK_Slave ((jack_client_t*) AudioEngine::instance()->port_engine().private_handle()); + new_slave = new JACK_Slave (*AudioEngine::instance()); break; default: @@ -1622,16 +1614,6 @@ Session::allow_auto_play (bool yn) auto_play_legal = yn; } -void -Session::reset_jack_connection (jack_client_t* jack) -{ - JACK_Slave* js; - - if (_slave && ((js = dynamic_cast (_slave)) != 0)) { - js->reset_client (jack); - } -} - bool Session::maybe_stop (framepos_t limit) { diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 48cfda7bc2..07bb10f08d 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -43,6 +43,7 @@ libardour_sources = [ 'automation_control.cc', 'automation_list.cc', 'automation_watch.cc', + 'backend_search_path.cc', 'beats_frames_converter.cc', 'broadcast_info.cc', 'buffer.cc', @@ -439,7 +440,8 @@ def build(bld): source = [ 'jack_api.cc', 'jack_connection.cc', - 'jack_audiobackend.cc' + 'jack_audiobackend.cc', + 'jack_portengine.cc' ]) obj.cxxflags = [ '-fPIC' ] obj.name = 'jack_audiobackend' diff --git a/libs/midi++2/jack_midi_port.cc b/libs/midi++2/jack_midi_port.cc index 372a7891c9..8ba27759bc 100644 --- a/libs/midi++2/jack_midi_port.cc +++ b/libs/midi++2/jack_midi_port.cc @@ -155,7 +155,7 @@ JackMIDIPort::cycle_start (pframes_t nframes) pframes_t time; size_t size; uint8_t* buf; - timestamp_t cycle_start_frame = _port_engine.last_frame_time (); + timestamp_t cycle_start_frame = _port_engine.sample_time_at_cycle_start (); for (pframes_t i = 0; i < event_count; ++i) { _port_engine.midi_event_get (time, size, &buf, buffer, i); -- cgit v1.2.3 From df59a000b79f891f17ec8a05b390982dac67e5ff Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 1 Aug 2013 18:49:40 -0400 Subject: start code reorganization needed to deal with backend choices. compiles, links and runs as far as the startup screen now --- gtk2_ardour/ardour_ui.cc | 14 ++---- libs/ardour/ardour/audio_backend.h | 2 +- libs/ardour/ardour/audioengine.h | 24 +++++----- libs/ardour/ardour/jack_audiobackend.h | 1 - libs/ardour/ardour/jack_portengine.h | 2 + libs/ardour/ardour/port_engine.h | 2 + libs/ardour/ardour/port_manager.h | 8 +++- libs/ardour/audioengine.cc | 46 +++++++++++-------- libs/ardour/globals.cc | 11 +++++ libs/ardour/io.cc | 4 +- libs/ardour/jack_audiobackend.cc | 27 +++++++++++ libs/ardour/jack_portengine.cc | 38 ++++++++++++++++ libs/ardour/port_manager.cc | 83 ++++++++++++++++++++++++++++++++++ 13 files changed, 217 insertions(+), 45 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index dc9018fc62..12f3feafa1 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -395,30 +395,25 @@ ARDOUR_UI::create_engine () loading_message (_("Starting audio engine")); - try { - engine = ARDOUR::AudioEngine::create (ARDOUR_COMMAND_LINE::backend_client_name, ARDOUR_COMMAND_LINE::backend_session_uuid); - - } catch (...) { - - return -1; - } + AudioEngine* engine = AudioEngine::instance(); engine->Stopped.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_stopped, this), gui_context()); engine->Running.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_running, this), gui_context()); engine->SampleRateChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::update_sample_rate, this, _1), gui_context()); engine->Halted.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); + engine->BackendAvailable.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::post_engine, this)); ARDOUR::Port::set_connecting_blocked (ARDOUR_COMMAND_LINE::no_connect_ports); - post_engine (); - return 0; } void ARDOUR_UI::post_engine () { + cerr << "Backend available!\n"; + /* Things to be done once we create the AudioEngine */ @@ -689,6 +684,7 @@ ARDOUR_UI::startup () { Application* app = Application::instance (); char *nsm_url; + app->ShouldQuit.connect (sigc::mem_fun (*this, &ARDOUR_UI::queue_finish)); app->ShouldLoad.connect (sigc::mem_fun (*this, &ARDOUR_UI::idle_load)); diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 3b68432b6f..6aee33a507 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -284,7 +284,7 @@ class AudioBackend { virtual int set_time_master (bool /*yn*/) { return 0; } virtual int usecs_per_cycle () const { return 1000000 * (buffer_size() / sample_rate()); } - virtual size_t raw_buffer_size (DataType t); + virtual size_t raw_buffer_size (DataType t) = 0; /* Process time */ diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 0bbbe90ef4..cf22925565 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -67,19 +67,17 @@ class AudioEngine : public SessionHandlePtr, public PortManager { public: - static AudioEngine* create (const std::string& client_name, const std::string& session_uuid); + static AudioEngine* create (); virtual ~AudioEngine (); int discover_backends(); std::vector available_backends() const; std::string current_backend_name () const; - int set_backend (const std::string&); + int set_backend (const std::string&, const std::string& arg1, const std::string& arg2); ProcessThread* main_thread() const { return _main_thread; } - std::string client_name() const { return backend_client_name; } - /* START BACKEND PROXY API * * See audio_backend.h for full documentation and semantics. These wrappers @@ -144,7 +142,6 @@ public: int reset_timebase (); void update_latencies (); - /* this signal is sent for every process() cycle while freewheeling. (the regular process() call to session->process() is not made) @@ -154,10 +151,7 @@ public: PBD::Signal0 Xrun; - /* this signal is if the backend notifies us of a graph order event */ - - PBD::Signal0 GraphReordered; - + #ifdef HAVE_JACK_SESSION PBD::Signal1 JackSessionEvent; #endif @@ -176,6 +170,13 @@ public: PBD::Signal0 Running; PBD::Signal0 Stopped; + + /* these two are emitted as we create backends that + can actually be used to do stuff (e.g. register ports) + */ + + PBD::Signal0 BackendAvailable; + PBD::Signal0 BackendRemoved; static AudioEngine* instance() { return _instance; } static void destroy(); @@ -197,7 +198,7 @@ public: static void thread_init_callback (void *); private: - AudioEngine (const std::string& client_name, const std::string& session_uuid); + AudioEngine (); static AudioEngine* _instance; @@ -227,9 +228,6 @@ public: Glib::Threads::Thread* m_meter_thread; ProcessThread* _main_thread; - std::string backend_client_name; - std::string backend_session_uuid; - void meter_thread (); void start_metering_thread (); void stop_metering_thread (); diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 7104b814c2..05638f6c73 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -144,7 +144,6 @@ class JACKAudioBackend : public AudioBackend { static void* _start_process_thread (void*); ChanCount n_physical (unsigned long) const; - void get_physical (DataType, unsigned long, std::vector &); /* pffooo */ diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h index bee87532d3..638d3382ad 100644 --- a/libs/ardour/ardour/jack_portengine.h +++ b/libs/ardour/ardour/jack_portengine.h @@ -44,6 +44,8 @@ class JACKPortEngine : public PortEngine const std::string& my_name() const; + uint32_t port_name_size() const; + int set_port_name (PortHandle, const std::string&); std::string get_port_name (PortHandle) const; PortHandle* get_port_by_name (const std::string&) const; diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index e63c52630d..f03a8e263f 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -93,6 +93,8 @@ class PortEngine { virtual const std::string& my_name() const = 0; + virtual uint32_t port_name_size() const = 0; + virtual int set_port_name (PortHandle, const std::string&) = 0; virtual std::string get_port_name (PortHandle) const = 0; virtual PortHandle* get_port_by_name (const std::string&) const = 0; diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index d88143d110..06e4939101 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -47,7 +47,10 @@ class PortManager void set_port_engine (PortEngine& pe); PortEngine& port_engine() { return *_impl; } - + + uint32_t port_name_size() const; + std::string my_name() const; + /* Port registration */ boost::shared_ptr register_input_port (DataType, const std::string& portname); @@ -114,6 +117,9 @@ class PortManager bool port_remove_in_progress() const { return _port_remove_in_progress; } + /** Emitted if the backend notifies us of a graph order event */ + PBD::Signal0 GraphReordered; + /** Emitted if a Port is registered or unregistered */ PBD::Signal0 PortRegisteredOrUnregistered; diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 05f59707a8..eee21cad1f 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -63,7 +63,7 @@ using namespace PBD; gint AudioEngine::m_meter_exit; AudioEngine* AudioEngine::_instance = 0; -AudioEngine::AudioEngine (const std::string& bcn, const std::string& bsu) +AudioEngine::AudioEngine () : session_remove_pending (false) , session_removal_countdown (-1) , monitor_check_interval (INT32_MAX) @@ -75,10 +75,9 @@ AudioEngine::AudioEngine (const std::string& bcn, const std::string& bsu) , port_remove_in_progress (false) , m_meter_thread (0) , _main_thread (0) - , backend_client_name (bcn) - , backend_session_uuid (bsu) { g_atomic_int_set (&m_meter_exit, 0); + discover_backends (); } AudioEngine::~AudioEngine () @@ -95,12 +94,15 @@ AudioEngine::~AudioEngine () } AudioEngine* -AudioEngine::create (const std::string& bcn, const std::string& bsu) +AudioEngine::create () { if (_instance) { return _instance; } - return new AudioEngine (bcn, bsu); + + _instance = new AudioEngine (); + + return _instance; } void @@ -120,8 +122,6 @@ _thread_init_callback (void * /*arg*/) MIDI::JackMIDIPort::set_process_thread (pthread_self()); } - - void AudioEngine::split_cycle (pframes_t offset) { @@ -488,8 +488,8 @@ AudioEngine::discover_backends () _backends.clear (); - Glib::PatternSpec so_extension_pattern("*.so"); - Glib::PatternSpec dylib_extension_pattern("*.dylib"); + Glib::PatternSpec so_extension_pattern("*backend.so"); + Glib::PatternSpec dylib_extension_pattern("*backend.dylib"); find_matching_files_in_search_path (backend_search_path (), so_extension_pattern, backend_modules); @@ -497,7 +497,7 @@ AudioEngine::discover_backends () find_matching_files_in_search_path (backend_search_path (), dylib_extension_pattern, backend_modules); - DEBUG_TRACE (DEBUG::Panning, string_compose (_("looking for backends in %1"), backend_search_path().to_string())); + DEBUG_TRACE (DEBUG::Panning, string_compose (_("looking for backends in %1\n"), backend_search_path().to_string())); for (vector::iterator i = backend_modules.begin(); i != backend_modules.end(); ++i) { @@ -514,26 +514,26 @@ AudioEngine::discover_backends () AudioBackendInfo* AudioEngine::backend_discover (const string& path) { - Glib::Module* module = new Glib::Module(path); + Glib::Module module (path); AudioBackendInfo* info; void* sym = 0; if (!module) { error << string_compose(_("AudioEngine: cannot load module \"%1\" (%2)"), path, - Glib::Module::get_last_error()) << endmsg; - delete module; + Glib::Module::get_last_error()) << endmsg; return 0; } - - if (!module->get_symbol("descriptor", sym)) { + + if (!module.get_symbol ("descriptor", sym)) { error << string_compose(_("AudioEngine: backend at \"%1\" has no descriptor."), path) << endmsg; error << Glib::Module::get_last_error() << endmsg; - delete module; return 0; } + module.make_resident (); + info = (AudioBackendInfo*) sym; - + return info; } @@ -564,11 +564,13 @@ AudioEngine::drop_backend () if (_backend) { _backend->stop (); _backend.reset (); + + BackendRemoved(); /* EMIT SIGNAL */ } } int -AudioEngine::set_backend (const std::string& name) +AudioEngine::set_backend (const std::string& name, const std::string& arg1, const std::string& arg2) { BackendMap::iterator b = _backends.find (name); @@ -580,14 +582,21 @@ AudioEngine::set_backend (const std::string& name) try { + if (b->second->instantiate (arg1, arg2)) { + throw failed_constructor (); + } + _backend = b->second->backend_factory (*this); _impl = b->second->portengine_factory (*this); + } catch (...) { error << string_compose (_("Could not create backend for %1"), name) << endmsg; return -1; } + BackendAvailable (); /* EMIT SIGNAL */ + return 0; } @@ -993,3 +1002,4 @@ AudioEngine::halted_callback (const char* why) MIDI::JackMIDIPort::EngineHalted (); /* EMIT SIGNAL */ Halted (why); /* EMIT SIGNAL */ } + diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index b2833db4fa..132a5fb35d 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -331,6 +331,17 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir EventTypeMap::instance().new_parameter(EnvelopeAutomation); EventTypeMap::instance().new_parameter(MidiCCAutomation); + ARDOUR::AudioEngine::create (); + + uint32_t backend_cnt; + + if ((backend_cnt = AudioEngine::instance()->available_backends().size()) == 0) { + error << _("No audio/MIDI backends are available") << endmsg; + return -1; + } + + cerr << "We have " << backend_cnt << endl; + return 0; } diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index 21fdca6e96..c517defe1a 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -1337,7 +1337,7 @@ IO::bundle_changed (Bundle::Change /*c*/) string IO::build_legal_port_name (DataType type) { - const int name_size = jack_port_name_size(); + const int name_size = AudioEngine::instance()->port_name_size(); int limit; string suffix; @@ -1371,7 +1371,7 @@ IO::build_legal_port_name (DataType type) // allow up to 4 digits for the output port number, plus the slash, suffix and extra space - limit = name_size - _session.engine().client_name().length() - (suffix.length() + 5); + limit = name_size - AudioEngine::instance()->my_name().length() - (suffix.length() + 5); char buf1[name_size+1]; char buf2[name_size+1]; diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 04ee94a80c..420f104077 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -58,6 +58,10 @@ JACKAudioBackend::JACKAudioBackend (AudioEngine& e, boost::shared_ptr& s) +{ + const char** ports = jack_port_get_connections ((jack_port_t*) port); + + if (ports) { + for (int i = 0; ports[i]; ++i) { + s.push_back (ports[i]); + } + jack_free (ports); + } + + return s.size(); +} + DataType JACKPortEngine::port_data_type (PortHandle p) const { @@ -357,6 +372,23 @@ JACKPortEngine::can_monitor_input () const return true; } +int +JACKPortEngine::request_input_monitoring (PortHandle port, bool yn) +{ + return jack_port_request_monitor ((jack_port_t*) port, yn); +} +int +JACKPortEngine::ensure_input_monitoring (PortHandle port, bool yn) +{ + return jack_port_ensure_monitor ((jack_port_t*) port, yn); +} +bool +JACKPortEngine::monitoring_input (PortHandle port) +{ + return jack_port_monitoring_input ((jack_port_t*) port); +} + + pframes_t JACKPortEngine::sample_time_at_cycle_start () { @@ -480,3 +512,9 @@ JACKPortEngine::get_buffer (PortHandle port, pframes_t nframes) { return jack_port_get_buffer ((jack_port_t*) port, nframes); } + +uint32_t +JACKPortEngine::port_name_size() const +{ + return jack_port_name_size (); +} diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index b5f280292e..5c807a6979 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -67,6 +67,10 @@ PortManager::remove_all_ports () string PortManager::make_port_name_relative (const string& portname) const { + if (!_impl) { + return portname; + } + string::size_type len; string::size_type n; string self = _impl->my_name(); @@ -105,6 +109,10 @@ PortManager::make_port_name_non_relative (const string& portname) const bool PortManager::port_is_mine (const string& portname) const { + if (!_impl) { + return true; + } + string self = _impl->my_name(); if (portname.find_first_of (':') != string::npos) { @@ -119,6 +127,10 @@ PortManager::port_is_mine (const string& portname) const bool PortManager::port_is_physical (const std::string& portname) const { + if (!_impl) { + return false; + } + PortEngine::PortHandle ph = _impl->get_port_by_name (portname); if (!ph) { return false; @@ -130,24 +142,38 @@ PortManager::port_is_physical (const std::string& portname) const void PortManager::get_physical_outputs (DataType type, std::vector& s) { + if (!_impl) { + return; + } _impl->get_physical_outputs (type, s); } void PortManager::get_physical_inputs (DataType type, std::vector& s) { + if (!_impl) { + return; + } + _impl->get_physical_inputs (type, s); } ChanCount PortManager::n_physical_outputs () const { + if (!_impl) { + return ChanCount::ZERO; + } + return _impl->n_physical_outputs (); } ChanCount PortManager::n_physical_inputs () const { + if (!_impl) { + return ChanCount::ZERO; + } return _impl->n_physical_inputs (); } @@ -158,6 +184,10 @@ PortManager::n_physical_inputs () const boost::shared_ptr PortManager::get_port_by_name (const string& portname) { + if (!_impl) { + return boost::shared_ptr(); + } + if (!port_is_mine (portname)) { /* not an ardour port */ return boost::shared_ptr (); @@ -200,12 +230,20 @@ PortManager::port_renamed (const std::string& old_relative_name, const std::stri int PortManager::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) { + if (!_impl) { + return 0; + } + return _impl->get_ports (port_name_pattern, type, flags, s); } void PortManager::port_registration_failure (const std::string& portname) { + if (!_impl) { + return; + } + string full_portname = _impl->my_name(); full_portname += ':'; full_portname += portname; @@ -293,6 +331,10 @@ PortManager::unregister_port (boost::shared_ptr port) bool PortManager::connected (const string& port_name) { + if (!_impl) { + return false; + } + PortEngine::PortHandle handle = _impl->get_port_by_name (port_name); if (!handle) { @@ -437,12 +479,20 @@ PortManager::registration_callback () bool PortManager::can_request_input_monitoring () const { + if (!_impl) { + return false; + } + return _impl->can_monitor_input (); } void PortManager::request_input_monitoring (const string& name, bool yn) const { + if (!_impl) { + return; + } + PortEngine::PortHandle ph = _impl->get_port_by_name (name); if (ph) { @@ -453,6 +503,10 @@ PortManager::request_input_monitoring (const string& name, bool yn) const void PortManager::ensure_input_monitoring (const string& name, bool yn) const { + if (!_impl) { + return; + } + PortEngine::PortHandle ph = _impl->get_port_by_name (name); if (ph) { @@ -460,3 +514,32 @@ PortManager::ensure_input_monitoring (const string& name, bool yn) const } } +uint32_t +PortManager::port_name_size() const +{ + if (!_impl) { + return 0; + } + + return _impl->port_name_size (); +} + +string +PortManager::my_name() const +{ + if (!_impl) { + return string(); + } + + return _impl->my_name(); +} + +int +PortManager::graph_order_callback () +{ + if (!_port_remove_in_progress) { + GraphReordered(); /* EMIT SIGNAL */ + } + + return 0; +} -- cgit v1.2.3 From 1c4d00e8b70785ce58f868645dad93afa1855193 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 3 Aug 2013 11:57:56 -0400 Subject: audioengine branch can now load and run at least one test session. currently hard-coded to deal only with the situation where JACK is already running --- gtk2_ardour/ardour_ui.cc | 36 ++++++++++++++--------------- gtk2_ardour/ardour_ui.h | 2 +- gtk2_ardour/engine_dialog.cc | 32 ++++++-------------------- libs/ardour/ardour/audio_backend.h | 11 ++++++++- libs/ardour/ardour/audioengine.h | 2 +- libs/ardour/ardour/jack_audiobackend.h | 4 ++++ libs/ardour/ardour/jack_connection.h | 3 +++ libs/ardour/ardour/jack_portengine.h | 5 +++++ libs/ardour/audioengine.cc | 16 ++++++++----- libs/ardour/globals.cc | 10 ++++----- libs/ardour/jack_audiobackend.cc | 14 ++++++++++++ libs/ardour/jack_connection.cc | 27 ++++++++++++++++++++++ libs/ardour/jack_portengine.cc | 41 ++++++++++++++++++++++------------ 13 files changed, 131 insertions(+), 72 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 12f3feafa1..e764c50d4e 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -61,6 +61,7 @@ #include "midi++/manager.h" #include "ardour/ardour.h" +#include "ardour/audio_backend.h" #include "ardour/audioengine.h" #include "ardour/audiofilesource.h" #include "ardour/automation_watch.h" @@ -373,6 +374,8 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) _process_thread->init (); DPIReset.connect (sigc::mem_fun (*this, &ARDOUR_UI::resize_text_widgets)); + + attach_to_engine (); } GlobalPortMatrixWindow* @@ -384,18 +387,10 @@ ARDOUR_UI::create_global_port_matrix (ARDOUR::DataType type) return new GlobalPortMatrixWindow (_session, type); } -int -ARDOUR_UI::create_engine () +void +ARDOUR_UI::attach_to_engine () { - // this gets called every time by new_session() - - if (engine) { - return 0; - } - - loading_message (_("Starting audio engine")); - - AudioEngine* engine = AudioEngine::instance(); + engine = AudioEngine::instance(); engine->Stopped.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_stopped, this), gui_context()); engine->Running.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_running, this), gui_context()); @@ -405,8 +400,6 @@ ARDOUR_UI::create_engine () engine->BackendAvailable.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::post_engine, this)); ARDOUR::Port::set_connecting_blocked (ARDOUR_COMMAND_LINE::no_connect_ports); - - return 0; } void @@ -414,7 +407,7 @@ ARDOUR_UI::post_engine () { cerr << "Backend available!\n"; - /* Things to be done once we create the AudioEngine + /* Things to be done once we have a backend running in the AudioEngine */ ARDOUR::init_post_engine (); @@ -2572,6 +2565,17 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri int ret = -1; bool likely_new = false; + /* if the audio/midi backend does not require setup, get our use of it underway + * right here + */ + + if (!EngineControl::need_setup()) { + vector backends = AudioEngine::instance()->available_backends(); + cerr << "Setting up backend " << backends.front()->name; + AudioEngine::instance()->set_backend (backends.front()->name, ARDOUR_COMMAND_LINE::backend_client_name, ARDOUR_COMMAND_LINE::backend_session_uuid); + AudioEngine::instance()->start (); + } + /* deal with any existing DIRTY session now, rather than later. don't * treat a non-dirty session this way, so that it stays visible * as we bring up the new session dialog. @@ -2693,10 +2697,6 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri } } - if (create_engine ()) { - break; - } - if (Glib::file_test (session_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))) { if (likely_new && !nsm) { diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 5817293b29..c4ac0e67d7 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -263,7 +263,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr session_add_midi_route (false); }*/ - int create_engine (); + void attach_to_engine (); void post_engine (); gint exit_on_main_window_close (GdkEventAny *); diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index a9e04d8db0..2db93d75ec 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -44,6 +44,8 @@ #include #include +#include "ardour/audio_backend.h" +#include "ardour/audioengine.h" #include "ardour/rc_configuration.h" #include "pbd/convert.h" @@ -594,33 +596,13 @@ EngineControl::build_command_line (vector& cmd) bool EngineControl::need_setup () { - return !engine_running(); -} - -bool -EngineControl::engine_running () -{ - EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); - boost::scoped_ptr current_epa; - - /* revert all environment settings back to whatever they were when - * ardour started, because ardour's startup script may have reset - * something in ways that interfere with finding/starting JACK. - */ + vector backends = ARDOUR::AudioEngine::instance()->available_backends(); - if (global_epa) { - current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */ - global_epa->restore (); - } - - jack_status_t status; - jack_client_t* c = jack_client_open ("ardourprobe", JackNoStartServer, &status); - - if (status == 0) { - jack_client_close (c); - return true; + if (backends.size() == 1 && backends.front()->already_configured()) { + return false; } - return false; + + return true; } int diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 6aee33a507..18c8cb8931 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -340,7 +340,7 @@ class AudioBackend { virtual int create_process_thread (boost::function func, pthread_t*, size_t stacksize) = 0; virtual void update_latencies () = 0; - + protected: AudioEngine& engine; }; @@ -353,6 +353,15 @@ struct AudioBackendInfo { boost::shared_ptr (*backend_factory) (AudioEngine&); boost::shared_ptr (*portengine_factory) (PortManager&); + + /** Return true if the underlying mechanism/API has been + * configured and does not need (re)configuration in order + * to be usable. Return false otherwise. + * + * Note that this may return true if (re)configuration is possible, + * but not required. + */ + bool (*already_configured)(); }; } // namespace diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index cf22925565..4412faca22 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -72,7 +72,7 @@ public: virtual ~AudioEngine (); int discover_backends(); - std::vector available_backends() const; + std::vector available_backends() const; std::string current_backend_name () const; int set_backend (const std::string&, const std::string& arg1, const std::string& arg2); diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 05638f6c73..4f44bdba5f 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -101,6 +101,8 @@ class JACKAudioBackend : public AudioBackend { void update_latencies (); + static bool already_configured(); + private: boost::shared_ptr _jack_connection; //< shared with JACKPortEngine bool _running; @@ -144,6 +146,8 @@ class JACKAudioBackend : public AudioBackend { static void* _start_process_thread (void*); ChanCount n_physical (unsigned long) const; + + void preset_jack_startup_command (); /* pffooo */ diff --git a/libs/ardour/ardour/jack_connection.h b/libs/ardour/ardour/jack_connection.h index 543a70c439..cd45f3b9ba 100644 --- a/libs/ardour/ardour/jack_connection.h +++ b/libs/ardour/ardour/jack_connection.h @@ -21,11 +21,14 @@ class JackConnection { jack_client_t* jack() const { return _jack; } + PBD::Signal0 Connected; PBD::Signal1 Disconnected; void halted_callback (); void halted_info_callback (jack_status_t, const char*); + static bool server_running(); + private: jack_client_t* volatile _jack; std::string _client_name; diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h index 638d3382ad..d595b638fa 100644 --- a/libs/ardour/ardour/jack_portengine.h +++ b/libs/ardour/ardour/jack_portengine.h @@ -27,6 +27,8 @@ #include +#include "pbd/signals.h" + #include "ardour/port_engine.h" #include "ardour/types.h" @@ -115,6 +117,9 @@ class JACKPortEngine : public PortEngine ChanCount n_physical (unsigned long flags) const; void get_physical (DataType type, unsigned long flags, std::vector& phy) const; + PBD::ScopedConnection jack_connection_connection; + void connected_to_jack (); + }; } // namespace diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index eee21cad1f..a7682bac70 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -537,13 +537,13 @@ AudioEngine::backend_discover (const string& path) return info; } -vector +vector AudioEngine::available_backends() const { - vector r; + vector r; for (BackendMap::const_iterator i = _backends.begin(); i != _backends.end(); ++i) { - r.push_back (i->first); + r.push_back (i->second); } return r; @@ -581,17 +581,21 @@ AudioEngine::set_backend (const std::string& name, const std::string& arg1, cons drop_backend (); try { + cerr << "Instantiate " << b->second->name << " with " << arg1 << " + " << arg2 << endl; if (b->second->instantiate (arg1, arg2)) { + cerr << "i failed\n"; throw failed_constructor (); } + cerr << "bf\n"; _backend = b->second->backend_factory (*this); + cerr << "pf\n"; _impl = b->second->portengine_factory (*this); + cerr << "done\n"; - - } catch (...) { - error << string_compose (_("Could not create backend for %1"), name) << endmsg; + } catch (exception& e) { + error << string_compose (_("Could not create backend for %1: %2"), name, e.what()) << endmsg; return -1; } diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index 132a5fb35d..e890838bfb 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -72,6 +72,7 @@ #include "ardour/analyser.h" #include "ardour/audio_library.h" +#include "ardour/audio_backend.h" #include "ardour/audioengine.h" #include "ardour/audioplaylist.h" #include "ardour/audioregion.h" @@ -333,15 +334,12 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir ARDOUR::AudioEngine::create (); - uint32_t backend_cnt; + vector backends = AudioEngine::instance()->available_backends(); - if ((backend_cnt = AudioEngine::instance()->available_backends().size()) == 0) { - error << _("No audio/MIDI backends are available") << endmsg; - return -1; + for (vector::const_iterator i = backends.begin(); i != backends.end(); ++i) { + cerr << "BACKEND: [" << (*i)->name << "] already configured " << (*i)->already_configured() << endl; } - cerr << "We have " << backend_cnt << endl; - return 0; } diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 420f104077..1bdd70c0f6 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -354,12 +354,26 @@ JACKAudioBackend::raw_buffer_size(DataType t) return (s != _raw_buffer_sizes.end()) ? s->second : 0; } +void +JACKAudioBackend::preset_jack_startup_command () +{ + /* write parameter settings to ~/.jackdrc file so that next invocation + * of JACK (presumably from a call to jack_client_open() from this + * process) will do the right thing. + */ +} + /* ---- BASIC STATE CONTROL API: start/stop/pause/freewheel --- */ int JACKAudioBackend::start () { if (!connected()) { + + if (!_jack_connection->server_running()) { + preset_jack_startup_command (); + } + std::cerr << "Open JACK connection\n"; _jack_connection->open (); } diff --git a/libs/ardour/jack_connection.cc b/libs/ardour/jack_connection.cc index d2b69c31fb..cbd9b3fbcc 100644 --- a/libs/ardour/jack_connection.cc +++ b/libs/ardour/jack_connection.cc @@ -55,6 +55,33 @@ JackConnection::~JackConnection () close (); } +bool +JackConnection::server_running () +{ + EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); + boost::scoped_ptr current_epa; + + /* revert all environment settings back to whatever they were when + * ardour started, because ardour's startup script may have reset + * something in ways that interfere with finding/starting JACK. + */ + + if (global_epa) { + current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */ + global_epa->restore (); + } + + jack_status_t status; + jack_client_t* c = jack_client_open ("ardourprobe", JackNoStartServer, &status); + + if (status == 0) { + jack_client_close (c); + return true; + } + + return false; +} + int JackConnection::open () { diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc index 1dc323576a..d0716e555f 100644 --- a/libs/ardour/jack_portengine.cc +++ b/libs/ardour/jack_portengine.cc @@ -20,13 +20,16 @@ #include #include -#include "pbd/failed_constructor.h" +#include "pbd/error.h" #include "ardour/jack_portengine.h" #include "ardour/jack_connection.h" #include "ardour/port_manager.h" +#include "i18n.h" + using namespace ARDOUR; +using namespace PBD; using std::string; using std::vector; @@ -85,17 +88,7 @@ JACKPortEngine::JACKPortEngine (PortManager& pm, boost::shared_ptrjack(); - - if (!client) { - throw failed_constructor (); - } - - /* register callbacks for stuff that is our responsibility */ - - jack_set_port_registration_callback (client, _registration_callback, this); - jack_set_port_connect_callback (client, _connect_callback, this); - jack_set_graph_order_callback (client, _graph_order_callback, this); + _jack_connection->Connected.connect_same_thread (jack_connection_connection, boost::bind (&JACKPortEngine::connected_to_jack, this)); } JACKPortEngine::~JACKPortEngine () @@ -107,6 +100,24 @@ JACKPortEngine::~JACKPortEngine () _jack_connection.reset (); } +void +JACKPortEngine::connected_to_jack () +{ + /* register callbacks for stuff that is our responsibility */ + + jack_client_t* client = _jack_connection->jack(); + + if (!client) { + /* how could this happen? it could ... */ + error << _("Already disconnected from JACK before PortEngine could register callbacks") << endmsg; + return; + } + + jack_set_port_registration_callback (client, _registration_callback, this); + jack_set_port_connect_callback (client, _connect_callback, this); + jack_set_graph_order_callback (client, _graph_order_callback, this); +} + void* JACKPortEngine::private_handle() const { @@ -294,8 +305,10 @@ JACKPortEngine::n_physical (unsigned long flags) const if (ports) { for (uint32_t i = 0; ports[i]; ++i) { if (!strstr (ports[i], "Midi-Through")) { - DataType t (jack_port_type (jack_port_by_name (_priv_jack, ports[i]))); - c.set (t, c.get (t) + 1); + DataType t = port_data_type (jack_port_by_name (_priv_jack, ports[i])); + if (t != DataType::NIL) { + c.set (t, c.get (t) + 1); + } } } -- cgit v1.2.3 From c2e7c32c53b481ef6889de834fe43b0853398c58 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 3 Aug 2013 16:37:10 -0400 Subject: add tim's jack_utils code to rationalize setup of JACK config --- gtk2_ardour/ardour_ui.cc | 25 +- gtk2_ardour/engine_dialog.cc | 12 - gtk2_ardour/startup.cc | 3 +- libs/ardour/ardour/audioengine.h | 1 + libs/ardour/ardour/jack_audiobackend.h | 2 +- libs/ardour/ardour/jack_utils.h | 243 +++++++++ libs/ardour/audioengine.cc | 18 +- libs/ardour/globals.cc | 6 - libs/ardour/jack_audiobackend.cc | 39 +- libs/ardour/jack_connection.cc | 11 + libs/ardour/jack_portengine.cc | 1 - libs/ardour/jack_utils.cc | 896 +++++++++++++++++++++++++++++++++ libs/ardour/wscript | 3 +- 13 files changed, 1217 insertions(+), 43 deletions(-) create mode 100644 libs/ardour/ardour/jack_utils.h create mode 100644 libs/ardour/jack_utils.cc diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index e764c50d4e..7e6ce10300 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -400,13 +400,23 @@ ARDOUR_UI::attach_to_engine () engine->BackendAvailable.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::post_engine, this)); ARDOUR::Port::set_connecting_blocked (ARDOUR_COMMAND_LINE::no_connect_ports); + + /* if there is only one audio/midi backend, and it does not require setup, get our use of it underway + * right here (we need to know the client name and potential session ID + * to do this, which is why this is here, rather than in, say, + * ARDOUR::init(). + */ + + if (!AudioEngine::instance()->setup_required()) { + const AudioBackendInfo* backend = AudioEngine::instance()->available_backends().front(); + AudioEngine::instance()->set_backend (backend->name, ARDOUR_COMMAND_LINE::backend_client_name, ARDOUR_COMMAND_LINE::backend_session_uuid); + AudioEngine::instance()->start (); + } } void ARDOUR_UI::post_engine () { - cerr << "Backend available!\n"; - /* Things to be done once we have a backend running in the AudioEngine */ @@ -2565,17 +2575,6 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri int ret = -1; bool likely_new = false; - /* if the audio/midi backend does not require setup, get our use of it underway - * right here - */ - - if (!EngineControl::need_setup()) { - vector backends = AudioEngine::instance()->available_backends(); - cerr << "Setting up backend " << backends.front()->name; - AudioEngine::instance()->set_backend (backends.front()->name, ARDOUR_COMMAND_LINE::backend_client_name, ARDOUR_COMMAND_LINE::backend_session_uuid); - AudioEngine::instance()->start (); - } - /* deal with any existing DIRTY session now, rather than later. don't * treat a non-dirty session this way, so that it stays visible * as we bring up the new session dialog. diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 2db93d75ec..b52d3a7a15 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -593,18 +593,6 @@ EngineControl::build_command_line (vector& cmd) } } -bool -EngineControl::need_setup () -{ - vector backends = ARDOUR::AudioEngine::instance()->available_backends(); - - if (backends.size() == 1 && backends.front()->already_configured()) { - return false; - } - - return true; -} - int EngineControl::setup_engine () { diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index e24e7d6989..8314a0986e 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -34,6 +34,7 @@ #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" @@ -91,7 +92,7 @@ ArdourStartup::ArdourStartup (bool require_new, const std::string& session_name, , _existing_session_chooser_used (false) { new_user = !Glib::file_test (been_here_before_path(), Glib::FILE_TEST_EXISTS); - need_audio_setup = EngineControl::need_setup (); + need_audio_setup = AudioEngine::instance()->setup_required (); need_session_info = (session_name.empty() || require_new); _provided_session_name = session_name; diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 4412faca22..f06890676d 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -75,6 +75,7 @@ public: std::vector available_backends() const; std::string current_backend_name () const; int set_backend (const std::string&, const std::string& arg1, const std::string& arg2); + bool setup_required () const; ProcessThread* main_thread() const { return _main_thread; } diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 4f44bdba5f..4fef602119 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -147,7 +147,7 @@ class JACKAudioBackend : public AudioBackend { ChanCount n_physical (unsigned long) const; - void preset_jack_startup_command (); + void setup_jack_startup_command (); /* pffooo */ diff --git a/libs/ardour/ardour/jack_utils.h b/libs/ardour/ardour/jack_utils.h new file mode 100644 index 0000000000..169dc12580 --- /dev/null +++ b/libs/ardour/ardour/jack_utils.h @@ -0,0 +1,243 @@ +/* + Copyright (C) 2011 Tim Mayberry + + 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. + +*/ + +#include + +#include +#include +#include + +namespace ARDOUR { + + // Names for the drivers on all possible systems + extern const char * const portaudio_driver_name; + extern const char * const coreaudio_driver_name; + extern const char * const alsa_driver_name; + extern const char * const oss_driver_name; + extern const char * const freebob_driver_name; + extern const char * const ffado_driver_name; + extern const char * const netjack_driver_name; + extern const char * const dummy_driver_name; + + /** + * Get a list of possible JACK audio driver names based on platform + */ + void get_jack_audio_driver_names (std::vector& driver_names); + + /** + * Get the default JACK audio driver based on platform + */ + void get_jack_default_audio_driver_name (std::string& driver_name); + + /** + * Get a list of possible JACK midi driver names based on platform + */ + void get_jack_midi_system_names (const std::string& driver, std::vector& driver_names); + + /** + * Get the default JACK midi driver based on platform + */ + void get_jack_default_midi_system_name (const std::string& driver_name, std::string& midi_system); + + /** + * Get a list of possible samplerates supported be JACK + */ + void get_jack_sample_rate_strings (std::vector& sample_rates); + + /** + * @return The default samplerate + */ + std::string get_jack_default_sample_rate (); + + /** + * @return true if sample rate string was able to be converted + */ + bool get_jack_sample_rate_value_from_string (const std::string& srs, uint32_t& srv); + + /** + * Get a list of possible period sizes supported be JACK + */ + void get_jack_period_size_strings (std::vector& samplerates); + + /** + * @return The default period size + */ + std::string get_jack_default_period_size (); + + /** + * @return true if period size string was able to be converted + */ + bool get_jack_period_size_value_from_string (const std::string& pss, uint32_t& psv); + + /** + * These are driver specific I think, so it may require a driver arg + * in future + */ + void get_jack_dither_mode_strings (const std::string& driver, std::vector& dither_modes); + + /** + * @return The default dither mode + */ + std::string get_jack_default_dither_mode (const std::string& driver); + + /** + * @return Estimate of latency + * + * API matches current use in GUI + */ + std::string get_jack_latency_string (std::string samplerate, float periods, std::string period_size); + + /** + * Key being a readable name to display in a GUI + * Value being name used in a jack commandline + */ + typedef std::map device_map_t; + + /** + * Use library specific code to find out what what devices exist for a given + * driver that might work in JACK. There is no easy way to find out what + * modules the JACK server supports so guess based on platform. For instance + * portaudio is cross-platform but we only return devices if built for + * windows etc + */ + void get_jack_alsa_device_names (device_map_t& devices); + void get_jack_portaudio_device_names (device_map_t& devices); + void get_jack_coreaudio_device_names (device_map_t& devices); + void get_jack_oss_device_names (device_map_t& devices); + void get_jack_freebob_device_names (device_map_t& devices); + void get_jack_ffado_device_names (device_map_t& devices); + void get_jack_netjack_device_names (device_map_t& devices); + void get_jack_dummy_device_names (device_map_t& devices); + + /* + * @return true if there were devices found for the driver + * + * @param driver The driver name returned by get_jack_audio_driver_names + * @param devices The map used to insert the drivers into, devices will be cleared before + * adding the available drivers + */ + bool get_jack_device_names_for_audio_driver (const std::string& driver, device_map_t& devices); + + /* + * @return a list of readable device names for a specific driver. + */ + std::vector get_jack_device_names_for_audio_driver (const std::string& driver); + + /** + * @return true if the driver supports playback and recording + * on separate devices + */ + bool get_jack_audio_driver_supports_two_devices (const std::string& driver); + + bool get_jack_audio_driver_supports_latency_adjustment (const std::string& driver); + + bool get_jack_audio_driver_supports_setting_period_count (const std::string& driver); + + /** + * The possible names to use to try and find servers, this includes + * any file extensions like .exe on Windows + * + * @return true if the JACK application names for this platform could be guessed + */ + bool get_jack_server_application_names (std::vector& server_names); + + /** + * Sets the PATH environment variable to contain directories likely to contain + * JACK servers so that if the JACK server is auto-started it can find the server + * executable. + * + * This is only modifies PATH on the mac at the moment. + */ + void set_path_env_for_jack_autostart (const std::vector&); + + /** + * Get absolute paths to directories that might contain JACK servers on the system + * + * @return true if !server_paths.empty() + */ + bool get_jack_server_dir_paths (std::vector& server_dir_paths); + + /** + * Get absolute paths to JACK servers on the system + * + * @return true if a server was found + */ + bool get_jack_server_paths (const std::vector& server_dir_paths, + const std::vector& server_names, + std::vector& server_paths); + + + bool get_jack_server_paths (std::vector& server_paths); + + /** + * Get absolute path to default JACK server + */ + bool get_jack_default_server_path (std::string& server_path); + + /** + * @return The name of the jack server config file + */ + std::string get_jack_server_config_file_name (); + + std::string get_jack_server_user_config_dir_path (); + + std::string get_jack_server_user_config_file_path (); + + bool write_jack_config_file (const std::string& config_file_path, const std::string& command_line); + + struct JackCommandLineOptions { + + // see implementation for defaults + JackCommandLineOptions (); + + //operator bool + //operator ostream + + std::string server_path; + uint32_t timeout; + bool no_mlock; + uint32_t ports_max; + bool realtime; + uint32_t priority; + bool unlock_gui_libs; + bool verbose; + bool temporary; + bool playback_only; + bool capture_only; + std::string driver; + std::string input_device; + std::string output_device; + uint32_t num_periods; + uint32_t period_size; + uint32_t samplerate; + uint32_t input_latency; + uint32_t output_latency; + bool hardware_metering; + bool hardware_monitoring; + std::string dither_mode; + bool force16_bit; + bool soft_mode; + std::string midi_driver; + }; + + /** + * @return true if able to build a valid command line based on options + */ + bool get_jack_command_line_string (const JackCommandLineOptions& options, std::string& command_line); +} diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index a7682bac70..2884f410df 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -194,10 +194,14 @@ AudioEngine::process_callback (pframes_t nframes) return 0; } + cerr << "pc, srp = " << session_remove_pending << endl; + if (session_remove_pending) { /* perform the actual session removal */ + cerr << "\tsrc = " << session_removal_countdown << endl; + if (session_removal_countdown < 0) { /* fade out over 1 second */ @@ -226,6 +230,7 @@ AudioEngine::process_callback (pframes_t nframes) _session = 0; session_removal_countdown = -1; // reset to "not in progress" session_remove_pending = false; + cerr << "Send removed signal\n"; session_removed.signal(); // wakes up thread that initiated session removal } } @@ -437,6 +442,7 @@ AudioEngine::remove_session () if (_session) { session_remove_pending = true; + session_removal_countdown = 0; session_removed.wait(_process_lock); } @@ -588,11 +594,8 @@ AudioEngine::set_backend (const std::string& name, const std::string& arg1, cons throw failed_constructor (); } - cerr << "bf\n"; _backend = b->second->backend_factory (*this); - cerr << "pf\n"; _impl = b->second->portengine_factory (*this); - cerr << "done\n"; } catch (exception& e) { error << string_compose (_("Could not create backend for %1: %2"), name, e.what()) << endmsg; @@ -1007,3 +1010,12 @@ AudioEngine::halted_callback (const char* why) Halted (why); /* EMIT SIGNAL */ } +bool +AudioEngine::setup_required () const +{ + if (_backends.size() == 1 && _backends.begin()->second->already_configured()) { + return false; + } + + return true; +} diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index e890838bfb..d744368fe7 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -334,12 +334,6 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir ARDOUR::AudioEngine::create (); - vector backends = AudioEngine::instance()->available_backends(); - - for (vector::const_iterator i = backends.begin(); i != backends.end(); ++i) { - cerr << "BACKEND: [" << (*i)->name << "] already configured " << (*i)->already_configured() << endl; - } - return 0; } diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 1bdd70c0f6..ed412f3f5a 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -31,6 +31,7 @@ #include "ardour/jack_audiobackend.h" #include "ardour/jack_connection.h" #include "ardour/jack_portengine.h" +#include "ardour/jack_utils.h" #include "i18n.h" @@ -355,12 +356,39 @@ JACKAudioBackend::raw_buffer_size(DataType t) } void -JACKAudioBackend::preset_jack_startup_command () +JACKAudioBackend::setup_jack_startup_command () { - /* write parameter settings to ~/.jackdrc file so that next invocation - * of JACK (presumably from a call to jack_client_open() from this - * process) will do the right thing. + /* first we map the parameters that have been set onto a + * JackCommandLineOptions object. */ + + JackCommandLineOptions options; + + options.samplerate = _target_sample_rate; + options.period_size = _target_buffer_size; + options.num_periods = 2; + options.input_device = _target_device; + options.output_device = _target_device; + options.input_latency = _target_systemic_input_latency; + options.output_latency = _target_systemic_output_latency; + if (_target_sample_format == FormatInt16) { + options.force16_bit = _target_sample_format; + } + + /* this must always be true for any server instance we start ourselves + */ + + options.temporary = true; + + string cmdline; + + if (!get_jack_command_line_string (options, cmdline)) { + /* error, somehow */ + } + + std::cerr << "JACK command line will be: " << cmdline << std::endl; + + // write_jack_config_file (get_jack_server_user_config_file_path(), cmdline); } /* ---- BASIC STATE CONTROL API: start/stop/pause/freewheel --- */ @@ -371,8 +399,9 @@ JACKAudioBackend::start () if (!connected()) { if (!_jack_connection->server_running()) { - preset_jack_startup_command (); + setup_jack_startup_command (); } + std::cerr << "Open JACK connection\n"; _jack_connection->open (); } diff --git a/libs/ardour/jack_connection.cc b/libs/ardour/jack_connection.cc index cbd9b3fbcc..57950b0e17 100644 --- a/libs/ardour/jack_connection.cc +++ b/libs/ardour/jack_connection.cc @@ -23,12 +23,15 @@ #include "pbd/epa.h" #include "ardour/jack_connection.h" +#include "ardour/jack_utils.h" #define GET_PRIVATE_JACK_POINTER(j) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return; } #define GET_PRIVATE_JACK_POINTER_RET(j,r) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return r; } using namespace ARDOUR; using namespace PBD; +using std::string; +using std::vector; static void jack_halted_callback (void* arg) { @@ -99,6 +102,14 @@ JackConnection::open () global_epa->restore (); } + /* ensure that PATH or equivalent includes likely locations of the JACK + * server, in case the user's default does not. + */ + + vector dirs; + get_jack_server_dir_paths (dirs); + set_path_env_for_jack_autostart (dirs); + if ((_jack = jack_client_open (_client_name.c_str(), JackSessionID, &status, session_uuid.c_str())) == 0) { return -1; } diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc index d0716e555f..82b4502cb6 100644 --- a/libs/ardour/jack_portengine.cc +++ b/libs/ardour/jack_portengine.cc @@ -461,7 +461,6 @@ JACKPortEngine::disconnect_all (PortHandle port) return jack_port_disconnect (_priv_jack, (jack_port_t*) port); } - int JACKPortEngine::midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) { diff --git a/libs/ardour/jack_utils.cc b/libs/ardour/jack_utils.cc new file mode 100644 index 0000000000..606b71603a --- /dev/null +++ b/libs/ardour/jack_utils.cc @@ -0,0 +1,896 @@ +/* + Copyright (C) 2010 Paul Davis + Copyright (C) 2011 Tim Mayberry + + 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 "libardour-config.h" +#endif + +#ifdef HAVE_ALSA +#include +#endif + +#ifdef __APPLE__ +#include +#include +#include +#include +#endif + +#ifdef HAVE_PORTAUDIO +#include +#endif + +#include + +#include + +#include + +#include + +#include "pbd/epa.h" +#include "pbd/error.h" +#include "pbd/convert.h" +#include "pbd/file_utils.h" +#include "pbd/search_path.h" + +#include "ardour/jack_utils.h" + +#ifdef __APPLE +#include +#endif + +#include "i18n.h" + +using namespace std; +using namespace PBD; + +namespace ARDOUR { + // The pretty driver names + const char * const portaudio_driver_name = X_("Portaudio"); + const char * const coreaudio_driver_name = X_("CoreAudio"); + const char * const alsa_driver_name = X_("ALSA"); + const char * const oss_driver_name = X_("OSS"); + const char * const freebob_driver_name = X_("FreeBoB"); + const char * const ffado_driver_name = X_("FFADO"); + const char * const netjack_driver_name = X_("NetJACK"); + const char * const dummy_driver_name = X_("Dummy"); +} + +namespace { + + // The real driver names + const char * const portaudio_driver_command_line_name = X_("portaudio"); + const char * const coreaudio_driver_command_line_name = X_("coreaudio"); + const char * const alsa_driver_command_line_name = X_("alsa"); + const char * const oss_driver_command_line_name = X_("oss"); + const char * const freebob_driver_command_line_name = X_("freebob"); + const char * const ffado_driver_command_line_name = X_("firewire"); + const char * const netjack_driver_command_line_name = X_("netjack"); + const char * const dummy_driver_command_line_name = X_("dummy"); + + // should we provide more "pretty" names like above? + const char * const alsaseq_midi_driver_name = X_("seq"); + const char * const alsaraw_midi_driver_name = X_("raw"); + const char * const winmme_midi_driver_name = X_("winmme"); + const char * const coremidi_midi_driver_name = X_("coremidi"); + + // this should probably be translated + const char * const default_device_name = X_("Default"); +} + +std::string +get_none_string () +{ + return _("None"); +} + +void +ARDOUR::get_jack_audio_driver_names (vector& audio_driver_names) +{ +#ifdef WIN32 + audio_driver_names.push_back (portaudio_driver_name); +#elif __APPLE__ + audio_driver_names.push_back (coreaudio_driver_name); +#else +#ifdef HAVE_ALSA + audio_driver_names.push_back (alsa_driver_name); +#endif + audio_driver_names.push_back (oss_driver_name); + audio_driver_names.push_back (freebob_driver_name); + audio_driver_names.push_back (ffado_driver_name); +#endif + audio_driver_names.push_back (netjack_driver_name); + audio_driver_names.push_back (dummy_driver_name); +} + +void +ARDOUR::get_jack_default_audio_driver_name (string& audio_driver_name) +{ + vector drivers; + get_jack_audio_driver_names (drivers); + audio_driver_name = drivers.front (); +} + +void +ARDOUR::get_jack_midi_system_names (const string& driver, vector& midi_system_names) +{ + midi_system_names.push_back (get_none_string ()); +#ifdef WIN32 + midi_system_names.push_back (winmme_midi_driver_name); +#elif __APPLE__ + midi_system_names.push_back (coreaudio_midi_driver_name); +#else +#ifdef HAVE_ALSA + if (driver == alsa_driver_name) { + midi_system_names.push_back (alsaseq_midi_driver_name); + midi_system_names.push_back (alsaraw_midi_driver_name); + } +#endif +#endif +} + +void +ARDOUR::get_jack_default_midi_system_name (const string& driver, string& midi_system_name) +{ + vector drivers; + get_jack_midi_system_names (driver, drivers); + midi_system_name = drivers.front (); +} + +void +ARDOUR::get_jack_sample_rate_strings (vector& samplerates) +{ + // do these really need to be translated? + samplerates.push_back (_("8000Hz")); + samplerates.push_back (_("22050Hz")); + samplerates.push_back (_("44100Hz")); + samplerates.push_back (_("48000Hz")); + samplerates.push_back (_("88200Hz")); + samplerates.push_back (_("96000Hz")); + samplerates.push_back (_("192000Hz")); +} + +string +ARDOUR::get_jack_default_sample_rate () +{ + return _("48000Hz"); +} + +void +ARDOUR::get_jack_period_size_strings (std::vector& period_sizes) +{ + period_sizes.push_back ("32"); + period_sizes.push_back ("64"); + period_sizes.push_back ("128"); + period_sizes.push_back ("256"); + period_sizes.push_back ("512"); + period_sizes.push_back ("1024"); + period_sizes.push_back ("2048"); + period_sizes.push_back ("4096"); + period_sizes.push_back ("8192"); +} + +string +ARDOUR::get_jack_default_period_size () +{ + return "1024"; +} + +void +ARDOUR::get_jack_dither_mode_strings (const string& driver, vector& dither_modes) +{ + dither_modes.push_back (get_none_string ()); + + if (driver == alsa_driver_name ) { + dither_modes.push_back (_("Triangular")); + dither_modes.push_back (_("Rectangular")); + dither_modes.push_back (_("Shaped")); + } +} + +string +ARDOUR::get_jack_default_dither_mode (const string& /*driver*/) +{ + return get_none_string (); +} + +string +ARDOUR::get_jack_latency_string (string samplerate, float periods, string period_size) +{ + uint32_t rate = atoi (samplerate); + float psize = atof (period_size); + + char buf[32]; + snprintf (buf, sizeof(buf), "%.1fmsec", (periods * psize) / (rate/1000.0)); + + return buf; +} + +bool +get_jack_command_line_audio_driver_name (const string& driver_name, string& command_line_name) +{ + using namespace ARDOUR; + if (driver_name == portaudio_driver_name) { + command_line_name = portaudio_driver_command_line_name; + return true; + } else if (driver_name == coreaudio_driver_name) { + command_line_name = coreaudio_driver_command_line_name; + return true; + } else if (driver_name == alsa_driver_name) { + command_line_name = alsa_driver_command_line_name; + return true; + } else if (driver_name == oss_driver_name) { + command_line_name = oss_driver_command_line_name; + return true; + } else if (driver_name == freebob_driver_name) { + command_line_name = freebob_driver_command_line_name; + return true; + } else if (driver_name == ffado_driver_name) { + command_line_name = ffado_driver_command_line_name; + return true; + } else if (driver_name == netjack_driver_name) { + command_line_name = netjack_driver_command_line_name; + return true; + } else if (driver_name == dummy_driver_name) { + command_line_name = dummy_driver_command_line_name; + return true; + } + return false; +} + +bool +get_jack_command_line_audio_device_name (const string& driver_name, + const string& device_name, string& command_line_device_name) +{ + using namespace ARDOUR; + device_map_t devices; + + get_jack_device_names_for_audio_driver (driver_name, devices); + + for (device_map_t::const_iterator i = devices.begin (); i != devices.end(); ++i) { + if (i->first == device_name) { + command_line_device_name = i->second; + return true; + } + } + return false; +} + +bool +get_jack_command_line_dither_mode (const string& dither_mode, string& command_line_dither_mode) +{ + using namespace ARDOUR; + + if (dither_mode == _("Triangular")) { + command_line_dither_mode = "triangular"; + return true; + } else if (dither_mode == _("Rectangular")) { + command_line_dither_mode = "rectangular"; + return true; + } else if (dither_mode == _("Shaped")) { + command_line_dither_mode = "shaped"; + return true; + } + + return false; +} + +void +ARDOUR::get_jack_alsa_device_names (device_map_t& devices) +{ +#ifdef HAVE_ALSA + snd_ctl_t *handle; + snd_ctl_card_info_t *info; + snd_pcm_info_t *pcminfo; + snd_ctl_card_info_alloca(&info); + snd_pcm_info_alloca(&pcminfo); + string devname; + int cardnum = -1; + int device = -1; + + while (snd_card_next (&cardnum) >= 0 && cardnum >= 0) { + + devname = "hw:"; + devname += PBD::to_string (cardnum, std::dec); + + if (snd_ctl_open (&handle, devname.c_str(), 0) >= 0 && snd_ctl_card_info (handle, info) >= 0) { + + while (snd_ctl_pcm_next_device (handle, &device) >= 0 && device >= 0) { + + snd_pcm_info_set_device (pcminfo, device); + snd_pcm_info_set_subdevice (pcminfo, 0); + snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_PLAYBACK); + + if (snd_ctl_pcm_info (handle, pcminfo) >= 0) { + devname += ','; + devname += PBD::to_string (device, std::dec); + devices.insert (std::make_pair (snd_pcm_info_get_name (pcminfo), devname)); + } + } + + snd_ctl_close(handle); + } + } +#else + /* silence a compiler unused variable warning */ + (void) devices; +#endif +} + +#ifdef __APPLE__ +static OSStatus +getDeviceUIDFromID( AudioDeviceID id, char *name, size_t nsize) +{ + UInt32 size = sizeof(CFStringRef); + CFStringRef UI; + OSStatus res = AudioDeviceGetProperty(id, 0, false, + kAudioDevicePropertyDeviceUID, &size, &UI); + if (res == noErr) + CFStringGetCString(UI,name,nsize,CFStringGetSystemEncoding()); + CFRelease(UI); + return res; +} +#endif + +void +ARDOUR::get_jack_coreaudio_device_names (device_map_t& devices) +{ +#ifdef __APPLE__ + // Find out how many Core Audio devices are there, if any... + // (code snippet gently "borrowed" from St?hane Letz jackdmp;) + OSStatus err; + Boolean isWritable; + UInt32 outSize = sizeof(isWritable); + + err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, + &outSize, &isWritable); + if (err == noErr) { + // Calculate the number of device available... + int numCoreDevices = outSize / sizeof(AudioDeviceID); + // Make space for the devices we are about to get... + AudioDeviceID *coreDeviceIDs = new AudioDeviceID [numCoreDevices]; + err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, + &outSize, (void *) coreDeviceIDs); + if (err == noErr) { + // Look for the CoreAudio device name... + char coreDeviceName[256]; + UInt32 nameSize; + + for (int i = 0; i < numCoreDevices; i++) { + + nameSize = sizeof (coreDeviceName); + + /* enforce duplex devices only */ + + err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], + 0, true, kAudioDevicePropertyStreams, + &outSize, &isWritable); + + if (err != noErr || outSize == 0) { + continue; + } + + err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], + 0, false, kAudioDevicePropertyStreams, + &outSize, &isWritable); + + if (err != noErr || outSize == 0) { + continue; + } + + err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], + 0, true, kAudioDevicePropertyDeviceName, + &outSize, &isWritable); + if (err == noErr) { + err = AudioDeviceGetProperty(coreDeviceIDs[i], + 0, true, kAudioDevicePropertyDeviceName, + &nameSize, (void *) coreDeviceName); + if (err == noErr) { + char drivername[128]; + + // this returns the unique id for the device + // that must be used on the commandline for jack + + if (getDeviceUIDFromID(coreDeviceIDs[i], drivername, sizeof (drivername)) == noErr) { + devices.insert (make_pair (coreDeviceName, drivername)); + } + } + } + } + } + delete [] coreDeviceIDs; + } +#else + /* silence a compiler unused variable warning */ + (void) devices; +#endif +} + +void +ARDOUR::get_jack_portaudio_device_names (device_map_t& devices) +{ +#ifdef HAVE_PORTAUDIO + if (Pa_Initialize() != paNoError) { + return; + } + + for (PaDeviceIndex i = 0; i < Pa_GetDeviceCount (); ++i) { + string api_name; + string readable_name; + string jack_device_name; + const PaDeviceInfo* device_info = Pa_GetDeviceInfo(i); + + if (device_info != NULL) { // it should never be ? + api_name = Pa_GetHostApiInfo (device_info->hostApi)->name; + readable_name = api_name + " " + device_info->name; + jack_device_name = api_name + "::" + device_info->name; + devices.insert (make_pair (readable_name, jack_device_name)); + } + } + Pa_Terminate(); +#else + /* silence a compiler unused variable warning */ + (void) devices; +#endif +} + +void +ARDOUR::get_jack_oss_device_names (device_map_t& devices) +{ + devices.insert (make_pair (default_device_name, default_device_name)); +} + +void +ARDOUR::get_jack_freebob_device_names (device_map_t& devices) +{ + devices.insert (make_pair (default_device_name, default_device_name)); +} + +void +ARDOUR::get_jack_ffado_device_names (device_map_t& devices) +{ + devices.insert (make_pair (default_device_name, default_device_name)); +} + +void +ARDOUR::get_jack_netjack_device_names (device_map_t& devices) +{ + devices.insert (make_pair (default_device_name, default_device_name)); +} + +void +ARDOUR::get_jack_dummy_device_names (device_map_t& devices) +{ + devices.insert (make_pair (default_device_name, default_device_name)); +} + +bool +ARDOUR::get_jack_device_names_for_audio_driver (const string& driver_name, device_map_t& devices) +{ + devices.clear(); + + if (driver_name == portaudio_driver_name) { + get_jack_portaudio_device_names (devices); + } else if (driver_name == coreaudio_driver_name) { + get_jack_coreaudio_device_names (devices); + } else if (driver_name == alsa_driver_name) { + get_jack_alsa_device_names (devices); + } else if (driver_name == oss_driver_name) { + get_jack_oss_device_names (devices); + } else if (driver_name == freebob_driver_name) { + get_jack_freebob_device_names (devices); + } else if (driver_name == ffado_driver_name) { + get_jack_ffado_device_names (devices); + } else if (driver_name == netjack_driver_name) { + get_jack_netjack_device_names (devices); + } else if (driver_name == dummy_driver_name) { + get_jack_dummy_device_names (devices); + } + + return !devices.empty(); +} + + +std::vector +ARDOUR::get_jack_device_names_for_audio_driver (const string& driver_name) +{ + std::vector readable_names; + device_map_t devices; + + get_jack_device_names_for_audio_driver (driver_name, devices); + + for (device_map_t::const_iterator i = devices.begin (); i != devices.end(); ++i) { + readable_names.push_back (i->first); + } + + return readable_names; +} + +bool +ARDOUR::get_jack_audio_driver_supports_two_devices (const string& driver) +{ + return (driver == alsa_driver_name || driver == oss_driver_name); +} + +bool +ARDOUR::get_jack_audio_driver_supports_latency_adjustment (const string& driver) +{ + return (driver == alsa_driver_name || driver == coreaudio_driver_name || + driver == ffado_driver_name || driver == portaudio_driver_name); +} + +bool +ARDOUR::get_jack_audio_driver_supports_setting_period_count (const string& driver) +{ + return !(driver == dummy_driver_name || driver == coreaudio_driver_name || + driver == portaudio_driver_name); +} + +bool +ARDOUR::get_jack_server_application_names (std::vector& server_names) +{ +#ifdef WIN32 + server_names.push_back ("jackd.exe"); +#else + server_names.push_back ("jackd"); + server_names.push_back ("jackdmp"); +#endif + return !server_names.empty(); +} + +void +ARDOUR::set_path_env_for_jack_autostart (const vector& dirs) +{ +#ifdef __APPLE__ + // push it back into the environment so that auto-started JACK can find it. + // XXX why can't we just expect OS X users to have PATH set correctly? we can't ... + setenv ("PATH", SearchPath(dirs).to_string(), 1); +#else + /* silence a compiler unused variable warning */ + (void) dirs; +#endif +} + +bool +ARDOUR::get_jack_server_dir_paths (vector& server_dir_paths) +{ +#ifdef __APPLE__ + /* this magic lets us finds the path to the OSX bundle, and then + we infer JACK's location from there + */ + + char execpath[MAXPATHLEN+1]; + uint32_t pathsz = sizeof (execpath); + + _NSGetExecutablePath (execpath, &pathsz); + + server_dir_paths.push_back (Glib::path_get_dirname (execpath)); +#endif + + SearchPath sp(string(g_getenv("PATH"))); + +#ifdef WIN32 + gchar *install_dir = g_win32_get_package_installation_directory_of_module (NULL); + if (install_dir) { + sp.push_back (install_dir); + g_free (install_dir); + } + // don't try and use a system wide JACK install yet. +#else + if (sp.empty()) { + sp.push_back ("/usr/bin"); + sp.push_back ("/bin"); + sp.push_back ("/usr/local/bin"); + sp.push_back ("/opt/local/bin"); + } +#endif + + std::copy (sp.begin(), sp.end(), std::back_inserter(server_dir_paths)); + + return !server_dir_paths.empty(); +} + +bool +ARDOUR::get_jack_server_paths (const vector& server_dir_paths, + const vector& server_names, + vector& server_paths) +{ + for (vector::const_iterator i = server_names.begin(); i != server_names.end(); ++i) { + find_matching_files_in_directories (server_dir_paths, Glib::PatternSpec(*i), server_paths); + } + return !server_paths.empty(); +} + +bool +ARDOUR::get_jack_server_paths (vector& server_paths) +{ + vector server_dirs; + + if (!get_jack_server_dir_paths (server_dirs)) { + return false; + } + + vector server_names; + + if (!get_jack_server_application_names (server_names)) { + return false; + } + + if (!get_jack_server_paths (server_dirs, server_names, server_paths)) { + return false; + } + + return !server_paths.empty(); +} + +bool +ARDOUR::get_jack_default_server_path (std::string& server_path) +{ + vector server_paths; + + if (!get_jack_server_paths (server_paths)) { + return false; + } + + server_path = server_paths.front (); + return true; +} + +string +quote_string (const string& str) +{ + return "\"" + str + "\""; +} + +ARDOUR::JackCommandLineOptions::JackCommandLineOptions () + : server_path () + , timeout(0) + , no_mlock(false) + , ports_max(128) + , realtime(true) + , priority(0) + , unlock_gui_libs(true) + , verbose(false) + , temporary(true) + , driver() + , input_device() + , output_device() + , num_periods(2) + , period_size(1024) + , samplerate(48000) + , input_latency(0) + , output_latency(0) + , hardware_metering(false) + , hardware_monitoring(false) + , dither_mode() + , force16_bit(false) + , soft_mode(false) + , midi_driver() +{ + +} + +bool +ARDOUR::get_jack_command_line_string (const JackCommandLineOptions& options, string& command_line) +{ + vector args; + + args.push_back (options.server_path); + +#ifdef WIN32 + // must use sync mode on windows + args.push_back ("-S"); + + // this needs to be added now on windows + if (!options.midi_driver.empty () && options.midi_driver != get_none_string ()) { + args.push_back ("-X"); + args.push_back (options.midi_driver); + } +#endif + + if (options.timeout) { + args.push_back ("-t"); + args.push_back (to_string (options.timeout, std::dec)); + } + + if (options.no_mlock) { + args.push_back ("-m"); + } + + args.push_back ("-p"); + args.push_back (to_string(options.ports_max, std::dec)); + + if (options.realtime) { + args.push_back ("-R"); + if (options.priority != 0) { + args.push_back ("-P"); + args.push_back (to_string(options.priority, std::dec)); + } + } else { + args.push_back ("-r"); + } + + if (options.unlock_gui_libs) { + args.push_back ("-u"); + } + + if (options.verbose) { + args.push_back ("-v"); + } + +#ifndef WIN32 + if (options.temporary) { + args.push_back ("-T"); + } +#endif + + string command_line_driver_name; + + if (!get_jack_command_line_audio_driver_name (options.driver, command_line_driver_name)) { + return false; + } + + args.push_back ("-d"); + args.push_back (command_line_driver_name); + + if (options.output_device.empty() && options.input_device.empty()) { + return false; + } + + string command_line_input_device_name; + string command_line_output_device_name; + + if (!get_jack_command_line_audio_device_name (options.driver, + options.input_device, command_line_input_device_name)) + { + return false; + } + + if (!get_jack_command_line_audio_device_name (options.driver, + options.output_device, command_line_output_device_name)) + { + return false; + } + + if (options.input_device.empty()) { + // playback only + if (options.output_device.empty()) { + return false; + } + args.push_back ("-P"); + } else if (options.output_device.empty()) { + // capture only + if (options.input_device.empty()) { + return false; + } + args.push_back ("-C"); + } else if (options.input_device != options.output_device) { + // capture and playback on two devices if supported + if (get_jack_audio_driver_supports_two_devices (options.driver)) { + args.push_back ("-C"); + args.push_back (command_line_input_device_name); + args.push_back ("-P"); + args.push_back (command_line_output_device_name); + } else { + return false; + } + } + + if (get_jack_audio_driver_supports_setting_period_count (options.driver)) { + args.push_back ("-n"); + args.push_back (to_string (options.num_periods, std::dec)); + } + + args.push_back ("-r"); + args.push_back (to_string (options.samplerate, std::dec)); + + args.push_back ("-p"); + args.push_back (to_string (options.period_size, std::dec)); + + if (get_jack_audio_driver_supports_latency_adjustment (options.driver)) { + if (options.input_latency) { + args.push_back ("-I"); + args.push_back (to_string (options.input_latency, std::dec)); + } + if (options.output_latency) { + args.push_back ("-0"); + args.push_back (to_string (options.output_latency, std::dec)); + } + } + + if (options.input_device == options.output_device && options.input_device != default_device_name) { + args.push_back ("-d"); + args.push_back (command_line_input_device_name); + } + + if (options.driver == alsa_driver_name) { + if (options.hardware_metering) { + args.push_back ("-M"); + } + if (options.hardware_monitoring) { + args.push_back ("-H"); + } + + string command_line_dither_mode; + if (get_jack_command_line_dither_mode (options.dither_mode, command_line_dither_mode)) { + args.push_back ("-z"); + args.push_back (command_line_dither_mode); + } + if (options.force16_bit) { + args.push_back ("-S"); + } + if (options.soft_mode) { + args.push_back ("-s"); + } + + if (!options.midi_driver.empty() && options.midi_driver != get_none_string ()) { + args.push_back ("-X"); + args.push_back (options.midi_driver); + } + } + + ostringstream oss; + + for (vector::const_iterator i = args.begin(); i != args.end();) { +#ifdef WIN32 + oss << quote_string (*i); +#else + oss << *i; +#endif + if (++i != args.end()) oss << ' '; + } + + command_line = oss.str(); + return true; +} + +string +ARDOUR::get_jack_server_config_file_name () +{ + return ".jackdrc"; +} + +std::string +ARDOUR::get_jack_server_user_config_dir_path () +{ + return Glib::get_home_dir (); +} + +std::string +ARDOUR::get_jack_server_user_config_file_path () +{ + return Glib::build_filename (get_jack_server_user_config_dir_path (), get_jack_server_config_file_name ()); +} + +bool +ARDOUR::write_jack_config_file (const std::string& config_file_path, const string& command_line) +{ + ofstream jackdrc (config_file_path.c_str()); + + if (!jackdrc) { + error << string_compose (_("cannot open JACK rc file %1 to store parameters"), config_file_path) << endmsg; + return false; + } + + jackdrc << command_line << endl; + jackdrc.close (); + return true; +} diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 07bb10f08d..d48a4d6d85 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -441,7 +441,8 @@ def build(bld): 'jack_api.cc', 'jack_connection.cc', 'jack_audiobackend.cc', - 'jack_portengine.cc' + 'jack_portengine.cc', + 'jack_utils.cc' ]) obj.cxxflags = [ '-fPIC' ] obj.name = 'jack_audiobackend' -- cgit v1.2.3 From f2ca3ecf0c2509bc0734c6faa6d99cbef8a20925 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 3 Aug 2013 16:44:13 -0400 Subject: add file --- libs/ardour/jack_api.cc | 106 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 libs/ardour/jack_api.cc diff --git a/libs/ardour/jack_api.cc b/libs/ardour/jack_api.cc new file mode 100644 index 0000000000..b05129434c --- /dev/null +++ b/libs/ardour/jack_api.cc @@ -0,0 +1,106 @@ +/* + 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. + +*/ + +#include "ardour/jack_connection.h" +#include "ardour/jack_audiobackend.h" +#include "ardour/jack_portengine.h" + +using namespace ARDOUR; + +static boost::shared_ptr backend; +static boost::shared_ptr port_engine; +static boost::shared_ptr jack_connection; + +static boost::shared_ptr +backend_factory (AudioEngine& ae) +{ + if (!jack_connection) { + return boost::shared_ptr(); + } + + if (!backend) { + backend.reset (new JACKAudioBackend (ae, jack_connection)); + } + + return backend; +} + +static boost::shared_ptr +portengine_factory (PortManager& pm) +{ + if (!jack_connection) { + return boost::shared_ptr(); + } + + if (!port_engine) { + port_engine.reset (new JACKPortEngine (pm, jack_connection)); + } + + return port_engine; +} + +static int +instantiate (const std::string& arg1, const std::string& arg2) +{ + try { + jack_connection.reset (new JackConnection (arg1, arg2)); + } catch (...) { + std::cerr << "JC failed\n"; + return -1; + } + + return 0; +} + +static int +deinstantiate () +{ + port_engine.reset (); + backend.reset (); + jack_connection.reset (); + + return 0; +} + +static bool +already_configured () +{ + return JackConnection::server_running (); +} + +extern "C" { + + + /* functions looked up using dlopen-and-cousins, and so naming scope + * must be non-mangled. + */ + + using namespace ARDOUR; + + AudioBackendInfo descriptor = { + "JACK", + instantiate, + deinstantiate, + backend_factory, + portengine_factory, + already_configured + }; + +} + -- cgit v1.2.3 From 1d50d041c98f354f4615a0aa22cb019bc638c8be Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 3 Aug 2013 16:45:07 -0400 Subject: fix problem with session exit caused by dangling unused members in AudioEngine --- libs/ardour/ardour/audioengine.h | 2 -- libs/ardour/audioengine.cc | 9 +-------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index f06890676d..994eda5a94 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -213,9 +213,7 @@ public: gain_t session_removal_gain_step; bool _running; bool _has_run; - mutable framecnt_t _buffer_size; std::map _raw_buffer_sizes; - mutable framecnt_t _frame_rate; /// number of frames between each check for changes in monitor input framecnt_t monitor_check_interval; /// time of the last monitor check in frames diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 2884f410df..49043b34f7 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -194,18 +194,14 @@ AudioEngine::process_callback (pframes_t nframes) return 0; } - cerr << "pc, srp = " << session_remove_pending << endl; - if (session_remove_pending) { /* perform the actual session removal */ - cerr << "\tsrc = " << session_removal_countdown << endl; - if (session_removal_countdown < 0) { /* fade out over 1 second */ - session_removal_countdown = _frame_rate/2; + session_removal_countdown = sample_rate()/2; session_removal_gain = 1.0; session_removal_gain_step = 1.0/session_removal_countdown; @@ -230,7 +226,6 @@ AudioEngine::process_callback (pframes_t nframes) _session = 0; session_removal_countdown = -1; // reset to "not in progress" session_remove_pending = false; - cerr << "Send removed signal\n"; session_removed.signal(); // wakes up thread that initiated session removal } } @@ -462,8 +457,6 @@ AudioEngine::died () stop_metering_thread (); _running = false; - _buffer_size = 0; - _frame_rate = 0; } int -- cgit v1.2.3 From a64908af7fd97742462b0435a335d8865683416a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 3 Aug 2013 17:47:26 -0400 Subject: fix undeclared use of cerr --- libs/ardour/jack_api.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/ardour/jack_api.cc b/libs/ardour/jack_api.cc index b05129434c..b6cf3693b5 100644 --- a/libs/ardour/jack_api.cc +++ b/libs/ardour/jack_api.cc @@ -61,7 +61,6 @@ instantiate (const std::string& arg1, const std::string& arg2) try { jack_connection.reset (new JackConnection (arg1, arg2)); } catch (...) { - std::cerr << "JC failed\n"; return -1; } -- cgit v1.2.3 From 333a3c9d02ed7ff32846a687a77a09181163eeae Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 3 Aug 2013 17:49:19 -0400 Subject: cleanup more dangling members of AudioEngine --- libs/ardour/ardour/audioengine.h | 4 ---- libs/ardour/audioengine.cc | 3 --- 2 files changed, 7 deletions(-) diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 994eda5a94..5046206542 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -212,8 +212,6 @@ public: gain_t session_removal_gain; gain_t session_removal_gain_step; bool _running; - bool _has_run; - std::map _raw_buffer_sizes; /// number of frames between each check for changes in monitor input framecnt_t monitor_check_interval; /// time of the last monitor check in frames @@ -222,8 +220,6 @@ public: framecnt_t _processed_frames; bool _freewheeling; bool _pre_freewheel_mmc_enabled; - int _usecs_per_cycle; - bool port_remove_in_progress; Glib::Threads::Thread* m_meter_thread; ProcessThread* _main_thread; diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 49043b34f7..f9bdffb94b 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -71,8 +71,6 @@ AudioEngine::AudioEngine () , _processed_frames (0) , _freewheeling (false) , _pre_freewheel_mmc_enabled (false) - , _usecs_per_cycle (0) - , port_remove_in_progress (false) , m_meter_thread (0) , _main_thread (0) { @@ -621,7 +619,6 @@ AudioEngine::start () if (_backend->start() == 0) { _running = true; - _has_run = true; last_monitor_check = 0; if (_session && _session->config.get_jack_time_master()) { -- cgit v1.2.3 From 7218bd91de3b69032e515617449702f368db59d2 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 4 Aug 2013 14:03:19 -0400 Subject: start work on the changes to EngineControl (dialog) to integrate with new backend design, and add "requires-driver" concept to AudioBackend to handle JACK specifically --- gtk2_ardour/ardev_common.sh.in | 1 + gtk2_ardour/ardour_ui.cc | 1 - gtk2_ardour/engine_dialog.cc | 877 ++++----------------------------- gtk2_ardour/engine_dialog.h | 135 +++-- libs/ardour/ardour/audio_backend.h | 31 +- libs/ardour/ardour/audioengine.h | 10 +- libs/ardour/ardour/jack_audiobackend.h | 6 + libs/ardour/audioengine.cc | 12 +- libs/ardour/jack_api.cc | 7 +- libs/ardour/jack_audiobackend.cc | 24 +- 10 files changed, 236 insertions(+), 868 deletions(-) diff --git a/gtk2_ardour/ardev_common.sh.in b/gtk2_ardour/ardev_common.sh.in index 897bfcf7c2..2bd9c51515 100644 --- a/gtk2_ardour/ardev_common.sh.in +++ b/gtk2_ardour/ardev_common.sh.in @@ -17,6 +17,7 @@ export ARDOUR_DATA_PATH=$TOP:$TOP/build:$TOP/gtk2_ardour:$TOP/build/gtk2_ardour: export ARDOUR_MIDIMAPS_PATH=$TOP/midi_maps:. export ARDOUR_MCP_PATH=$TOP/mcp:. export ARDOUR_EXPORT_FORMATS_PATH=$TOP/export:. +export ARDOUR_BACKEND_PATH=$TOP/build/libs/ardour # # even though we set the above variables, ardour requires that these diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 7e6ce10300..fca86c585b 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -397,7 +397,6 @@ ARDOUR_UI::attach_to_engine () engine->SampleRateChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::update_sample_rate, this, _1), gui_context()); engine->Halted.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); - engine->BackendAvailable.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::post_engine, this)); ARDOUR::Port::set_connecting_blocked (ARDOUR_COMMAND_LINE::no_connect_ports); diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index b52d3a7a15..b4e5c72050 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -66,33 +66,25 @@ using namespace PBD; using namespace Glib; EngineControl::EngineControl () - : periods_adjustment (2, 2, 16, 1, 2), - periods_spinner (periods_adjustment), - ports_adjustment (128, 8, 1024, 1, 16), - ports_spinner (ports_adjustment), - input_latency_adjustment (0, 0, 99999, 1), - input_latency (input_latency_adjustment), - output_latency_adjustment (0, 0, 99999, 1), - output_latency (output_latency_adjustment), - realtime_button (_("Realtime")), - no_memory_lock_button (_("Do not lock memory")), - unlock_memory_button (_("Unlock memory")), - soft_mode_button (_("No zombies")), - monitor_button (_("Provide monitor ports")), - force16bit_button (_("Force 16 bit")), - hw_monitor_button (_("H/W monitoring")), - hw_meter_button (_("H/W metering")), - verbose_output_button (_("Verbose output")), - start_button (_("Start")), - stop_button (_("Stop")), + : input_latency_adjustment (0, 0, 99999, 1) + , input_latency (input_latency_adjustment) + , output_latency_adjustment (0, 0, 99999, 1) + , output_latency (output_latency_adjustment) + , input_channels_adjustment (2, 0, 256, 1) + , input_channels (input_channels_adjustment) + , output_channels_adjustment (2, 0, 256, 1) + , output_channels (output_channels_adjustment) + , ports_adjustment (128, 8, 1024, 1, 16) + , ports_spinner (ports_adjustment) + , realtime_button (_("Realtime")) #ifdef __APPLE___ - basic_packer (5, 2), - options_packer (4, 2), - device_packer (4, 2) + , basic_packer (6, 2) + , options_packer (4, 2) + , device_packer (4, 2) #else - basic_packer (8, 2), - options_packer (14, 2), - device_packer (6, 2) + , basic_packer (9, 2) + , options_packer (14, 2) + , device_packer (6, 2) #endif { using namespace Notebook_Helpers; @@ -102,59 +94,24 @@ EngineControl::EngineControl () _used = false; - strings.push_back (_("8000Hz")); - strings.push_back (_("22050Hz")); - strings.push_back (_("44100Hz")); - strings.push_back (_("48000Hz")); - strings.push_back (_("88200Hz")); - strings.push_back (_("96000Hz")); - strings.push_back (_("192000Hz")); - set_popdown_strings (sample_rate_combo, strings); - sample_rate_combo.set_active_text ("48000Hz"); + /* basic parameters */ - strings.clear (); - strings.push_back ("32"); - strings.push_back ("64"); - strings.push_back ("128"); - strings.push_back ("256"); - strings.push_back ("512"); - strings.push_back ("1024"); - strings.push_back ("2048"); - strings.push_back ("4096"); - strings.push_back ("8192"); - set_popdown_strings (period_size_combo, strings); - period_size_combo.set_active_text ("1024"); + basic_packer.set_spacings (6); strings.clear (); - strings.push_back (_("None")); - strings.push_back (_("Triangular")); - strings.push_back (_("Rectangular")); - strings.push_back (_("Shaped")); - set_popdown_strings (dither_mode_combo, strings); - dither_mode_combo.set_active_text (_("None")); - /* basic parameters */ + vector backends = ARDOUR::AudioEngine::instance()->available_backends(); + for (vector::const_iterator b = backends.begin(); b != backends.end(); ++b) { + strings.push_back ((*b)->name); + } - basic_packer.set_spacings (6); + set_popdown_strings (backend_combo, strings); + backend_combo.set_active_text (strings.front()); - strings.clear (); -#ifdef __APPLE__ - strings.push_back (X_("CoreAudio")); -#else -#ifndef __FreeBSD__ - strings.push_back (X_("ALSA")); -#endif - strings.push_back (X_("OSS")); - strings.push_back (X_("FreeBoB")); - strings.push_back (X_("FFADO")); -#endif - strings.push_back (X_("NetJACK")); - strings.push_back (X_("Dummy")); - set_popdown_strings (driver_combo, strings); - driver_combo.set_active_text (strings.front()); + backend_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::backend_changed)); + backend_changed (); driver_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::driver_changed)); - driver_changed (); strings.clear (); strings.push_back (_("Playback/recording on 1 device")); @@ -176,6 +133,11 @@ EngineControl::EngineControl () row = 0; + label = manage (left_aligned_label (_("Audio Driver:"))); + basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); + basic_packer.attach (backend_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); + row++; + label = manage (left_aligned_label (_("Driver:"))); basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); basic_packer.attach (driver_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); @@ -193,16 +155,8 @@ EngineControl::EngineControl () label = manage (left_aligned_label (_("Buffer size:"))); basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (period_size_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - row++; - -#if !defined(__APPLE__) && !defined(__FreeBSD__) - label = manage (left_aligned_label (_("Number of buffers:"))); - basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (periods_spinner, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - periods_spinner.set_value (2); + basic_packer.attach (buffer_size_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); row++; -#endif label = manage (left_aligned_label (_("Approximate latency:"))); basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); @@ -210,8 +164,7 @@ EngineControl::EngineControl () row++; sample_rate_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::redisplay_latency)); - periods_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &EngineControl::redisplay_latency)); - period_size_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::redisplay_latency)); + buffer_size_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::redisplay_latency)); redisplay_latency(); row++; /* no audio mode with CoreAudio, its duplex or nuthin' */ @@ -227,22 +180,7 @@ EngineControl::EngineControl () input_device_combo.set_size_request (250, -1); output_device_combo.set_size_request (250, -1); - /* - - if (engine_running()) { - start_button.set_sensitive (false); - } else { - stop_button.set_sensitive (false); - } - - start_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::start_engine)); - stop_button.signal_clicked().connect (sigc::mem_fun (*this, &EngineControl::start_engine)); - */ - - button_box.pack_start (start_button, false, false); - button_box.pack_start (stop_button, false, false); - - // basic_packer.attach (button_box, 0, 2, 8, 9, FILL|EXPAND, (AttachOptions) 0); + interface_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::interface_changed)); /* options */ @@ -254,46 +192,6 @@ EngineControl::EngineControl () realtime_button.set_active (true); -#if PROVIDE_TOO_MANY_OPTIONS - -#if !defined(__APPLE__) && !defined(__FreeBSD__) - options_packer.attach (no_memory_lock_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - options_packer.attach (unlock_memory_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - options_packer.attach (soft_mode_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - options_packer.attach (monitor_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - options_packer.attach (force16bit_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - options_packer.attach (hw_monitor_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - options_packer.attach (hw_meter_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - options_packer.attach (verbose_output_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; -#else - options_packer.attach (verbose_output_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; -#endif - - strings.clear (); - strings.push_back (_("Ignore")); - strings.push_back ("500 msec"); - strings.push_back ("1 sec"); - strings.push_back ("2 sec"); - strings.push_back ("10 sec"); - set_popdown_strings (timeout_combo, strings); - timeout_combo.set_active_text (strings.front ()); - - label = manage (new Label (_("Client timeout"))); - label->set_alignment (1.0, 0.5); - options_packer.attach (timeout_combo, 1, 2, row, row + 1, FILL|EXPAND, AttachOptions(0)); - options_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - -#endif /* PROVIDE_TOO_MANY_OPTIONS */ label = manage (left_aligned_label (_("Number of ports:"))); options_packer.attach (ports_spinner, 1, 2, row, row + 1, FILL|EXPAND, AttachOptions(0)); options_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); @@ -311,23 +209,6 @@ EngineControl::EngineControl () ++row; #endif - find_jack_servers (server_strings); - - if (server_strings.empty()) { - fatal << _("No JACK server found anywhere on this system. Please install JACK and restart") << endmsg; - /*NOTREACHED*/ - } - - set_popdown_strings (serverpath_combo, server_strings); - serverpath_combo.set_active_text (server_strings.front()); - - if (server_strings.size() > 1) { - label = manage (left_aligned_label (_("Server:"))); - options_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - options_packer.attach (serverpath_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - } - /* device settings */ device_packer.set_spacings (6); @@ -386,514 +267,93 @@ EngineControl::~EngineControl () } void -EngineControl::build_command_line (vector& cmd) +EngineControl::backend_changed () { - string str; - string driver; - bool using_alsa = false; - bool using_coreaudio = false; - bool using_dummy = false; - bool using_ffado = false; - - /* first, path to jackd */ - - cmd.push_back (serverpath_combo.get_active_text ()); - - /* now jackd arguments */ - - str = timeout_combo.get_active_text (); + string backend_name = backend_combo.get_active_text(); + boost::shared_ptr backend; - if (str != _("Ignore")) { - - double secs = 0; - uint32_t msecs; - secs = atof (str); - msecs = (uint32_t) floor (secs * 1000.0); - - if (msecs > 0) { - cmd.push_back ("-t"); - cmd.push_back (to_string (msecs, std::dec)); - } - } - - if (no_memory_lock_button.get_active()) { - cmd.push_back ("-m"); /* no munlock */ + if (!(backend = ARDOUR::AudioEngine::instance()->set_backend (backend_name, "ardour", ""))) { + /* eh? */ + return; } - cmd.push_back ("-p"); /* port max */ - cmd.push_back (to_string ((uint32_t) floor (ports_spinner.get_value()), std::dec)); - - if (realtime_button.get_active()) { - cmd.push_back ("-R"); + if (backend->requires_driver_selection()) { + vector drivers = backend->enumerate_drivers(); + set_popdown_strings (driver_combo, drivers); + driver_combo.set_active_text (drivers.front()); + driver_changed (); } else { - cmd.push_back ("-r"); /* override jackd's default --realtime */ - } - - if (unlock_memory_button.get_active()) { - cmd.push_back ("-u"); - } - - if (verbose_output_button.get_active()) { - cmd.push_back ("-v"); + list_devices (); } - - /* now add fixed arguments (not user-selectable) */ - - cmd.push_back ("-T"); // temporary */ - - /* next the driver */ - - cmd.push_back ("-d"); - - driver = driver_combo.get_active_text (); - - if (driver == X_("ALSA")) { - using_alsa = true; - cmd.push_back ("alsa"); - } else if (driver == X_("OSS")) { - cmd.push_back ("oss"); - } else if (driver == X_("CoreAudio")) { - using_coreaudio = true; - cmd.push_back ("coreaudio"); - } else if (driver == X_("NetJACK")) { - cmd.push_back ("netjack"); - } else if (driver == X_("FreeBoB")) { - cmd.push_back ("freebob"); - } else if (driver == X_("FFADO")) { - using_ffado = true; - cmd.push_back ("firewire"); - } else if ( driver == X_("Dummy")) { - using_dummy = true; - cmd.push_back ("dummy"); - } - - /* driver arguments */ - - if (!using_coreaudio) { - str = audio_mode_combo.get_active_text(); - - if (str == _("Playback/recording on 1 device")) { - - /* relax */ - - } else if (str == _("Playback/recording on 2 devices")) { - - string input_device = get_device_name (driver, input_device_combo.get_active_text()); - string output_device = get_device_name (driver, output_device_combo.get_active_text()); - - if (input_device.empty() || output_device.empty()) { - cmd.clear (); - return; - } - - cmd.push_back ("-C"); - cmd.push_back (input_device); - - cmd.push_back ("-P"); - cmd.push_back (output_device); - - } else if (str == _("Playback only")) { - cmd.push_back ("-P"); - } else if (str == _("Recording only")) { - cmd.push_back ("-C"); - } - - if (!using_dummy) { - cmd.push_back ("-n"); - cmd.push_back (to_string ((uint32_t) floor (periods_spinner.get_value()), std::dec)); - } - } - - cmd.push_back ("-r"); - cmd.push_back (to_string (get_rate(), std::dec)); - - cmd.push_back ("-p"); - cmd.push_back (period_size_combo.get_active_text()); - - if (using_alsa || using_ffado || using_coreaudio) { - - double val = input_latency_adjustment.get_value(); - - if (val) { - cmd.push_back ("-I"); - cmd.push_back (to_string ((uint32_t) val, std::dec)); - } - - val = output_latency_adjustment.get_value(); - - if (val) { - cmd.push_back ("-O"); - cmd.push_back (to_string ((uint32_t) val, std::dec)); - } - } - - if (using_alsa) { - - if (audio_mode_combo.get_active_text() != _("Playback/recording on 2 devices")) { - - string device = get_device_name (driver, interface_combo.get_active_text()); - if (device.empty()) { - cmd.clear (); - return; - } - - cmd.push_back ("-d"); - cmd.push_back (device); - } - - if (hw_meter_button.get_active()) { - cmd.push_back ("-M"); - } - - if (hw_monitor_button.get_active()) { - cmd.push_back ("-H"); - } - - str = dither_mode_combo.get_active_text(); - - if (str == _("None")) { - } else if (str == _("Triangular")) { - cmd.push_back ("-z triangular"); - } else if (str == _("Rectangular")) { - cmd.push_back ("-z rectangular"); - } else if (str == _("Shaped")) { - cmd.push_back ("-z shaped"); - } - - if (force16bit_button.get_active()) { - cmd.push_back ("-S"); - } - - if (soft_mode_button.get_active()) { - cmd.push_back ("-s"); - } - - str = midi_driver_combo.get_active_text (); - - if (str == _("seq")) { - cmd.push_back ("-X seq"); - } else if (str == _("raw")) { - cmd.push_back ("-X raw"); - } - } else if (using_coreaudio) { - -#ifdef __APPLE__ - // note: older versions of the CoreAudio JACK backend use -n instead of -d here - - string device = get_device_name (driver, interface_combo.get_active_text()); - if (device.empty()) { - cmd.clear (); - return; - } - - cmd.push_back ("-d"); - cmd.push_back (device); -#endif - - } -} - -int -EngineControl::setup_engine () -{ - vector args; - std::string cwd = "/tmp"; - - build_command_line (args); - - if (args.empty()) { - return 1; // try again - } - - std::string jackdrc_path = Glib::get_home_dir(); - jackdrc_path += "/.jackdrc"; - - ofstream jackdrc (jackdrc_path.c_str()); - if (!jackdrc) { - error << string_compose (_("cannot open JACK rc file %1 to store parameters"), jackdrc_path) << endmsg; - return -1; - } - - for (vector::iterator i = args.begin(); i != args.end(); ++i) { - jackdrc << (*i) << ' '; - } - - jackdrc << endl; - jackdrc.close (); - - _used = true; - - return 0; } void -EngineControl::enumerate_devices (const string& driver) -{ - /* note: case matters for the map keys */ - - if (driver == "CoreAudio") { -#ifdef __APPLE__ - devices[driver] = enumerate_coreaudio_devices (); -#endif - -#if !defined(__APPLE__) && !defined(__FreeBSD__) - } else if (driver == "ALSA") { - devices[driver] = enumerate_alsa_devices (); - } else if (driver == "FreeBOB") { - devices[driver] = enumerate_freebob_devices (); - } else if (driver == "FFADO") { - devices[driver] = enumerate_ffado_devices (); - } else if (driver == "OSS") { - devices[driver] = enumerate_oss_devices (); - } else if (driver == "Dummy") { - devices[driver] = enumerate_dummy_devices (); - } else if (driver == "NetJACK") { - devices[driver] = enumerate_netjack_devices (); - } -#else - } -#endif -} - -#ifdef __APPLE__ -static OSStatus -getDeviceUIDFromID( AudioDeviceID id, char *name, size_t nsize) -{ - UInt32 size = sizeof(CFStringRef); - CFStringRef UI; - OSStatus res = AudioDeviceGetProperty(id, 0, false, - kAudioDevicePropertyDeviceUID, &size, &UI); - if (res == noErr) - CFStringGetCString(UI,name,nsize,CFStringGetSystemEncoding()); - CFRelease(UI); - return res; -} - -vector -EngineControl::enumerate_coreaudio_devices () -{ - vector devs; - - // Find out how many Core Audio devices are there, if any... - // (code snippet gently "borrowed" from St?hane Letz jackdmp;) - OSStatus err; - Boolean isWritable; - UInt32 outSize = sizeof(isWritable); - - backend_devs.clear (); - - err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, - &outSize, &isWritable); - if (err == noErr) { - // Calculate the number of device available... - int numCoreDevices = outSize / sizeof(AudioDeviceID); - // Make space for the devices we are about to get... - AudioDeviceID *coreDeviceIDs = new AudioDeviceID [numCoreDevices]; - err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, - &outSize, (void *) coreDeviceIDs); - if (err == noErr) { - // Look for the CoreAudio device name... - char coreDeviceName[256]; - UInt32 nameSize; - - for (int i = 0; i < numCoreDevices; i++) { - - nameSize = sizeof (coreDeviceName); - - /* enforce duplex devices only */ - - err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], - 0, true, kAudioDevicePropertyStreams, - &outSize, &isWritable); - - if (err != noErr || outSize == 0) { - continue; - } - - err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], - 0, false, kAudioDevicePropertyStreams, - &outSize, &isWritable); - - if (err != noErr || outSize == 0) { - continue; - } - - err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], - 0, true, kAudioDevicePropertyDeviceName, - &outSize, &isWritable); - if (err == noErr) { - err = AudioDeviceGetProperty(coreDeviceIDs[i], - 0, true, kAudioDevicePropertyDeviceName, - &nameSize, (void *) coreDeviceName); - if (err == noErr) { - char drivername[128]; - - // this returns the unique id for the device - // that must be used on the commandline for jack - - if (getDeviceUIDFromID(coreDeviceIDs[i], drivername, sizeof (drivername)) == noErr) { - devs.push_back (coreDeviceName); - backend_devs.push_back (drivername); - } - } - } - } - } - delete [] coreDeviceIDs; - } - - - if (devs.size() == 0) { - MessageDialog msg (string_compose (_("\ -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." - ), PROGRAM_NAME), - true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK); - msg.set_title (_("No suitable audio devices")); - msg.set_position (Gtk::WIN_POS_MOUSE); - msg.run (); - exit (1); - } - - - return devs; -} -#else - -#if !defined(__FreeBSD__) -vector -EngineControl::enumerate_alsa_devices () +EngineControl::list_devices () { - vector devs; - - snd_ctl_t *handle; - snd_ctl_card_info_t *info; - snd_pcm_info_t *pcminfo; - snd_ctl_card_info_alloca(&info); - snd_pcm_info_alloca(&pcminfo); - string devname; - int cardnum = -1; - int device = -1; - - backend_devs.clear (); - - while (snd_card_next (&cardnum) >= 0 && cardnum >= 0) { - - devname = "hw:"; - devname += to_string (cardnum, std::dec); - - if (snd_ctl_open (&handle, devname.c_str(), 0) >= 0 && snd_ctl_card_info (handle, info) >= 0) { - - while (snd_ctl_pcm_next_device (handle, &device) >= 0 && device >= 0) { + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + assert (backend); - snd_pcm_info_set_device (pcminfo, device); - snd_pcm_info_set_subdevice (pcminfo, 0); - snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_PLAYBACK); - - if (snd_ctl_pcm_info (handle, pcminfo) >= 0) { - devs.push_back (snd_pcm_info_get_name (pcminfo)); - devname += ','; - devname += to_string (device, std::dec); - backend_devs.push_back (devname); - } - } - - snd_ctl_close(handle); - } - } - - return devs; -} -#endif - -vector -EngineControl::enumerate_ffado_devices () -{ - vector devs; - backend_devs.clear (); - return devs; + /* now fill out devices, mark sample rates, buffer sizes insensitive */ + + vector devices = backend->enumerate_devices (); + + set_popdown_strings (interface_combo, devices); + interface_combo.set_active_text (devices.front()); + set_popdown_strings (input_device_combo, devices); + input_device_combo.set_active_text (devices.front()); + set_popdown_strings (output_device_combo, devices); + output_device_combo.set_active_text (devices.front()); + + interface_changed (); } - -vector -EngineControl::enumerate_freebob_devices () + +void +EngineControl::driver_changed () { - vector devs; - return devs; -} + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + assert (backend); -vector -EngineControl::enumerate_oss_devices () -{ - vector devs; - return devs; -} -vector -EngineControl::enumerate_dummy_devices () -{ - vector devs; - return devs; -} -vector -EngineControl::enumerate_netjack_devices () -{ - vector devs; - return devs; + backend->set_driver (driver_combo.get_active_text()); + list_devices (); } -#endif void -EngineControl::driver_changed () +EngineControl::interface_changed () { - string driver = driver_combo.get_active_text(); - string::size_type maxlen = 0; - int n = 0; - - enumerate_devices (driver); - - vector& strings = devices[driver]; - - if (strings.empty() && driver != "FreeBoB" && driver != "FFADO" && driver != "Dummy") { - return; - } - - for (vector::iterator i = strings.begin(); i != strings.end(); ++i, ++n) { - if ((*i).length() > maxlen) { - maxlen = (*i).length(); + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + assert (backend); + string device_name = interface_combo.get_active_text (); + vector s; + + /* sample rates */ + + vector sr = backend->available_sample_rates (device_name); + for (vector::const_iterator x = sr.begin(); x != sr.end(); ++x) { + char buf[32]; + if (fmod (*x, 1000.0f)) { + snprintf (buf, sizeof (buf), "%.1f kHz", (*x)/1000.0); + } else { + snprintf (buf, sizeof (buf), "%.0f kHz", (*x)/1000.0); } + s.push_back (buf); } - set_popdown_strings (interface_combo, strings); - set_popdown_strings (input_device_combo, strings); - set_popdown_strings (output_device_combo, strings); + set_popdown_strings (sample_rate_combo, s); + sample_rate_combo.set_active_text (s.front()); - if (!strings.empty()) { - interface_combo.set_active_text (strings.front()); - input_device_combo.set_active_text (strings.front()); - output_device_combo.set_active_text (strings.front()); - } + /* buffer sizes */ - if (driver == "ALSA") { - soft_mode_button.set_sensitive (true); - force16bit_button.set_sensitive (true); - hw_monitor_button.set_sensitive (true); - hw_meter_button.set_sensitive (true); - monitor_button.set_sensitive (true); - } else { - soft_mode_button.set_sensitive (false); - force16bit_button.set_sensitive (false); - hw_monitor_button.set_sensitive (false); - hw_meter_button.set_sensitive (false); - monitor_button.set_sensitive (false); + s.clear (); + vector bs = backend->available_buffer_sizes(device_name); + for (vector::const_iterator x = bs.begin(); x != bs.end(); ++x) { + char buf[32]; + snprintf (buf, sizeof (buf), "%u", *x); + s.push_back (buf); } -} + + set_popdown_strings (buffer_size_combo, s); + buffer_size_combo.set_active_text (s.front()); +} uint32_t EngineControl::get_rate () @@ -912,15 +372,10 @@ void EngineControl::redisplay_latency () { uint32_t rate = get_rate(); -#if defined(__APPLE__) || defined(__FreeBSD__) - float periods = 2; -#else - float periods = periods_adjustment.get_value(); -#endif - float period_size = atof (period_size_combo.get_active_text()); + float period_size = atof (buffer_size_combo.get_active_text()); char buf[32]; - snprintf (buf, sizeof(buf), "%.1fmsec", (periods * period_size) / (rate/1000.0)); + snprintf (buf, sizeof(buf), "%.1fmsec", (2 * period_size) / (rate/1000.0)); latency_label.set_text (buf); latency_label.set_alignment (0, 0.5); @@ -946,127 +401,6 @@ EngineControl::audio_mode_changed () } } -static bool jack_server_filter(const string& str, void */*arg*/) -{ - return str == "jackd" || str == "jackdmp"; -} - -void -EngineControl::find_jack_servers (vector& strings) -{ -#ifdef __APPLE__ - /* this magic lets us finds the path to the OSX bundle, and then - we infer JACK's location from there - */ - - char execpath[MAXPATHLEN+1]; - uint32_t pathsz = sizeof (execpath); - - _NSGetExecutablePath (execpath, &pathsz); - - string path (Glib::path_get_dirname (execpath)); - path += "/jackd"; - - if (Glib::file_test (path, FILE_TEST_EXISTS)) { - strings.push_back (path); - } - - if (getenv ("ARDOUR_WITH_JACK")) { - /* no other options - only use the JACK we supply */ - if (strings.empty()) { - fatal << string_compose (_("JACK appears to be missing from the %1 bundle"), PROGRAM_NAME) << endmsg; - /*NOTREACHED*/ - } - return; - } -#else - string path; -#endif - - PathScanner scanner; - vector *jack_servers; - std::map un; - char *p; - bool need_minimal_path = false; - - p = getenv ("PATH"); - - if (p && *p) { - path = p; - } else { - need_minimal_path = true; - } - -#ifdef __APPLE__ - // many mac users don't have PATH set up to include - // likely installed locations of JACK - need_minimal_path = true; -#endif - - if (need_minimal_path) { - if (path.empty()) { - path = "/usr/bin:/bin:/usr/local/bin:/opt/local/bin"; - } else { - path += ":/usr/local/bin:/opt/local/bin"; - } - } - -#ifdef __APPLE__ - // push it back into the environment so that auto-started JACK can find it. - // XXX why can't we just expect OS X users to have PATH set correctly? we can't ... - setenv ("PATH", path.c_str(), 1); -#endif - - jack_servers = scanner (path, jack_server_filter, 0, false, true); - if (!jack_servers) { - return; - } - - vector::iterator iter; - - for (iter = jack_servers->begin(); iter != jack_servers->end(); iter++) { - string p = **iter; - - if (un[p]++ == 0) { - strings.push_back(p); - } - } -} - - -string -EngineControl::get_device_name (const string& driver, const string& human_readable) -{ - vector::iterator n; - vector::iterator i; - - if (human_readable.empty()) { - /* this can happen if the user's .ardourrc file has a device name from - another computer system in it - */ - MessageDialog msg (_("You need to choose an audio device first.")); - msg.set_position (WIN_POS_MOUSE); - msg.run (); - return string(); - } - - if (backend_devs.empty()) { - return human_readable; - } - - for (i = devices[driver].begin(), n = backend_devs.begin(); i != devices[driver].end(); ++i, ++n) { - if (human_readable == (*i)) { - return (*n); - } - } - - if (i == devices[driver].end()) { - warning << string_compose (_("Audio device \"%1\" not known on this computer."), human_readable) << endmsg; - } - - return string(); -} - XMLNode& EngineControl::get_state () { @@ -1074,6 +408,7 @@ EngineControl::get_state () XMLNode* child; std::string path; +#if 0 child = new XMLNode ("periods"); child->add_property ("val", to_string (periods_adjustment.get_value(), std::dec)); root->add_child_nocopy (*child); @@ -1165,7 +500,7 @@ EngineControl::get_state () child = new XMLNode ("mididriver"); child->add_property ("val", midi_driver_combo.get_active_text()); root->add_child_nocopy (*child); - +#endif return *root; } @@ -1181,7 +516,7 @@ EngineControl::set_state (const XMLNode& root) int val; string strval; - +#if 0 if ( (child = root.child ("driver"))){ prop = child->property("val"); @@ -1316,4 +651,10 @@ EngineControl::set_state (const XMLNode& root) midi_driver_combo.set_active_text(strval); } } +#endif +} + +int +EngineControl::setup_engine () +{ } diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 0d7ce29b46..ac96fbc520 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -47,80 +47,67 @@ class EngineControl : public Gtk::VBox { void set_state (const XMLNode&); private: - Gtk::Adjustment periods_adjustment; - Gtk::SpinButton periods_spinner; - Gtk::Adjustment ports_adjustment; - Gtk::SpinButton ports_spinner; - Gtk::Adjustment input_latency_adjustment; - Gtk::SpinButton input_latency; - Gtk::Adjustment output_latency_adjustment; - Gtk::SpinButton output_latency; - Gtk::Label latency_label; - - Gtk::CheckButton realtime_button; - Gtk::CheckButton no_memory_lock_button; - Gtk::CheckButton unlock_memory_button; - Gtk::CheckButton soft_mode_button; - Gtk::CheckButton monitor_button; - Gtk::CheckButton force16bit_button; - Gtk::CheckButton hw_monitor_button; - Gtk::CheckButton hw_meter_button; - Gtk::CheckButton verbose_output_button; - - Gtk::Button start_button; - Gtk::Button stop_button; - Gtk::HButtonBox button_box; - - Gtk::ComboBoxText sample_rate_combo; - Gtk::ComboBoxText period_size_combo; - - Gtk::ComboBoxText preset_combo; - Gtk::ComboBoxText serverpath_combo; - Gtk::ComboBoxText driver_combo; - Gtk::ComboBoxText interface_combo; - Gtk::ComboBoxText timeout_combo; - Gtk::ComboBoxText dither_mode_combo; - Gtk::ComboBoxText audio_mode_combo; - Gtk::ComboBoxText input_device_combo; - Gtk::ComboBoxText output_device_combo; - Gtk::ComboBoxText midi_driver_combo; - - Gtk::Table basic_packer; - Gtk::Table options_packer; - Gtk::Table device_packer; - Gtk::HBox basic_hbox; - Gtk::HBox options_hbox; - Gtk::HBox device_hbox; - Gtk::Notebook notebook; - - bool _used; - - static bool engine_running (); - - void driver_changed (); - void build_command_line (std::vector&); - - std::map > devices; - std::vector backend_devs; - void enumerate_devices (const std::string& driver); - -#ifdef __APPLE__ - std::vector enumerate_coreaudio_devices (); -#else - std::vector enumerate_alsa_devices (); - std::vector enumerate_oss_devices (); - std::vector enumerate_netjack_devices (); - std::vector enumerate_freebob_devices (); - std::vector enumerate_ffado_devices (); - std::vector enumerate_dummy_devices (); -#endif - - void redisplay_latency (); - uint32_t get_rate(); - void audio_mode_changed (); - std::vector server_strings; - void find_jack_servers (std::vector&); - std::string get_device_name (const std::string& driver, const std::string& human_readable_name); + /* core fields used by all backends */ + + Gtk::ComboBoxText backend_combo; + Gtk::ComboBoxText input_device_combo; + Gtk::ComboBoxText output_device_combo; + Gtk::ComboBoxText sample_rate_combo; + Gtk::ComboBoxText buffer_size_combo; + Gtk::Adjustment input_latency_adjustment; + Gtk::SpinButton input_latency; + Gtk::Adjustment output_latency_adjustment; + Gtk::SpinButton output_latency; + Gtk::Adjustment input_channels_adjustment; + Gtk::SpinButton input_channels; + Gtk::Adjustment output_channels_adjustment; + Gtk::SpinButton output_channels; + Gtk::Adjustment ports_adjustment; + Gtk::SpinButton ports_spinner; + Gtk::Label latency_label; + + /* JACK specific */ + + Gtk::CheckButton realtime_button; + Gtk::CheckButton no_memory_lock_button; + Gtk::CheckButton unlock_memory_button; + Gtk::CheckButton soft_mode_button; + Gtk::CheckButton monitor_button; + Gtk::CheckButton force16bit_button; + Gtk::CheckButton hw_monitor_button; + Gtk::CheckButton hw_meter_button; + Gtk::CheckButton verbose_output_button; + + + Gtk::ComboBoxText preset_combo; + Gtk::ComboBoxText serverpath_combo; + Gtk::ComboBoxText driver_combo; + Gtk::ComboBoxText interface_combo; + Gtk::ComboBoxText timeout_combo; + Gtk::ComboBoxText dither_mode_combo; + Gtk::ComboBoxText audio_mode_combo; + Gtk::ComboBoxText midi_driver_combo; + + Gtk::Table basic_packer; + Gtk::Table options_packer; + Gtk::Table device_packer; + Gtk::HBox basic_hbox; + Gtk::HBox options_hbox; + Gtk::HBox device_hbox; + Gtk::Notebook notebook; + + bool _used; + + static bool engine_running (); + + void driver_changed (); + void backend_changed (); + + void redisplay_latency (); + uint32_t get_rate(); + void audio_mode_changed (); + void interface_changed (); + void list_devices (); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 18c8cb8931..08dd7fb0b5 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -68,6 +68,33 @@ class AudioBackend { /* Discovering devices and parameters */ + /** Return true if this backend requires the selection of a "driver" + * before any device can be selected. Return false otherwise. + * + * Intended mainly to differentiate between meta-APIs like JACK + * which can still expose different backends (such as ALSA or CoreAudio + * or FFADO or netjack) and those like ASIO or CoreAudio which + * do not. + */ + virtual bool requires_driver_selection() const { return false; } + + /** If the return value of requires_driver_selection() is true, + * then this function can return the list of known driver names. + * + * If the return value of requires_driver_selection() is false, + * then this function should not be called. If it is called + * its return value is an empty vector of strings. + */ + virtual std::vector enumerate_drivers() const { return std::vector(); } + + /** Returns zero if the backend can successfully use @param name as the + * driver, non-zero otherwise. + * + * Should not be used unless the backend returns true from + * requires_driver_selection() + */ + virtual int set_driver (const std::string& /*drivername*/) { return 0; } + /** Returns a collection of strings identifying devices known * to this backend. Any of these strings may be used to identify a * device in other calls to the backend, though any of them may become @@ -358,8 +385,8 @@ struct AudioBackendInfo { * configured and does not need (re)configuration in order * to be usable. Return false otherwise. * - * Note that this may return true if (re)configuration is possible, - * but not required. + * Note that this may return true if (re)configuration, even though + * not currently required, is still possible. */ bool (*already_configured)(); }; diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 5046206542..6fb13b7ae0 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -74,7 +74,8 @@ public: int discover_backends(); std::vector available_backends() const; std::string current_backend_name () const; - int set_backend (const std::string&, const std::string& arg1, const std::string& arg2); + boost::shared_ptr set_backend (const std::string&, const std::string& arg1, const std::string& arg2); + boost::shared_ptr current_backend() const { return _backend; } bool setup_required () const; ProcessThread* main_thread() const { return _main_thread; } @@ -172,13 +173,6 @@ public: PBD::Signal0 Running; PBD::Signal0 Stopped; - /* these two are emitted as we create backends that - can actually be used to do stuff (e.g. register ports) - */ - - PBD::Signal0 BackendAvailable; - PBD::Signal0 BackendRemoved; - static AudioEngine* instance() { return _instance; } static void destroy(); void died (); diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 4fef602119..59b5b88105 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -49,7 +49,12 @@ class JACKAudioBackend : public AudioBackend { bool connected() const; bool is_realtime () const; + bool requires_driver_selection() const; + std::vector enumerate_drivers () const; + int set_driver (const std::string&); + std::vector enumerate_devices () const; + std::vector available_sample_rates (const std::string& device) const; std::vector available_buffer_sizes (const std::string& device) const; uint32_t available_input_channel_count (const std::string& device) const; @@ -151,6 +156,7 @@ class JACKAudioBackend : public AudioBackend { /* pffooo */ + std::string _target_driver; std::string _target_device; float _target_sample_rate; uint32_t _target_buffer_size; diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index f9bdffb94b..0c88e7c0fd 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -561,18 +561,16 @@ AudioEngine::drop_backend () if (_backend) { _backend->stop (); _backend.reset (); - - BackendRemoved(); /* EMIT SIGNAL */ } } -int +boost::shared_ptr AudioEngine::set_backend (const std::string& name, const std::string& arg1, const std::string& arg2) { BackendMap::iterator b = _backends.find (name); if (b == _backends.end()) { - return -1; + return boost::shared_ptr(); } drop_backend (); @@ -590,12 +588,10 @@ AudioEngine::set_backend (const std::string& name, const std::string& arg1, cons } catch (exception& e) { error << string_compose (_("Could not create backend for %1: %2"), name, e.what()) << endmsg; - return -1; + return boost::shared_ptr(); } - BackendAvailable (); /* EMIT SIGNAL */ - - return 0; + return _backend; } /* BACKEND PROXY WRAPPERS */ diff --git a/libs/ardour/jack_api.cc b/libs/ardour/jack_api.cc index b6cf3693b5..fcfc499107 100644 --- a/libs/ardour/jack_api.cc +++ b/libs/ardour/jack_api.cc @@ -90,16 +90,13 @@ extern "C" { * must be non-mangled. */ - using namespace ARDOUR; - - AudioBackendInfo descriptor = { + ARDOUR::AudioBackendInfo descriptor = { "JACK", instantiate, deinstantiate, backend_factory, portengine_factory, - already_configured + already_configured, }; - } diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index ed412f3f5a..97031cfaff 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -88,11 +88,31 @@ JACKAudioBackend::is_realtime () const return jack_is_realtime (_priv_jack); } +bool +JACKAudioBackend::requires_driver_selection() const +{ + return true; +} + +vector +JACKAudioBackend::enumerate_drivers () const +{ + vector s; + get_jack_audio_driver_names (s); + return s; +} + +int +JACKAudioBackend::set_driver (const std::string& name) +{ + _target_driver = name; + return 0; +} + vector JACKAudioBackend::enumerate_devices () const { - vector devices; - return devices; + return get_jack_device_names_for_audio_driver (_target_driver); } vector -- cgit v1.2.3 From a66e3859e1415cb992320089004eb8a9903cf721 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 5 Aug 2013 12:51:51 -0400 Subject: can now start JACK based on config dialog --- gtk2_ardour/ardour_ui.cc | 32 +-------- gtk2_ardour/engine_dialog.cc | 151 ++++++++++++++++++++++++++++++--------- gtk2_ardour/engine_dialog.h | 13 +++- gtk2_ardour/startup.cc | 4 +- libs/ardour/jack_audiobackend.cc | 15 ++-- libs/ardour/jack_utils.cc | 8 +-- 6 files changed, 147 insertions(+), 76 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index fca86c585b..c4e037a5bf 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -490,17 +490,6 @@ ARDOUR_UI::post_engine () Config->ParameterChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::parameter_changed, this, _1), gui_context()); boost::function pc (boost::bind (&ARDOUR_UI::parameter_changed, this, _1)); Config->map_parameters (pc); - - /* now start and maybe save state */ - - if (do_engine_start () == 0) { - if (_session && _session_is_new) { - /* we need to retain initial visual - settings for a new session - */ - _session->save_state (""); - } - } } ARDOUR_UI::~ARDOUR_UI () @@ -2035,7 +2024,8 @@ ARDOUR_UI::engine_stopped () void ARDOUR_UI::engine_running () { - ENSURE_GUI_THREAD (*this, &ARDOUR_UI::engine_running) + post_engine(); + ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, true); ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, false); @@ -2127,24 +2117,6 @@ JACK, reconnect and save the session."), PROGRAM_NAME); } } -int32_t -ARDOUR_UI::do_engine_start () -{ - try { - engine->start(); - } - - catch (...) { - engine->stop (); - error << _("Unable to start the session running") - << endmsg; - unload_session (); - return -2; - } - - return 0; -} - void ARDOUR_UI::update_clocks () { diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index b4e5c72050..3a06fb5072 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -17,6 +17,7 @@ */ +#include #include #include #include @@ -27,20 +28,9 @@ #include #include -#include "pbd/epa.h" +#include "pbd/error.h" #include "pbd/xml++.h" -#ifdef __APPLE__ -#include -#include -#include -#include -#elif !defined(__FreeBSD__) -#include -#endif - -#include - #include #include @@ -50,11 +40,6 @@ #include "pbd/convert.h" #include "pbd/error.h" -#include "pbd/pathscanner.h" - -#ifdef __APPLE -#include -#endif #include "engine_dialog.h" #include "i18n.h" @@ -355,19 +340,6 @@ EngineControl::interface_changed () buffer_size_combo.set_active_text (s.front()); } -uint32_t -EngineControl::get_rate () -{ - double r = atof (sample_rate_combo.get_active_text ()); - /* the string may have been translated with an abbreviation for - * thousands, so use a crude heuristic to fix this. - */ - if (r < 1000.0) { - r *= 1000.0; - } - return lrint (r); -} - void EngineControl::redisplay_latency () { @@ -507,6 +479,7 @@ EngineControl::get_state () void EngineControl::set_state (const XMLNode& root) { +#if 0 XMLNodeList clist; XMLNodeConstIterator citer; XMLNode* child; @@ -516,7 +489,7 @@ EngineControl::set_state (const XMLNode& root) int val; string strval; -#if 0 + if ( (child = root.child ("driver"))){ prop = child->property("val"); @@ -655,6 +628,120 @@ EngineControl::set_state (const XMLNode& root) } int -EngineControl::setup_engine () +EngineControl::setup_engine (bool start) { + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + assert (backend); + + /* grab the parameters from the GUI and apply them */ + + try { + if (backend->requires_driver_selection()) { + if (backend->set_driver (get_driver())) { + return -1; + } + } + + if (backend->set_device_name (get_device_name())) { + return -1; + } + + if (backend->set_sample_rate (get_rate())) { + error << string_compose (_("Cannot set sample rate to %1"), get_rate()) << endmsg; + return -1; + } + if (backend->set_buffer_size (get_buffer_size())) { + error << string_compose (_("Cannot set buffer size to %1"), get_buffer_size()) << endmsg; + return -1; + } + if (backend->set_input_channels (get_input_channels())) { + error << string_compose (_("Cannot set input channels to %1"), get_input_channels()) << endmsg; + return -1; + } + if (backend->set_output_channels (get_output_channels())) { + error << string_compose (_("Cannot set output channels to %1"), get_output_channels()) << endmsg; + return -1; + } + if (backend->set_systemic_input_latency (get_input_latency())) { + error << string_compose (_("Cannot set input latency to %1"), get_input_latency()) << endmsg; + return -1; + } + if (backend->set_systemic_output_latency (get_output_latency())) { + error << string_compose (_("Cannot set output latency to %1"), get_output_latency()) << endmsg; + return -1; + } + + if (start) { + return ARDOUR::AudioEngine::instance()->start(); + } + + return 0; + + } catch (...) { + cerr << "exception thrown...\n"; + return -1; + } } + +uint32_t +EngineControl::get_rate () const +{ + double r = atof (sample_rate_combo.get_active_text ()); + /* the string may have been translated with an abbreviation for + * thousands, so use a crude heuristic to fix this. + */ + if (r < 1000.0) { + r *= 1000.0; + } + return lrint (r); +} + +uint32_t +EngineControl::get_buffer_size () const +{ + string txt = buffer_size_combo.get_active_text (); + uint32_t samples; + + if (sscanf (txt.c_str(), "%d", &samples) != 1) { + throw exception (); + } + + return samples; +} + +uint32_t +EngineControl::get_input_channels() const +{ + return (uint32_t) input_channels_adjustment.get_value(); +} + +uint32_t +EngineControl::get_output_channels() const +{ + return (uint32_t) output_channels_adjustment.get_value(); +} + +uint32_t +EngineControl::get_input_latency() const +{ + return (uint32_t) input_latency_adjustment.get_value(); +} + +uint32_t +EngineControl::get_output_latency() const +{ + return (uint32_t) output_latency_adjustment.get_value(); +} + +string +EngineControl::get_driver () const +{ + return driver_combo.get_active_text (); +} + +string +EngineControl::get_device_name () const +{ + return interface_combo.get_active_text (); +} + diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index ac96fbc520..07cf0afa8f 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -40,7 +40,7 @@ class EngineControl : public Gtk::VBox { ~EngineControl (); static bool need_setup (); - int setup_engine (); + int setup_engine (bool start); bool was_used() const { return _used; } XMLNode& get_state (); @@ -104,7 +104,16 @@ class EngineControl : public Gtk::VBox { void backend_changed (); void redisplay_latency (); - uint32_t get_rate(); + + uint32_t get_rate() const; + uint32_t get_buffer_size() const; + uint32_t get_input_channels() const; + uint32_t get_output_channels() const; + uint32_t get_input_latency() const; + uint32_t get_output_latency() const; + std::string get_device_name() const; + std::string get_driver() const; + void audio_mode_changed (); void interface_changed (); void list_devices (); diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index 8314a0986e..bfd9c88633 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -662,8 +662,10 @@ ArdourStartup::on_delete_event (GdkEventAny*) void ArdourStartup::on_apply () { + cerr << "apply, engine = " << engine_dialog << endl; if (engine_dialog) { - if (engine_dialog->setup_engine ()) { + cerr << "Set up engine\n"; + if (engine_dialog->setup_engine (true)) { set_current_page (audio_page_index); return; } diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 97031cfaff..8ab8428555 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -197,13 +197,13 @@ JACKAudioBackend::set_device_name (const string& dev) int JACKAudioBackend::set_sample_rate (float sr) { - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - if (!connected()) { _target_sample_rate = sr; return 0; } + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + if (sr == jack_get_sample_rate (_priv_jack)) { return 0; } @@ -214,13 +214,13 @@ JACKAudioBackend::set_sample_rate (float sr) int JACKAudioBackend::set_buffer_size (uint32_t nframes) { - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - if (!connected()) { _target_buffer_size = nframes; return 0; } + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + if (nframes == jack_get_buffer_size (_priv_jack)) { return 0; } @@ -384,6 +384,8 @@ JACKAudioBackend::setup_jack_startup_command () JackCommandLineOptions options; + get_jack_default_server_path (options.server_path); + options.driver = _target_driver; options.samplerate = _target_sample_rate; options.period_size = _target_buffer_size; options.num_periods = 2; @@ -394,7 +396,9 @@ JACKAudioBackend::setup_jack_startup_command () if (_target_sample_format == FormatInt16) { options.force16_bit = _target_sample_format; } - + options.realtime = true; + options.ports_max = 2048; + /* this must always be true for any server instance we start ourselves */ @@ -422,7 +426,6 @@ JACKAudioBackend::start () setup_jack_startup_command (); } - std::cerr << "Open JACK connection\n"; _jack_connection->open (); } diff --git a/libs/ardour/jack_utils.cc b/libs/ardour/jack_utils.cc index 606b71603a..ea1aea2623 100644 --- a/libs/ardour/jack_utils.cc +++ b/libs/ardour/jack_utils.cc @@ -667,7 +667,7 @@ ARDOUR::JackCommandLineOptions::JackCommandLineOptions () , ports_max(128) , realtime(true) , priority(0) - , unlock_gui_libs(true) + , unlock_gui_libs(false) , verbose(false) , temporary(true) , driver() @@ -759,14 +759,12 @@ ARDOUR::get_jack_command_line_string (const JackCommandLineOptions& options, str string command_line_output_device_name; if (!get_jack_command_line_audio_device_name (options.driver, - options.input_device, command_line_input_device_name)) - { + options.input_device, command_line_input_device_name)) { return false; } if (!get_jack_command_line_audio_device_name (options.driver, - options.output_device, command_line_output_device_name)) - { + options.output_device, command_line_output_device_name)) { return false; } -- cgit v1.2.3 From a5f69910e493981f4295b8aaf72f4f93ea7055ef Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 5 Aug 2013 13:19:23 -0400 Subject: add notion of unavailable devices to ARDOUR::AudioBackend --- gtk2_ardour/engine_dialog.cc | 29 +++++++++++++++++++------- libs/ardour/ardour/audio_backend.h | 19 ++++++++++++++--- libs/ardour/ardour/jack_audiobackend.h | 7 ++++++- libs/ardour/jack_audiobackend.cc | 37 +++++++++++++++++++++++++++++----- 4 files changed, 76 insertions(+), 16 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 3a06fb5072..8c67d23d36 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -280,14 +280,29 @@ EngineControl::list_devices () /* now fill out devices, mark sample rates, buffer sizes insensitive */ - vector devices = backend->enumerate_devices (); + vector all_devices = backend->enumerate_devices (); - set_popdown_strings (interface_combo, devices); - interface_combo.set_active_text (devices.front()); - set_popdown_strings (input_device_combo, devices); - input_device_combo.set_active_text (devices.front()); - set_popdown_strings (output_device_combo, devices); - output_device_combo.set_active_text (devices.front()); + /* NOTE: Ardour currently does not display the "available" field of the + * returned devices. + * + * Doing so would require a different GUI widget than the combo + * box/popdown that we currently use, since it has no way to list + * items that are not selectable. Something more like a popup menu, + * which could have unselectable items, would be appropriate. + */ + + vector available_devices; + + for (vector::const_iterator i = all_devices.begin(); i != all_devices.end(); ++i) { + available_devices.push_back (i->name); + } + + set_popdown_strings (interface_combo, available_devices); + interface_combo.set_active_text (available_devices.front()); + set_popdown_strings (input_device_combo, available_devices); + input_device_combo.set_active_text (available_devices.front()); + set_popdown_strings (output_device_combo, available_devices); + output_device_combo.set_active_text (available_devices.front()); interface_changed (); } diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 08dd7fb0b5..77b7eadb48 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -95,12 +95,25 @@ class AudioBackend { */ virtual int set_driver (const std::string& /*drivername*/) { return 0; } - /** Returns a collection of strings identifying devices known - * to this backend. Any of these strings may be used to identify a + /** used to list device names along with whether or not they are currently + * available. + */ + struct DeviceStatus { + std::string name; + bool available; + + DeviceStatus (const std::string& s, bool avail) : name (s), available (avail) {} + }; + + /** Returns a collection of DeviceStatuses identifying devices discovered + * by this backend since the start of the process. + * + * Any of the names in each DeviceStatus may be used to identify a * device in other calls to the backend, though any of them may become * invalid at any time. */ - virtual std::vector enumerate_devices () const = 0; + virtual std::vector enumerate_devices () const = 0; + /** Returns a collection of float identifying sample rates that are * potentially usable with the hardware identified by @param device. * Any of these values may be supplied in other calls to this backend diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 59b5b88105..9fa3d0c1cc 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -23,6 +23,7 @@ #include #include #include +#include #include @@ -53,7 +54,7 @@ class JACKAudioBackend : public AudioBackend { std::vector enumerate_drivers () const; int set_driver (const std::string&); - std::vector enumerate_devices () const; + std::vector enumerate_devices () const; std::vector available_sample_rates (const std::string& device) const; std::vector available_buffer_sizes (const std::string& device) const; @@ -172,7 +173,11 @@ class JACKAudioBackend : public AudioBackend { uint32_t _current_usecs_per_cycle; uint32_t _current_systemic_input_latency; uint32_t _current_systemic_output_latency; + + typedef std::set DeviceList; + typedef std::map DriverDeviceMap; + mutable DriverDeviceMap all_devices; }; } // namespace diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 8ab8428555..19158aacc9 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -97,9 +97,9 @@ JACKAudioBackend::requires_driver_selection() const vector JACKAudioBackend::enumerate_drivers () const { - vector s; - get_jack_audio_driver_names (s); - return s; + vector currently_available; + get_jack_audio_driver_names (currently_available); + return currently_available; } int @@ -109,10 +109,37 @@ JACKAudioBackend::set_driver (const std::string& name) return 0; } -vector +vector JACKAudioBackend::enumerate_devices () const { - return get_jack_device_names_for_audio_driver (_target_driver); + vector currently_available = get_jack_device_names_for_audio_driver (_target_driver); + vector statuses; + + if (all_devices.find (_target_driver) == all_devices.end()) { + all_devices.insert (make_pair (_target_driver, std::set())); + } + + /* store every device we've found, by driver name. + * + * This is so we do not confuse ALSA, FFADO, netjack etc. devices + * with each other. + */ + + DeviceList& all (all_devices[_target_driver]); + + for (vector::const_iterator d = currently_available.begin(); d != currently_available.end(); ++d) { + all.insert (*d); + } + + for (DeviceList::const_iterator d = all.begin(); d != all.end(); ++d) { + if (find (currently_available.begin(), currently_available.end(), *d) == currently_available.end()) { + statuses.push_back (DeviceStatus (*d, false)); + } else { + statuses.push_back (DeviceStatus (*d, false)); + } + } + + return statuses; } vector -- cgit v1.2.3 From 499b7fcfa9f3e8535a4500143a9d7af7b67c6984 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 5 Aug 2013 13:55:50 -0400 Subject: document PortEngine API --- libs/ardour/ardour/port_engine.h | 215 ++++++++++++++++++++++++++++++++++----- 1 file changed, 190 insertions(+), 25 deletions(-) diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index f03a8e263f..8e36ad8b09 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -89,73 +89,237 @@ class PortEngine { typedef void* PortHandle; + /** Return a typeless pointer to an object that may be of interest + * that understands the internals of a particular PortEngine + * implementation. + * + * XXX the existence of this method is a band-aid over some design + * issues and will it will be removed in the future + */ virtual void* private_handle() const = 0; + /** Return the name of this process as used by the port manager + * when naming ports. + */ virtual const std::string& my_name() const = 0; + /** Return the maximum size of a port name + */ virtual uint32_t port_name_size() const = 0; - virtual int set_port_name (PortHandle, const std::string&) = 0; + /** Returns zero if the port referred to by @param port was set to @param + * name. Return non-zero otherwise. + */ + virtual int set_port_name (PortHandle port, const std::string& name) = 0; + /** Return the name of the port referred to by @param port. If the port + * does not exist, return an empty string. + */ virtual std::string get_port_name (PortHandle) const = 0; + /** Return a reference to a port with the fullname @param name. Return + * a null pointer if no such port exists. + */ virtual PortHandle* get_port_by_name (const std::string&) const = 0; - /* Discovering the set of ports whose names, types and flags match - * specified values. + /** Find the set of ports whose names, types and flags match + * specified values, place the names of each port into @param ports, + * and return the count of the number found. + * + * To avoid selecting by name, pass an empty string for @param + * port_name_pattern. + * + * To avoid selecting by type, pass DataType::NIL as @param type. + * + * To avoid selecting by flags, pass PortFlags (0) as @param flags. */ + virtual int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector& ports) const = 0; - virtual int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const = 0; + /** Return the Ardour data type handled by the port referred to by @param + * port. Returns DataType::NIL if the port does not exist. + */ + virtual DataType port_data_type (PortHandle port) const = 0; - virtual DataType port_data_type (PortHandle) const = 0; + /** Create a new port whose fullname will be the conjuction of my_name(), + * ":" and @param shortname. The port will handle data specified by @param + * type and will have the flags given by @param flags. If successfull, + * return a reference to the port, otherwise return a null pointer. + */ + virtual PortHandle register_port (const std::string& shortname, ARDOUR::DataType type, ARDOUR::PortFlags flags) = 0; - virtual PortHandle register_port (const std::string& shortname, ARDOUR::DataType, ARDOUR::PortFlags) = 0; + /* Destroy the port referred to by @param port, including all resources + * associated with it. This will also disconnect @param port from any ports it + * is connected to. + */ virtual void unregister_port (PortHandle) = 0; /* Connection management */ + /** Ensure that data written to the port named by @param src will be + * readable from the port named by @param dst. Return zero on success, + * non-zero otherwise. + */ virtual int connect (const std::string& src, const std::string& dst) = 0; + + /** Remove any existing connection between the ports named by @param src and + * @param dst. Return zero on success, non-zero otherwise. + */ virtual int disconnect (const std::string& src, const std::string& dst) = 0; - virtual int connect (PortHandle, const std::string&) = 0; - virtual int disconnect (PortHandle, const std::string&) = 0; - virtual int disconnect_all (PortHandle) = 0; + + /** Ensure that data written to the port referenced by @param portwill be + * readable from the port named by @param dst. Return zero on success, + * non-zero otherwise. + */ + virtual int connect (PortHandle src, const std::string& dst) = 0; + /** Remove any existing connection between the port referenced by @param src and + * the port named @param dst. Return zero on success, non-zero otherwise. + */ + virtual int disconnect (PortHandle src, const std::string& dst) = 0; + + /** Remove all connections between the port referred to by @param port and + * any other ports. Return zero on success, non-zero otherwise. + */ + virtual int disconnect_all (PortHandle port) = 0; - virtual bool connected (PortHandle) = 0; - virtual bool connected_to (PortHandle, const std::string&) = 0; - virtual bool physically_connected (PortHandle) = 0; - virtual int get_connections (PortHandle, std::vector&) = 0; + /** Return true if the port referred to by @param port has any connections + * to other ports. Return false otherwise. + */ + virtual bool connected (PortHandle port) = 0; + /** Return true if the port referred to by @param port is connected to + * the port named by @param name. Return false otherwise. + */ + virtual bool connected_to (PortHandle, const std::string& name) = 0; + + /** Return true if the port referred to by @param port has any connections + * to ports marked with the PortFlag IsPhysical. Return false otherwise. + */ + virtual bool physically_connected (PortHandle port) = 0; + + /** Place the names of all ports connected to the port named by @param + * ports into @param names, and return the number of connections. + */ + virtual int get_connections (PortHandle port, std::vector& names) = 0; /* MIDI */ + /** Retrieve a MIDI event from the data at @param port_buffer. The event + number to be retrieved is given by @param event_index (a value of zero + indicates that the first event in the port_buffer should be retrieved). + * + * The data associated with the event will be copied into the buffer at + * @param buf and the number of bytes written will be stored in @param + * size. The timestamp of the event (which is always relative to the start + * of the current process cycle, in samples) will be stored in @param + * timestamp + */ virtual int midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) = 0; + + /** Place a MIDI event consisting of @param size bytes copied from the data + * at @param buf into the port buffer referred to by @param + * port_buffer. The MIDI event will be marked with a time given by @param + * timestamp. Return zero on success, non-zero otherwise. + * + * Events must be added monotonically to a port buffer. An attempt to + * add a non-monotonic event (e.g. out-of-order) will cause this method + * to return a failure status. + */ virtual int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size) = 0; + + /** Return the number of MIDI events in the data at @param port_buffer + */ virtual uint32_t get_midi_event_count (void* port_buffer) = 0; + + /** Clear the buffer at @param port_buffer of all MIDI events. + * + * After a call to this method, an immediate, subsequent call to + * get_midi_event_count() with the same @param port_buffer argument must + * return zero. + */ virtual void midi_clear (void* port_buffer) = 0; /* Monitoring */ + /** Return true if the implementation can offer input monitoring. + * + * Input monitoring involves the (selective) routing of incoming data + * to an outgoing data stream, without the data being passed to the CPU. + * + * Only certain audio hardware can provide this, and only certain audio + * APIs can offer it. + */ virtual bool can_monitor_input() const = 0; - virtual int request_input_monitoring (PortHandle, bool) = 0; - virtual int ensure_input_monitoring (PortHandle, bool) = 0; - virtual bool monitoring_input (PortHandle) = 0; + /** Increment or decrement the number of requests to monitor the input + * of the hardware channel represented by the port referred to by @param + * port. + * + * If the number of requests rises above zero, input monitoring will + * be enabled (if can_monitor_input() returns true for the implementation). + * + * If the number of requests falls to zero, input monitoring will be + * disabled (if can_monitor_input() returns true for the implementation) + */ + virtual int request_input_monitoring (PortHandle port, bool yn) = 0; + /* Force input monitoring of the hardware channel represented by the port + * referred to by @param port to be on or off, depending on the true/false + * status of @param yn. The request count is ignored when using this + * method, so if this is called with yn set to false, input monitoring will + * be disabled regardless of the number of requests to enable it. + */ + virtual int ensure_input_monitoring (PortHandle port, bool yn) = 0; + /** Return true if input monitoring is enabled for the hardware channel + * represented by the port referred to by @param port. Return false + * otherwise. + */ + virtual bool monitoring_input (PortHandle port) = 0; /* Latency management */ - virtual void set_latency_range (PortHandle, bool for_playback, LatencyRange) = 0; - virtual LatencyRange get_latency_range (PortHandle, bool for_playback) = 0; + /** Set the latency range for the port referred to by @param port to @param + * r. The playback range will be set if @param for_playback is true, + * otherwise the capture range will be set. + */ + virtual void set_latency_range (PortHandle port, bool for_playback, LatencyRange r) = 0; + /** Return the latency range for the port referred to by @param port. + * The playback range will be returned if @param for_playback is true, + * otherwise the capture range will be returned. + */ + virtual LatencyRange get_latency_range (PortHandle port, bool for_playback) = 0; /* Discovering physical ports */ - virtual bool port_is_physical (PortHandle) const = 0; - virtual void get_physical_outputs (DataType type, std::vector&) = 0; - virtual void get_physical_inputs (DataType type, std::vector&) = 0; + /** Return true if the port referred to by @param port has the IsPhysical + * flag set. Return false otherwise. + */ + virtual bool port_is_physical (PortHandle port) const = 0; + + /** Store into @param names the names of all ports with the IsOutput and + * IsPhysical flag set, that handle data of type @param type. + * + * This can be used to discover outputs associated with hardware devices. + */ + virtual void get_physical_outputs (DataType type, std::vector& names) = 0; + /** Store into @param names the names of all ports with the IsInput and + * IsPhysical flags set, that handle data of type @param type. + * + * This can be used to discover inputs associated with hardware devices. + */ + virtual void get_physical_inputs (DataType type, std::vector& names) = 0; + /** Return the total count (possibly mixed between different data types) + of the number of ports with the IsPhysical and IsOutput flags set. + */ virtual ChanCount n_physical_outputs () const = 0; + /** Return the total count (possibly mixed between different data types) + of the number of ports with the IsPhysical and IsInput flags set. + */ virtual ChanCount n_physical_inputs () const = 0; - /* getting the port buffer. untyped (void*) because this will return - * buffers containing different data depending on the port type + /** Return the address of the memory area where data for the port can be + * written (if the port has the PortFlag IsOutput set) or read (if the port + * has the PortFlag IsInput set). + * + * The return value is untyped because buffers containing different data + * depending on the port type. */ - virtual void* get_buffer (PortHandle, pframes_t) = 0; /* MIDI ports (the ones in libmidi++) need this to be able to correctly @@ -165,7 +329,8 @@ class PortEngine { * * Return the time according to the sample clock in use when the current * buffer process cycle began. - * + * + * XXX to be removed after some more design cleanup. */ virtual pframes_t sample_time_at_cycle_start () = 0; -- cgit v1.2.3 From 83a0c30c24ce6bb6e3e718c267a82fbaffc33b4b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 7 Aug 2013 22:21:36 -0400 Subject: major redesign of MIDI port heirarchy and management basic, very flaky functionality is back. program unstable at present --- libs/ardour/ardour/midiport_manager.h | 94 +++++++ libs/ardour/midiport_manager.cc | 89 +++++++ libs/midi++2/jack_midi_port.cc | 474 ---------------------------------- libs/midi++2/manager.cc | 183 ------------- libs/midi++2/midi++/jack_midi_port.h | 104 -------- libs/midi++2/midi++/manager.h | 107 -------- 6 files changed, 183 insertions(+), 868 deletions(-) create mode 100644 libs/ardour/ardour/midiport_manager.h create mode 100644 libs/ardour/midiport_manager.cc delete mode 100644 libs/midi++2/jack_midi_port.cc delete mode 100644 libs/midi++2/manager.cc delete mode 100644 libs/midi++2/midi++/jack_midi_port.h delete mode 100644 libs/midi++2/midi++/manager.h diff --git a/libs/ardour/ardour/midiport_manager.h b/libs/ardour/ardour/midiport_manager.h new file mode 100644 index 0000000000..9c45e60341 --- /dev/null +++ b/libs/ardour/ardour/midiport_manager.h @@ -0,0 +1,94 @@ +/* + Copyright (C) 1998 Paul Barton-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 __midiport_manager_h__ +#define __midiport_manager_h__ + +#include + +#include + +#include "pbd/rcu.h" + +#include "midi++/types.h" +#include "midi++/port.h" + +#include "ardour/types.h" + +namespace ARDOUR { + +class MidiPort; +class Port; + +class MidiPortManager { + public: + MidiPortManager(); + virtual ~MidiPortManager (); + + MidiPort* add_port (MidiPort *); + void remove_port (MidiPort *); + + MidiPort* port (const std::string&); + + /* Ports used for control. These are read/written to outside of the + * process callback (asynchronously with respect to when data + * actually arrives). + * + * More detail: we do actually read/write data for these ports + * inside the process callback, but incoming data is only parsed + * and outgoing data is only generated *outside* the process + * callback. + */ + + MIDI::Port* midi_input_port () { return _midi_input_port; } + MIDI::Port* midi_output_port () { return _midi_output_port; } + + /* Ports used for synchronization. These have their I/O handled inside the + * process callback. + */ + + boost::shared_ptr mtc_input_port() const { return _mtc_input_port; } + boost::shared_ptr mtc_output_port() const { return _mtc_output_port; } + boost::shared_ptr midi_clock_input_port() const { return _midi_clock_input_port; } + boost::shared_ptr midi_clock_output_port() const { return _midi_clock_output_port; } + + void set_port_states (std::list); + + PBD::Signal0 PortsChanged; + + protected: + /* asynchronously handled ports: MIDI::Port */ + MIDI::Port* _midi_input_port; + MIDI::Port* _midi_output_port; + boost::shared_ptr _midi_in; + boost::shared_ptr _midi_out; + + /* synchronously handled ports: ARDOUR::MidiPort */ + boost::shared_ptr _mtc_input_port; + boost::shared_ptr _mtc_output_port; + boost::shared_ptr _midi_clock_input_port; + boost::shared_ptr _midi_clock_output_port; + + void create_ports (); + +}; + +} // namespace MIDI + +#endif // __midi_port_manager_h__ diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc new file mode 100644 index 0000000000..fb27800762 --- /dev/null +++ b/libs/ardour/midiport_manager.cc @@ -0,0 +1,89 @@ +/* + Copyright (C) 1998-99 Paul Barton-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. + + $Id$ +*/ + +#include "ardour/audioengine.h" +#include "ardour/async_midi_port.h" +#include "ardour/midiport_manager.h" + +#include "i18n.h" + +using namespace ARDOUR; +using namespace std; +using namespace MIDI; +using namespace PBD; + + +MidiPortManager::MidiPortManager () +{ +} + +MidiPortManager::~MidiPortManager () +{ + if (_midi_in) { + AudioEngine::instance()->unregister_port (_midi_in); + } + if (_midi_in) { + AudioEngine::instance()->unregister_port (_midi_in); + } + if (_mtc_input_port) { + AudioEngine::instance()->unregister_port (_mtc_input_port); + } + if (_mtc_output_port) { + AudioEngine::instance()->unregister_port (_mtc_output_port); + } + if (_midi_clock_input_port) { + AudioEngine::instance()->unregister_port (_midi_clock_input_port); + } + if (_midi_clock_output_port) { + AudioEngine::instance()->unregister_port (_midi_clock_output_port); + } + +} + +MidiPort* +MidiPortManager::port (string const & n) +{ + boost::shared_ptr mp = boost::dynamic_pointer_cast (AudioEngine::instance()->get_port_by_name (n)); + return mp.get(); +} + +void +MidiPortManager::create_ports () +{ + _midi_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MIDI control in"), true); + _midi_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MIDI control out"), true); + + _midi_input_port = boost::dynamic_pointer_cast(_midi_in).get(); + _midi_output_port = boost::dynamic_pointer_cast(_midi_out).get(); +} + +void +MidiPortManager::set_port_states (list s) +{ + PortManager::PortList pl; + + AudioEngine::instance()->get_ports (DataType::MIDI, pl); + + for (list::iterator i = s.begin(); i != s.end(); ++i) { + for (PortManager::PortList::const_iterator j = pl.begin(); j != pl.end(); ++j) { + // (*j)->set_state (**i); + } + } +} + diff --git a/libs/midi++2/jack_midi_port.cc b/libs/midi++2/jack_midi_port.cc deleted file mode 100644 index 8ba27759bc..0000000000 --- a/libs/midi++2/jack_midi_port.cc +++ /dev/null @@ -1,474 +0,0 @@ -/* - Copyright (C) 1998 Paul Barton-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. - - $Id$ -*/ -#include -#include -#include -#include - -#include "pbd/xml++.h" -#include "pbd/error.h" -#include "pbd/failed_constructor.h" -#include "pbd/convert.h" -#include "pbd/strsplit.h" -#include "pbd/stacktrace.h" - -#include "midi++/types.h" -#include "midi++/jack_midi_port.h" -#include "midi++/channel.h" - -using namespace MIDI; -using namespace std; -using namespace PBD; - -namespace Evoral { -template class EventRingBuffer; -} - -pthread_t JackMIDIPort::_process_thread; -Signal0 JackMIDIPort::EngineHalted; -Signal0 JackMIDIPort::MakeConnections; - -JackMIDIPort::JackMIDIPort (string const & name, Flags flags, ARDOUR::PortEngine& pengine) - : Port (name, flags) - , _port_engine (pengine) - , _port_handle (0) - , _currently_in_cycle (false) - , _nframes_this_cycle (0) - , _last_write_timestamp (0) - , output_fifo (512) - , input_fifo (1024) - , xthread (true) -{ - init (name, flags); -} - -JackMIDIPort::JackMIDIPort (const XMLNode& node, ARDOUR::PortEngine& pengine) - : Port (node) - , _port_engine (pengine) - , _port_handle (0) - , _currently_in_cycle (false) - , _nframes_this_cycle (0) - , _last_write_timestamp (0) - , output_fifo (512) - , input_fifo (1024) - , xthread (true) -{ - Descriptor desc (node); - init (desc.tag, desc.flags); - set_state (node); -} - -void -JackMIDIPort::init (const string& /*name*/, Flags /*flags*/) -{ - if (!create_port ()) { - _ok = true; - } - - MakeConnections.connect_same_thread (connect_connection, boost::bind (&JackMIDIPort::make_connections, this)); - EngineHalted.connect_same_thread (halt_connection, boost::bind (&JackMIDIPort::engine_halted, this)); -} - - -JackMIDIPort::~JackMIDIPort () -{ - if (_port_handle) { - _port_engine.unregister_port (_port_handle); - _port_handle = 0; - } -} - -void -JackMIDIPort::parse (framecnt_t timestamp) -{ - byte buf[512]; - - /* NOTE: parsing is done (if at all) by initiating a read from - the port. Each port implementation calls on the parser - once it has data ready. - */ - - _parser->set_timestamp (timestamp); - - while (1) { - - // cerr << "+++ READ ON " << name() << endl; - - int nread = read (buf, sizeof (buf)); - - // cerr << "-- READ (" << nread << " ON " << name() << endl; - - if (nread > 0) { - if ((size_t) nread < sizeof (buf)) { - break; - } else { - continue; - } - } else if (nread == 0) { - break; - } else if (errno == EAGAIN) { - break; - } else { - fatal << "Error reading from MIDI port " << name() << endmsg; - /*NOTREACHED*/ - } - } -} - -void -JackMIDIPort::cycle_start (pframes_t nframes) -{ - assert (_port_handle); - - _currently_in_cycle = true; - _nframes_this_cycle = nframes; - - assert(_nframes_this_cycle == nframes); - - if (sends_output()) { - void *buffer = _port_engine.get_buffer (_port_handle, nframes); - jack_midi_clear_buffer (buffer); - flush (buffer); - } - - if (receives_input()) { - void* buffer = _port_engine.get_buffer (_port_handle, nframes); - const pframes_t event_count = _port_engine.get_midi_event_count (buffer); - - pframes_t time; - size_t size; - uint8_t* buf; - timestamp_t cycle_start_frame = _port_engine.sample_time_at_cycle_start (); - - for (pframes_t i = 0; i < event_count; ++i) { - _port_engine.midi_event_get (time, size, &buf, buffer, i); - input_fifo.write (cycle_start_frame + time, (Evoral::EventType) 0, size, buf); - } - - if (event_count) { - xthread.wakeup (); - } - } -} - -void -JackMIDIPort::cycle_end () -{ - if (sends_output()) { - flush (_port_engine.get_buffer (_port_handle, _nframes_this_cycle)); - } - - _currently_in_cycle = false; - _nframes_this_cycle = 0; -} - -void -JackMIDIPort::engine_halted () -{ - _port_handle = 0; -} - -void -JackMIDIPort::drain (int check_interval_usecs) -{ - RingBuffer< Evoral::Event >::rw_vector vec = { { 0, 0 }, { 0, 0} }; - - if (is_process_thread()) { - error << "Process thread called MIDI::JackMIDIPort::drain() - this cannot work" << endmsg; - return; - } - - while (1) { - output_fifo.get_write_vector (&vec); - if (vec.len[0] + vec.len[1] >= output_fifo.bufsize() - 1) { - break; - } - usleep (check_interval_usecs); - } -} - -int -JackMIDIPort::write (const byte * msg, size_t msglen, timestamp_t timestamp) -{ - int ret = 0; - - if (!_port_handle) { - /* poof ! make it just vanish into thin air, since we are no - longer connected to JACK. - */ - return msglen; - } - - if (!sends_output()) { - return ret; - } - - if (!is_process_thread()) { - - Glib::Threads::Mutex::Lock lm (output_fifo_lock); - RingBuffer< Evoral::Event >::rw_vector vec = { { 0, 0 }, { 0, 0} }; - - output_fifo.get_write_vector (&vec); - - if (vec.len[0] + vec.len[1] < 1) { - error << "no space in FIFO for non-process thread MIDI write" << endmsg; - return 0; - } - - if (vec.len[0]) { - if (!vec.buf[0]->owns_buffer()) { - vec.buf[0]->set_buffer (0, 0, true); - } - vec.buf[0]->set (msg, msglen, timestamp); - } else { - if (!vec.buf[1]->owns_buffer()) { - vec.buf[1]->set_buffer (0, 0, true); - } - vec.buf[1]->set (msg, msglen, timestamp); - } - - output_fifo.increment_write_idx (1); - - ret = msglen; - - } else { - - if (timestamp >= _nframes_this_cycle) { - std::cerr << "attempting to write MIDI event of " << msglen << " bytes at time " - << timestamp << " of " << _nframes_this_cycle - << " (this will not work - needs a code fix)" - << std::endl; - } - - if (_currently_in_cycle) { - if (timestamp == 0) { - timestamp = _last_write_timestamp; - } - - if ((ret = _port_engine.midi_event_put (_port_engine.get_buffer (_port_handle, _nframes_this_cycle), - timestamp, msg, msglen)) == 0) { - ret = msglen; - _last_write_timestamp = timestamp; - - } else { - cerr << "write of " << msglen << " @ " << timestamp << " failed, port holds " - << _port_engine.get_midi_event_count (_port_engine.get_buffer (_port_handle, _nframes_this_cycle)) - << " port is " << _port_handle - << " ntf = " << _nframes_this_cycle - << " buf = " << _port_engine.get_buffer (_port_handle, _nframes_this_cycle) - << " ret = " << ret - << endl; - PBD::stacktrace (cerr, 20); - ret = 0; - } - } else { - cerr << "write to JACK midi port failed: not currently in a process cycle." << endl; - PBD::stacktrace (cerr, 20); - } - } - - if (ret > 0 && _parser) { - // ardour doesn't care about this and neither should your app, probably - // output_parser->raw_preparse (*output_parser, msg, ret); - for (int i = 0; i < ret; i++) { - _parser->scanner (msg[i]); - } - // ardour doesn't care about this and neither should your app, probably - // output_parser->raw_postparse (*output_parser, msg, ret); - } - - return ret; -} - -void -JackMIDIPort::flush (void* port_buffer) -{ - RingBuffer< Evoral::Event >::rw_vector vec = { { 0, 0 }, { 0, 0 } }; - size_t written; - - output_fifo.get_read_vector (&vec); - - if (vec.len[0] + vec.len[1]) { - // cerr << "Flush " << vec.len[0] + vec.len[1] << " events from non-process FIFO\n"; - } - - if (vec.len[0]) { - Evoral::Event* evp = vec.buf[0]; - - for (size_t n = 0; n < vec.len[0]; ++n, ++evp) { - _port_engine.midi_event_put (port_buffer, (timestamp_t) evp->time(), evp->buffer(), evp->size()); - } - } - - if (vec.len[1]) { - Evoral::Event* evp = vec.buf[1]; - - for (size_t n = 0; n < vec.len[1]; ++n, ++evp) { - _port_engine.midi_event_put (port_buffer, (timestamp_t) evp->time(), evp->buffer(), evp->size()); - } - } - - if ((written = vec.len[0] + vec.len[1]) != 0) { - output_fifo.increment_read_idx (written); - } -} - -int -JackMIDIPort::read (byte *, size_t) -{ - if (!receives_input()) { - return 0; - } - - timestamp_t time; - Evoral::EventType type; - uint32_t size; - byte buffer[input_fifo.capacity()]; - - while (input_fifo.read (&time, &type, &size, buffer)) { - _parser->set_timestamp (time); - for (uint32_t i = 0; i < size; ++i) { - _parser->scanner (buffer[i]); - } - } - - return 0; -} - -int -JackMIDIPort::create_port () -{ - ARDOUR::PortFlags f = ARDOUR::PortFlags (0); - - /* convert MIDI::Port::Flags to ARDOUR::PortFlags ... sigh */ - - if (_flags & IsInput) { - f = ARDOUR::PortFlags (f | ARDOUR::IsInput); - } - - if (_flags & IsOutput) { - f = ARDOUR::PortFlags (f | ARDOUR::IsOutput); - } - - _port_handle = _port_engine.register_port (_tagname, ARDOUR::DataType::MIDI, f); - - return _port_handle == 0 ? -1 : 0; -} - -XMLNode& -JackMIDIPort::get_state () const -{ - XMLNode& root = Port::get_state (); - -#if 0 - byte device_inquiry[6]; - - device_inquiry[0] = 0xf0; - device_inquiry[0] = 0x7e; - device_inquiry[0] = 0x7f; - device_inquiry[0] = 0x06; - device_inquiry[0] = 0x02; - device_inquiry[0] = 0xf7; - - write (device_inquiry, sizeof (device_inquiry), 0); -#endif - - if (_port_handle) { - - vector connections; - _port_engine.get_connections (_port_handle, connections); - string connection_string; - for (vector::iterator i = connections.begin(); i != connections.end(); ++i) { - if (i != connections.begin()) { - connection_string += ','; - } - connection_string += *i; - } - - if (!connection_string.empty()) { - root.add_property ("connections", connection_string); - } - } else { - if (!_connections.empty()) { - root.add_property ("connections", _connections); - } - } - - return root; -} - -void -JackMIDIPort::set_state (const XMLNode& node) -{ - const XMLProperty* prop; - - if ((prop = node.property ("tag")) == 0 || prop->value() != _tagname) { - return; - } - - Port::set_state (node); - - if ((prop = node.property ("connections")) != 0) { - _connections = prop->value (); - } -} - -void -JackMIDIPort::make_connections () -{ - if (!_connections.empty()) { - vector ports; - split (_connections, ports, ','); - for (vector::iterator x = ports.begin(); x != ports.end(); ++x) { - _port_engine.connect (_port_handle, *x); - /* ignore failures */ - } - } - - connect_connection.disconnect (); -} - -void -JackMIDIPort::set_process_thread (pthread_t thr) -{ - _process_thread = thr; -} - -bool -JackMIDIPort::is_process_thread() -{ - return (pthread_self() == _process_thread); -} - -void -JackMIDIPort::reestablish () -{ - int const r = create_port (); - - if (r) { - PBD::error << "could not reregister ports for " << name() << endmsg; - } -} - -void -JackMIDIPort::reconnect () -{ - make_connections (); -} diff --git a/libs/midi++2/manager.cc b/libs/midi++2/manager.cc deleted file mode 100644 index 3df9681dd3..0000000000 --- a/libs/midi++2/manager.cc +++ /dev/null @@ -1,183 +0,0 @@ -/* - Copyright (C) 1998-99 Paul Barton-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. - - $Id$ -*/ - -#include - -#include - -#include "pbd/error.h" - -#include "midi++/types.h" -#include "midi++/manager.h" -#include "midi++/channel.h" -#include "midi++/port.h" -#include "midi++/jack_midi_port.h" -#include "midi++/mmc.h" - -using namespace std; -using namespace MIDI; -using namespace PBD; - -Manager *Manager::theManager = 0; - -Manager::Manager (ARDOUR::PortEngine& eng) - : _ports (new PortList) -{ - _mmc = new MachineControl (this, eng); - - _mtc_input_port = add_port (new MIDI::JackMIDIPort ("MTC in", Port::IsInput, eng)); - _mtc_output_port = add_port (new MIDI::JackMIDIPort ("MTC out", Port::IsOutput, eng)); - _midi_input_port = add_port (new MIDI::JackMIDIPort ("MIDI control in", Port::IsInput, eng)); - _midi_output_port = add_port (new MIDI::JackMIDIPort ("MIDI control out", Port::IsOutput, eng)); - _midi_clock_input_port = add_port (new MIDI::JackMIDIPort ("MIDI clock in", Port::IsInput, eng)); - _midi_clock_output_port = add_port (new MIDI::JackMIDIPort ("MIDI clock out", Port::IsOutput, eng)); -} - -Manager::~Manager () -{ - delete _mmc; - - /* This will delete our MTC etc. ports */ - - boost::shared_ptr pr = _ports.reader (); - for (PortList::iterator p = pr->begin(); p != pr->end(); ++p) { - delete *p; - } - - if (theManager == this) { - theManager = 0; - } -} - -Port * -Manager::add_port (Port* p) -{ - { - RCUWriter writer (_ports); - boost::shared_ptr pw = writer.get_copy (); - pw->push_back (p); - } - - PortsChanged (); /* EMIT SIGNAL */ - - return p; -} - -void -Manager::remove_port (Port* p) -{ - { - RCUWriter writer (_ports); - boost::shared_ptr pw = writer.get_copy (); - pw->remove (p); - } - - PortsChanged (); /* EMIT SIGNAL */ -} - -void -Manager::cycle_start (pframes_t nframes) -{ - boost::shared_ptr pr = _ports.reader (); - - for (PortList::iterator p = pr->begin(); p != pr->end(); ++p) { - (*p)->cycle_start (nframes); - } -} - -void -Manager::cycle_end() -{ - boost::shared_ptr pr = _ports.reader (); - - for (PortList::iterator p = pr->begin(); p != pr->end(); ++p) { - (*p)->cycle_end (); - } -} - -/** Re-register ports that disappear on JACK shutdown */ -void -Manager::reestablish () -{ - boost::shared_ptr pr = _ports.reader (); - - for (PortList::const_iterator p = pr->begin(); p != pr->end(); ++p) { - JackMIDIPort* pp = dynamic_cast (*p); - if (pp) { - pp->reestablish (); - } - } -} - -/** Re-connect ports after a reestablish () */ -void -Manager::reconnect () -{ - boost::shared_ptr pr = _ports.reader (); - - for (PortList::const_iterator p = pr->begin(); p != pr->end(); ++p) { - JackMIDIPort* pp = dynamic_cast (*p); - if (pp) { - pp->reconnect (); - } - } -} - -Port* -Manager::port (string const & n) -{ - boost::shared_ptr pr = _ports.reader (); - - PortList::const_iterator p = pr->begin(); - while (p != pr->end() && (*p)->name() != n) { - ++p; - } - - if (p == pr->end()) { - return 0; - } - - return *p; -} - -void -Manager::create (ARDOUR::PortEngine& eng) -{ - assert (theManager == 0); - theManager = new Manager (eng); -} - -void -Manager::set_port_states (list s) -{ - boost::shared_ptr pr = _ports.reader (); - - for (list::iterator i = s.begin(); i != s.end(); ++i) { - for (PortList::const_iterator j = pr->begin(); j != pr->end(); ++j) { - (*j)->set_state (**i); - } - } -} - -void -Manager::destroy () -{ - delete theManager; - theManager = 0; -} diff --git a/libs/midi++2/midi++/jack_midi_port.h b/libs/midi++2/midi++/jack_midi_port.h deleted file mode 100644 index 492756067c..0000000000 --- a/libs/midi++2/midi++/jack_midi_port.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - Copyright (C) 1998-2010 Paul Barton-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 __libmidi_port_h__ -#define __libmidi_port_h__ - -#include -#include - -#include "pbd/xml++.h" -#include "pbd/crossthread.h" -#include "pbd/signals.h" -#include "pbd/ringbuffer.h" - -#include "evoral/Event.hpp" -#include "evoral/EventRingBuffer.hpp" - -#include "midi++/types.h" -#include "midi++/parser.h" -#include "midi++/port.h" - -#include "ardour/port_engine.h" - -namespace MIDI { - -class Channel; -class PortRequest; - -class JackMIDIPort : public Port { - public: - JackMIDIPort (std::string const &, Port::Flags, ARDOUR::PortEngine&); - JackMIDIPort (const XMLNode&, ARDOUR::PortEngine&); - ~JackMIDIPort (); - - XMLNode& get_state () const; - void set_state (const XMLNode&); - - void cycle_start (pframes_t nframes); - void cycle_end (); - - void parse (framecnt_t timestamp); - int write (const byte *msg, size_t msglen, timestamp_t timestamp); - int read (byte *buf, size_t bufsize); - void drain (int check_interval_usecs); - int selectable () const { return xthread.selectable(); } - - pframes_t nframes_this_cycle() const { return _nframes_this_cycle; } - - void reestablish (); - void reconnect (); - - static void set_process_thread (pthread_t); - static pthread_t get_process_thread () { return _process_thread; } - static bool is_process_thread(); - - static PBD::Signal0 MakeConnections; - static PBD::Signal0 EngineHalted; - -private: - ARDOUR::PortEngine& _port_engine; - ARDOUR::PortEngine::PortHandle _port_handle; - - bool _currently_in_cycle; - pframes_t _nframes_this_cycle; - timestamp_t _last_write_timestamp; - RingBuffer< Evoral::Event > output_fifo; - Evoral::EventRingBuffer input_fifo; - Glib::Threads::Mutex output_fifo_lock; - CrossThreadChannel xthread; - - int create_port (); - - /** Channel used to signal to the MidiControlUI that input has arrived */ - - std::string _connections; - PBD::ScopedConnection connect_connection; - PBD::ScopedConnection halt_connection; - void flush (void* port_buffer); - void engine_halted (); - void make_connections (); - void init (std::string const &, Flags); - - static pthread_t _process_thread; - -}; - -} // namespace MIDI - -#endif // __libmidi_port_h__ diff --git a/libs/midi++2/midi++/manager.h b/libs/midi++2/midi++/manager.h deleted file mode 100644 index 7f4df5c6c8..0000000000 --- a/libs/midi++2/midi++/manager.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - Copyright (C) 1998 Paul Barton-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 __midi_manager_h__ -#define __midi_manager_h__ - -#include - -#include - -#include "pbd/rcu.h" - -#include "midi++/types.h" -#include "midi++/port.h" - -namespace ARDOUR { - class PortEngine; -} - -namespace MIDI { - -class MachineControl; - -class Manager { - public: - ~Manager (); - - /** Signal the start of an audio cycle. - * This MUST be called before any reading/writing for this cycle. - * Realtime safe. - */ - void cycle_start (pframes_t nframes); - - /** Signal the end of an audio cycle. - * This signifies that the cycle began with @ref cycle_start has ended. - * This MUST be called at the end of each cycle. - * Realtime safe. - */ - void cycle_end (); - - MachineControl* mmc () const { return _mmc; } - Port *mtc_input_port() const { return _mtc_input_port; } - Port *mtc_output_port() const { return _mtc_output_port; } - Port *midi_input_port() const { return _midi_input_port; } - Port *midi_output_port() const { return _midi_output_port; } - Port *midi_clock_input_port() const { return _midi_clock_input_port; } - Port *midi_clock_output_port() const { return _midi_clock_output_port; } - - Port* add_port (Port *); - void remove_port (Port *); - - Port* port (std::string const &); - - void set_port_states (std::list); - - typedef std::list PortList; - - boost::shared_ptr get_midi_ports() const { return _ports.reader (); } - - static void create (ARDOUR::PortEngine&); - - static Manager *instance () { - return theManager; - } - static void destroy (); - - void reestablish (); - void reconnect (); - - PBD::Signal0 PortsChanged; - - private: - /* This is a SINGLETON pattern */ - - Manager (ARDOUR::PortEngine&); - static Manager *theManager; - - MIDI::MachineControl* _mmc; - MIDI::Port* _mtc_input_port; - MIDI::Port* _mtc_output_port; - MIDI::Port* _midi_input_port; - MIDI::Port* _midi_output_port; - MIDI::Port* _midi_clock_input_port; - MIDI::Port* _midi_clock_output_port; - - SerializedRCUManager _ports; -}; - -} // namespace MIDI - -#endif // __midi_manager_h__ -- cgit v1.2.3 From 1ab61b8564f9934c533d1c1a229888bc7e2fd557 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 7 Aug 2013 22:22:11 -0400 Subject: major redesign of MIDI port heirarchy and management (part 2) --- gtk2_ardour/ardour_ui.cc | 42 +++-- gtk2_ardour/editor.cc | 3 +- gtk2_ardour/editor_drag.cc | 5 +- gtk2_ardour/gain_meter.cc | 1 - gtk2_ardour/generic_pluginui.cc | 2 - gtk2_ardour/level_meter.cc | 1 - gtk2_ardour/midi_tracer.cc | 45 +++++- gtk2_ardour/panner_ui.cc | 1 - gtk2_ardour/plugin_ui.cc | 2 - gtk2_ardour/port_group.cc | 28 ++-- gtk2_ardour/rc_option_editor.cc | 2 - libs/ardour/ardour/audio_port.h | 4 +- libs/ardour/ardour/audioengine.h | 11 +- libs/ardour/ardour/debug.h | 1 + libs/ardour/ardour/jack_audiobackend.h | 2 + libs/ardour/ardour/midi_ui.h | 6 +- libs/ardour/ardour/midiport_manager.h | 10 +- libs/ardour/ardour/port_manager.h | 35 +++- libs/ardour/ardour/session.h | 2 +- libs/ardour/ardour/slave.h | 30 ++-- libs/ardour/ardour/ticker.h | 53 +++--- libs/ardour/audioengine.cc | 138 ++++++---------- libs/ardour/debug.cc | 1 + libs/ardour/globals.cc | 5 +- libs/ardour/jack_audiobackend.cc | 6 +- libs/ardour/jack_connection.cc | 5 +- libs/ardour/ladspa_plugin.cc | 2 - libs/ardour/midi_clock_slave.cc | 44 +++-- libs/ardour/midi_ui.cc | 40 ++--- libs/ardour/midiport_manager.cc | 40 ++++- libs/ardour/mtc_slave.cc | 49 ++++-- libs/ardour/port.cc | 1 + libs/ardour/port_manager.cc | 128 +++++++++++++-- libs/ardour/rc_configuration.cc | 16 +- libs/ardour/session.cc | 20 ++- libs/ardour/session_export.cc | 7 +- libs/ardour/session_midi.cc | 20 +-- libs/ardour/session_process.cc | 6 +- libs/ardour/session_state.cc | 53 +++--- libs/ardour/session_transport.cc | 19 +-- libs/ardour/ticker.cc | 180 ++++++++++----------- libs/ardour/wscript | 2 + libs/midi++2/midi++/mmc.h | 5 +- libs/midi++2/midi++/parser.h | 4 +- libs/midi++2/midi++/port.h | 7 - libs/midi++2/mmc.cc | 15 +- libs/midi++2/parser.cc | 3 +- libs/midi++2/port.cc | 2 +- libs/midi++2/wscript | 2 - .../generic_midi/generic_midi_control_protocol.cc | 19 +-- .../generic_midi/generic_midi_control_protocol.h | 18 ++- libs/surfaces/generic_midi/midiaction.cc | 2 +- libs/surfaces/generic_midi/midiaction.h | 4 +- libs/surfaces/generic_midi/midicontrollable.cc | 38 ++--- libs/surfaces/generic_midi/midicontrollable.h | 15 +- libs/surfaces/generic_midi/midifunction.cc | 2 +- libs/surfaces/generic_midi/midifunction.h | 3 +- libs/surfaces/generic_midi/midiinvokable.cc | 22 +-- libs/surfaces/generic_midi/midiinvokable.h | 7 +- libs/surfaces/mackie/surface.cc | 1 - libs/surfaces/mackie/surface_port.cc | 47 ++---- libs/surfaces/mackie/surface_port.h | 23 ++- 62 files changed, 743 insertions(+), 564 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index a3ea2b1612..69e2a339dd 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -58,8 +58,6 @@ #include "gtkmm2ext/popup.h" #include "gtkmm2ext/window_title.h" -#include "midi++/manager.h" - #include "ardour/ardour.h" #include "ardour/audio_backend.h" #include "ardour/audioengine.h" @@ -1050,14 +1048,20 @@ ARDOUR_UI::update_sample_rate (framecnt_t) framecnt_t rate = engine->sample_rate(); - if (fmod (rate, 1000.0) != 0.0) { - snprintf (buf, sizeof (buf), _("JACK: %.1f kHz / %4.1f ms"), - (float) rate / 1000.0f, - (engine->usecs_per_cycle() / 1000.0f)); + if (rate == 0) { + /* no sample rate available */ + snprintf (buf, sizeof (buf), _("Audio: disconnected")); } else { - snprintf (buf, sizeof (buf), _("JACK: %" PRId64 " kHz / %4.1f ms"), - rate/1000, - (engine->usecs_per_cycle() * 1000.0f)); + + if (fmod (rate, 1000.0) != 0.0) { + snprintf (buf, sizeof (buf), _("Audio: %.1f kHz / %4.1f ms"), + (float) rate / 1000.0f, + (engine->usecs_per_cycle() / 1000.0f)); + } else { + snprintf (buf, sizeof (buf), _("Audio: %" PRId64 " kHz / %4.1f ms"), + rate/1000, + (engine->usecs_per_cycle() * 1000.0f)); + } } } @@ -1181,6 +1185,11 @@ ARDOUR_UI::update_disk_space() char buf[64]; framecnt_t fr = _session->frame_rate(); + if (fr == 0) { + /* skip update - no SR available */ + return; + } + if (!opt_frames) { /* Available space is unknown */ snprintf (buf, sizeof (buf), "%s", _("Disk: Unknown")); @@ -1662,10 +1671,17 @@ ARDOUR_UI::transport_goto_wallclock () time (&now); localtime_r (&now, &tmnow); + + int frame_rate = _session->frame_rate(); + + if (frame_rate == 0) { + /* no frame rate available */ + return; + } - frames = tmnow.tm_hour * (60 * 60 * _session->frame_rate()); - frames += tmnow.tm_min * (60 * _session->frame_rate()); - frames += tmnow.tm_sec * _session->frame_rate(); + frames = tmnow.tm_hour * (60 * 60 * frame_rate); + frames += tmnow.tm_min * (60 * frame_rate); + frames += tmnow.tm_sec * frame_rate; _session->request_locate (frames, _session->transport_rolling ()); @@ -3802,7 +3818,7 @@ void ARDOUR_UI::disconnect_from_jack () { if (engine) { - if (engine->pause ()) { + if (engine->stop ()) { MessageDialog msg (*editor, _("Could not disconnect from JACK")); msg.run (); } diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 300e317a38..a0418892e7 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -1258,7 +1258,8 @@ Editor::set_session (Session *t) /* These signals can all be emitted by a non-GUI thread. Therefore the handlers for them must not attempt to directly interact with the GUI, - but use Gtkmm2ext::UI::instance()->call_slot(); + but use PBD::Signal::connect() which accepts an event loop + ("context") where the handler will be asked to run. */ _session->StepEditStatusChange.connect (_session_connections, invalidator (*this), boost::bind (&Editor::step_edit_status_change, this, _1), gui_context()); diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index b083e851c5..3389164f50 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -2372,8 +2372,9 @@ CursorDrag::fake_locate (framepos_t t) if (s->timecode_transmission_suspended ()) { framepos_t const f = _editor->playhead_cursor->current_frame; s->send_mmc_locate (f); - s->send_full_time_code (f); - s->send_song_position_pointer (f); + // XXX need to queue full time code and SPP messages somehow + // s->send_full_time_code (f); + // s->send_song_position_pointer (f); } show_verbose_cursor_time (t); diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 10512b24d0..b2beb5b9a3 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -32,7 +32,6 @@ #include #include #include -#include "midi++/manager.h" #include "pbd/fastlog.h" #include "pbd/stacktrace.h" diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc index 971dfc0e9b..4405d05c1c 100644 --- a/gtk2_ardour/generic_pluginui.cc +++ b/gtk2_ardour/generic_pluginui.cc @@ -37,8 +37,6 @@ #include #include -#include "midi++/manager.h" - #include "ardour/plugin.h" #include "ardour/plugin_insert.h" #include "ardour/session.h" diff --git a/gtk2_ardour/level_meter.cc b/gtk2_ardour/level_meter.cc index 6f48864992..bf9823518b 100644 --- a/gtk2_ardour/level_meter.cc +++ b/gtk2_ardour/level_meter.cc @@ -23,7 +23,6 @@ #include #include -#include "midi++/manager.h" #include "pbd/fastlog.h" #include "ardour_ui.h" diff --git a/gtk2_ardour/midi_tracer.cc b/gtk2_ardour/midi_tracer.cc index 073fd9cc15..fee339d126 100644 --- a/gtk2_ardour/midi_tracer.cc +++ b/gtk2_ardour/midi_tracer.cc @@ -24,7 +24,10 @@ #include #include "midi++/parser.h" -#include "midi++/manager.h" + +#include "ardour/async_midi_port.h" +#include "ardour/midi_port.h" +#include "ardour/audioengine.h" #include "midi_tracer.h" #include "gui_thread.h" @@ -53,7 +56,8 @@ MidiTracer::MidiTracer () , collect_button (_("Enabled")) , delta_time_button (_("Delta times")) { - Manager::instance()->PortsChanged.connect (_manager_connection, invalidator (*this), boost::bind (&MidiTracer::ports_changed, this), gui_context()); + ARDOUR::AudioEngine::instance()->PortRegisteredOrUnregistered.connect + (_manager_connection, invalidator (*this), boost::bind (&MidiTracer::ports_changed, this), gui_context()); _last_receipt.tv_sec = 0; _last_receipt.tv_usec = 0; @@ -126,25 +130,50 @@ MidiTracer::ports_changed () { string const c = _port_combo.get_active_text (); _port_combo.clear (); + + ARDOUR::PortManager::PortList pl; + ARDOUR::AudioEngine::instance()->get_ports (ARDOUR::DataType::MIDI, pl); + + if (pl.empty()) { + _port_combo.set_active_text (""); + return; + } - boost::shared_ptr p = Manager::instance()->get_midi_ports (); - for (Manager::PortList::const_iterator i = p->begin(); i != p->end(); ++i) { + for (ARDOUR::PortManager::PortList::const_iterator i = pl.begin(); i != pl.end(); ++i) { _port_combo.append_text ((*i)->name()); } - _port_combo.set_active_text (c); + if (c.empty()) { + _port_combo.set_active_text (pl.front()->name()); + } else { + _port_combo.set_active_text (c); + } } void MidiTracer::port_changed () { + using namespace ARDOUR; + disconnect (); - Port* p = Manager::instance()->port (_port_combo.get_active_text()); + boost::shared_ptr p = AudioEngine::instance()->get_port_by_name (_port_combo.get_active_text()); + + if (!p) { + std::cerr << "port not found\n"; + return; + } + + boost::shared_ptr async = boost::dynamic_pointer_cast (p); - if (p) { - p->parser()->any.connect_same_thread (_parser_connection, boost::bind (&MidiTracer::tracer, this, _1, _2, _3)); + if (!async) { + /* pure ARDOUR::MidiPort ... cannot currently attach to it because it + * has no Parser. + */ + return; } + + async->parser()->any.connect_same_thread (_parser_connection, boost::bind (&MidiTracer::tracer, this, _1, _2, _3)); } void diff --git a/gtk2_ardour/panner_ui.cc b/gtk2_ardour/panner_ui.cc index 181664bb4e..c82a44f399 100644 --- a/gtk2_ardour/panner_ui.cc +++ b/gtk2_ardour/panner_ui.cc @@ -21,7 +21,6 @@ #include #include -#include "midi++/manager.h" #include "pbd/fastlog.h" #include "ardour/pannable.h" diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index d9741f5e39..713b98cdaf 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -40,8 +40,6 @@ #include #include -#include "midi++/manager.h" - #include "ardour/session.h" #include "ardour/plugin.h" #include "ardour/plugin_insert.h" diff --git a/gtk2_ardour/port_group.cc b/gtk2_ardour/port_group.cc index 5b4f151da8..f8c8e2bde2 100644 --- a/gtk2_ardour/port_group.cc +++ b/gtk2_ardour/port_group.cc @@ -21,7 +21,6 @@ #include #include -#include "midi++/manager.h" #include "midi++/mmc.h" #include "ardour/audioengine.h" @@ -29,9 +28,13 @@ #include "ardour/bundle.h" #include "ardour/control_protocol_manager.h" #include "ardour/io_processor.h" +#include "ardour/midi_port.h" +#include "ardour/midiport_manager.h" #include "ardour/session.h" #include "ardour/user_bundle.h" #include "ardour/port.h" +#include "ardour/syncport_manager.h" + #include "control_protocol/control_protocol.h" #include "gui_thread.h" @@ -452,37 +455,36 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp /* Ardour's sync ports */ - MIDI::Manager* midi_manager = MIDI::Manager::instance (); - if (midi_manager && (type == DataType::MIDI || type == DataType::NIL)) { + if ((type == DataType::MIDI || type == DataType::NIL)) { boost::shared_ptr sync (new Bundle (_("Sync"), inputs)); - MIDI::MachineControl* mmc = midi_manager->mmc (); - AudioEngine& ae = session->engine (); + AudioEngine* ae = AudioEngine::instance(); + MIDI::MachineControl& mmc (ae->mmc()); if (inputs) { sync->add_channel ( - _("MTC in"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->mtc_input_port()->name()) + _("MTC in"), DataType::MIDI, ae->make_port_name_non_relative (ae->mtc_input_port()->name()) ); sync->add_channel ( - _("MIDI control in"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->midi_input_port()->name()) + _("MIDI control in"), DataType::MIDI, ae->make_port_name_non_relative (ae->midi_input_port()->name()) ); sync->add_channel ( - _("MIDI clock in"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->midi_clock_input_port()->name()) + _("MIDI clock in"), DataType::MIDI, ae->make_port_name_non_relative (ae->midi_clock_input_port()->name()) ); sync->add_channel ( - _("MMC in"), DataType::MIDI, ae.make_port_name_non_relative (mmc->input_port()->name()) + _("MMC in"), DataType::MIDI, ae->make_port_name_non_relative (mmc.input_port()->name()) ); } else { sync->add_channel ( - _("MTC out"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->mtc_output_port()->name()) + _("MTC out"), DataType::MIDI, ae->make_port_name_non_relative (ae->mtc_output_port()->name()) ); sync->add_channel ( - _("MIDI control out"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->midi_output_port()->name()) + _("MIDI control out"), DataType::MIDI, ae->make_port_name_non_relative (ae->midi_output_port()->name()) ); sync->add_channel ( - _("MIDI clock out"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->midi_clock_output_port()->name()) + _("MIDI clock out"), DataType::MIDI, ae->make_port_name_non_relative (ae->midi_clock_output_port()->name()) ); sync->add_channel ( - _("MMC out"), DataType::MIDI, ae.make_port_name_non_relative (mmc->output_port()->name()) + _("MMC out"), DataType::MIDI, ae->make_port_name_non_relative (mmc.output_port()->name()) ); } diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 54b96bbb8d..ed9ffda4ef 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -31,8 +31,6 @@ #include "pbd/fpu.h" #include "pbd/cpus.h" -#include "midi++/manager.h" - #include "ardour/audioengine.h" #include "ardour/dB.h" #include "ardour/rc_configuration.h" diff --git a/libs/ardour/ardour/audio_port.h b/libs/ardour/ardour/audio_port.h index f5affb0580..f87b134e9e 100644 --- a/libs/ardour/ardour/audio_port.h +++ b/libs/ardour/ardour/audio_port.h @@ -49,9 +49,7 @@ class AudioPort : public Port friend class PortManager; AudioPort (std::string const &, PortFlags); - protected: - friend class AudioEngine; - /* special access for engine only (hah, C++) */ + /* special access for PortManager only (hah, C++) */ Sample* engine_get_whole_audio_buffer (); private: diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 6fb13b7ae0..509d330f12 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -36,13 +36,9 @@ #include "pbd/signals.h" #include "pbd/stacktrace.h" -#include -#include -#include -#include +#include "midi++/mmc.h" #include "ardour/ardour.h" - #include "ardour/data_type.h" #include "ardour/session_handle.h" #include "ardour/types.h" @@ -192,6 +188,8 @@ public: /* sets up the process callback thread */ static void thread_init_callback (void *); + MIDI::MachineControl& mmc() { return _mmc; } + private: AudioEngine (); @@ -206,16 +204,17 @@ public: gain_t session_removal_gain; gain_t session_removal_gain_step; bool _running; + bool _freewheeling; /// number of frames between each check for changes in monitor input framecnt_t monitor_check_interval; /// time of the last monitor check in frames framecnt_t last_monitor_check; /// the number of frames processed since start() was called framecnt_t _processed_frames; - bool _freewheeling; bool _pre_freewheel_mmc_enabled; Glib::Threads::Thread* m_meter_thread; ProcessThread* _main_thread; + MIDI::MachineControl _mmc; void meter_thread (); void start_metering_thread (); diff --git a/libs/ardour/ardour/debug.h b/libs/ardour/ardour/debug.h index 202d0cc424..5811f7a484 100644 --- a/libs/ardour/ardour/debug.h +++ b/libs/ardour/ardour/debug.h @@ -63,6 +63,7 @@ namespace PBD { extern uint64_t OrderKeys; extern uint64_t Automation; extern uint64_t WiimoteControl; + extern uint64_t Ports; } } diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index 9fa3d0c1cc..ada7ce8e33 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -178,6 +178,8 @@ class JACKAudioBackend : public AudioBackend { typedef std::map DriverDeviceMap; mutable DriverDeviceMap all_devices; + + PBD::ScopedConnection disconnect_connection; }; } // namespace diff --git a/libs/ardour/ardour/midi_ui.h b/libs/ardour/ardour/midi_ui.h index 34e97494be..c15a530057 100644 --- a/libs/ardour/ardour/midi_ui.h +++ b/libs/ardour/ardour/midi_ui.h @@ -26,13 +26,11 @@ #include "pbd/signals.h" #include "pbd/stacktrace.h" -namespace MIDI { - class Port; -} namespace ARDOUR { class Session; +class AsyncMIDIPort; /* this is mostly a placeholder because I suspect that at some point we will want to add more members to accomodate @@ -67,7 +65,7 @@ class MidiControlUI : public AbstractUI ARDOUR::Session& _session; PBD::ScopedConnection rebind_connection; - bool midi_input_handler (Glib::IOCondition, MIDI::Port*); + bool midi_input_handler (Glib::IOCondition, AsyncMIDIPort*); void reset_ports (); void clear_ports (); diff --git a/libs/ardour/ardour/midiport_manager.h b/libs/ardour/ardour/midiport_manager.h index 9c45e60341..df33038f2b 100644 --- a/libs/ardour/ardour/midiport_manager.h +++ b/libs/ardour/ardour/midiport_manager.h @@ -56,8 +56,10 @@ class MidiPortManager { * callback. */ - MIDI::Port* midi_input_port () { return _midi_input_port; } - MIDI::Port* midi_output_port () { return _midi_output_port; } + MIDI::Port* midi_input_port () const { return _midi_input_port; } + MIDI::Port* midi_output_port () const { return _midi_output_port; } + MIDI::Port* mmc_input_port () const { return _mmc_input_port; } + MIDI::Port* mmc_output_port () const { return _mmc_output_port; } /* Ports used for synchronization. These have their I/O handled inside the * process callback. @@ -76,8 +78,12 @@ class MidiPortManager { /* asynchronously handled ports: MIDI::Port */ MIDI::Port* _midi_input_port; MIDI::Port* _midi_output_port; + MIDI::Port* _mmc_input_port; + MIDI::Port* _mmc_output_port; boost::shared_ptr _midi_in; boost::shared_ptr _midi_out; + boost::shared_ptr _mmc_in; + boost::shared_ptr _mmc_out; /* synchronously handled ports: ARDOUR::MidiPort */ boost::shared_ptr _mtc_input_port; diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index 06e4939101..895294810e 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -32,15 +32,17 @@ #include "pbd/rcu.h" #include "ardour/chan_count.h" +#include "ardour/midiport_manager.h" #include "ardour/port.h" #include "ardour/port_engine.h" namespace ARDOUR { -class PortManager +class PortManager : public MidiPortManager { public: typedef std::map > Ports; + typedef std::list > PortList; PortManager (); virtual ~PortManager() {} @@ -53,8 +55,8 @@ class PortManager /* Port registration */ - boost::shared_ptr register_input_port (DataType, const std::string& portname); - boost::shared_ptr register_output_port (DataType, const std::string& portname); + boost::shared_ptr register_input_port (DataType, const std::string& portname, bool async = false); + boost::shared_ptr register_output_port (DataType, const std::string& portname, bool async = false); int unregister_port (boost::shared_ptr); /* Port connectivity */ @@ -87,7 +89,8 @@ class PortManager ChanCount n_physical_inputs () const; int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&); - + int get_ports (DataType, PortList&); + void remove_all_ports (); /* per-Port monitoring */ @@ -135,9 +138,31 @@ class PortManager SerializedRCUManager ports; bool _port_remove_in_progress; - boost::shared_ptr register_port (DataType type, const std::string& portname, bool input); + boost::shared_ptr register_port (DataType type, const std::string& portname, bool input, bool async = false); void port_registration_failure (const std::string& portname); + + /** List of ports to be used between ::cycle_start() and ::cycle_end() + */ + boost::shared_ptr _cycle_ports; + + void fade_out (gain_t, gain_t, pframes_t); + void silence (pframes_t nframes); + void check_monitoring (); + /** Signal the start of an audio cycle. + * This MUST be called before any reading/writing for this cycle. + * Realtime safe. + */ + void cycle_start (pframes_t nframes); + + /** Signal the end of an audio cycle. + * This signifies that the cycle began with @ref cycle_start has ended. + * This MUST be called at the end of each cycle. + * Realtime safe. + */ + void cycle_end (pframes_t nframes); }; + + } // namespace diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index a12f816c1e..a47c13046d 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -813,7 +813,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi boost::shared_ptr playlists; void send_mmc_locate (framepos_t); - int send_full_time_code (framepos_t); + int send_full_time_code (framepos_t, pframes_t nframes); void send_song_position_pointer (framepos_t); bool step_editing() const { return (_step_editors > 0); } diff --git a/libs/ardour/ardour/slave.h b/libs/ardour/ardour/slave.h index 4408da2d25..adf425ea43 100644 --- a/libs/ardour/ardour/slave.h +++ b/libs/ardour/ardour/slave.h @@ -40,15 +40,12 @@ #define PLUSMINUS(A) ( ((A)<0) ? "-" : (((A)>0) ? "+" : "\u00B1") ) #define LEADINGZERO(A) ( (A)<10 ? " " : (A)<100 ? " " : (A)<1000 ? " " : "" ) -namespace MIDI { - class Port; -} - namespace ARDOUR { class TempoMap; class Session; class AudioEngine; +class MidiPort; /** * @class Slave @@ -67,6 +64,15 @@ class Slave { Slave() { } virtual ~Slave() {} + /** The slave should read any incoming information in this method + * and use it adjust its current idea of reality. If no such + * processing is required, it does need to be implemented. + * + * @param nframes specifies the number of frames-worth of data that + * can be read from any ports used by the slave. + */ + virtual int process (pframes_t) { return 0; } + /** * This is the most important function to implement: * Each process cycle, Session::follow_slave will call this method. @@ -253,10 +259,11 @@ class TimecodeSlave : public Slave { class MTC_Slave : public TimecodeSlave { public: - MTC_Slave (Session&, MIDI::Port&); + MTC_Slave (Session&, MidiPort&); ~MTC_Slave (); - void rebind (MIDI::Port&); + void rebind (MidiPort&); + int process (pframes_t); bool speed_and_position (double&, framepos_t&); bool locked() const; @@ -274,7 +281,8 @@ class MTC_Slave : public TimecodeSlave { private: Session& session; - MIDI::Port* port; + MidiPort* port; + MIDI::Parser parser; PBD::ScopedConnectionList port_connections; PBD::ScopedConnection config_connection; bool can_notify_on_unknown_rate; @@ -405,13 +413,14 @@ public: class MIDIClock_Slave : public Slave { public: - MIDIClock_Slave (Session&, MIDI::Port&, int ppqn = 24); + MIDIClock_Slave (Session&, MidiPort&, int ppqn = 24); /// Constructor for unit tests MIDIClock_Slave (ISlaveSessionProxy* session_proxy = 0, int ppqn = 24); ~MIDIClock_Slave (); - void rebind (MIDI::Port&); + void rebind (MidiPort&); + int process (pframes_t); bool speed_and_position (double&, framepos_t&); bool locked() const; @@ -427,7 +436,8 @@ class MIDIClock_Slave : public Slave { protected: ISlaveSessionProxy* session; - MIDI::Port* port; + MidiPort* port; + MIDI::Parser parser; PBD::ScopedConnectionList port_connections; /// pulses per quarter note for one MIDI clock frame (default 24) diff --git a/libs/ardour/ardour/ticker.h b/libs/ardour/ardour/ticker.h index b6e5376c12..7f0d1987fc 100644 --- a/libs/ardour/ardour/ticker.h +++ b/libs/ardour/ardour/ticker.h @@ -27,17 +27,13 @@ #include "ardour/session_handle.h" -#ifndef TICKER_H_ -#define TICKER_H_ +#ifndef __libardour_ticker_h__ +#define __libardour_ticker_h__ -namespace MIDI { - class Port; -} - -namespace ARDOUR -{ +namespace ARDOUR { class Session; +class MidiPort; class MidiClockTicker : public SessionHandlePtr, boost::noncopyable { @@ -45,7 +41,7 @@ public: MidiClockTicker (); virtual ~MidiClockTicker(); - void tick (const framepos_t& transport_frames); + void tick (const framepos_t& transport_frames, pframes_t nframes); bool has_midi_port() const { return _midi_port != 0; } @@ -58,9 +54,6 @@ public: /// slot for the signal session::TransportStateChange void transport_state_changed(); - /// slot for the signal session::PositionChanged - void position_changed (framepos_t position); - /// slot for the signal session::TransportLooped void transport_looped(); @@ -70,23 +63,25 @@ public: /// pulses per quarter note (default 24) void set_ppqn(int ppqn) { _ppqn = ppqn; } -private: - MIDI::Port* _midi_port; - int _ppqn; - double _last_tick; - - class Position; - boost::scoped_ptr _pos; - - double one_ppqn_in_frames (framepos_t transport_position); - - void send_midi_clock_event (pframes_t offset); - void send_start_event (pframes_t offset); - void send_continue_event (pframes_t offset); - void send_stop_event (pframes_t offset); - void send_position_event (uint32_t midi_clocks, pframes_t offset); + private: + boost::shared_ptr _midi_port; + int _ppqn; + double _last_tick; + bool _send_pos; + bool _send_state; + + class Position; + boost::scoped_ptr _pos; + + double one_ppqn_in_frames (framepos_t transport_position); + + void send_midi_clock_event (pframes_t offset, pframes_t nframes); + void send_start_event (pframes_t offset, pframes_t nframes); + void send_continue_event (pframes_t offset, pframes_t nframes); + void send_stop_event (pframes_t offset, pframes_t nframes); + void send_position_event (uint32_t midi_clocks, pframes_t offset, pframes_t nframes); }; - } + // namespace -#endif /* TICKER_H_ */ +#endif /* __libardour_ticker_h__ */ diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 0c88e7c0fd..9c04529384 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -37,10 +37,9 @@ #include #include "midi++/port.h" -#include "midi++/jack_midi_port.h" #include "midi++/mmc.h" -#include "midi++/manager.h" +#include "ardour/async_midi_port.h" #include "ardour/audio_port.h" #include "ardour/audio_backend.h" #include "ardour/audioengine.h" @@ -50,6 +49,7 @@ #include "ardour/internal_send.h" #include "ardour/meter.h" #include "ardour/midi_port.h" +#include "ardour/midiport_manager.h" #include "ardour/port.h" #include "ardour/process_thread.h" #include "ardour/session.h" @@ -66,10 +66,11 @@ AudioEngine* AudioEngine::_instance = 0; AudioEngine::AudioEngine () : session_remove_pending (false) , session_removal_countdown (-1) + , _running (false) + , _freewheeling (false) , monitor_check_interval (INT32_MAX) , last_monitor_check (0) , _processed_frames (0) - , _freewheeling (false) , _pre_freewheel_mmc_enabled (false) , m_meter_thread (0) , _main_thread (0) @@ -117,7 +118,7 @@ _thread_init_callback (void * /*arg*/) SessionEvent::create_per_thread_pool (X_("Audioengine"), 512); - MIDI::JackMIDIPort::set_process_thread (pthread_self()); + AsyncMIDIPort::set_process_thread (pthread_self()); } void @@ -231,8 +232,8 @@ AudioEngine::process_callback (pframes_t nframes) if (_session == 0) { if (!_freewheeling) { - MIDI::Manager::instance()->cycle_start(nframes); - MIDI::Manager::instance()->cycle_end(); + PortManager::cycle_start (nframes); + PortManager::cycle_end (nframes); } _processed_frames = next_processed_frames; @@ -243,34 +244,22 @@ AudioEngine::process_callback (pframes_t nframes) /* tell all relevant objects that we're starting a new cycle */ InternalSend::CycleStart (nframes); - Port::set_global_port_buffer_offset (0); - Port::set_cycle_framecnt (nframes); /* tell all Ports that we're starting a new cycle */ - boost::shared_ptr p = ports.reader(); - - for (Ports::iterator i = p->begin(); i != p->end(); ++i) { - i->second->cycle_start (nframes); - } + PortManager::cycle_start (nframes); /* test if we are freewheeling and there are freewheel signals connected. ardour should act normally even when freewheeling unless /it/ is - exporting + exporting (which is what Freewheel.empty() tests for). */ if (_freewheeling && !Freewheel.empty()) { - Freewheel (nframes); - } else { - MIDI::Manager::instance()->cycle_start(nframes); - if (_session) { _session->process (nframes); } - - MIDI::Manager::instance()->cycle_end(); } if (_freewheeling) { @@ -283,52 +272,18 @@ AudioEngine::process_callback (pframes_t nframes) } if (last_monitor_check + monitor_check_interval < next_processed_frames) { - - boost::shared_ptr p = ports.reader(); - - for (Ports::iterator i = p->begin(); i != p->end(); ++i) { - - bool x; - - if (i->second->last_monitor() != (x = i->second->monitoring_input ())) { - i->second->set_last_monitor (x); - /* XXX I think this is dangerous, due to - a likely mutex in the signal handlers ... - */ - i->second->MonitorInputChanged (x); /* EMIT SIGNAL */ - } - } + + PortManager::check_monitoring (); last_monitor_check = next_processed_frames; } if (_session->silent()) { - - for (Ports::iterator i = p->begin(); i != p->end(); ++i) { - - if (i->second->sends_output()) { - i->second->get_buffer(nframes).silence(nframes); - } - } + PortManager::silence (nframes); } if (session_remove_pending && session_removal_countdown) { - for (Ports::iterator i = p->begin(); i != p->end(); ++i) { - - if (i->second->sends_output()) { - - boost::shared_ptr ap = boost::dynamic_pointer_cast (i->second); - if (ap) { - Sample* s = ap->engine_get_whole_audio_buffer (); - gain_t g = session_removal_gain; - - for (pframes_t n = 0; n < nframes; ++n) { - *s++ *= g; - g -= session_removal_gain_step; - } - } - } - } + PortManager::fade_out (session_removal_gain, session_removal_gain_step, nframes); if (session_removal_countdown > nframes) { session_removal_countdown -= nframes; @@ -339,11 +294,7 @@ AudioEngine::process_callback (pframes_t nframes) session_removal_gain -= (nframes * session_removal_gain_step); } - // Finalize ports - - for (Ports::iterator i = p->begin(); i != p->end(); ++i) { - i->second->cycle_end (nframes); - } + PortManager::cycle_end (nframes); _processed_frames = next_processed_frames; @@ -574,7 +525,7 @@ AudioEngine::set_backend (const std::string& name, const std::string& arg1, cons } drop_backend (); - + try { cerr << "Instantiate " << b->second->name << " with " << arg1 << " + " << arg2 << endl; @@ -603,31 +554,45 @@ AudioEngine::start () return -1; } - if (!_running) { + if (_running) { + return 0; + } - if (_session) { - BootMessage (_("Connect session to engine")); - _session->set_frame_rate (_backend->sample_rate()); - } + /* if we're still connected (i.e. previously paused), no need to + * re-register ports. + */ + + bool have_ports = (!ports.reader()->empty()); - _processed_frames = 0; - last_monitor_check = 0; + _processed_frames = 0; + last_monitor_check = 0; + + if (_backend->start() == 0) { - if (_backend->start() == 0) { - _running = true; - last_monitor_check = 0; + _running = true; + last_monitor_check = 0; + + if (_session) { + _session->set_frame_rate (_backend->sample_rate()); - if (_session && _session->config.get_jack_time_master()) { + if (_session->config.get_jack_time_master()) { _backend->set_time_master (true); } - - Running(); /* EMIT SIGNAL */ - } else { - /* should report error? */ } - } - return _running ? 0 : -1; + if (!have_ports) { + PortManager::create_ports (); + } + + _mmc.set_ports (mmc_input_port(), mmc_output_port()); + + Running(); /* EMIT SIGNAL */ + + return 0; + } + + /* should report error ... */ + return -1; } int @@ -641,6 +606,7 @@ AudioEngine::stop () if (_backend->stop () == 0) { _running = false; + _processed_frames = 0; stop_metering_thread (); Stopped (); /* EMIT SIGNAL */ @@ -932,7 +898,7 @@ AudioEngine::thread_init_callback (void* arg) SessionEvent::create_per_thread_pool (X_("AudioEngine"), 512); - MIDI::JackMIDIPort::set_process_thread (pthread_self()); + AsyncMIDIPort::set_process_thread (pthread_self()); if (arg) { AudioEngine* ae = static_cast (arg); @@ -964,10 +930,10 @@ void AudioEngine::freewheel_callback (bool onoff) { if (onoff) { - _pre_freewheel_mmc_enabled = MIDI::Manager::instance()->mmc()->send_enabled (); - MIDI::Manager::instance()->mmc()->enable_send (false); + _pre_freewheel_mmc_enabled = _mmc.send_enabled (); + _mmc.enable_send (false); } else { - MIDI::Manager::instance()->mmc()->enable_send (_pre_freewheel_mmc_enabled); + _mmc.enable_send (_pre_freewheel_mmc_enabled); } } @@ -991,8 +957,6 @@ void AudioEngine::halted_callback (const char* why) { stop_metering_thread (); - - MIDI::JackMIDIPort::EngineHalted (); /* EMIT SIGNAL */ Halted (why); /* EMIT SIGNAL */ } diff --git a/libs/ardour/debug.cc b/libs/ardour/debug.cc index afd5da2169..fb122dd83c 100644 --- a/libs/ardour/debug.cc +++ b/libs/ardour/debug.cc @@ -60,5 +60,6 @@ uint64_t PBD::DEBUG::TempoMap = PBD::new_debug_bit ("tempomap"); uint64_t PBD::DEBUG::OrderKeys = PBD::new_debug_bit ("orderkeys"); uint64_t PBD::DEBUG::Automation = PBD::new_debug_bit ("automation"); uint64_t PBD::DEBUG::WiimoteControl = PBD::new_debug_bit ("wiimotecontrol"); +uint64_t PBD::DEBUG::Ports = PBD::new_debug_bit ("Ports"); diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index d744368fe7..fbce336283 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -67,7 +67,6 @@ #include "pbd/basename.h" #include "midi++/port.h" -#include "midi++/manager.h" #include "midi++/mmc.h" #include "ardour/analyser.h" @@ -80,6 +79,7 @@ #include "ardour/control_protocol_manager.h" #include "ardour/filesystem_paths.h" #include "ardour/midi_region.h" +#include "ardour/midiport_manager.h" #include "ardour/mix.h" #include "ardour/panner_manager.h" #include "ardour/plugin_manager.h" @@ -340,9 +340,6 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir void ARDOUR::init_post_engine () { - /* the MIDI Manager is needed by the ControlProtocolManager */ - MIDI::Manager::create (AudioEngine::instance()->port_engine()); - ControlProtocolManager::instance().discover_control_protocols (); XMLNode* node; diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 19158aacc9..2e0d90202f 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -24,7 +24,8 @@ #include "pbd/error.h" -#include "midi++/manager.h" +#include "jack/jack.h" +#include "jack/thread.h" #include "ardour/audioengine.h" #include "ardour/types.h" @@ -57,6 +58,7 @@ JACKAudioBackend::JACKAudioBackend (AudioEngine& e, boost::shared_ptrDisconnected.connect_same_thread (disconnect_connection, boost::bind (&JACKAudioBackend::disconnected, this, _1)); } JACKAudioBackend::~JACKAudioBackend() @@ -897,8 +899,6 @@ JACKAudioBackend::jack_bufsize_callback (pframes_t nframes) void JACKAudioBackend::disconnected (const char* why) { - /* called from jack shutdown handler */ - bool was_running = _running; _running = false; diff --git a/libs/ardour/jack_connection.cc b/libs/ardour/jack_connection.cc index 57950b0e17..d48e3355b5 100644 --- a/libs/ardour/jack_connection.cc +++ b/libs/ardour/jack_connection.cc @@ -135,7 +135,10 @@ JackConnection::close () GET_PRIVATE_JACK_POINTER_RET (_jack, -1); if (_priv_jack) { - return jack_client_close (_priv_jack); + int ret = jack_client_close (_priv_jack); + _jack = 0; + Disconnected (""); /* EMIT SIGNAL */ + return ret; } return 0; diff --git a/libs/ardour/ladspa_plugin.cc b/libs/ardour/ladspa_plugin.cc index 5a6e577f2d..6a2636e4f4 100644 --- a/libs/ardour/ladspa_plugin.cc +++ b/libs/ardour/ladspa_plugin.cc @@ -36,8 +36,6 @@ #include "pbd/xml++.h" #include "pbd/stacktrace.h" -#include "midi++/manager.h" - #include "ardour/session.h" #include "ardour/ladspa_plugin.h" #include "ardour/buffer_set.h" diff --git a/libs/ardour/midi_clock_slave.cc b/libs/ardour/midi_clock_slave.cc index 6f54d17d02..752644e9f4 100644 --- a/libs/ardour/midi_clock_slave.cc +++ b/libs/ardour/midi_clock_slave.cc @@ -31,6 +31,8 @@ #include "midi++/port.h" #include "ardour/debug.h" +#include "ardour/midi_buffer.h" +#include "ardour/midi_port.h" #include "ardour/slave.h" #include "ardour/tempo.h" @@ -41,13 +43,20 @@ using namespace ARDOUR; using namespace MIDI; using namespace PBD; -MIDIClock_Slave::MIDIClock_Slave (Session& s, MIDI::Port& p, int ppqn) +MIDIClock_Slave::MIDIClock_Slave (Session& s, MidiPort& p, int ppqn) : ppqn (ppqn) , bandwidth (10.0 / 60.0) // 1 BpM = 1 / 60 Hz { session = (ISlaveSessionProxy *) new SlaveSessionProxy(s); rebind (p); reset (); + + parser.timing.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::update_midi_clock, this, _1, _2)); + parser.start.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::start, this, _1, _2)); + parser.contineu.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::contineu, this, _1, _2)); + parser.stop.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::stop, this, _1, _2)); + parser.position.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::position, this, _1, _2, 3)); + } MIDIClock_Slave::MIDIClock_Slave (ISlaveSessionProxy* session_proxy, int ppqn) @@ -63,20 +72,33 @@ MIDIClock_Slave::~MIDIClock_Slave() delete session; } -void -MIDIClock_Slave::rebind (MIDI::Port& p) +int +MIDIClock_Slave::process (pframes_t nframes) { - port_connections.drop_connections(); + MidiBuffer& mb (port->get_midi_buffer (nframes)); - port = &p; + /* dump incoming MIDI to parser */ - DEBUG_TRACE (DEBUG::MidiClock, string_compose ("MIDIClock_Slave: connecting to port %1\n", port->name())); + for (MidiBuffer::iterator b = mb.begin(); b != mb.end(); ++b) { + uint8_t* buf = (*b).buffer(); + + parser.set_timestamp ((*b).time()); - port->parser()->timing.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::update_midi_clock, this, _1, _2)); - port->parser()->start.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::start, this, _1, _2)); - port->parser()->contineu.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::contineu, this, _1, _2)); - port->parser()->stop.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::stop, this, _1, _2)); - port->parser()->position.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::position, this, _1, _2, 3)); + uint32_t limit = (*b).size(); + + for (size_t n = 0; n < limit; ++n) { + parser.scanner (buf[n]); + } + } + + return 0; +} + +void +MIDIClock_Slave::rebind (MidiPort& p) +{ + port = &p; + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("MIDIClock_Slave: connecting to port %1\n", port->name())); } void diff --git a/libs/ardour/midi_ui.cc b/libs/ardour/midi_ui.cc index 0d9ac17601..e75c05c593 100644 --- a/libs/ardour/midi_ui.cc +++ b/libs/ardour/midi_ui.cc @@ -22,11 +22,11 @@ #include "pbd/pthread_utils.h" -#include "midi++/manager.h" -#include "midi++/port.h" - +#include "ardour/async_midi_port.h" #include "ardour/debug.h" #include "ardour/audioengine.h" +#include "ardour/midi_port.h" +#include "ardour/midiport_manager.h" #include "ardour/midi_ui.h" #include "ardour/session.h" #include "ardour/session_event.h" @@ -48,7 +48,6 @@ MidiControlUI::MidiControlUI (Session& s) : AbstractUI (X_("midiui")) , _session (s) { - MIDI::Manager::instance()->PortsChanged.connect_same_thread (rebind_connection, boost::bind (&MidiControlUI::change_midi_ports, this)); _instance = this; } @@ -83,20 +82,10 @@ MidiControlUI::do_request (MidiUIRequest* req) } } -void -MidiControlUI::change_midi_ports () -{ - MidiUIRequest* req = get_request (PortChange); - if (req == 0) { - return; - } - send_request (req); -} - bool -MidiControlUI::midi_input_handler (IOCondition ioc, MIDI::Port* port) +MidiControlUI::midi_input_handler (IOCondition ioc, AsyncMIDIPort* port) { - DEBUG_TRACE (DEBUG::MidiIO, string_compose ("something happend on %1\n", port->name())); + DEBUG_TRACE (DEBUG::MidiIO, string_compose ("something happend on %1\n", ((ARDOUR::Port*)port)->name())); if (ioc & ~IO_IN) { return false; @@ -106,7 +95,7 @@ MidiControlUI::midi_input_handler (IOCondition ioc, MIDI::Port* port) CrossThreadChannel::drain (port->selectable()); - DEBUG_TRACE (DEBUG::MidiIO, string_compose ("data available on %1\n", port->name())); + DEBUG_TRACE (DEBUG::MidiIO, string_compose ("data available on %1\n", ((ARDOUR::Port*)port)->name())); framepos_t now = _session.engine().sample_time(); port->parse (now); } @@ -128,22 +117,19 @@ MidiControlUI::clear_ports () void MidiControlUI::reset_ports () { - clear_ports (); - - boost::shared_ptr plist = MIDI::Manager::instance()->get_midi_ports (); + if (port_sources.empty()) { + AsyncMIDIPort* async = dynamic_cast (AudioEngine::instance()->midi_input_port()); - for (MIDI::Manager::PortList::const_iterator i = plist->begin(); i != plist->end(); ++i) { - - if (!(*i)->centrally_parsed()) { - continue; + if (!async) { + return; } int fd; - if ((fd = (*i)->selectable ()) >= 0) { + if ((fd = async->selectable ()) >= 0) { Glib::RefPtr psrc = IOSource::create (fd, IO_IN|IO_HUP|IO_ERR); - - psrc->connect (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), *i)); + + psrc->connect (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), async)); psrc->attach (_main_loop->get_context()); // glibmm hack: for now, store only the GSource* diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc index fb27800762..ec525fd9f8 100644 --- a/libs/ardour/midiport_manager.cc +++ b/libs/ardour/midiport_manager.cc @@ -66,11 +66,47 @@ MidiPortManager::port (string const & n) void MidiPortManager::create_ports () { - _midi_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MIDI control in"), true); - _midi_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MIDI control out"), true); + /* this method is idempotent + */ + + if (_midi_in) { + return; + } + + _midi_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("control in"), true); + _midi_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("control out"), true); + + _mmc_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("mmc in"), true); + _mmc_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("mmc out"), true); + /* XXX nasty type conversion needed because of the mixed inheritance + * required to integrate MIDI::IPMidiPort and ARDOUR::AsyncMIDIPort. + * + * At some point, we'll move IPMidiPort into Ardour and make it + * inherit from ARDOUR::MidiPort not MIDI::Port, and then this + * mess can go away + */ + _midi_input_port = boost::dynamic_pointer_cast(_midi_in).get(); _midi_output_port = boost::dynamic_pointer_cast(_midi_out).get(); + + _mmc_input_port = boost::dynamic_pointer_cast(_mmc_in).get(); + _mmc_output_port = boost::dynamic_pointer_cast(_mmc_out).get(); + + /* Now register ports used for sync (MTC and MIDI Clock) + */ + + boost::shared_ptr p; + + p = AudioEngine::instance()->register_input_port (DataType::MIDI, _("timecode in")); + _mtc_input_port = boost::dynamic_pointer_cast (p); + p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("timecode out")); + _mtc_output_port= boost::dynamic_pointer_cast (p); + + p = AudioEngine::instance()->register_input_port (DataType::MIDI, _("clock in")); + _midi_clock_input_port = boost::dynamic_pointer_cast (p); + p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("clock out")); + _midi_clock_output_port= boost::dynamic_pointer_cast (p); } void diff --git a/libs/ardour/mtc_slave.cc b/libs/ardour/mtc_slave.cc index 0f2761c350..b42b4989d2 100644 --- a/libs/ardour/mtc_slave.cc +++ b/libs/ardour/mtc_slave.cc @@ -25,11 +25,12 @@ #include "pbd/error.h" -#include "midi++/port.h" +#include "ardour/audioengine.h" #include "ardour/debug.h" -#include "ardour/slave.h" +#include "ardour/midi_buffer.h" +#include "ardour/midi_port.h" #include "ardour/session.h" -#include "ardour/audioengine.h" +#include "ardour/slave.h" #include "i18n.h" @@ -48,8 +49,9 @@ using namespace Timecode; */ const int MTC_Slave::frame_tolerance = 2; -MTC_Slave::MTC_Slave (Session& s, MIDI::Port& p) +MTC_Slave::MTC_Slave (Session& s, MidiPort& p) : session (s) + , port (&p) { can_notify_on_unknown_rate = true; did_reset_tc_format = false; @@ -70,7 +72,11 @@ MTC_Slave::MTC_Slave (Session& s, MIDI::Port& p) session.config.ParameterChanged.connect_same_thread (config_connection, boost::bind (&MTC_Slave::parameter_changed, this, _1)); parse_timecode_offset(); reset (true); - rebind (p); + + parser.mtc_time.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_time, this, _1, _2, _3)); + parser.mtc_qtr.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_qtr, this, _1, _2, _3)); + parser.mtc_status.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_status, this, _1)); + } MTC_Slave::~MTC_Slave() @@ -93,16 +99,35 @@ MTC_Slave::~MTC_Slave() } } +int +MTC_Slave::process (pframes_t nframes) +{ + MidiBuffer& mb (port->get_midi_buffer (nframes)); + + /* dump incoming MIDI to parser */ + + for (MidiBuffer::iterator b = mb.begin(); b != mb.end(); ++b) { + uint8_t* buf = (*b).buffer(); + + parser.set_timestamp ((*b).time()); + + uint32_t limit = (*b).size(); + + for (size_t n = 0; n < limit; ++n) { + parser.scanner (buf[n]); + } + } + + return 0; +} + void -MTC_Slave::rebind (MIDI::Port& p) +MTC_Slave::rebind (MidiPort& p) { port_connections.drop_connections (); port = &p; - port->parser()->mtc_time.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_time, this, _1, _2, _3)); - port->parser()->mtc_qtr.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_qtr, this, _1, _2, _3)); - port->parser()->mtc_status.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_status, this, _1)); } void @@ -154,7 +179,7 @@ MTC_Slave::outside_window (framepos_t pos) const bool MTC_Slave::locked () const { - return port->parser()->mtc_locked() && last_inbound_frame !=0 && engine_dll_initstate !=0; + return parser.mtc_locked() && last_inbound_frame !=0 && engine_dll_initstate !=0; } bool @@ -446,7 +471,7 @@ MTC_Slave::update_mtc_time (const byte *msg, bool was_full, framepos_t now) DEBUG_TRACE (DEBUG::MTC, string_compose ("new mtc_frame: %1 | MTC-FpT: %2 A3-FpT:%3\n", mtc_frame, (4.0*qtr), session.frames_per_timecode_frame())); - switch (port->parser()->mtc_running()) { + switch (parser.mtc_running()) { case MTC_Backward: mtc_frame -= mtc_off; qtr *= -1.0; @@ -528,7 +553,7 @@ MTC_Slave::reset_window (framepos_t root) */ framecnt_t const d = (quarter_frame_duration * 4 * frame_tolerance); - switch (port->parser()->mtc_running()) { + switch (parser.mtc_running()) { case MTC_Forward: window_begin = root; transport_direction = 1; diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index 571d227711..7dc11c6d3d 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -390,6 +390,7 @@ Port::get_connected_latency_range (LatencyRange& range, bool playback) const int Port::reestablish () { + DEBUG_TRACE (DEBUG::Ports, string_compose ("re-establish %1 port %2\n", type().to_string(), _name)); _port_handle = port_engine.register_port (_name, type(), _flags); if (_port_handle == 0) { diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index 5c807a6979..41331fe3a5 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -19,11 +19,12 @@ #include "pbd/error.h" -#include "midi++/manager.h" - +#include "ardour/async_midi_port.h" +#include "ardour/debug.h" #include "ardour/port_manager.h" #include "ardour/audio_port.h" #include "ardour/midi_port.h" +#include "ardour/midiport_manager.h" #include "i18n.h" @@ -227,6 +228,18 @@ PortManager::port_renamed (const std::string& old_relative_name, const std::stri } } +int +PortManager::get_ports (DataType type, PortList& pl) +{ + boost::shared_ptr plist = ports.reader(); + for (Ports::iterator p = plist->begin(); p != plist->end(); ++p) { + if (p->second->type() == type) { + pl.push_back (p->second); + } + } + return pl.size(); +} + int PortManager::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) { @@ -262,15 +275,25 @@ PortManager::port_registration_failure (const std::string& portname) } boost::shared_ptr -PortManager::register_port (DataType dtype, const string& portname, bool input) +PortManager::register_port (DataType dtype, const string& portname, bool input, bool async) { boost::shared_ptr newport; try { if (dtype == DataType::AUDIO) { + DEBUG_TRACE (DEBUG::Ports, string_compose ("registering AUDIO port %1, input %2\n", + portname, input)); newport.reset (new AudioPort (portname, (input ? IsInput : IsOutput))); } else if (dtype == DataType::MIDI) { - newport.reset (new MidiPort (portname, (input ? IsInput : IsOutput))); + if (async) { + DEBUG_TRACE (DEBUG::Ports, string_compose ("registering ASYNC MIDI port %1, input %2\n", + portname, input)); + newport.reset (new AsyncMIDIPort (portname, (input ? IsInput : IsOutput))); + } else { + DEBUG_TRACE (DEBUG::Ports, string_compose ("registering MIDI port %1, input %2\n", + portname, input)); + newport.reset (new MidiPort (portname, (input ? IsInput : IsOutput))); + } } else { throw PortRegistrationFailure("unable to create port (unknown type)"); } @@ -281,7 +304,6 @@ PortManager::register_port (DataType dtype, const string& portname, bool input) /* writer goes out of scope, forces update */ - return newport; } catch (PortRegistrationFailure& err) { @@ -292,18 +314,21 @@ PortManager::register_port (DataType dtype, const string& portname, bool input) } catch (...) { throw PortRegistrationFailure("unable to create port (unknown error)"); } + + DEBUG_TRACE (DEBUG::Ports, string_compose ("\t%2 port registration success, ports now = %1\n", ports.reader()->size(), this)); + return newport; } boost::shared_ptr -PortManager::register_input_port (DataType type, const string& portname) +PortManager::register_input_port (DataType type, const string& portname, bool async) { - return register_port (type, portname, true); + return register_port (type, portname, true, async); } boost::shared_ptr -PortManager::register_output_port (DataType type, const string& portname) +PortManager::register_output_port (DataType type, const string& portname, bool async) { - return register_port (type, portname, false); + return register_port (type, portname, false, async); } int @@ -410,6 +435,8 @@ PortManager::reestablish_ports () boost::shared_ptr p = ports.reader (); + DEBUG_TRACE (DEBUG::Ports, string_compose ("reestablish %1 ports\n", p->size())); + for (i = p->begin(); i != p->end(); ++i) { if (i->second->reestablish ()) { break; @@ -422,8 +449,6 @@ PortManager::reestablish_ports () return -1; } - MIDI::Manager::instance()->reestablish (); - return 0; } @@ -434,12 +459,12 @@ PortManager::reconnect_ports () /* re-establish connections */ + DEBUG_TRACE (DEBUG::Ports, string_compose ("reconnect %1 ports\n", p->size())); + for (Ports::iterator i = p->begin(); i != p->end(); ++i) { i->second->reconnect (); } - MIDI::Manager::instance()->reconnect (); - return 0; } @@ -543,3 +568,80 @@ PortManager::graph_order_callback () return 0; } + +void +PortManager::cycle_start (pframes_t nframes) +{ + Port::set_global_port_buffer_offset (0); + Port::set_cycle_framecnt (nframes); + + _cycle_ports = ports.reader (); + + for (Ports::iterator p = _cycle_ports->begin(); p != _cycle_ports->end(); ++p) { + p->second->cycle_start (nframes); + } +} + +void +PortManager::cycle_end (pframes_t nframes) +{ + for (Ports::iterator p = _cycle_ports->begin(); p != _cycle_ports->end(); ++p) { + p->second->cycle_end (nframes); + } + + for (Ports::iterator p = _cycle_ports->begin(); p != _cycle_ports->end(); ++p) { + p->second->flush_buffers (nframes); + } + + _cycle_ports.reset (); + + /* we are done */ +} + +void +PortManager::silence (pframes_t nframes) +{ + for (Ports::iterator i = _cycle_ports->begin(); i != _cycle_ports->end(); ++i) { + if (i->second->sends_output()) { + i->second->get_buffer(nframes).silence(nframes); + } + } +} + +void +PortManager::check_monitoring () +{ + for (Ports::iterator i = _cycle_ports->begin(); i != _cycle_ports->end(); ++i) { + + bool x; + + if (i->second->last_monitor() != (x = i->second->monitoring_input ())) { + i->second->set_last_monitor (x); + /* XXX I think this is dangerous, due to + a likely mutex in the signal handlers ... + */ + i->second->MonitorInputChanged (x); /* EMIT SIGNAL */ + } + } +} + +void +PortManager::fade_out (gain_t base_gain, gain_t gain_step, pframes_t nframes) +{ + for (Ports::iterator i = _cycle_ports->begin(); i != _cycle_ports->end(); ++i) { + + if (i->second->sends_output()) { + + boost::shared_ptr ap = boost::dynamic_pointer_cast (i->second); + if (ap) { + Sample* s = ap->engine_get_whole_audio_buffer (); + gain_t g = base_gain; + + for (pframes_t n = 0; n < nframes; ++n) { + *s++ *= g; + g -= gain_step; + } + } + } + } +} diff --git a/libs/ardour/rc_configuration.cc b/libs/ardour/rc_configuration.cc index 8127267975..007d6041db 100644 --- a/libs/ardour/rc_configuration.cc +++ b/libs/ardour/rc_configuration.cc @@ -27,13 +27,12 @@ #include "pbd/xml++.h" #include "pbd/file_utils.h" -#include "midi++/manager.h" - #include "ardour/control_protocol_manager.h" #include "ardour/diskstream.h" #include "ardour/filesystem_paths.h" #include "ardour/rc_configuration.h" #include "ardour/session_metadata.h" +#include "ardour/midiport_manager.h" #include "i18n.h" @@ -177,15 +176,20 @@ RCConfiguration::get_state () root = new XMLNode("Ardour"); - MIDI::Manager* mm = MIDI::Manager::instance(); + /* XXX + * GET STATE OF MIDI::Port HERE + */ +#if 0 + MidiPortManager* mm = MidiPortManager::instance(); if (mm) { - boost::shared_ptr ports = mm->get_midi_ports(); + boost::shared_ptr ports = mm->get_midi_ports(); - for (MIDI::Manager::PortList::const_iterator i = ports->begin(); i != ports->end(); ++i) { - root->add_child_nocopy((*i)->get_state()); + for (MidiPortManager::PortList::const_iterator i = ports->begin(); i != ports->end(); ++i) { + // root->add_child_nocopy ((*i)->get_state()); } } +#endif root->add_child_nocopy (get_variables ()); diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 9667bbcd2c..cc4a99b11f 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -49,6 +49,7 @@ #include "ardour/amp.h" #include "ardour/analyser.h" +#include "ardour/async_midi_port.h" #include "ardour/audio_buffer.h" #include "ardour/audio_diskstream.h" #include "ardour/audio_port.h" @@ -66,6 +67,7 @@ #include "ardour/debug.h" #include "ardour/filename_extensions.h" #include "ardour/graph.h" +#include "ardour/midiport_manager.h" #include "ardour/midi_track.h" #include "ardour/midi_ui.h" #include "ardour/operations.h" @@ -88,9 +90,7 @@ #include "ardour/utils.h" #include "midi++/port.h" -#include "midi++/jack_midi_port.h" #include "midi++/mmc.h" -#include "midi++/manager.h" #include "i18n.h" @@ -584,7 +584,8 @@ Session::when_engine_running () as it will set states for ports which the ControlProtocolManager creates. */ - MIDI::Manager::instance()->set_port_states (Config->midi_port_states ()); + // XXX set state of MIDI::Port's + // MidiPortManager::instance()->set_port_states (Config->midi_port_states ()); /* And this must be done after the MIDI::Manager::set_port_states as * it will try to make connections whose details are loaded by set_port_states. @@ -874,7 +875,12 @@ Session::hookup_io () /* Tell all IO objects to connect themselves together */ IO::enable_connecting (); - MIDI::JackMIDIPort::MakeConnections (); + + /* Now tell all "floating" ports to connect to whatever + they should be connected to. + */ + + AudioEngine::instance()->reconnect_ports (); /* Anyone who cares about input state, wake up and do something */ @@ -1169,7 +1175,7 @@ Session::enable_record () if (g_atomic_int_compare_and_exchange (&_record_status, rs, Recording)) { _last_record_location = _transport_frame; - MIDI::Manager::instance()->mmc()->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordStrobe)); + AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordStrobe)); if (Config->get_monitoring_model() == HardwareMonitoring && config.get_auto_input()) { set_track_monitor_input_status (true); @@ -1190,7 +1196,7 @@ Session::disable_record (bool rt_context, bool force) if ((!Config->get_latched_record_enable () && !play_loop) || force) { g_atomic_int_set (&_record_status, Disabled); - MIDI::Manager::instance()->mmc()->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordExit)); + AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordExit)); } else { if (rs == Recording) { g_atomic_int_set (&_record_status, Enabled); @@ -1244,7 +1250,7 @@ Session::maybe_enable_record () enable_record (); } } else { - MIDI::Manager::instance()->mmc()->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordPause)); + AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordPause)); RecordStateChanged (); /* EMIT SIGNAL */ } diff --git a/libs/ardour/session_export.cc b/libs/ardour/session_export.cc index 0db4fc33bb..ab37e915bf 100644 --- a/libs/ardour/session_export.cc +++ b/libs/ardour/session_export.cc @@ -21,7 +21,6 @@ #include "pbd/error.h" #include -#include #include #include "ardour/audioengine.h" @@ -93,8 +92,8 @@ Session::pre_export () /* disable MMC output early */ - _pre_export_mmc_enabled = MIDI::Manager::instance()->mmc()->send_enabled (); - MIDI::Manager::instance()->mmc()->enable_send (false); + _pre_export_mmc_enabled = AudioEngine::instance()->mmc().send_enabled (); + AudioEngine::instance()->mmc().enable_send (false); return 0; } @@ -237,7 +236,7 @@ Session::finalize_audio_export () export_freewheel_connection.disconnect(); - MIDI::Manager::instance()->mmc()->enable_send (_pre_export_mmc_enabled); + AudioEngine::instance()->mmc().enable_send (_pre_export_mmc_enabled); /* maybe write CUE/TOC */ diff --git a/libs/ardour/session_midi.cc b/libs/ardour/session_midi.cc index d137e5167c..07a34283e3 100644 --- a/libs/ardour/session_midi.cc +++ b/libs/ardour/session_midi.cc @@ -31,7 +31,6 @@ #include "midi++/mmc.h" #include "midi++/port.h" -#include "midi++/manager.h" #include "pbd/error.h" #include "pbd/pthread_utils.h" @@ -41,6 +40,7 @@ #include "ardour/audio_track.h" #include "ardour/audioengine.h" #include "ardour/debug.h" +#include "ardour/midi_port.h" #include "ardour/midi_track.h" #include "ardour/midi_ui.h" #include "ardour/session.h" @@ -349,7 +349,7 @@ Session::mmc_record_enable (MIDI::MachineControl &mmc, size_t trk, bool enabled) * @param t time to send. */ int -Session::send_full_time_code (framepos_t const t) +Session::send_full_time_code (framepos_t const t, pframes_t nframes) { /* This function could easily send at a given frame offset, but would * that be useful? Does ardour do sub-block accurate locating? [DR] */ @@ -424,10 +424,9 @@ Session::send_full_time_code (framepos_t const t) msg[8] = timecode.frames; // Send message at offset 0, sent time is for the start of this cycle - if (MIDI::Manager::instance()->mtc_output_port()->midimsg (msg, sizeof (msg), 0)) { - error << _("Session: could not send full MIDI time code") << endmsg; - return -1; - } + + MidiBuffer& mb (AudioEngine::instance()->mtc_output_port()->get_midi_buffer (nframes)); + mb.push_back (0, sizeof (msg), msg); _pframes_since_last_mtc = 0; return 0; @@ -470,7 +469,7 @@ Session::send_midi_time_code_for_cycle (framepos_t start_frame, framepos_t end_f next_quarter_frame_to_send, quarter_frame_duration)); if (rint(outbound_mtc_timecode_frame + (next_quarter_frame_to_send * quarter_frame_duration)) < _transport_frame) { - send_full_time_code (_transport_frame); + send_full_time_code (_transport_frame, nframes); return 0; } @@ -516,9 +515,10 @@ Session::send_midi_time_code_for_cycle (framepos_t start_frame, framepos_t end_f pframes_t const out_stamp = (msg_time - start_frame) / _transport_speed; assert (out_stamp < nframes); - if (MIDI::Manager::instance()->mtc_output_port()->midimsg (mtc_msg, 2, out_stamp)) { + MidiBuffer& mb (AudioEngine::instance()->mtc_output_port()->get_midi_buffer(nframes)); + if (!mb.push_back (out_stamp, 2, mtc_msg)) { error << string_compose(_("Session: cannot send quarter-frame MTC message (%1)"), strerror (errno)) - << endmsg; + << endmsg; return -1; } @@ -588,7 +588,7 @@ Session::mmc_step_timeout () void -Session::send_song_position_pointer (framepos_t t) +Session::send_song_position_pointer (framepos_t) { if (midi_clock) { /* Do nothing for the moment */ diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index cecbd88f65..6a24198bec 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -40,7 +40,6 @@ #include "ardour/ticker.h" #include "ardour/types.h" -#include "midi++/manager.h" #include "midi++/mmc.h" #include "i18n.h" @@ -85,7 +84,7 @@ Session::process (pframes_t nframes) try { if (!_engine.freewheeling() && Config->get_send_midi_clock() && transport_speed() == 1.0f && midi_clock->has_midi_port()) { - midi_clock->tick (transport_at_start); + midi_clock->tick (transport_at_start, nframes); } } catch (...) { /* don't bother with a message */ @@ -325,7 +324,7 @@ Session::process_with_events (pframes_t nframes) * and prepare for rolling) */ if (_send_timecode_update) { - send_full_time_code (_transport_frame); + send_full_time_code (_transport_frame, nframes); } if (!process_can_proceed()) { @@ -492,6 +491,7 @@ Session::follow_slave (pframes_t nframes) goto noroll; } + _slave->process (nframes); _slave->speed_and_position (slave_speed, slave_transport_frame); DEBUG_TRACE (DEBUG::Slave, string_compose ("Slave position %1 speed %2\n", slave_transport_frame, slave_speed)); diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index cae3b9720a..c4522f76e7 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -60,7 +60,6 @@ #include "midi++/mmc.h" #include "midi++/port.h" -#include "midi++/manager.h" #include "evoral/SMF.hpp" @@ -359,11 +358,11 @@ Session::second_stage_init () BootMessage (_("Reset Remote Controls")); - send_full_time_code (0); + // send_full_time_code (0); _engine.transport_locate (0); - MIDI::Manager::instance()->mmc()->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdMmcReset)); - MIDI::Manager::instance()->mmc()->send (MIDI::MachineControlCommand (Timecode::Time ())); + AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdMmcReset)); + AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (Timecode::Time ())); MIDI::Name::MidiPatchManager::instance().set_session (this); @@ -3429,11 +3428,11 @@ Session::config_changed (std::string p, bool ours) } else if (p == "mmc-device-id" || p == "mmc-receive-id" || p == "mmc-receive-device-id") { - MIDI::Manager::instance()->mmc()->set_receive_device_id (Config->get_mmc_receive_device_id()); + AudioEngine::instance()->mmc().set_receive_device_id (Config->get_mmc_receive_device_id()); } else if (p == "mmc-send-id" || p == "mmc-send-device-id") { - MIDI::Manager::instance()->mmc()->set_send_device_id (Config->get_mmc_send_device_id()); + AudioEngine::instance()->mmc().set_send_device_id (Config->get_mmc_send_device_id()); } else if (p == "midi-control") { @@ -3496,7 +3495,7 @@ Session::config_changed (std::string p, bool ours) } else if (p == "send-mmc") { - MIDI::Manager::instance()->mmc()->enable_send (Config->get_send_mmc ()); + AudioEngine::instance()->mmc().enable_send (Config->get_send_mmc ()); } else if (p == "midi-feedback") { @@ -3554,13 +3553,13 @@ Session::config_changed (std::string p, bool ours) } else if (p == "initial-program-change") { - if (MIDI::Manager::instance()->mmc()->output_port() && Config->get_initial_program_change() >= 0) { + if (AudioEngine::instance()->mmc().output_port() && Config->get_initial_program_change() >= 0) { MIDI::byte buf[2]; buf[0] = MIDI::program; // channel zero by default buf[1] = (Config->get_initial_program_change() & 0x7f); - MIDI::Manager::instance()->mmc()->output_port()->midimsg (buf, sizeof (buf), 0); + AudioEngine::instance()->mmc().output_port()->midimsg (buf, sizeof (buf), 0); } } else if (p == "solo-mute-override") { // catch_up_on_solo_mute_override (); @@ -3624,27 +3623,27 @@ Session::load_diskstreams_2X (XMLNode const & node, int) void Session::setup_midi_machine_control () { - MIDI::MachineControl* mmc = MIDI::Manager::instance()->mmc (); - - mmc->Play.connect_same_thread (*this, boost::bind (&Session::mmc_deferred_play, this, _1)); - mmc->DeferredPlay.connect_same_thread (*this, boost::bind (&Session::mmc_deferred_play, this, _1)); - mmc->Stop.connect_same_thread (*this, boost::bind (&Session::mmc_stop, this, _1)); - mmc->FastForward.connect_same_thread (*this, boost::bind (&Session::mmc_fast_forward, this, _1)); - mmc->Rewind.connect_same_thread (*this, boost::bind (&Session::mmc_rewind, this, _1)); - mmc->Pause.connect_same_thread (*this, boost::bind (&Session::mmc_pause, this, _1)); - mmc->RecordPause.connect_same_thread (*this, boost::bind (&Session::mmc_record_pause, this, _1)); - mmc->RecordStrobe.connect_same_thread (*this, boost::bind (&Session::mmc_record_strobe, this, _1)); - mmc->RecordExit.connect_same_thread (*this, boost::bind (&Session::mmc_record_exit, this, _1)); - mmc->Locate.connect_same_thread (*this, boost::bind (&Session::mmc_locate, this, _1, _2)); - mmc->Step.connect_same_thread (*this, boost::bind (&Session::mmc_step, this, _1, _2)); - mmc->Shuttle.connect_same_thread (*this, boost::bind (&Session::mmc_shuttle, this, _1, _2, _3)); - mmc->TrackRecordStatusChange.connect_same_thread (*this, boost::bind (&Session::mmc_record_enable, this, _1, _2, _3)); + MIDI::MachineControl& mmc (AudioEngine::instance()->mmc ()); + + mmc.Play.connect_same_thread (*this, boost::bind (&Session::mmc_deferred_play, this, _1)); + mmc.DeferredPlay.connect_same_thread (*this, boost::bind (&Session::mmc_deferred_play, this, _1)); + mmc.Stop.connect_same_thread (*this, boost::bind (&Session::mmc_stop, this, _1)); + mmc.FastForward.connect_same_thread (*this, boost::bind (&Session::mmc_fast_forward, this, _1)); + mmc.Rewind.connect_same_thread (*this, boost::bind (&Session::mmc_rewind, this, _1)); + mmc.Pause.connect_same_thread (*this, boost::bind (&Session::mmc_pause, this, _1)); + mmc.RecordPause.connect_same_thread (*this, boost::bind (&Session::mmc_record_pause, this, _1)); + mmc.RecordStrobe.connect_same_thread (*this, boost::bind (&Session::mmc_record_strobe, this, _1)); + mmc.RecordExit.connect_same_thread (*this, boost::bind (&Session::mmc_record_exit, this, _1)); + mmc.Locate.connect_same_thread (*this, boost::bind (&Session::mmc_locate, this, _1, _2)); + mmc.Step.connect_same_thread (*this, boost::bind (&Session::mmc_step, this, _1, _2)); + mmc.Shuttle.connect_same_thread (*this, boost::bind (&Session::mmc_shuttle, this, _1, _2, _3)); + mmc.TrackRecordStatusChange.connect_same_thread (*this, boost::bind (&Session::mmc_record_enable, this, _1, _2, _3)); /* also handle MIDI SPP because its so common */ - mmc->SPPStart.connect_same_thread (*this, boost::bind (&Session::spp_start, this)); - mmc->SPPContinue.connect_same_thread (*this, boost::bind (&Session::spp_continue, this)); - mmc->SPPStop.connect_same_thread (*this, boost::bind (&Session::spp_stop, this)); + mmc.SPPStart.connect_same_thread (*this, boost::bind (&Session::spp_start, this)); + mmc.SPPContinue.connect_same_thread (*this, boost::bind (&Session::spp_continue, this)); + mmc.SPPStop.connect_same_thread (*this, boost::bind (&Session::spp_stop, this)); } boost::shared_ptr diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 08e9a89481..44a885cd1c 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -33,7 +33,6 @@ #include "midi++/mmc.h" #include "midi++/port.h" -#include "midi++/manager.h" #include "ardour/audioengine.h" #include "ardour/auditioner.h" @@ -611,10 +610,11 @@ Session::non_realtime_stop (bool abort, int on_entry, bool& finished) have_looped = false; if (!_engine.freewheeling()) { - send_full_time_code (_transport_frame); + // need to queue this in the next RT cycle + _send_timecode_update = true; if (!dynamic_cast(_slave)) { - MIDI::Manager::instance()->mmc()->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdStop)); + AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdStop)); send_mmc_locate (_transport_frame); } } @@ -1260,7 +1260,7 @@ Session::start_transport () Timecode::Time time; timecode_time_subframes (_transport_frame, time); if (!dynamic_cast(_slave)) { - MIDI::Manager::instance()->mmc()->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdDeferredPlay)); + AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdDeferredPlay)); } } @@ -1338,8 +1338,9 @@ Session::use_sync_source (Slave* new_slave) _slave = new_slave; DEBUG_TRACE (DEBUG::Slave, string_compose ("set new slave to %1\n", _slave)); - - send_full_time_code (_transport_frame); + + // need to queue this for next process() cycle + _send_timecode_update = true; boost::shared_ptr rl = routes.reader(); for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) { @@ -1380,7 +1381,7 @@ Session::switch_to_sync_source (SyncSource src) } try { - new_slave = new MTC_Slave (*this, *MIDI::Manager::instance()->mtc_input_port()); + new_slave = new MTC_Slave (*this, *AudioEngine::instance()->mtc_input_port()); } catch (failed_constructor& err) { @@ -1409,7 +1410,7 @@ Session::switch_to_sync_source (SyncSource src) } try { - new_slave = new MIDIClock_Slave (*this, *MIDI::Manager::instance()->midi_clock_input_port(), 24); + new_slave = new MIDIClock_Slave (*this, *AudioEngine::instance()->midi_clock_input_port(), 24); } catch (failed_constructor& err) { @@ -1636,7 +1637,7 @@ Session::send_mmc_locate (framepos_t t) if (!_engine.freewheeling()) { Timecode::Time time; timecode_time_subframes (t, time); - MIDI::Manager::instance()->mmc()->send (MIDI::MachineControlCommand (time)); + AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (time)); } } diff --git a/libs/ardour/ticker.cc b/libs/ardour/ticker.cc index f32cdf9415..0ed4427b72 100644 --- a/libs/ardour/ticker.cc +++ b/libs/ardour/ticker.cc @@ -19,13 +19,12 @@ #include "pbd/compose.h" #include "pbd/stacktrace.h" -#include "midi++/port.h" -#include "midi++/jack_midi_port.h" -#include "midi++/manager.h" - #include "evoral/midi_events.h" +#include "ardour/async_midi_port.h" #include "ardour/audioengine.h" +#include "ardour/midi_buffer.h" +#include "ardour/midi_port.h" #include "ardour/ticker.h" #include "ardour/session.h" #include "ardour/tempo.h" @@ -95,16 +94,16 @@ public: MidiClockTicker::MidiClockTicker () - : _midi_port (0) - , _ppqn (24) + : _ppqn (24) , _last_tick (0.0) + , _send_pos (false) + , _send_state (false) { _pos.reset (new Position()); } MidiClockTicker::~MidiClockTicker() { - _midi_port = 0; _pos.reset (0); } @@ -115,7 +114,6 @@ MidiClockTicker::set_session (Session* s) if (_session) { _session->TransportStateChange.connect_same_thread (_session_connections, boost::bind (&MidiClockTicker::transport_state_changed, this)); - _session->PositionChanged.connect_same_thread (_session_connections, boost::bind (&MidiClockTicker::position_changed, this, _1)); _session->TransportLooped.connect_same_thread (_session_connections, boost::bind (&MidiClockTicker::transport_looped, this)); _session->Located.connect_same_thread (_session_connections, boost::bind (&MidiClockTicker::session_located, this)); @@ -139,41 +137,20 @@ MidiClockTicker::session_located() return; } - if (_pos->speed == 0.0f) { - uint32_t where = llrint (_pos->midi_beats); - send_position_event (where, 0); - } else if (_pos->speed == 1.0f) { -#if 1 - /* Experimental. To really do this and have accuracy, the - stop/locate/continue sequence would need queued to send immediately - before the next midi clock. */ - - send_stop_event (0); - - if (_pos->frame == 0) { - send_start_event (0); - } else { - uint32_t where = llrint (_pos->midi_beats); - send_position_event (where, 0); - send_continue_event (0); - } -#endif - } else { - /* Varispeed not supported */ - } + _send_pos = true; } void MidiClockTicker::session_going_away () { SessionHandlePtr::session_going_away(); - _midi_port = 0; + _midi_port.reset (); } void MidiClockTicker::update_midi_clock_port() { - _midi_port = MIDI::Manager::instance()->midi_clock_output_port(); + _midi_port = AudioEngine::instance()->midi_clock_output_port(); } void @@ -204,48 +181,11 @@ MidiClockTicker::transport_state_changed() return; } - if (_pos->speed == 1.0f) { - - if (_session->get_play_loop()) { - assert(_session->locations()->auto_loop_location()); - - if (_pos->frame == _session->locations()->auto_loop_location()->start()) { - send_start_event(0); - } else { - send_continue_event(0); - } - - } else if (_pos->frame == 0) { - send_start_event(0); - } else { - send_continue_event(0); - } - - // send_midi_clock_event (0); - - } else if (_pos->speed == 0.0f) { - send_stop_event (0); - send_position_event (llrint (_pos->midi_beats), 0); - } + _send_state = true; // tick (_pos->frame); } -void -MidiClockTicker::position_changed (framepos_t) -{ -#if 0 - const double speed = _session->transport_speed(); - DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Transport Position Change: %1, speed: %2\n", position, speed)); - - if (speed == 0.0f && Config->get_send_midi_clock()) { - send_position_event (position, 0); - } - - _last_tick = position; -#endif -} - void MidiClockTicker::transport_looped() { @@ -270,18 +210,68 @@ MidiClockTicker::transport_looped() } void -MidiClockTicker::tick (const framepos_t& /* transport_frame */) +MidiClockTicker::tick (const framepos_t& /* transport_frame */, pframes_t nframes) { if (!Config->get_send_midi_clock() || _session == 0 || _session->transport_speed() != 1.0f || _midi_port == 0) { return; } - MIDI::JackMIDIPort* mp = dynamic_cast (_midi_port); - if (! mp) { - return; + if (_send_pos) { + if (_pos->speed == 0.0f) { + uint32_t where = llrint (_pos->midi_beats); + send_position_event (where, 0, nframes); + } else if (_pos->speed == 1.0f) { +#if 1 + /* Experimental. To really do this and have accuracy, the + stop/locate/continue sequence would need queued to send immediately + before the next midi clock. */ + + send_stop_event (0, nframes); + + if (_pos->frame == 0) { + send_start_event (0, nframes); + } else { + uint32_t where = llrint (_pos->midi_beats); + send_position_event (where, 0, nframes); + send_continue_event (0, nframes); + } +#endif + } else { + /* Varispeed not supported */ + } + + _send_pos = true; } - const framepos_t end = _pos->frame + mp->nframes_this_cycle(); + if (_send_state) { + if (_pos->speed == 1.0f) { + if (_session->get_play_loop()) { + assert(_session->locations()->auto_loop_location()); + + if (_pos->frame == _session->locations()->auto_loop_location()->start()) { + send_start_event (0, nframes); + } else { + send_continue_event (0, nframes); + } + + } else if (_pos->frame == 0) { + send_start_event (0, nframes); + } else { + send_continue_event (0, nframes); + } + + // send_midi_clock_event (0); + + } else if (_pos->speed == 0.0f) { + send_stop_event (0, nframes); + send_position_event (llrint (_pos->midi_beats), 0, nframes); + } + + _send_state = false; + } + + + const framepos_t end = _pos->frame + nframes; double iter = _last_tick; while (true) { @@ -291,14 +281,14 @@ MidiClockTicker::tick (const framepos_t& /* transport_frame */) DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Tick: iter: %1, last tick time: %2, next tick time: %3, offset: %4, cycle length: %5\n", - iter, _last_tick, next_tick, next_tick_offset, mp ? mp->nframes_this_cycle() : 0)); + iter, _last_tick, next_tick, next_tick_offset, nframes)); - if (!mp || (next_tick_offset >= mp->nframes_this_cycle())) { + if (next_tick_offset >= nframes) { break; } if (next_tick_offset >= 0) { - send_midi_clock_event (next_tick_offset); + send_midi_clock_event (next_tick_offset, nframes); } iter = next_tick; @@ -308,7 +298,6 @@ MidiClockTicker::tick (const framepos_t& /* transport_frame */) _pos->frame = end; } - double MidiClockTicker::one_ppqn_in_frames (framepos_t transport_position) { @@ -322,7 +311,7 @@ MidiClockTicker::one_ppqn_in_frames (framepos_t transport_position) } void -MidiClockTicker::send_midi_clock_event (pframes_t offset) +MidiClockTicker::send_midi_clock_event (pframes_t offset, pframes_t nframes) { if (!_midi_port) { return; @@ -330,12 +319,13 @@ MidiClockTicker::send_midi_clock_event (pframes_t offset) DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Tick with offset %1\n", offset)); - static uint8_t _midi_clock_tick[1] = { MIDI_CMD_COMMON_CLOCK }; - _midi_port->write (_midi_clock_tick, 1, offset); + static uint8_t tick_byte = { MIDI_CMD_COMMON_CLOCK }; + MidiBuffer& mb (_midi_port->get_midi_buffer (nframes)); + mb.push_back (offset, 1, &tick_byte); } void -MidiClockTicker::send_start_event (pframes_t offset) +MidiClockTicker::send_start_event (pframes_t offset, pframes_t nframes) { if (!_midi_port) { return; @@ -343,12 +333,13 @@ MidiClockTicker::send_start_event (pframes_t offset) DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Start %1\n", _last_tick)); - static uint8_t _midi_clock_tick[1] = { MIDI_CMD_COMMON_START }; - _midi_port->write (_midi_clock_tick, 1, offset); + static uint8_t tick_byte = { MIDI_CMD_COMMON_START }; + MidiBuffer& mb (_midi_port->get_midi_buffer (nframes)); + mb.push_back (offset, 1, &tick_byte); } void -MidiClockTicker::send_continue_event (pframes_t offset) +MidiClockTicker::send_continue_event (pframes_t offset, pframes_t nframes) { if (!_midi_port) { return; @@ -356,12 +347,13 @@ MidiClockTicker::send_continue_event (pframes_t offset) DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Continue %1\n", _last_tick)); - static uint8_t _midi_clock_tick[1] = { MIDI_CMD_COMMON_CONTINUE }; - _midi_port->write (_midi_clock_tick, 1, offset); + static uint8_t tick_byte = { MIDI_CMD_COMMON_CONTINUE }; + MidiBuffer& mb (_midi_port->get_midi_buffer (nframes)); + mb.push_back (offset, 1, &tick_byte); } void -MidiClockTicker::send_stop_event (pframes_t offset) +MidiClockTicker::send_stop_event (pframes_t offset, pframes_t nframes) { if (!_midi_port) { return; @@ -369,12 +361,13 @@ MidiClockTicker::send_stop_event (pframes_t offset) DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Stop %1\n", _last_tick)); - static uint8_t _midi_clock_tick[1] = { MIDI_CMD_COMMON_STOP }; - _midi_port->write (_midi_clock_tick, 1, offset); + static uint8_t tick_byte = { MIDI_CMD_COMMON_STOP }; + MidiBuffer& mb (_midi_port->get_midi_buffer (nframes)); + mb.push_back (offset, 1, &tick_byte); } void -MidiClockTicker::send_position_event (uint32_t midi_beats, pframes_t offset) +MidiClockTicker::send_position_event (uint32_t midi_beats, pframes_t offset, pframes_t nframes) { if (!_midi_port) { return; @@ -391,7 +384,8 @@ MidiClockTicker::send_position_event (uint32_t midi_beats, pframes_t offset) msg[1] = midi_beats & 0x007f; msg[2] = midi_beats >> 7; - _midi_port->midimsg (msg, sizeof (msg), offset); + MidiBuffer& mb (_midi_port->get_midi_buffer (nframes)); + mb.push_back (offset, 3, &msg[0]); DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Song Position Sent: %1\n", midi_beats)); } diff --git a/libs/ardour/wscript b/libs/ardour/wscript index d48a4d6d85..f13c4e5eef 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -21,6 +21,7 @@ path_prefix = 'libs/ardour/' libardour_sources = [ 'amp.cc', 'analyser.cc', + 'async_midi_port.cc', 'audio_buffer.cc', 'audio_diskstream.cc', 'audio_library.cc', @@ -126,6 +127,7 @@ libardour_sources = [ 'midi_stretch.cc', 'midi_track.cc', 'midi_ui.cc', + 'midiport_manager.cc', 'mix.cc', 'monitor_processor.cc', 'mtc_slave.cc', diff --git a/libs/midi++2/midi++/mmc.h b/libs/midi++2/midi++/mmc.h index 0f362678ce..01f8bf3b8a 100644 --- a/libs/midi++2/midi++/mmc.h +++ b/libs/midi++2/midi++/mmc.h @@ -38,7 +38,6 @@ namespace MIDI { class Port; class Parser; class MachineControlCommand; -class Manager; /** Class to handle incoming and outgoing MIDI machine control messages */ class MachineControl @@ -95,7 +94,9 @@ class MachineControl cmdResume = 0x7F }; - MachineControl (Manager *, ARDOUR::PortEngine&); + MachineControl (); + + void set_ports (MIDI::Port* input, MIDI::Port* output); Port* input_port() { return _input_port; } Port* output_port() { return _output_port; } diff --git a/libs/midi++2/midi++/parser.h b/libs/midi++2/midi++/parser.h index f5f343e952..44897f9d8e 100644 --- a/libs/midi++2/midi++/parser.h +++ b/libs/midi++2/midi++/parser.h @@ -41,7 +41,7 @@ typedef PBD::Signal3 Signal; class Parser { public: - Parser (Port &p); + Parser (); ~Parser (); /* sets the time that will be reported for any MTC or MIDI Clock @@ -105,7 +105,6 @@ class Parser { const char *midi_event_type_name (MIDI::eventType); void trace (bool onoff, std::ostream *o, const std::string &prefix = ""); bool tracing() { return trace_stream != 0; } - Port &port() { return _port; } void set_offline (bool); bool offline() const { return _offline; } @@ -136,7 +135,6 @@ class Parser { void reset_mtc_state (); private: - Port&_port; /* tracing */ std::ostream *trace_stream; diff --git a/libs/midi++2/midi++/port.h b/libs/midi++2/midi++/port.h index 599fabaa87..6d778beab2 100644 --- a/libs/midi++2/midi++/port.h +++ b/libs/midi++2/midi++/port.h @@ -51,13 +51,6 @@ class Port { virtual XMLNode& get_state () const; virtual void set_state (const XMLNode&); - // FIXME: make Manager a friend of port so these can be hidden? - - /* Only for use by MidiManager. Don't ever call this. */ - virtual void cycle_start (pframes_t) {} - /* Only for use by MidiManager. Don't ever call this. */ - virtual void cycle_end () {} - /** Write a message to port. * @param msg Raw MIDI message to send * @param msglen Size of @a msg diff --git a/libs/midi++2/mmc.cc b/libs/midi++2/mmc.cc index 0a71463721..b93dc0f260 100644 --- a/libs/midi++2/mmc.cc +++ b/libs/midi++2/mmc.cc @@ -27,9 +27,7 @@ #include "midi++/mmc.h" #include "midi++/port.h" -#include "midi++/jack_midi_port.h" #include "midi++/parser.h" -#include "midi++/manager.h" using namespace std; using namespace MIDI; @@ -197,16 +195,21 @@ static void build_mmc_cmd_map () mmc_cmd_map.insert (newpair); } - -MachineControl::MachineControl (Manager* m, ARDOUR::PortEngine& pengine) +MachineControl::MachineControl () { build_mmc_cmd_map (); _receive_device_id = 0x7f; _send_device_id = 0x7f; +} + +void +MachineControl::set_ports (MIDI::Port* ip, MIDI::Port* op) +{ + port_connections.drop_connections (); - _input_port = m->add_port (new JackMIDIPort ("MMC in", Port::IsInput, pengine)); - _output_port = m->add_port (new JackMIDIPort ("MMC out", Port::IsOutput, pengine)); + _input_port = ip; + _output_port = op; _input_port->parser()->mmc.connect_same_thread (port_connections, boost::bind (&MachineControl::process_mmc_message, this, _1, _2, _3)); _input_port->parser()->start.connect_same_thread (port_connections, boost::bind (&MachineControl::spp_start, this)); diff --git a/libs/midi++2/parser.cc b/libs/midi++2/parser.cc index 8e3af64504..2f6b50899c 100644 --- a/libs/midi++2/parser.cc +++ b/libs/midi++2/parser.cc @@ -104,8 +104,7 @@ Parser::midi_event_type_name (eventType t) } } -Parser::Parser (Port &p) - : _port(p) +Parser::Parser () { trace_stream = 0; trace_prefix = ""; diff --git a/libs/midi++2/port.cc b/libs/midi++2/port.cc index 3e7896631a..1480202867 100644 --- a/libs/midi++2/port.cc +++ b/libs/midi++2/port.cc @@ -71,7 +71,7 @@ Port::init (string const & name, Flags flags) _tagname = name; _flags = flags; - _parser = new Parser (*this); + _parser = new Parser (); for (int i = 0; i < 16; i++) { _channel[i] = new Channel (i, *this); diff --git a/libs/midi++2/wscript b/libs/midi++2/wscript index 8a4f2f6c69..0abbab7d40 100644 --- a/libs/midi++2/wscript +++ b/libs/midi++2/wscript @@ -31,8 +31,6 @@ libmidi_sources = [ 'midi.cc', 'channel.cc', 'ipmidi_port.cc', - 'jack_midi_port.cc', - 'manager.cc', 'parser.cc', 'port.cc', 'midnam_patch.cc', diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc index 6da0192a8f..2820b069dc 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc @@ -32,13 +32,14 @@ #include "pbd/xml++.h" #include "midi++/port.h" -#include "midi++/manager.h" +#include "ardour/audioengine.h" #include "ardour/filesystem_paths.h" #include "ardour/session.h" #include "ardour/route.h" #include "ardour/midi_ui.h" #include "ardour/rc_configuration.h" +#include "ardour/midiport_manager.h" #include "generic_midi_control_protocol.h" #include "midicontrollable.h" @@ -59,8 +60,8 @@ GenericMidiControlProtocol::GenericMidiControlProtocol (Session& s) , _threshold (10) , gui (0) { - _input_port = MIDI::Manager::instance()->midi_input_port (); - _output_port = MIDI::Manager::instance()->midi_output_port (); + _input_port = AudioEngine::instance()->midi_input_port (); + _output_port = AudioEngine::instance()->midi_output_port (); do_feedback = false; _feedback_interval = 10000; // microseconds @@ -338,7 +339,7 @@ GenericMidiControlProtocol::start_learning (Controllable* c) } if (!mc) { - mc = new MIDIControllable (this, *_input_port, *c, false); + mc = new MIDIControllable (this, *_input_port->parser(), *c, false); } { @@ -435,7 +436,7 @@ GenericMidiControlProtocol::create_binding (PBD::Controllable* control, int pos, MIDI::byte value = control_number; // Create a MIDIControllable - MIDIControllable* mc = new MIDIControllable (this, *_input_port, *control, false); + MIDIControllable* mc = new MIDIControllable (this, *_input_port->parser(), *control, false); // Remove any old binding for this midi channel/type/value pair // Note: can't use delete_binding() here because we don't know the specific controllable we want to remove, only the midi information @@ -559,7 +560,7 @@ GenericMidiControlProtocol::set_state (const XMLNode& node, int version) Controllable* c = Controllable::by_id (id); if (c) { - MIDIControllable* mc = new MIDIControllable (this, *_input_port, *c, false); + MIDIControllable* mc = new MIDIControllable (this, *_input_port->parser(), *c, false); if (mc->set_state (**niter, version) == 0) { controllables.push_back (mc); @@ -754,7 +755,7 @@ GenericMidiControlProtocol::create_binding (const XMLNode& node) prop = node.property (X_("uri")); uri = prop->value(); - MIDIControllable* mc = new MIDIControllable (this, *_input_port, momentary); + MIDIControllable* mc = new MIDIControllable (this, *_input_port->parser(), momentary); if (mc->init (uri)) { delete mc; @@ -892,7 +893,7 @@ GenericMidiControlProtocol::create_function (const XMLNode& node) prop = node.property (X_("function")); - MIDIFunction* mf = new MIDIFunction (*_input_port); + MIDIFunction* mf = new MIDIFunction (*_input_port->parser()); if (mf->setup (*this, prop->value(), argument, data, data_size)) { delete mf; @@ -988,7 +989,7 @@ GenericMidiControlProtocol::create_action (const XMLNode& node) prop = node.property (X_("action")); - MIDIAction* ma = new MIDIAction (*_input_port); + MIDIAction* ma = new MIDIAction (*_input_port->parser()); if (ma->init (*this, prop->value(), data, data_size)) { delete ma; diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.h b/libs/surfaces/generic_midi/generic_midi_control_protocol.h index a7c420cc41..a4a51b7f99 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.h +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.h @@ -22,14 +22,11 @@ #include #include + #include "ardour/types.h" #include "control_protocol/control_protocol.h" -namespace MIDI { - class Port; -} - namespace PBD { class Controllable; class ControllableDescriptor; @@ -37,6 +34,11 @@ namespace PBD { namespace ARDOUR { class Session; + class MidiPort; +} + +namespace MIDI { + class Port; } class MIDIControllable; @@ -51,8 +53,8 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol { int set_active (bool yn); static bool probe() { return true; } - MIDI::Port* input_port () const { return _input_port; } - MIDI::Port* output_port () const { return _output_port; } + MIDI::Port* input_port () const { return _input_port; } + MIDI::Port* output_port () const { return _output_port; } void set_feedback_interval (ARDOUR::microseconds_t); int set_feedback (bool yn); @@ -97,8 +99,8 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol { } private: - MIDI::Port* _input_port; - MIDI::Port* _output_port; + MIDI::Port* _input_port; + MIDI::Port* _output_port; ARDOUR::microseconds_t _feedback_interval; ARDOUR::microseconds_t last_feedback_time; diff --git a/libs/surfaces/generic_midi/midiaction.cc b/libs/surfaces/generic_midi/midiaction.cc index e1eed1a49e..e537122e9c 100644 --- a/libs/surfaces/generic_midi/midiaction.cc +++ b/libs/surfaces/generic_midi/midiaction.cc @@ -25,7 +25,7 @@ using namespace MIDI; -MIDIAction::MIDIAction (MIDI::Port& p) +MIDIAction::MIDIAction (MIDI::Parser& p) : MIDIInvokable (p) { } diff --git a/libs/surfaces/generic_midi/midiaction.h b/libs/surfaces/generic_midi/midiaction.h index 521f59f26d..e2a29143ad 100644 --- a/libs/surfaces/generic_midi/midiaction.h +++ b/libs/surfaces/generic_midi/midiaction.h @@ -36,8 +36,6 @@ namespace Gtk { } namespace MIDI { - class Channel; - class Port; class Parser; } @@ -46,7 +44,7 @@ class GenericMidiControlProtocol; class MIDIAction : public MIDIInvokable { public: - MIDIAction (MIDI::Port&); + MIDIAction (MIDI::Parser&); virtual ~MIDIAction (); int init (GenericMidiControlProtocol&, const std::string& action_name, MIDI::byte* sysex = 0, size_t ssize = 0); diff --git a/libs/surfaces/generic_midi/midicontrollable.cc b/libs/surfaces/generic_midi/midicontrollable.cc index d36ccefd44..d78dd5e644 100644 --- a/libs/surfaces/generic_midi/midicontrollable.cc +++ b/libs/surfaces/generic_midi/midicontrollable.cc @@ -27,9 +27,9 @@ #include "pbd/xml++.h" #include "pbd/stacktrace.h" -#include "midi++/port.h" #include "midi++/channel.h" +#include "ardour/async_midi_port.h" #include "ardour/automation_control.h" #include "ardour/midi_ui.h" #include "ardour/utils.h" @@ -42,11 +42,11 @@ using namespace MIDI; using namespace PBD; using namespace ARDOUR; -MIDIControllable::MIDIControllable (GenericMidiControlProtocol* s, Port& p, bool m) +MIDIControllable::MIDIControllable (GenericMidiControlProtocol* s, MIDI::Parser& p, bool m) : _surface (s) , controllable (0) , _descriptor (0) - , _port (p) + , _parser (p) , _momentary (m) { _learned = false; /* from URI */ @@ -59,10 +59,10 @@ MIDIControllable::MIDIControllable (GenericMidiControlProtocol* s, Port& p, bool feedback = true; // for now } -MIDIControllable::MIDIControllable (GenericMidiControlProtocol* s, Port& p, Controllable& c, bool m) +MIDIControllable::MIDIControllable (GenericMidiControlProtocol* s, MIDI::Parser& p, Controllable& c, bool m) : _surface (s) , _descriptor (0) - , _port (p) + , _parser (p) , _momentary (m) { set_controllable (&c); @@ -149,7 +149,7 @@ void MIDIControllable::learn_about_external_control () { drop_external_control (); - _port.parser()->any.connect_same_thread (midi_learn_connection, boost::bind (&MIDIControllable::midi_receiver, this, _1, _2, _3)); + _parser.any.connect_same_thread (midi_learn_connection, boost::bind (&MIDIControllable::midi_receiver, this, _1, _2, _3)); } void @@ -357,12 +357,6 @@ MIDIControllable::midi_receiver (Parser &, byte *msg, size_t /*len*/) return; } - /* if the our port doesn't do input anymore, forget it ... */ - - if (!_port.parser()) { - return; - } - bind_midi ((channel_t) (msg[0] & 0xf), eventType (msg[0] & 0xF0), msg[1]); if (controllable) { @@ -381,49 +375,43 @@ MIDIControllable::bind_midi (channel_t chn, eventType ev, MIDI::byte additional) control_channel = chn; control_additional = additional; - if (_port.parser() == 0) { - return; - } - - Parser& p = *_port.parser(); - int chn_i = chn; switch (ev) { case MIDI::off: - p.channel_note_off[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIControllable::midi_sense_note_off, this, _1, _2)); + _parser.channel_note_off[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIControllable::midi_sense_note_off, this, _1, _2)); /* if this is a togglee, connect to noteOn as well, and we'll toggle back and forth between the two. */ if (_momentary) { - p.channel_note_on[chn_i].connect_same_thread (midi_sense_connection[1], boost::bind (&MIDIControllable::midi_sense_note_on, this, _1, _2)); + _parser.channel_note_on[chn_i].connect_same_thread (midi_sense_connection[1], boost::bind (&MIDIControllable::midi_sense_note_on, this, _1, _2)); } _control_description = "MIDI control: NoteOff"; break; case MIDI::on: - p.channel_note_on[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIControllable::midi_sense_note_on, this, _1, _2)); + _parser.channel_note_on[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIControllable::midi_sense_note_on, this, _1, _2)); if (_momentary) { - p.channel_note_off[chn_i].connect_same_thread (midi_sense_connection[1], boost::bind (&MIDIControllable::midi_sense_note_off, this, _1, _2)); + _parser.channel_note_off[chn_i].connect_same_thread (midi_sense_connection[1], boost::bind (&MIDIControllable::midi_sense_note_off, this, _1, _2)); } _control_description = "MIDI control: NoteOn"; break; case MIDI::controller: - p.channel_controller[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIControllable::midi_sense_controller, this, _1, _2)); + _parser.channel_controller[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIControllable::midi_sense_controller, this, _1, _2)); snprintf (buf, sizeof (buf), "MIDI control: Controller %d", control_additional); _control_description = buf; break; case MIDI::program: - p.channel_program_change[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIControllable::midi_sense_program_change, this, _1, _2)); + _parser.channel_program_change[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIControllable::midi_sense_program_change, this, _1, _2)); _control_description = "MIDI control: ProgramChange"; break; case MIDI::pitchbend: - p.channel_pitchbend[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIControllable::midi_sense_pitchbend, this, _1, _2)); + _parser.channel_pitchbend[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIControllable::midi_sense_pitchbend, this, _1, _2)); _control_description = "MIDI control: Pitchbend"; break; diff --git a/libs/surfaces/generic_midi/midicontrollable.h b/libs/surfaces/generic_midi/midicontrollable.h index dd9dc988b4..aeed05db4a 100644 --- a/libs/surfaces/generic_midi/midicontrollable.h +++ b/libs/surfaces/generic_midi/midicontrollable.h @@ -36,17 +36,20 @@ namespace PBD { namespace MIDI { class Channel; - class Port; class Parser; } class GenericMidiControlProtocol; +namespace ARDOUR { + class AsyncMIDIPort; +} + class MIDIControllable : public PBD::Stateful { public: - MIDIControllable (GenericMidiControlProtocol *, MIDI::Port&, PBD::Controllable&, bool momentary); - MIDIControllable (GenericMidiControlProtocol *, MIDI::Port&, bool momentary = false); + MIDIControllable (GenericMidiControlProtocol *, MIDI::Parser&, PBD::Controllable&, bool momentary); + MIDIControllable (GenericMidiControlProtocol *, MIDI::Parser&, bool momentary = false); virtual ~MIDIControllable (); int init (const std::string&); @@ -72,7 +75,7 @@ class MIDIControllable : public PBD::Stateful bool learned() const { return _learned; } - MIDI::Port& get_port() const { return _port; } + MIDI::Parser& get_parser() { return _parser; } PBD::Controllable* get_controllable() const { return controllable; } void set_controllable (PBD::Controllable*); const std::string& current_uri() const { return _current_uri; } @@ -98,8 +101,8 @@ class MIDIControllable : public PBD::Stateful GenericMidiControlProtocol* _surface; PBD::Controllable* controllable; PBD::ControllableDescriptor* _descriptor; - std::string _current_uri; - MIDI::Port& _port; + std::string _current_uri; + MIDI::Parser& _parser; bool setting; int last_value; float last_controllable_value; diff --git a/libs/surfaces/generic_midi/midifunction.cc b/libs/surfaces/generic_midi/midifunction.cc index 70e9337861..b0dc95e4fc 100644 --- a/libs/surfaces/generic_midi/midifunction.cc +++ b/libs/surfaces/generic_midi/midifunction.cc @@ -25,7 +25,7 @@ using namespace MIDI; -MIDIFunction::MIDIFunction (MIDI::Port& p) +MIDIFunction::MIDIFunction (MIDI::Parser& p) : MIDIInvokable (p) { } diff --git a/libs/surfaces/generic_midi/midifunction.h b/libs/surfaces/generic_midi/midifunction.h index 8f0b0218d0..88aff0ab0a 100644 --- a/libs/surfaces/generic_midi/midifunction.h +++ b/libs/surfaces/generic_midi/midifunction.h @@ -33,7 +33,6 @@ namespace MIDI { class Channel; - class Port; class Parser; } @@ -64,7 +63,7 @@ class MIDIFunction : public MIDIInvokable TrackSetSoloIsolate, }; - MIDIFunction (MIDI::Port&); + MIDIFunction (MIDI::Parser&); virtual ~MIDIFunction (); int setup (GenericMidiControlProtocol&, const std::string& function_name, const std::string& argument, MIDI::byte* sysex = 0, size_t ssize = 0); diff --git a/libs/surfaces/generic_midi/midiinvokable.cc b/libs/surfaces/generic_midi/midiinvokable.cc index 79835835a4..42c74553d8 100644 --- a/libs/surfaces/generic_midi/midiinvokable.cc +++ b/libs/surfaces/generic_midi/midiinvokable.cc @@ -25,8 +25,8 @@ using namespace MIDI; -MIDIInvokable::MIDIInvokable (MIDI::Port& p) - : _port (p) +MIDIInvokable::MIDIInvokable (MIDI::Parser& p) + : _parser (p) { data_size = 0; data = 0; @@ -127,12 +127,6 @@ MIDIInvokable::bind_midi (channel_t chn, eventType ev, MIDI::byte additional) control_channel = chn; control_additional = additional; - if (_port.parser() == 0) { - return; - } - - Parser& p = *_port.parser(); - int chn_i = chn; /* incoming MIDI is parsed by Ardour' MidiUI event loop/thread, and we want our handlers to execute in that context, so we use @@ -141,27 +135,27 @@ MIDIInvokable::bind_midi (channel_t chn, eventType ev, MIDI::byte additional) switch (ev) { case MIDI::off: - p.channel_note_off[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_note_off, this, _1, _2)); + _parser.channel_note_off[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_note_off, this, _1, _2)); break; case MIDI::on: - p.channel_note_on[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_note_on, this, _1, _2)); + _parser.channel_note_on[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_note_on, this, _1, _2)); break; case MIDI::controller: - p.channel_controller[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_controller, this, _1, _2)); + _parser.channel_controller[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_controller, this, _1, _2)); break; case MIDI::program: - p.channel_program_change[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_program_change, this, _1, _2)); + _parser.channel_program_change[chn_i].connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_program_change, this, _1, _2)); break; case MIDI::sysex: - p.sysex.connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_sysex, this, _1, _2, _3)); + _parser.sysex.connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_sysex, this, _1, _2, _3)); break; case MIDI::any: - p.any.connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_any, this, _1, _2, _3)); + _parser.any.connect_same_thread (midi_sense_connection[0], boost::bind (&MIDIInvokable::midi_sense_any, this, _1, _2, _3)); break; default: diff --git a/libs/surfaces/generic_midi/midiinvokable.h b/libs/surfaces/generic_midi/midiinvokable.h index 62cbab238c..f374a126a5 100644 --- a/libs/surfaces/generic_midi/midiinvokable.h +++ b/libs/surfaces/generic_midi/midiinvokable.h @@ -31,7 +31,6 @@ namespace MIDI { class Channel; - class Port; class Parser; } @@ -40,12 +39,12 @@ class GenericMidiControlProtocol; class MIDIInvokable : public PBD::Stateful { public: - MIDIInvokable (MIDI::Port&); + MIDIInvokable (MIDI::Parser&); virtual ~MIDIInvokable (); virtual int init (GenericMidiControlProtocol&, const std::string&, MIDI::byte* data = 0, size_t dsize = 0); - MIDI::Port& get_port() const { return _port; } + MIDI::Parser& get_parser() { return _parser; } void bind_midi (MIDI::channel_t, MIDI::eventType, MIDI::byte); MIDI::channel_t get_control_channel () { return control_channel; } @@ -55,7 +54,7 @@ class MIDIInvokable : public PBD::Stateful protected: GenericMidiControlProtocol* _ui; std::string _invokable_name; - MIDI::Port& _port; + MIDI::Parser& _parser; PBD::ScopedConnection midi_sense_connection[2]; MIDI::eventType control_type; MIDI::byte control_additional; diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc index 0c45a29378..23cef9d13c 100644 --- a/libs/surfaces/mackie/surface.cc +++ b/libs/surfaces/mackie/surface.cc @@ -24,7 +24,6 @@ #include #include "midi++/port.h" -#include "midi++/manager.h" #include "ardour/automation_control.h" #include "ardour/debug.h" diff --git a/libs/surfaces/mackie/surface_port.cc b/libs/surfaces/mackie/surface_port.cc index 44db30ab1b..fd9feaff74 100644 --- a/libs/surfaces/mackie/surface_port.cc +++ b/libs/surfaces/mackie/surface_port.cc @@ -24,27 +24,27 @@ #include #include "midi++/types.h" -#include "midi++/port.h" -#include "midi++/jack_midi_port.h" #include "midi++/ipmidi_port.h" -#include "midi++/manager.h" +#include "ardour/async_midi_port.h" #include "ardour/debug.h" #include "ardour/rc_configuration.h" #include "ardour/session.h" #include "ardour/audioengine.h" +#include "ardour/async_midi_port.h" +#include "ardour/midiport_manager.h" #include "controls.h" #include "mackie_control_protocol.h" #include "surface.h" #include "surface_port.h" - #include "i18n.h" using namespace std; using namespace Mackie; using namespace PBD; +using namespace ARDOUR; /** @param input_port Input MIDI::Port; this object takes responsibility for * adding & removing it from the MIDI::Manager and destroying it. @param @@ -52,31 +52,16 @@ using namespace PBD; */ SurfacePort::SurfacePort (Surface& s) : _surface (&s) - , _input_port (0) - , _output_port (0) { if (_surface->mcp().device_info().uses_ipmidi()) { _input_port = new MIDI::IPMIDIPort (_surface->mcp().ipmidi_base() +_surface->number()); _output_port = _input_port; } else { - ARDOUR::PortEngine& port_engine (ARDOUR::AudioEngine::instance()->port_engine()); - - _input_port = new MIDI::JackMIDIPort (string_compose (_("%1 in"), _surface->name()), MIDI::Port::IsInput, port_engine); - _output_port =new MIDI::JackMIDIPort (string_compose (_("%1 out"), _surface->name()), MIDI::Port::IsOutput, port_engine); - - /* MackieControl has its own thread for handling input from the input - * port, and we don't want anything handling output from the output - * port. This stops the Generic MIDI UI event loop in ardour from - * attempting to handle these ports. - */ - - _input_port->set_centrally_parsed (false); - _output_port->set_centrally_parsed (false); - - MIDI::Manager * mm = MIDI::Manager::instance(); - - mm->add_port (_input_port); - mm->add_port (_output_port); + _async_in = AudioEngine::instance()->register_input_port (DataType::MIDI, string_compose (_("%1 in"), _surface->name()), true); + _async_out = AudioEngine::instance()->register_output_port (DataType::MIDI, string_compose (_("%1 out"), _surface->name()), true); + + _input_port = boost::dynamic_pointer_cast(_async_in).get(); + _output_port = boost::dynamic_pointer_cast(_async_out).get(); } } @@ -86,17 +71,15 @@ SurfacePort::~SurfacePort() delete _input_port; } else { - MIDI::Manager* mm = MIDI::Manager::instance (); - - if (_input_port) { - mm->remove_port (_input_port); - delete _input_port; + if (_async_in) { + AudioEngine::instance()->unregister_port (_async_in); + _async_in.reset (); } - if (_output_port) { + if (_async_out) { _output_port->drain (10000); - mm->remove_port (_output_port); - delete _output_port; + AudioEngine::instance()->unregister_port (_async_out); + _async_out.reset (); } } } diff --git a/libs/surfaces/mackie/surface_port.h b/libs/surfaces/mackie/surface_port.h index 7dc20a06f2..751ee848d7 100644 --- a/libs/surfaces/mackie/surface_port.h +++ b/libs/surfaces/mackie/surface_port.h @@ -21,16 +21,23 @@ #include #include "pbd/signals.h" + + #include "midi_byte_array.h" #include "types.h" namespace MIDI { - class Port; class Parser; + class Port; } class MackieControlProtocol; +namespace ARDOUR { + class AsyncMIDIPort; + class Port; +} + namespace Mackie { @@ -49,17 +56,17 @@ public: /// an easier way to output bytes via midi int write (const MidiByteArray&); - MIDI::Port& input_port() { return *_input_port; } - const MIDI::Port& input_port() const { return *_input_port; } - MIDI::Port& output_port() { return *_output_port; } - const MIDI::Port& output_port() const { return *_output_port; } + MIDI::Port& input_port() const { return *_input_port; } + MIDI::Port& output_port() const { return *_output_port; } protected: private: - Mackie::Surface* _surface; - MIDI::Port* _input_port; - MIDI::Port* _output_port; + Mackie::Surface* _surface; + MIDI::Port* _input_port; + MIDI::Port* _output_port; + boost::shared_ptr _async_in; + boost::shared_ptr _async_out; }; std::ostream& operator << (std::ostream& , const SurfacePort& port); -- cgit v1.2.3 From 584eeed66abde202eec238269699778b3e9fd372 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 7 Aug 2013 22:24:30 -0400 Subject: change wording in audio status when disconnected from engine --- gtk2_ardour/ardour_ui.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 69e2a339dd..ba53468414 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -1050,7 +1050,7 @@ ARDOUR_UI::update_sample_rate (framecnt_t) if (rate == 0) { /* no sample rate available */ - snprintf (buf, sizeof (buf), _("Audio: disconnected")); + snprintf (buf, sizeof (buf), _("Audio: none")); } else { if (fmod (rate, 1000.0) != 0.0) { -- cgit v1.2.3 From 917aed0da0628107b8db0df18446e1ed5f5dc3b8 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 8 Aug 2013 09:10:11 -0400 Subject: add new files (code based on the old midi++ JACKMidiPort) --- libs/ardour/ardour/async_midi_port.h | 79 ++++++++++ libs/ardour/async_midi_port.cc | 297 +++++++++++++++++++++++++++++++++++ 2 files changed, 376 insertions(+) create mode 100644 libs/ardour/ardour/async_midi_port.h create mode 100644 libs/ardour/async_midi_port.cc diff --git a/libs/ardour/ardour/async_midi_port.h b/libs/ardour/ardour/async_midi_port.h new file mode 100644 index 0000000000..76bdac0409 --- /dev/null +++ b/libs/ardour/ardour/async_midi_port.h @@ -0,0 +1,79 @@ +/* + Copyright (C) 1998-2010 Paul Barton-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 __libardour_async_midiport_h__ +#define __libardour_async_midiport_h__ + +#include +#include + +#include "pbd/xml++.h" +#include "pbd/crossthread.h" +#include "pbd/signals.h" +#include "pbd/ringbuffer.h" + +#include "evoral/Event.hpp" +#include "evoral/EventRingBuffer.hpp" + +#include "midi++/types.h" +#include "midi++/parser.h" +#include "midi++/port.h" + +#include "ardour/midi_port.h" + +namespace ARDOUR { + + class AsyncMIDIPort : public ARDOUR::MidiPort, public MIDI::Port { + + public: + AsyncMIDIPort (std::string const &, PortFlags); + ~AsyncMIDIPort (); + + /* called from an RT context */ + + void cycle_start (pframes_t nframes); + void cycle_end (pframes_t nframes); + + /* called from non-RT context */ + + void parse (framecnt_t timestamp); + int write (const MIDI::byte *msg, size_t msglen, MIDI::timestamp_t timestamp); + int read (MIDI::byte *buf, size_t bufsize); + void drain (int check_interval_usecs); + int selectable () const { return xthread.selectable(); } + + static void set_process_thread (pthread_t); + static pthread_t get_process_thread () { return _process_thread; } + static bool is_process_thread(); + + private: + bool _currently_in_cycle; + MIDI::timestamp_t _last_write_timestamp; + RingBuffer< Evoral::Event > output_fifo; + Evoral::EventRingBuffer input_fifo; + Glib::Threads::Mutex output_fifo_lock; + CrossThreadChannel xthread; + + void flush_output_fifo (pframes_t); + + static pthread_t _process_thread; +}; + +} // namespace ARDOUR + +#endif /* __libardour_async_midiport_h__ */ diff --git a/libs/ardour/async_midi_port.cc b/libs/ardour/async_midi_port.cc new file mode 100644 index 0000000000..22b5438fe0 --- /dev/null +++ b/libs/ardour/async_midi_port.cc @@ -0,0 +1,297 @@ +/* + Copyright (C) 1998 Paul Barton-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. + + $Id$ +*/ + +#include + +#include "pbd/error.h" +#include "pbd/stacktrace.h" + +#include "midi++/types.h" + +#include "ardour/async_midi_port.h" +#include "ardour/audioengine.h" +#include "ardour/midi_buffer.h" + +using namespace MIDI; +using namespace ARDOUR; +using namespace std; +using namespace PBD; + +namespace Evoral { + template class EventRingBuffer; +} + +pthread_t AsyncMIDIPort::_process_thread; + +#define port_engine AudioEngine::instance()->port_engine() + +AsyncMIDIPort::AsyncMIDIPort (string const & name, PortFlags flags) + : MidiPort (name, flags) + , MIDI::Port (name, MIDI::Port::Flags (0)) + , _currently_in_cycle (false) + , _last_write_timestamp (0) + , output_fifo (512) + , input_fifo (1024) + , xthread (true) +{ +} + +AsyncMIDIPort::~AsyncMIDIPort () +{ +} + +void +AsyncMIDIPort::flush_output_fifo (pframes_t nframes) +{ + RingBuffer< Evoral::Event >::rw_vector vec = { { 0, 0 }, { 0, 0 } }; + size_t written; + + output_fifo.get_read_vector (&vec); + + MidiBuffer& mb (get_midi_buffer (nframes)); + + if (vec.len[0]) { + Evoral::Event* evp = vec.buf[0]; + + for (size_t n = 0; n < vec.len[0]; ++n, ++evp) { + mb.push_back (evp->time(), evp->size(), evp->buffer()); + } + } + + if (vec.len[1]) { + Evoral::Event* evp = vec.buf[1]; + + for (size_t n = 0; n < vec.len[1]; ++n, ++evp) { + mb.push_back (evp->time(), evp->size(), evp->buffer()); + } + } + + if ((written = vec.len[0] + vec.len[1]) != 0) { + output_fifo.increment_read_idx (written); + } +} + +void +AsyncMIDIPort::cycle_start (pframes_t nframes) +{ + _currently_in_cycle = true; + MidiPort::cycle_start (nframes); + + /* dump anything waiting in the output FIFO at the start of the port + * buffer + */ + + if (ARDOUR::Port::sends_output()) { + flush_output_fifo (nframes); + } + + /* copy incoming data from the port buffer into the input FIFO + and if necessary wakeup the reader + */ + + if (ARDOUR::Port::receives_input()) { + MidiBuffer& mb (get_midi_buffer (nframes)); + pframes_t when = AudioEngine::instance()->sample_time_at_cycle_start(); + + for (MidiBuffer::iterator b = mb.begin(); b != mb.end(); ++b) { + input_fifo.write (when, (Evoral::EventType) 0, (*b).size(), (*b).buffer()); + } + + if (!mb.empty()) { + xthread.wakeup (); + } + } + +} + +void +AsyncMIDIPort::cycle_end (pframes_t nframes) +{ + if (ARDOUR::Port::sends_output()) { + /* move any additional data from output FIFO into the port + buffer. + */ + flush_output_fifo (nframes); + } + + MidiPort::cycle_end (nframes); + + _currently_in_cycle = false; +} + +/** wait for the output FIFO to be emptied by successive process() callbacks. + * + * Cannot be called from a processing thread. + */ +void +AsyncMIDIPort::drain (int check_interval_usecs) +{ + RingBuffer< Evoral::Event >::rw_vector vec = { { 0, 0 }, { 0, 0} }; + + if (is_process_thread()) { + error << "Process thread called MIDI::AsyncMIDIPort::drain() - this cannot work" << endmsg; + return; + } + + while (1) { + output_fifo.get_write_vector (&vec); + if (vec.len[0] + vec.len[1] >= output_fifo.bufsize() - 1) { + break; + } + usleep (check_interval_usecs); + } +} + +int +AsyncMIDIPort::write (const byte * msg, size_t msglen, timestamp_t timestamp) +{ + int ret = 0; + + if (!ARDOUR::Port::sends_output()) { + return ret; + } + + if (!is_process_thread()) { + + /* this is the best estimate of "when" this MIDI data is being + * delivered + */ + + _parser->set_timestamp (AudioEngine::instance()->sample_time() + timestamp); + for (size_t n = 0; n < msglen; ++n) { + _parser->scanner (msg[n]); + } + + Glib::Threads::Mutex::Lock lm (output_fifo_lock); + RingBuffer< Evoral::Event >::rw_vector vec = { { 0, 0 }, { 0, 0} }; + + output_fifo.get_write_vector (&vec); + + if (vec.len[0] + vec.len[1] < 1) { + error << "no space in FIFO for non-process thread MIDI write" << endmsg; + return 0; + } + + if (vec.len[0]) { + if (!vec.buf[0]->owns_buffer()) { + vec.buf[0]->set_buffer (0, 0, true); + } + vec.buf[0]->set (msg, msglen, timestamp); + } else { + if (!vec.buf[1]->owns_buffer()) { + vec.buf[1]->set_buffer (0, 0, true); + } + vec.buf[1]->set (msg, msglen, timestamp); + } + + output_fifo.increment_write_idx (1); + + ret = msglen; + + } else { + + _parser->set_timestamp (AudioEngine::instance()->sample_time_at_cycle_start() + timestamp); + for (size_t n = 0; n < msglen; ++n) { + _parser->scanner (msg[n]); + } + + if (timestamp >= _cycle_nframes) { + std::cerr << "attempting to write MIDI event of " << msglen << " bytes at time " + << timestamp << " of " << _cycle_nframes + << " (this will not work - needs a code fix)" + << std::endl; + } + + /* This is the process thread, which makes checking + * _currently_in_cycle atomic and safe, since it is only + * set from cycle_start() and cycle_end(), also called + * only from the process thread. + */ + + if (_currently_in_cycle) { + + MidiBuffer& mb (get_midi_buffer (_cycle_nframes)); + + if (timestamp == 0) { + timestamp = _last_write_timestamp; + } + + if (mb.push_back (timestamp, msglen, msg)) { + ret = msglen; + _last_write_timestamp = timestamp; + + } else { + cerr << "AsyncMIDIPort (" << ARDOUR::Port::name() << "): write of " << msglen << " @ " << timestamp << " failed\n" << endl; + PBD::stacktrace (cerr, 20); + ret = 0; + } + } else { + cerr << "write to JACK midi port failed: not currently in a process cycle." << endl; + PBD::stacktrace (cerr, 20); + } + } + + return ret; +} + + +int +AsyncMIDIPort::read (MIDI::byte *, size_t) +{ + if (!ARDOUR::Port::receives_input()) { + return 0; + } + + timestamp_t time; + Evoral::EventType type; + uint32_t size; + byte buffer[input_fifo.capacity()]; + + while (input_fifo.read (&time, &type, &size, buffer)) { + _parser->set_timestamp (time); + for (uint32_t i = 0; i < size; ++i) { + _parser->scanner (buffer[i]); + } + } + + return 0; +} + +void +AsyncMIDIPort::parse (framecnt_t) +{ + MIDI::byte buf[1]; + + /* see ::read() to realize why buf is not used */ + read (buf, sizeof (buf)); +} + +void +AsyncMIDIPort::set_process_thread (pthread_t thr) +{ + _process_thread = thr; +} + +bool +AsyncMIDIPort::is_process_thread() +{ + return pthread_equal (pthread_self(), _process_thread); +} + -- cgit v1.2.3 From ea7d89dd519caa7a45ad7a0e99bad14445513f3b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 8 Aug 2013 11:23:13 -0400 Subject: remove reference to non-existent header --- gtk2_ardour/port_group.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/gtk2_ardour/port_group.cc b/gtk2_ardour/port_group.cc index f8c8e2bde2..67bc40f664 100644 --- a/gtk2_ardour/port_group.cc +++ b/gtk2_ardour/port_group.cc @@ -33,7 +33,6 @@ #include "ardour/session.h" #include "ardour/user_bundle.h" #include "ardour/port.h" -#include "ardour/syncport_manager.h" #include "control_protocol/control_protocol.h" -- cgit v1.2.3 From d90e2b42211ead2a38afd5590e2937992312795e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 8 Aug 2013 16:31:08 -0400 Subject: rationalize (a bit) engine start/stop/restart so that it is possible to start up, disconnect from JACK and then reconnect --- gtk2_ardour/ardour_ui.cc | 226 +++++++++++++++++---------------- gtk2_ardour/ardour_ui.h | 1 + gtk2_ardour/arval | 1 + libs/ardour/ardour/jack_audiobackend.h | 12 +- libs/ardour/ardour/jack_portengine.h | 1 + libs/ardour/ardour/port_engine.h | 2 + libs/ardour/audioengine.cc | 80 ++++++------ libs/ardour/jack_audiobackend.cc | 41 +++--- libs/ardour/jack_portengine.cc | 6 + libs/ardour/ladspa_plugin.cc | 2 + libs/ardour/midi_buffer.cc | 6 +- libs/ardour/midi_port.cc | 1 + libs/ardour/port.cc | 14 +- libs/ardour/port_manager.cc | 4 +- 14 files changed, 214 insertions(+), 183 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index ba53468414..00767b7988 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -161,6 +161,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) , nsm (0) , _was_dirty (false) , _mixer_on_top (false) + , first_time_engine_run (true) /* transport */ @@ -414,10 +415,122 @@ ARDOUR_UI::attach_to_engine () } } +void +ARDOUR_UI::engine_stopped () +{ + ENSURE_GUI_THREAD (*this, &ARDOUR_UI::engine_stopped) + ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, true); +} + +void +ARDOUR_UI::engine_running () +{ + if (first_time_engine_run) { + post_engine(); + first_time_engine_run = false; + } + + ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, true); + ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, false); + + Glib::RefPtr action; + const char* action_name = 0; + + switch (engine->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 ract = Glib::RefPtr::cast_dynamic (action); + ract->set_active (); + } + + update_disk_space (); + update_cpu_load (); + update_sample_rate (engine->sample_rate()); + update_timecode_format (); + } +} + +void +ARDOUR_UI::engine_halted (const char* reason, bool free_reason) +{ + if (!Gtkmm2ext::UI::instance()->caller_is_ui_thread()) { + /* we can't rely on the original string continuing to exist when we are called + again in the GUI thread, so make a copy and note that we need to + free it later. + */ + char *copy = strdup (reason); + Gtkmm2ext::UI::instance()->call_slot (invalidator (*this), boost::bind (&ARDOUR_UI::engine_halted, this, copy, true)); + return; + } + + ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, true); + + update_sample_rate (0); + + string msgstr; + + /* if the reason is a non-empty string, it means that the backend was shutdown + rather than just Ardour. + */ + + if (strlen (reason)) { + msgstr = string_compose (_("The audio backend (JACK) was shutdown because:\n\n%1"), reason); + } else { + msgstr = string_compose (_("\ +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."), PROGRAM_NAME); + } + + MessageDialog msg (*editor, msgstr); + pop_back_splash (msg); + msg.set_keep_above (true); + msg.run (); + + if (free_reason) { + free (const_cast (reason)); + } +} + void ARDOUR_UI::post_engine () { - /* Things to be done once we have a backend running in the AudioEngine + /* Things to be done once (and once ONLY) after we have a backend running in the AudioEngine */ ARDOUR::init_post_engine (); @@ -483,11 +596,6 @@ ARDOUR_UI::post_engine () Glib::signal_timeout().connect_seconds (sigc::mem_fun(*this, &ARDOUR_UI::update_wall_clock), 1); #endif - update_disk_space (); - update_cpu_load (); - update_sample_rate (engine->sample_rate()); - update_timecode_format (); - Config->ParameterChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::parameter_changed, this, _1), gui_context()); boost::function pc (boost::bind (&ARDOUR_UI::parameter_changed, this, _1)); Config->map_parameters (pc); @@ -1042,7 +1150,7 @@ ARDOUR_UI::update_sample_rate (framecnt_t) if (!engine->connected()) { - snprintf (buf, sizeof (buf), "%s", _("disconnected")); + snprintf (buf, sizeof (buf), _("Audio: none")); } else { @@ -2041,110 +2149,6 @@ ARDOUR_UI::map_transport_state () } } -void -ARDOUR_UI::engine_stopped () -{ - ENSURE_GUI_THREAD (*this, &ARDOUR_UI::engine_stopped) - ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, false); - ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, true); -} - -void -ARDOUR_UI::engine_running () -{ - post_engine(); - - ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, true); - ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, false); - - Glib::RefPtr action; - const char* action_name = 0; - - switch (engine->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 ract = Glib::RefPtr::cast_dynamic (action); - ract->set_active (); - } - } -} - -void -ARDOUR_UI::engine_halted (const char* reason, bool free_reason) -{ - if (!Gtkmm2ext::UI::instance()->caller_is_ui_thread()) { - /* we can't rely on the original string continuing to exist when we are called - again in the GUI thread, so make a copy and note that we need to - free it later. - */ - char *copy = strdup (reason); - Gtkmm2ext::UI::instance()->call_slot (invalidator (*this), boost::bind (&ARDOUR_UI::engine_halted, this, copy, true)); - return; - } - - ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, false); - ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, true); - - update_sample_rate (0); - - string msgstr; - - /* if the reason is a non-empty string, it means that the backend was shutdown - rather than just Ardour. - */ - - if (strlen (reason)) { - msgstr = string_compose (_("The audio backend (JACK) was shutdown because:\n\n%1"), reason); - } else { - msgstr = string_compose (_("\ -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."), PROGRAM_NAME); - } - - MessageDialog msg (*editor, msgstr); - pop_back_splash (msg); - msg.set_keep_above (true); - msg.run (); - - if (free_reason) { - free (const_cast (reason)); - } -} - void ARDOUR_UI::update_clocks () { diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 1dcaeb0e9e..e784b5a994 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -315,6 +315,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr NSM_Client *nsm; bool _was_dirty; bool _mixer_on_top; + bool first_time_engine_run; void goto_editor_window (); void goto_mixer_window (); diff --git a/gtk2_ardour/arval b/gtk2_ardour/arval index 6503bc1ede..2209dcb110 100755 --- a/gtk2_ardour/arval +++ b/gtk2_ardour/arval @@ -10,5 +10,6 @@ LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH export ARDOUR_RUNNING_UNDER_VALGRIND=TRUE exec valgrind --tool=memcheck \ $VALGRIND_OPTIONS \ + --track-origins=yes \ --suppressions=`dirname "$0"`/../tools/valgrind.supp \ $TOP/$EXECUTABLE --novst "$@" diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h index ada7ce8e33..5ba9ee63d7 100644 --- a/libs/ardour/ardour/jack_audiobackend.h +++ b/libs/ardour/ardour/jack_audiobackend.h @@ -165,14 +165,10 @@ class JACKAudioBackend : public AudioBackend { bool _target_interleaved; uint32_t _target_input_channels; uint32_t _target_output_channels; - uint32_t _target_systemic_input_latency; - uint32_t _target_systemic_output_latency; - - uint32_t _current_sample_rate; - uint32_t _current_buffer_size; - uint32_t _current_usecs_per_cycle; - uint32_t _current_systemic_input_latency; - uint32_t _current_systemic_output_latency; + uint32_t _target_systemic_input_latency; + uint32_t _target_systemic_output_latency; + uint32_t _current_sample_rate; + uint32_t _current_buffer_size; typedef std::set DeviceList; typedef std::map DriverDeviceMap; diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h index d595b638fa..a267ebb32b 100644 --- a/libs/ardour/ardour/jack_portengine.h +++ b/libs/ardour/ardour/jack_portengine.h @@ -43,6 +43,7 @@ class JACKPortEngine : public PortEngine ~JACKPortEngine(); void* private_handle() const; + bool connected() const; const std::string& my_name() const; diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index 8e36ad8b09..bb7ec5cb66 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -98,6 +98,8 @@ class PortEngine { */ virtual void* private_handle() const = 0; + virtual bool connected() const = 0; + /** Return the name of this process as used by the port manager * when naming ports. */ diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 9c04529384..2307e9bd52 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -346,8 +346,6 @@ AudioEngine::set_session (Session *s) if (_session) { - start_metering_thread (); - pframes_t blocksize = _backend->buffer_size (); /* page in as much of the session process code as we @@ -567,32 +565,30 @@ AudioEngine::start () _processed_frames = 0; last_monitor_check = 0; - if (_backend->start() == 0) { + if (_backend->start()) { + return -1; + } - _running = true; - last_monitor_check = 0; + _running = true; + + if (_session) { + _session->set_frame_rate (_backend->sample_rate()); - if (_session) { - _session->set_frame_rate (_backend->sample_rate()); - - if (_session->config.get_jack_time_master()) { - _backend->set_time_master (true); - } + if (_session->config.get_jack_time_master()) { + _backend->set_time_master (true); } - - if (!have_ports) { - PortManager::create_ports (); - } - + } + + if (!have_ports) { + PortManager::create_ports (); _mmc.set_ports (mmc_input_port(), mmc_output_port()); - - Running(); /* EMIT SIGNAL */ - - return 0; - } - - /* should report error ... */ - return -1; + } + + start_metering_thread (); + + Running(); /* EMIT SIGNAL */ + + return 0; } int @@ -604,17 +600,18 @@ AudioEngine::stop () Glib::Threads::Mutex::Lock lm (_process_lock); - if (_backend->stop () == 0) { - _running = false; - _processed_frames = 0; - stop_metering_thread (); - - Stopped (); /* EMIT SIGNAL */ - - return 0; + if (_backend->stop ()) { + return -1; } - - return -1; + + _running = false; + _processed_frames = 0; + stop_metering_thread (); + + Port::PortDrop (); + Stopped (); /* EMIT SIGNAL */ + + return 0; } int @@ -624,13 +621,14 @@ AudioEngine::pause () return 0; } - if (_backend->pause () == 0) { - _running = false; - Stopped(); /* EMIT SIGNAL */ - return 0; + if (_backend->pause ()) { + return -1; } - return -1; + _running = false; + + Stopped(); /* EMIT SIGNAL */ + return 0; } int @@ -957,7 +955,9 @@ void AudioEngine::halted_callback (const char* why) { stop_metering_thread (); - Halted (why); /* EMIT SIGNAL */ + + Port::PortDrop (); /* EMIT SIGNAL */ + Halted (why); /* EMIT SIGNAL */ } bool diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 2e0d90202f..a3bbaecb2d 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -40,6 +40,8 @@ using namespace ARDOUR; using namespace PBD; using std::string; using std::vector; +using std::cerr; +using std::endl; #define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return; } #define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return r; } @@ -57,6 +59,8 @@ JACKAudioBackend::JACKAudioBackend (AudioEngine& e, boost::shared_ptrDisconnected.connect_same_thread (disconnect_connection, boost::bind (&JACKAudioBackend::disconnected, this, _1)); } @@ -388,13 +392,13 @@ JACKAudioBackend::output_channels () const uint32_t JACKAudioBackend::systemic_input_latency () const { - return _current_systemic_output_latency; + return _target_systemic_output_latency; } uint32_t JACKAudioBackend::systemic_output_latency () const { - return _current_systemic_output_latency; + return _target_systemic_output_latency; } size_t @@ -455,28 +459,26 @@ JACKAudioBackend::start () setup_jack_startup_command (); } - _jack_connection->open (); - } - - engine.reestablish_ports (); - - if (!jack_port_type_get_buffer_size) { - warning << _("This version of JACK is old - you should upgrade to a newer version that supports jack_port_type_get_buffer_size()") << endmsg; + if (_jack_connection->open ()) { + return -1; + } } GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - engine.sample_rate_change (jack_get_sample_rate (_priv_jack)); + /* get the buffer size and sample rates established */ + + jack_sample_rate_callback (jack_get_sample_rate (_priv_jack)); + jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); - /* testing the nullity of this function name is a proxy for - * whether jack_activate() will definitely call the buffer size - * callback. with older versions of JACK, this function symbol - * will be null. this is sort of reliable, but not clean since - * weak symbol support is highly platform and compiler - * specific. - */ + /* Now that we have buffer size and sample rate established, the engine + can go ahead and do its stuff + */ + + engine.reestablish_ports (); + if (!jack_port_type_get_buffer_size) { - jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); + warning << _("This version of JACK is old - you should upgrade to a newer version that supports jack_port_type_get_buffer_size()") << endmsg; } set_jack_callbacks (); @@ -486,7 +488,7 @@ JACKAudioBackend::start () } else { // error << _("cannot activate JACK client") << endmsg; } - + engine.reconnect_ports (); return 0; @@ -869,7 +871,6 @@ JACKAudioBackend::jack_bufsize_callback (pframes_t nframes) GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 1); _current_buffer_size = nframes; - _current_usecs_per_cycle = (int) floor ((((double) nframes / sample_rate())) * 1000000.0); if (jack_port_type_get_buffer_size) { _raw_buffer_sizes[DataType::AUDIO] = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_AUDIO_TYPE); diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc index 82b4502cb6..b0597f8269 100644 --- a/libs/ardour/jack_portengine.cc +++ b/libs/ardour/jack_portengine.cc @@ -124,6 +124,12 @@ JACKPortEngine::private_handle() const return _jack_connection->jack(); } +bool +JACKPortEngine::connected() const +{ + return _jack_connection->connected(); +} + int JACKPortEngine::set_port_name (PortHandle port, const std::string& name) { diff --git a/libs/ardour/ladspa_plugin.cc b/libs/ardour/ladspa_plugin.cc index 6a2636e4f4..bc3a83799b 100644 --- a/libs/ardour/ladspa_plugin.cc +++ b/libs/ardour/ladspa_plugin.cc @@ -112,7 +112,9 @@ LadspaPlugin::init (void *mod, uint32_t index, framecnt_t rate) port_cnt = parameter_count(); _control_data = new LADSPA_Data[port_cnt]; + memset (_control_data, 0, sizeof (LADSPA_Data) * port_cnt); _shadow_data = new LADSPA_Data[port_cnt]; + memset (_shadow_data, 0, sizeof (LADSPA_Data) * port_cnt); for (i = 0; i < port_cnt; ++i) { if (LADSPA_IS_PORT_CONTROL(port_descriptor (i))) { diff --git a/libs/ardour/midi_buffer.cc b/libs/ardour/midi_buffer.cc index 0b0e61000d..d75b861ea1 100644 --- a/libs/ardour/midi_buffer.cc +++ b/libs/ardour/midi_buffer.cc @@ -22,6 +22,7 @@ #include "pbd/malign.h" #include "pbd/compose.h" #include "pbd/debug.h" +#include "pbd/stacktrace.h" #include "ardour/debug.h" #include "ardour/midi_buffer.h" @@ -133,6 +134,7 @@ MidiBuffer::push_back(const Evoral::MIDIEvent& ev) if (_size + stamp_size + ev.size() >= _capacity) { cerr << "MidiBuffer::push_back failed (buffer is full)" << endl; + PBD::stacktrace (cerr, 20); return false; } @@ -171,7 +173,9 @@ MidiBuffer::push_back(TimeType time, size_t size, const uint8_t* data) #endif if (_size + stamp_size + size >= _capacity) { - cerr << "MidiBuffer::push_back failed (buffer is full)" << endl; + cerr << "MidiBuffer::push_back2 failed (buffer is full; _size = " << _size << " capacity " + << _capacity << " stamp " << stamp_size << " size = " << size << ")" << endl; + PBD::stacktrace (cerr, 20); return false; } diff --git a/libs/ardour/midi_port.cc b/libs/ardour/midi_port.cc index 9191a57080..5589c6e501 100644 --- a/libs/ardour/midi_port.cc +++ b/libs/ardour/midi_port.cc @@ -206,6 +206,7 @@ MidiPort::reset () { Port::reset (); delete _buffer; + cerr << name() << " new MIDI buffer of size " << AudioEngine::instance()->raw_buffer_size (DataType::MIDI) << endl; _buffer = new MidiBuffer (AudioEngine::instance()->raw_buffer_size (DataType::MIDI)); } diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index 7dc11c6d3d..d37761b6f2 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -88,6 +88,7 @@ void Port::drop () { if (_port_handle) { + DEBUG_TRACE (DEBUG::Ports, string_compose ("drop handle for port %1\n", name())); port_engine.unregister_port (_port_handle); _port_handle = 0; } @@ -120,12 +121,21 @@ Port::disconnect_all () bool Port::connected_to (std::string const & o) const { + if (!port_engine.connected()) { + return false; + } + return port_engine.connected_to (_port_handle, AudioEngine::instance()->make_port_name_non_relative (o)); } int Port::get_connections (std::vector & c) const { + if (!port_engine.connected()) { + c.insert (c.end(), _connections.begin(), _connections.end()); + return c.size(); + } + return port_engine.get_connections (_port_handle, c); } @@ -142,9 +152,9 @@ Port::connect (std::string const & other) } if (sends_output ()) { - port_engine.connect (our_name, other_name); + r = port_engine.connect (our_name, other_name); } else { - port_engine.connect (other_name, our_name); + r = port_engine.connect (other_name, our_name); } if (r == 0) { diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index 41331fe3a5..4e467e3008 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -439,6 +439,8 @@ PortManager::reestablish_ports () for (i = p->begin(); i != p->end(); ++i) { if (i->second->reestablish ()) { + error << string_compose (_("Re-establising port %1 failed"), i->second->name()) << endmsg; + cerr << string_compose (_("Re-establising port %1 failed"), i->second->name()) << endl; break; } } @@ -458,7 +460,7 @@ PortManager::reconnect_ports () boost::shared_ptr p = ports.reader (); /* re-establish connections */ - + DEBUG_TRACE (DEBUG::Ports, string_compose ("reconnect %1 ports\n", p->size())); for (Ports::iterator i = p->begin(); i != p->end(); ++i) { -- cgit v1.2.3 From 111d35c9c7805b47a806a8f435d19e86ad40c879 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 8 Aug 2013 19:31:10 -0400 Subject: add methods to queue full MTC and SPP messages, now that they are synchronous --- gtk2_ardour/editor_drag.cc | 10 +++++++--- libs/ardour/ardour/session.h | 11 +++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 3389164f50..9c65892ebd 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -2371,10 +2371,14 @@ CursorDrag::fake_locate (framepos_t t) Session* s = _editor->session (); if (s->timecode_transmission_suspended ()) { framepos_t const f = _editor->playhead_cursor->current_frame; + /* This is asynchronous so it will be sent "now" + */ s->send_mmc_locate (f); - // XXX need to queue full time code and SPP messages somehow - // s->send_full_time_code (f); - // s->send_song_position_pointer (f); + /* These are synchronous and will be sent during the next + process cycle + */ + s->queue_full_time_code (); + s->queue_song_position_pointer (); } show_verbose_cursor_time (t); diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index a47c13046d..c291220874 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -813,8 +813,8 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi boost::shared_ptr playlists; void send_mmc_locate (framepos_t); - int send_full_time_code (framepos_t, pframes_t nframes); - void send_song_position_pointer (framepos_t); + void queue_full_time_code () { _send_timecode_update = true; } + void queue_song_position_pointer () { /* currently does nothing */ } bool step_editing() const { return (_step_editors > 0); } @@ -1261,6 +1261,13 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void engine_halted (); void xrun_recovery (); + /* These are synchronous and so can only be called from within the process + * cycle + */ + + int send_full_time_code (framepos_t, pframes_t nframes); + void send_song_position_pointer (framepos_t); + TempoMap *_tempo_map; void tempo_map_changed (const PBD::PropertyChange&); -- cgit v1.2.3 From 3070cd723b7a14af4404ea49e8f2e62f68219a7e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 8 Aug 2013 19:32:56 -0400 Subject: fix crashes, clean up session code warmup and other details in audioengine --- libs/ardour/audioengine.cc | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 2307e9bd52..c163df729f 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -346,17 +346,9 @@ AudioEngine::set_session (Session *s) if (_session) { - pframes_t blocksize = _backend->buffer_size (); + pframes_t blocksize = samples_per_cycle (); - /* page in as much of the session process code as we - can before we really start running. - */ - - boost::shared_ptr p = ports.reader(); - - for (Ports::iterator i = p->begin(); i != p->end(); ++i) { - i->second->cycle_start (blocksize); - } + PortManager::cycle_start (blocksize); _session->process (blocksize); _session->process (blocksize); @@ -367,9 +359,7 @@ AudioEngine::set_session (Session *s) _session->process (blocksize); _session->process (blocksize); - for (Ports::iterator i = p->begin(); i != p->end(); ++i) { - i->second->cycle_end (blocksize); - } + PortManager::cycle_end (blocksize); } } @@ -525,10 +515,7 @@ AudioEngine::set_backend (const std::string& name, const std::string& arg1, cons drop_backend (); try { - cerr << "Instantiate " << b->second->name << " with " << arg1 << " + " << arg2 << endl; - if (b->second->instantiate (arg1, arg2)) { - cerr << "i failed\n"; throw failed_constructor (); } @@ -899,9 +886,8 @@ AudioEngine::thread_init_callback (void* arg) AsyncMIDIPort::set_process_thread (pthread_self()); if (arg) { - AudioEngine* ae = static_cast (arg); /* the special thread created/managed by the backend */ - ae->_main_thread = new ProcessThread; + AudioEngine::instance()->_main_thread = new ProcessThread; } } -- cgit v1.2.3 From fcb76c8c052e92366bac06446d19b72c1420e514 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 8 Aug 2013 22:12:52 -0400 Subject: fix freewheeling --- libs/ardour/audioengine.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index c163df729f..45cc33cdc1 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -919,6 +919,8 @@ AudioEngine::freewheel_callback (bool onoff) } else { _mmc.enable_send (_pre_freewheel_mmc_enabled); } + + _freewheeling = onoff; } void -- cgit v1.2.3 From ab39a09b862a3a59cda9d155750bf3bf8c5fa5af Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 8 Aug 2013 22:28:31 -0400 Subject: temporarily ignore AudioEngine::Halted when GUI asks to disconnect from JACK, to avoid warning dialog --- gtk2_ardour/ardour_ui.cc | 10 +++++++++- gtk2_ardour/ardour_ui.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 00767b7988..3c2ed85276 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -398,7 +398,7 @@ ARDOUR_UI::attach_to_engine () engine->Running.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_running, this), gui_context()); engine->SampleRateChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::update_sample_rate, this, _1), gui_context()); - engine->Halted.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); + engine->Halted.connect_same_thread (halt_connection, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); ARDOUR::Port::set_connecting_blocked (ARDOUR_COMMAND_LINE::no_connect_ports); @@ -1019,6 +1019,7 @@ If you still wish to quit, please use the\n\n\ _session = 0; } + halt_connection.disconnect (); engine->stop (); quit (); } @@ -3822,9 +3823,16 @@ void ARDOUR_UI::disconnect_from_jack () { if (engine) { + /* drop connection to AudioEngine::Halted so that we don't act + * as if the engine unexpectedly shut down + */ + halt_connection.disconnect (); + if (engine->stop ()) { MessageDialog msg (*editor, _("Could not disconnect from JACK")); msg.run (); + } else { + engine->Halted.connect_same_thread (halt_connection, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); } update_sample_rate (0); diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index e784b5a994..f8b47bd3e8 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -711,6 +711,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void loading_message (const std::string& msg); PBD::ScopedConnectionList forever_connections; + PBD::ScopedConnection halt_connection; void step_edit_status_change (bool); -- cgit v1.2.3 From 743bb5066e2d19b8dadb21d1138b8f54f16503bf Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 8 Aug 2013 23:31:35 -0400 Subject: some rearrangements and details for the engine dialog --- gtk2_ardour/engine_dialog.cc | 90 +++++++++++++++++++------------------------- gtk2_ardour/engine_dialog.h | 6 +-- 2 files changed, 41 insertions(+), 55 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 58d7bd5fec..ab6b65c561 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -98,17 +98,6 @@ EngineControl::EngineControl () driver_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::driver_changed)); - strings.clear (); - strings.push_back (_("Playback/recording on 1 device")); - strings.push_back (_("Playback/recording on 2 devices")); - strings.push_back (_("Playback only")); - strings.push_back (_("Recording only")); - set_popdown_strings (audio_mode_combo, strings); - audio_mode_combo.set_active_text (strings.front()); - - audio_mode_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::audio_mode_changed)); - audio_mode_changed (); - strings.clear (); strings.push_back (_("None")); #ifdef __APPLE__ @@ -147,23 +136,21 @@ EngineControl::EngineControl () basic_packer.attach (buffer_size_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); row++; - label = manage (left_aligned_label (_("Approximate latency:"))); - basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (latency_label, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - row++; + label = manage (left_aligned_label (_("Hardware input latency:"))); + basic_packer.attach (*label, 0, 1, row, row+1, FILL|EXPAND, (AttachOptions) 0); + basic_packer.attach (input_latency, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0); + label = manage (left_aligned_label (_("samples"))); + basic_packer.attach (*label, 2, 3, row, row+1, FILL|EXPAND, (AttachOptions) 0); + ++row; - sample_rate_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::redisplay_latency)); - buffer_size_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::redisplay_latency)); - redisplay_latency(); - row++; - /* no audio mode with CoreAudio, its duplex or nuthin' */ + label = manage (left_aligned_label (_("Hardware output latency:"))); + basic_packer.attach (*label, 0, 1, row, row+1, FILL|EXPAND, (AttachOptions) 0); + basic_packer.attach (output_latency, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0); + label = manage (left_aligned_label (_("samples"))); + basic_packer.attach (*label, 2, 3, row, row+1, FILL|EXPAND, (AttachOptions) 0); + ++row; -#if !defined(__APPLE__) && !defined(__FreeBSD__) - label = manage (left_aligned_label (_("Audio mode:"))); - basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (audio_mode_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - row++; -#endif + sr_connection = sample_rate_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::reshow_buffer_sizes)); interface_combo.set_size_request (250, -1); input_device_combo.set_size_request (250, -1); @@ -213,18 +200,6 @@ EngineControl::EngineControl () device_packer.attach (output_device_combo, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0); ++row; #endif - label = manage (left_aligned_label (_("Hardware input latency:"))); - device_packer.attach (*label, 0, 1, row, row+1, FILL|EXPAND, (AttachOptions) 0); - device_packer.attach (input_latency, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0); - label = manage (left_aligned_label (_("samples"))); - device_packer.attach (*label, 2, 3, row, row+1, FILL|EXPAND, (AttachOptions) 0); - ++row; - label = manage (left_aligned_label (_("Hardware output latency:"))); - device_packer.attach (*label, 0, 1, row, row+1, FILL|EXPAND, (AttachOptions) 0); - device_packer.attach (output_latency, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0); - label = manage (left_aligned_label (_("samples"))); - device_packer.attach (*label, 2, 3, row, row+1, FILL|EXPAND, (AttachOptions) 0); - ++row; basic_hbox.pack_start (basic_packer, false, false); options_hbox.pack_start (options_packer, false, false); @@ -329,6 +304,12 @@ EngineControl::interface_changed () string device_name = interface_combo.get_active_text (); vector s; + /* don't allow programmatic change to sample_rate_combo to cause a + recursive call to this method. + */ + + sr_connection.block (); + /* sample rates */ vector sr = backend->available_sample_rates (device_name); @@ -345,31 +326,36 @@ EngineControl::interface_changed () set_popdown_strings (sample_rate_combo, s); sample_rate_combo.set_active_text (s.front()); + reshow_buffer_sizes (); + + sr_connection.unblock (); +} + +void +EngineControl::reshow_buffer_sizes () +{ + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + assert (backend); + string device_name = interface_combo.get_active_text (); + vector s; + /* buffer sizes */ s.clear (); vector bs = backend->available_buffer_sizes(device_name); + uint32_t rate = get_rate(); + for (vector::const_iterator x = bs.begin(); x != bs.end(); ++x) { char buf[32]; - snprintf (buf, sizeof (buf), "%u", *x); + /* Translators: "samples" is ALWAYS plural here, so we do not + need singular form as well. Same for msecs. + */ + snprintf (buf, sizeof (buf), _("%u samples (%.1f msecs)"), *x, (2 * (*x)) / (rate/1000.0)); s.push_back (buf); } set_popdown_strings (buffer_size_combo, s); buffer_size_combo.set_active_text (s.front()); -} - -void -EngineControl::redisplay_latency () -{ - uint32_t rate = get_rate(); - float period_size = atof (buffer_size_combo.get_active_text()); - - char buf[32]; - snprintf (buf, sizeof(buf), "%.1fmsec", (2 * period_size) / (rate/1000.0)); - - latency_label.set_text (buf); - latency_label.set_alignment (0, 0.5); } void diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 07cf0afa8f..928b084b73 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -64,7 +64,6 @@ class EngineControl : public Gtk::VBox { Gtk::SpinButton output_channels; Gtk::Adjustment ports_adjustment; Gtk::SpinButton ports_spinner; - Gtk::Label latency_label; /* JACK specific */ @@ -95,6 +94,8 @@ class EngineControl : public Gtk::VBox { Gtk::HBox options_hbox; Gtk::HBox device_hbox; Gtk::Notebook notebook; + + sigc::connection sr_connection; bool _used; @@ -103,8 +104,6 @@ class EngineControl : public Gtk::VBox { void driver_changed (); void backend_changed (); - void redisplay_latency (); - uint32_t get_rate() const; uint32_t get_buffer_size() const; uint32_t get_input_channels() const; @@ -117,6 +116,7 @@ class EngineControl : public Gtk::VBox { void audio_mode_changed (); void interface_changed (); void list_devices (); + void reshow_buffer_sizes (); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ -- cgit v1.2.3 From f44e0f33af005f2ad4b34b2d282dcb92fe091ead Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 00:50:41 -0400 Subject: a few more visual tweaks and simplifications for audio/midi setup --- gtk2_ardour/ardour3_fonts.rc.in | 5 +++ gtk2_ardour/ardour3_styles.rc.in | 5 +++ gtk2_ardour/ardour3_widget_list.rc | 2 + gtk2_ardour/engine_dialog.cc | 77 ++++++++++---------------------------- gtk2_ardour/engine_dialog.h | 10 ++--- gtk2_ardour/wscript | 2 + 6 files changed, 37 insertions(+), 64 deletions(-) diff --git a/gtk2_ardour/ardour3_fonts.rc.in b/gtk2_ardour/ardour3_fonts.rc.in index 7d017df4b3..8d09ff0f1d 100644 --- a/gtk2_ardour/ardour3_fonts.rc.in +++ b/gtk2_ardour/ardour3_fonts.rc.in @@ -50,6 +50,11 @@ style "large_bold_text" font_name = "bold @FONT_LARGE@" } +style "big_text" +{ + font_name = "@FONT_BIG@" +} + style "bigger_mono_text" { font_name = "@MONOSPACE@ @FONT_BIGGER@" diff --git a/gtk2_ardour/ardour3_styles.rc.in b/gtk2_ardour/ardour3_styles.rc.in index e3978d063a..8b5b5e4c99 100644 --- a/gtk2_ardour/ardour3_styles.rc.in +++ b/gtk2_ardour/ardour3_styles.rc.in @@ -1011,3 +1011,8 @@ style "meter_strip_sep" = "default" { bg[NORMAL] = { 0.0, 0.0, 0.0 } } + +style "settings_notebook" = "big_text" +{ + +} diff --git a/gtk2_ardour/ardour3_widget_list.rc b/gtk2_ardour/ardour3_widget_list.rc index 0e7075cef4..0994f0d5dc 100644 --- a/gtk2_ardour/ardour3_widget_list.rc +++ b/gtk2_ardour/ardour3_widget_list.rc @@ -389,3 +389,5 @@ widget "*transport option button" style:highest "small_text" widget "*transport active option button" style:highest "small_text" widget "*plugin bypass button" style:highest "small_text" widget "*punch button" style:highest "small_text" +widget "*SettingsNotebook" style:highest "settings_notebook" +widget "*SettingsNotebook*" style:highest "settings_notebook" diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index ab6b65c561..f0ac059a74 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -32,6 +32,7 @@ #include "pbd/xml++.h" #include +#include #include #include "ardour/audio_backend.h" @@ -64,12 +65,8 @@ EngineControl::EngineControl () , realtime_button (_("Realtime")) #ifdef __APPLE___ , basic_packer (6, 2) - , options_packer (4, 2) - , device_packer (4, 2) #else , basic_packer (9, 2) - , options_packer (14, 2) - , device_packer (6, 2) #endif { using namespace Notebook_Helpers; @@ -111,7 +108,7 @@ EngineControl::EngineControl () row = 0; - label = manage (left_aligned_label (_("Audio Driver:"))); + label = manage (left_aligned_label (_("Audio System:"))); basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); basic_packer.attach (backend_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); row++; @@ -121,7 +118,7 @@ EngineControl::EngineControl () basic_packer.attach (driver_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); row++; - label = manage (left_aligned_label (_("Audio Interface:"))); + label = manage (left_aligned_label (_("Device:"))); basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); basic_packer.attach (interface_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); row++; @@ -158,61 +155,20 @@ EngineControl::EngineControl () interface_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::interface_changed)); - /* options */ - - options_packer.set_spacings (6); - row = 0; - - options_packer.attach (realtime_button, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - - realtime_button.set_active (true); - - label = manage (left_aligned_label (_("Number of ports:"))); - options_packer.attach (ports_spinner, 1, 2, row, row + 1, FILL|EXPAND, AttachOptions(0)); - options_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - - label = manage (left_aligned_label (_("MIDI driver:"))); - options_packer.attach (midi_driver_combo, 1, 2, row, row + 1, FILL|EXPAND, AttachOptions(0)); - options_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; - -#if !defined(__APPLE__) && !defined(__FreeBSD__) - label = manage (left_aligned_label (_("Dither:"))); - options_packer.attach (dither_mode_combo, 1, 2, row, row + 1, FILL|EXPAND, AttachOptions(0)); - options_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - ++row; -#endif - - /* device settings */ - - device_packer.set_spacings (6); - row = 0; - -#if !defined(__APPLE__) && !defined(__FreeBSD__) - label = manage (left_aligned_label (_("Input device:"))); - device_packer.attach (*label, 0, 1, row, row+1, FILL|EXPAND, (AttachOptions) 0); - device_packer.attach (input_device_combo, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0); - ++row; - label = manage (left_aligned_label (_("Output device:"))); - device_packer.attach (*label, 0, 1, row, row+1, FILL|EXPAND, (AttachOptions) 0); - device_packer.attach (output_device_combo, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0); - ++row; -#endif - basic_hbox.pack_start (basic_packer, false, false); - options_hbox.pack_start (options_packer, false, false); - device_packer.set_border_width (12); - options_packer.set_border_width (12); basic_packer.set_border_width (12); + midi_packer.set_border_width (12); - notebook.pages().push_back (TabElem (basic_hbox, _("Device"))); - notebook.pages().push_back (TabElem (options_hbox, _("Options"))); - notebook.pages().push_back (TabElem (device_packer, _("Advanced"))); + notebook.pages().push_back (TabElem (basic_hbox, _("Audio System Settings"))); + notebook.pages().push_back (TabElem (midi_hbox, _("MIDI Settings"))); notebook.set_border_width (12); + notebook.set_tab_pos (POS_RIGHT); + notebook.show_all (); + + notebook.set_name ("SettingsNotebook"); + set_border_width (12); pack_start (notebook); @@ -243,10 +199,12 @@ EngineControl::backend_changed () if (backend->requires_driver_selection()) { vector drivers = backend->enumerate_drivers(); + driver_combo.set_sensitive (true); set_popdown_strings (driver_combo, drivers); driver_combo.set_active_text (drivers.front()); driver_changed (); } else { + driver_combo.set_sensitive (false); list_devices (); } } @@ -277,12 +235,15 @@ EngineControl::list_devices () } set_popdown_strings (interface_combo, available_devices); - interface_combo.set_active_text (available_devices.front()); set_popdown_strings (input_device_combo, available_devices); - input_device_combo.set_active_text (available_devices.front()); set_popdown_strings (output_device_combo, available_devices); - output_device_combo.set_active_text (available_devices.front()); + if (!available_devices.empty()) { + interface_combo.set_active_text (available_devices.front()); + input_device_combo.set_active_text (available_devices.front()); + output_device_combo.set_active_text (available_devices.front()); + } + interface_changed (); } diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 928b084b73..333ec27f33 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -26,7 +26,6 @@ #include #include -#include #include #include #include @@ -47,6 +46,8 @@ class EngineControl : public Gtk::VBox { void set_state (const XMLNode&); private: + Gtk::Notebook notebook; + /* core fields used by all backends */ Gtk::ComboBoxText backend_combo; @@ -88,12 +89,9 @@ class EngineControl : public Gtk::VBox { Gtk::ComboBoxText midi_driver_combo; Gtk::Table basic_packer; - Gtk::Table options_packer; - Gtk::Table device_packer; + Gtk::Table midi_packer; Gtk::HBox basic_hbox; - Gtk::HBox options_hbox; - Gtk::HBox device_hbox; - Gtk::Notebook notebook; + Gtk::HBox midi_hbox; sigc::connection sr_connection; diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index bb4e2035ec..f4e1119aeb 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -519,6 +519,7 @@ def build(bld): 'SMALLER' : '9', 'SMALL' : '10', 'NORMAL' : '11', + 'BIG' : '13', 'BIGGER' : '17', 'LARGE' : '18', 'LARGER' : '28', @@ -544,6 +545,7 @@ def build(bld): 'SMALLER' : '8', 'SMALL' : '9', 'NORMAL' : '10', + 'BIG' : '14', 'BIGGER' : '17', 'LARGE' : '18', 'LARGER' : '24', -- cgit v1.2.3 From c9f6b0dab5facc7206119eaea268d1f12ddd75c9 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 11:04:04 -0400 Subject: the JACK audio backend shared object depends on libasound (ALSA) on linux, so it requires explicit linkage --- libs/ardour/wscript | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libs/ardour/wscript b/libs/ardour/wscript index f13c4e5eef..c140c6eb3a 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -4,6 +4,7 @@ from waflib import Options import os import re import subprocess +import sys # default state file version for this build CURRENT_SESSION_FILE_VERSION = 3001 @@ -253,6 +254,10 @@ def configure(conf): atleast_version='0.1.0') autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0') + + if re.search ("linux", sys.platform) != None: + autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA') + if Options.options.lv2: autowaf.check_pkg(conf, 'lv2', uselib_store='LV2', atleast_version='1.0.0', mandatory=True) @@ -450,6 +455,15 @@ def build(bld): obj.name = 'jack_audiobackend' obj.target = 'jack_audiobackend' obj.uselib = [ 'JACK' ] + + # + # device discovery code in the jack backend needs ALSA + # on Linux. + # + + if re.search ("linux", sys.platform) != None: + obj.uselib += [ 'ALSA' ] + obj.use = [ 'ardour' ] obj.vnum = '1.0.0' obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') -- cgit v1.2.3 From da7451991178ad224acac55d177011e32204cac7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 11:23:15 -0400 Subject: fix display of latency --- gtk2_ardour/ardour_ui.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 3c2ed85276..ec3f0becea 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -1169,7 +1169,7 @@ ARDOUR_UI::update_sample_rate (framecnt_t) } else { snprintf (buf, sizeof (buf), _("Audio: %" PRId64 " kHz / %4.1f ms"), rate/1000, - (engine->usecs_per_cycle() * 1000.0f)); + (engine->usecs_per_cycle() / 1000.0f)); } } } -- cgit v1.2.3 From a34d7071753867b9aba3bca2f3436ed4a980c895 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 12:15:37 -0400 Subject: split up session code that uses parts of the JACK API (timebase + session event handling) and connect it directly to the jack audiobackend i've made the audiobackend call the session directly so that only one object (ARDOUR::Session) has a need for the JACK types and only one .cc file (session_jack.cc) needs jack.h. having ARDOUR::AudioEngine act as an intermediary would be cleaner conceptually but would end up causing two different ARDOUR objects to have jack types in their own API. --- gtk2_ardour/ardour_ui_dialogs.cc | 4 - libs/ardour/ardour/audioengine.h | 8 +- libs/ardour/ardour/session.h | 17 ++-- libs/ardour/audioengine.cc | 12 +-- libs/ardour/jack_audiobackend.cc | 36 +++----- libs/ardour/session_jack.cc | 185 +++++++++++++++++++++++++++++++++++++++ libs/ardour/session_state.cc | 66 +------------- libs/ardour/session_time.cc | 87 +----------------- libs/ardour/wscript | 1 + 9 files changed, 213 insertions(+), 203 deletions(-) create mode 100644 libs/ardour/session_jack.cc diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 24f6511b4c..81c0be223c 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -161,10 +161,6 @@ ARDOUR_UI::set_session (Session *s) _session->locations()->removed.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::handle_locations_change, this, _1), gui_context()); _session->config.ParameterChanged.connect (_session_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::session_parameter_changed, this, _1), gui_context ()); -#ifdef HAVE_JACK_SESSION - engine->JackSessionEvent.connect (*_session, MISSING_INVALIDATOR, boost::bind (&Session::jack_session_event, _session, _1), gui_context()); -#endif - /* Clocks are on by default after we are connected to a session, so show that here. */ diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 509d330f12..f05944797d 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -129,7 +129,8 @@ public: void set_session (Session *); void remove_session (); // not a replacement for SessionHandle::session_going_away() - + Session* session() const { return _session; } + class NoBackendAvailable : public std::exception { public: virtual const char *what() const throw() { return "could not connect to engine backend"; } @@ -148,12 +149,7 @@ public: PBD::Signal1 Freewheel; PBD::Signal0 Xrun; - -#ifdef HAVE_JACK_SESSION - PBD::Signal1 JackSessionEvent; -#endif - /* this signal is emitted if the sample rate changes */ PBD::Signal1 SampleRateChanged; diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index c291220874..31f0658931 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -381,9 +381,6 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi framecnt_t worst_track_latency () const { return _worst_track_latency; } framecnt_t worst_playback_latency () const { return _worst_output_latency + _worst_track_latency; } -#ifdef HAVE_JACK_SESSION - void jack_session_event (jack_session_event_t* event); -#endif int save_state (std::string snapshot_name, bool pending = false, bool switch_to_snapshot = false); int restore_state (std::string snapshot_name); int save_template (std::string template_name); @@ -863,6 +860,15 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi boost::shared_ptr ltc_input_io() { return _ltc_input; } boost::shared_ptr ltc_output_io() { return _ltc_output; } + /* Callbacks specifically related to JACK, and called directly + * from the JACK audio backend. + */ + +#ifdef HAVE_JACK_SESSION + void jack_session_event (jack_session_event_t* event); +#endif + void jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int); + protected: friend class AudioEngine; void set_block_size (pframes_t nframes); @@ -1436,9 +1442,8 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi */ std::list _current_trans_quarks; - // void timebase_callback (TransportState, pframes_t, jack_position_t*, int); - int jack_sync_callback (TransportState, framepos_t); - void reset_jack_connection (jack_client_t* jack); + int backend_sync_callback (TransportState, framepos_t); + void process_rtop (SessionEvent*); void update_latency (bool playback); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 45cc33cdc1..2b9a50f1ef 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -891,21 +891,11 @@ AudioEngine::thread_init_callback (void* arg) } } -/* XXXX -void -AudioEngine::timebase_callback (TransportState state, pframes_t nframes, jack_position_t pos, int new_position) -{ - if (_session && _session->synced_to_jack()) { - // _session->timebase_callback (state, nframes, pos, new_position); - } -} -*/ - int AudioEngine::sync_callback (TransportState state, framepos_t position) { if (_session) { - return _session->jack_sync_callback (state, position); + return _session->backend_sync_callback (state, position); } return 0; } diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index a3bbaecb2d..ece8c4788e 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -28,7 +28,9 @@ #include "jack/thread.h" #include "ardour/audioengine.h" +#include "ardour/session.h" #include "ardour/types.h" + #include "ardour/jack_audiobackend.h" #include "ardour/jack_connection.h" #include "ardour/jack_portengine.h" @@ -680,32 +682,14 @@ JACKAudioBackend::_jack_timebase_callback (jack_transport_state_t state, pframes } void -JACKAudioBackend::jack_timebase_callback (jack_transport_state_t state, pframes_t /*nframes*/, - jack_position_t* pos, int /*new_position*/) +JACKAudioBackend::jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, + jack_position_t* pos, int new_position) { - TransportState tstate; - framepos_t position; - - switch (state) { - case JackTransportStopped: - tstate = TransportStopped; - break; - case JackTransportRolling: - tstate = TransportRolling; - break; - case JackTransportLooping: - tstate = TransportLooping; - break; - case JackTransportStarting: - tstate = TransportStarting; - break; - } + ARDOUR::Session* session = engine.session(); - if (pos) { - position = pos->frame; + if (session) { + session->jack_timebase_callback (state, nframes, pos, new_position); } - - // engine.timebase_callback (tstate, nframes, position, new_position); } int @@ -754,8 +738,10 @@ void JACKAudioBackend::_session_callback (jack_session_event_t *event, void *arg) { JACKAudioBackend* ae = static_cast (arg); - if (ae->connected()) { - ae->engine.JackSessionEvent (event); /* EMIT SIGNAL */ + ARDOUR::Session* session = ae->engine.session(); + + if (session) { + session->jack_session_event (event); } } #endif diff --git a/libs/ardour/session_jack.cc b/libs/ardour/session_jack.cc new file mode 100644 index 0000000000..af8a93fec3 --- /dev/null +++ b/libs/ardour/session_jack.cc @@ -0,0 +1,185 @@ +/* + Copyright (C) 1999-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 "libardour-config.h" +#endif + +#include + +#include + +#include "jack/jack.h" +#include "jack/session.h" + +#include "ardour/audioengine.h" +#include "ardour/filename_extensions.h" +#include "ardour/session.h" +#include "ardour/session_directory.h" +#include "ardour/tempo.h" + +using namespace ARDOUR; +using std::string; + +#ifdef HAVE_JACK_SESSION +void +Session::jack_session_event (jack_session_event_t* event) +{ + char timebuf[128], *tmp; + time_t n; + struct tm local_time; + + time (&n); + localtime_r (&n, &local_time); + strftime (timebuf, sizeof(timebuf), "JS_%FT%T", &local_time); + + while ((tmp = strchr(timebuf, ':'))) { *tmp = '.'; } + + if (event->type == JackSessionSaveTemplate) + { + if (save_template( timebuf )) { + event->flags = JackSessionSaveError; + } else { + string cmd ("ardour3 -P -U "); + cmd += event->client_uuid; + cmd += " -T "; + cmd += timebuf; + + event->command_line = strdup (cmd.c_str()); + } + } + else + { + if (save_state (timebuf)) { + event->flags = JackSessionSaveError; + } else { + std::string xml_path (_session_dir->root_path()); + std::string legalized_filename = legalize_for_path (timebuf) + statefile_suffix; + xml_path = Glib::build_filename (xml_path, legalized_filename); + + string cmd ("ardour3 -P -U "); + cmd += event->client_uuid; + cmd += " \""; + cmd += xml_path; + cmd += '\"'; + + event->command_line = strdup (cmd.c_str()); + } + } + + /* this won't be called if the port engine in use is not JACK, so we do + not have to worry about the type of PortEngine::private_handle() + */ + + jack_client_t* jack_client = (jack_client_t*) AudioEngine::instance()->port_engine().private_handle(); + + if (jack_client) { + jack_session_reply (jack_client, event); + } + + if (event->type == JackSessionSaveAndQuit) { + Quit (); /* EMIT SIGNAL */ + } + + jack_session_event_free( event ); +} +#endif + +void +Session::jack_timebase_callback (jack_transport_state_t /*state*/, + pframes_t /*nframes*/, + jack_position_t* pos, + int /*new_position*/) +{ + Timecode::BBT_Time bbt; + + /* BBT info */ + + if (_tempo_map) { + + TempoMetric metric (_tempo_map->metric_at (_transport_frame)); + + try { + _tempo_map->bbt_time_rt (_transport_frame, bbt); + + pos->bar = bbt.bars; + pos->beat = bbt.beats; + pos->tick = bbt.ticks; + + // XXX still need to set bar_start_tick + + pos->beats_per_bar = metric.meter().divisions_per_bar(); + pos->beat_type = metric.meter().note_divisor(); + pos->ticks_per_beat = Timecode::BBT_Time::ticks_per_beat; + pos->beats_per_minute = metric.tempo().beats_per_minute(); + + pos->valid = jack_position_bits_t (pos->valid | JackPositionBBT); + + } catch (...) { + /* no message */ + } + } + +#ifdef HAVE_JACK_VIDEO_SUPPORT + //poke audio video ratio so Ardour can track Video Sync + pos->audio_frames_per_video_frame = frame_rate() / timecode_frames_per_second(); + pos->valid = jack_position_bits_t (pos->valid | JackAudioVideoRatio); +#endif + +#if 0 + /* Timecode info */ + + pos->timecode_offset = config.get_timecode_offset(); + t.timecode_frame_rate = timecode_frames_per_second(); + pos->valid = jack_position_bits_t (pos->valid | JackPositionTimecode; + + if (_transport_speed) { + + if (play_loop) { + + Location* location = _locations.auto_loop_location(); + + if (location) { + + t.transport_state = JackTransportLooping; + t.loop_start = location->start(); + t.loop_end = location->end(); + t.valid = jack_transport_bits_t (t.valid | JackTransportLoop); + + } else { + + t.loop_start = 0; + t.loop_end = 0; + t.transport_state = JackTransportRolling; + + } + + } else { + + t.loop_start = 0; + t.loop_end = 0; + t.transport_state = JackTransportRolling; + + } + + } +#endif +} + diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index c4522f76e7..50905ef434 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 1999-2002 Paul Davis + Copyright (C) 1999-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 @@ -689,70 +689,6 @@ Session::remove_state (string snapshot_name) } } -#ifdef HAVE_JACK_SESSION -void -Session::jack_session_event (jack_session_event_t * event) -{ - char timebuf[128], *tmp; - time_t n; - struct tm local_time; - - time (&n); - localtime_r (&n, &local_time); - strftime (timebuf, sizeof(timebuf), "JS_%FT%T", &local_time); - - while ((tmp = strchr(timebuf, ':'))) { *tmp = '.'; } - - if (event->type == JackSessionSaveTemplate) - { - if (save_template( timebuf )) { - event->flags = JackSessionSaveError; - } else { - string cmd ("ardour3 -P -U "); - cmd += event->client_uuid; - cmd += " -T "; - cmd += timebuf; - - event->command_line = strdup (cmd.c_str()); - } - } - else - { - if (save_state (timebuf)) { - event->flags = JackSessionSaveError; - } else { - std::string xml_path (_session_dir->root_path()); - std::string legalized_filename = legalize_for_path (timebuf) + statefile_suffix; - xml_path = Glib::build_filename (xml_path, legalized_filename); - - string cmd ("ardour3 -P -U "); - cmd += event->client_uuid; - cmd += " \""; - cmd += xml_path; - cmd += '\"'; - - event->command_line = strdup (cmd.c_str()); - } - } - - /* this won't be called if the port engine in use is not JACK, so we do - not have to worry about the type of PortEngine::private_handle() - */ - - jack_client_t* jack_client = (jack_client_t*) AudioEngine::instance()->port_engine().private_handle(); - - if (jack_client) { - jack_session_reply (jack_client, event); - } - - if (event->type == JackSessionSaveAndQuit) { - Quit (); /* EMIT SIGNAL */ - } - - jack_session_event_free( event ); -} -#endif - /** @param snapshot_name Name to save under, without .ardour / .pending prefix */ int Session::save_state (string snapshot_name, bool pending, bool switch_to_snapshot) diff --git a/libs/ardour/session_time.cc b/libs/ardour/session_time.cc index 088712f625..0f2186c09b 100644 --- a/libs/ardour/session_time.cc +++ b/libs/ardour/session_time.cc @@ -180,7 +180,7 @@ Session::timecode_time (Timecode::Time &t) } int -Session::jack_sync_callback (TransportState state, framepos_t pos) +Session::backend_sync_callback (TransportState state, framepos_t pos) { bool slave = synced_to_jack(); @@ -218,91 +218,6 @@ Session::jack_sync_callback (TransportState state, framepos_t pos) return true; } -/* XXX REQUIRES SOMEWAY TO EFFICIENTLY ACCESS jack_position_t WITHOUT BRIDGING - * THE ENTIRE DATA STRUCTURE - */ -#if 0 -void -Session::jack_timebase_callback (TransportState /*state*/, - pframes_t /*nframes*/, - framepos_t pos, - int /*new_position*/) -{ - Timecode::BBT_Time bbt; - - /* BBT info */ - - if (_tempo_map) { - - TempoMetric metric (_tempo_map->metric_at (_transport_frame)); - - try { - _tempo_map->bbt_time_rt (_transport_frame, bbt); - - pos->bar = bbt.bars; - pos->beat = bbt.beats; - pos->tick = bbt.ticks; - - // XXX still need to set bar_start_tick - - pos->beats_per_bar = metric.meter().divisions_per_bar(); - pos->beat_type = metric.meter().note_divisor(); - pos->ticks_per_beat = Timecode::BBT_Time::ticks_per_beat; - pos->beats_per_minute = metric.tempo().beats_per_minute(); - - pos->valid = jack_position_bits_t (pos->valid | JackPositionBBT); - - } catch (...) { - /* no message */ - } - } - -#ifdef HAVE_JACK_VIDEO_SUPPORT - //poke audio video ratio so Ardour can track Video Sync - pos->audio_frames_per_video_frame = frame_rate() / timecode_frames_per_second(); - pos->valid = jack_position_bits_t (pos->valid | JackAudioVideoRatio); -#endif - -#if 0 - /* Timecode info */ - - pos->timecode_offset = config.get_timecode_offset(); - t.timecode_frame_rate = timecode_frames_per_second(); - pos->valid = jack_position_bits_t (pos->valid | JackPositionTimecode; - - if (_transport_speed) { - - if (play_loop) { - - Location* location = _locations.auto_loop_location(); - - if (location) { - - t.transport_state = JackTransportLooping; - t.loop_start = location->start(); - t.loop_end = location->end(); - t.valid = jack_transport_bits_t (t.valid | JackTransportLoop); - - } else { - - t.loop_start = 0; - t.loop_end = 0; - t.transport_state = JackTransportRolling; - - } - - } else { - - t.loop_start = 0; - t.loop_end = 0; - t.transport_state = JackTransportRolling; - - } - - } -#endif -} -#endif /* jack data structure issues */ ARDOUR::framecnt_t Session::convert_to_frames (AnyTime const & position) diff --git a/libs/ardour/wscript b/libs/ardour/wscript index c140c6eb3a..57b68a0fde 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -180,6 +180,7 @@ libardour_sources = [ 'session_events.cc', 'session_export.cc', 'session_handle.cc', + 'session_jack.cc', 'session_ltc.cc', 'session_metadata.cc', 'session_midi.cc', -- cgit v1.2.3 From 5abeb799cf55194ce4b73ddab6d040a01c55f262 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 13:03:21 -0400 Subject: try new code from rui/qjackctl for names of ALSA PCM devices --- libs/ardour/jack_utils.cc | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libs/ardour/jack_utils.cc b/libs/ardour/jack_utils.cc index ea1aea2623..0a7f4d73bf 100644 --- a/libs/ardour/jack_utils.cc +++ b/libs/ardour/jack_utils.cc @@ -313,6 +313,18 @@ ARDOUR::get_jack_alsa_device_names (device_map_t& devices) if (snd_ctl_open (&handle, devname.c_str(), 0) >= 0 && snd_ctl_card_info (handle, info) >= 0) { + if (snd_ctl_card_info (handle, info) < 0) { + continue; + } + + std::cerr << "Ctl card name is " << snd_ctl_card_info_get_name (info) << std::endl; + std::cerr << "Ctl ID is " << snd_ctl_card_info_get_id (info) << std::endl; + + /* change devname to use ID, not number */ + + devname = "hw:"; + devname += snd_ctl_card_info_get_id (info); + while (snd_ctl_pcm_next_device (handle, &device) >= 0 && device >= 0) { snd_pcm_info_set_device (pcminfo, device); -- cgit v1.2.3 From fc040a72e9d5a95f38b5beb0bd70844ef1bd6ce1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 13:03:57 -0400 Subject: use original names for ARDOUR MIDI "persistent" ports (MMC, MTC, etc) --- libs/ardour/midiport_manager.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc index ec525fd9f8..a4d53d6530 100644 --- a/libs/ardour/midiport_manager.cc +++ b/libs/ardour/midiport_manager.cc @@ -73,11 +73,11 @@ MidiPortManager::create_ports () return; } - _midi_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("control in"), true); - _midi_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("control out"), true); + _midi_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MIDI control in"), true); + _midi_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MIDI control out"), true); - _mmc_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("mmc in"), true); - _mmc_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("mmc out"), true); + _mmc_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MMC in"), true); + _mmc_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MMC out"), true); /* XXX nasty type conversion needed because of the mixed inheritance * required to integrate MIDI::IPMidiPort and ARDOUR::AsyncMIDIPort. @@ -98,14 +98,14 @@ MidiPortManager::create_ports () boost::shared_ptr p; - p = AudioEngine::instance()->register_input_port (DataType::MIDI, _("timecode in")); + p = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MTC in")); _mtc_input_port = boost::dynamic_pointer_cast (p); - p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("timecode out")); + p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MTC out")); _mtc_output_port= boost::dynamic_pointer_cast (p); - p = AudioEngine::instance()->register_input_port (DataType::MIDI, _("clock in")); + p = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MIDI Clock in")); _midi_clock_input_port = boost::dynamic_pointer_cast (p); - p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("clock out")); + p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MIDI Clock out")); _midi_clock_output_port= boost::dynamic_pointer_cast (p); } -- cgit v1.2.3 From 521f8eb776291bd132952eac86f3b4cbfee07df4 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 13:26:40 -0400 Subject: more sensible ALSA device names now in use --- libs/ardour/jack_utils.cc | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/libs/ardour/jack_utils.cc b/libs/ardour/jack_utils.cc index 0a7f4d73bf..5e5b9b341e 100644 --- a/libs/ardour/jack_utils.cc +++ b/libs/ardour/jack_utils.cc @@ -317,8 +317,7 @@ ARDOUR::get_jack_alsa_device_names (device_map_t& devices) continue; } - std::cerr << "Ctl card name is " << snd_ctl_card_info_get_name (info) << std::endl; - std::cerr << "Ctl ID is " << snd_ctl_card_info_get_id (info) << std::endl; + string card_name = snd_ctl_card_info_get_name (info); /* change devname to use ID, not number */ @@ -326,15 +325,26 @@ ARDOUR::get_jack_alsa_device_names (device_map_t& devices) devname += snd_ctl_card_info_get_id (info); while (snd_ctl_pcm_next_device (handle, &device) >= 0 && device >= 0) { + + /* only detect duplex devices here. more + * complex arrangements are beyond our scope + */ snd_pcm_info_set_device (pcminfo, device); snd_pcm_info_set_subdevice (pcminfo, 0); - snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_PLAYBACK); - + snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_CAPTURE); + if (snd_ctl_pcm_info (handle, pcminfo) >= 0) { - devname += ','; - devname += PBD::to_string (device, std::dec); - devices.insert (std::make_pair (snd_pcm_info_get_name (pcminfo), devname)); + + snd_pcm_info_set_device (pcminfo, device); + snd_pcm_info_set_subdevice (pcminfo, 0); + snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_PLAYBACK); + + if (snd_ctl_pcm_info (handle, pcminfo) >= 0) { + devname += ','; + devname += PBD::to_string (device, std::dec); + devices.insert (std::make_pair (card_name, devname)); + } } } -- cgit v1.2.3 From 8960ebcdf9faeb2fe4aaa1a337e3ad92ab09ef60 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 13:27:05 -0400 Subject: remove another naming that refers to JACK --- libs/ardour/ardour/buffer_set.h | 2 +- libs/ardour/buffer_set.cc | 4 ++-- libs/ardour/bundle.cc | 4 ++-- libs/ardour/delivery.cc | 2 +- libs/ardour/io.cc | 7 ++++--- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/libs/ardour/ardour/buffer_set.h b/libs/ardour/ardour/buffer_set.h index 12e9dbc63b..26d47682af 100644 --- a/libs/ardour/ardour/buffer_set.h +++ b/libs/ardour/ardour/buffer_set.h @@ -70,7 +70,7 @@ public: void clear(); void attach_buffers (PortSet& ports); - void get_jack_port_addresses (PortSet &, framecnt_t); + void get_backend_port_addresses (PortSet &, framecnt_t); /* the capacity here is a size_t and has a different interpretation depending on the DataType of the buffers. for audio, its a frame count. for MIDI diff --git a/libs/ardour/buffer_set.cc b/libs/ardour/buffer_set.cc index 184e23d1af..01a1f63c5d 100644 --- a/libs/ardour/buffer_set.cc +++ b/libs/ardour/buffer_set.cc @@ -114,13 +114,13 @@ BufferSet::attach_buffers (PortSet& ports) _is_mirror = true; } -/** Write the JACK port addresses from a PortSet into our data structures. This +/** Write the backend port addresses from a PortSet into our data structures. This * call assumes that attach_buffers() has already been called for the same PortSet. * Does not allocate, so RT-safe BUT you can only call Port::get_buffer() from * the process() callback tree anyway, so this has to be called in RT context. */ void -BufferSet::get_jack_port_addresses (PortSet& ports, framecnt_t nframes) +BufferSet::get_backend_port_addresses (PortSet& ports, framecnt_t nframes) { assert (_count == ports.count ()); assert (_available == ports.count ()); diff --git a/libs/ardour/bundle.cc b/libs/ardour/bundle.cc index be4b04e36a..834a98d347 100644 --- a/libs/ardour/bundle.cc +++ b/libs/ardour/bundle.cc @@ -443,8 +443,8 @@ Bundle::connected_to (boost::shared_ptr other, AudioEngine & engine) return true; } -/** This must not be called in code executed as a response to a JACK event, - * as it uses jack_port_get_all_connections(). +/** This must not be called in code executed as a response to a backend event, + * as it uses the backend port_get_all_connections(). * @return true if any of this bundle's channels are connected to anything. */ bool diff --git a/libs/ardour/delivery.cc b/libs/ardour/delivery.cc index dfbe4c960a..79c44ce94a 100644 --- a/libs/ardour/delivery.cc +++ b/libs/ardour/delivery.cc @@ -245,7 +245,7 @@ Delivery::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pf processing pathway that wants to use this->output_buffers() for some reason. */ - output_buffers().get_jack_port_addresses (ports, nframes); + output_buffers().get_backend_port_addresses (ports, nframes); // this Delivery processor is not a derived type, and thus we assume // we really can modify the buffers passed in (it is almost certainly diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index c517defe1a..6f5b5a63da 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -1404,10 +1404,11 @@ IO::find_port_hole (const char* base) */ for (n = 1; n < 9999; ++n) { - char buf[jack_port_name_size()]; + size_t size = AudioEngine::instance()->port_name_size() + 1; + char buf[size]; PortSet::iterator i = _ports.begin(); - snprintf (buf, jack_port_name_size(), _("%s %u"), base, n); + snprintf (buf, size, _("%s %u"), base, n); for ( ; i != _ports.end(); ++i) { if (i->name() == buf) { @@ -1638,7 +1639,7 @@ IO::process_input (boost::shared_ptr proc, framepos_t start_frame, fr return; } - _buffers.get_jack_port_addresses (_ports, nframes); + _buffers.get_backend_port_addresses (_ports, nframes); if (proc) { proc->run (_buffers, start_frame, end_frame, nframes, true); } -- cgit v1.2.3 From 55e52bcbd5ab10b0851a3ebe835d00f49a2cb9d6 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 13:38:09 -0400 Subject: remove another naming that refers to JACK --- libs/ardour/buffer_set.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ardour/buffer_set.cc b/libs/ardour/buffer_set.cc index 01a1f63c5d..e67aee6be7 100644 --- a/libs/ardour/buffer_set.cc +++ b/libs/ardour/buffer_set.cc @@ -90,7 +90,7 @@ BufferSet::clear() /** Set up this BufferSet so that its data structures mirror a PortSet's buffers. * This is quite expensive and not RT-safe, so it should not be called in a process context; - * get_jack_port_addresses() will fill in a structure set up by this method. + * get_backend_port_addresses() will fill in a structure set up by this method. * * XXX: this *is* called in a process context; I'm not sure quite what `should not' means above. */ -- cgit v1.2.3 From d0381b902cb93018006cee9154d8cabab33256ef Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 13:39:33 -0400 Subject: remove more naming that refers to JACK --- libs/ardour/ltc_slave.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/ardour/ltc_slave.cc b/libs/ardour/ltc_slave.cc index 1085f44f1c..bdb4fbead9 100644 --- a/libs/ardour/ltc_slave.cc +++ b/libs/ardour/ltc_slave.cc @@ -150,9 +150,9 @@ LTC_Slave::reset() } void -LTC_Slave::parse_ltc(const jack_nframes_t nframes, const jack_default_audio_sample_t * const in, const framecnt_t posinfo) +LTC_Slave::parse_ltc(const pframes_t nframes, const Sample* const in, const framecnt_t posinfo) { - jack_nframes_t i; + pframes_t i; unsigned char sound[8192]; if (nframes > 8192) { /* TODO warn once or wrap, loop conversion below @@ -413,8 +413,8 @@ LTC_Slave::init_engine_dll (framepos_t pos, int32_t inc) } /* main entry point from session_process.cc - * called from jack_process callback context - * so it is OK to use jack_port_get_buffer() + * called from process callback context + * so it is OK to use get_buffer() */ bool LTC_Slave::speed_and_position (double& speed, framepos_t& pos) -- cgit v1.2.3 From ca76496ef377e826d356f9d29f6a57393c59298a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 13:56:23 -0400 Subject: more purging of JACK as an explicit name from libardour --- libs/ardour/ardour/diskstream.h | 4 ++-- libs/ardour/ardour/jack_portengine.h | 3 +++ libs/ardour/ardour/midi_diskstream.h | 2 +- libs/ardour/ardour/midi_port.h | 2 +- libs/ardour/ardour/public_diskstream.h | 4 ++-- libs/ardour/ardour/slave.h | 2 +- libs/ardour/ardour/track.h | 4 ++-- libs/ardour/ardour/types.h | 14 ++++++-------- libs/ardour/audio_track.cc | 2 +- libs/ardour/midi_diskstream.cc | 2 +- libs/ardour/mtc_slave.cc | 2 +- libs/ardour/port.cc | 2 +- libs/ardour/route.cc | 2 +- libs/ardour/session.cc | 2 +- libs/ardour/track.cc | 8 ++++---- 15 files changed, 28 insertions(+), 27 deletions(-) diff --git a/libs/ardour/ardour/diskstream.h b/libs/ardour/ardour/diskstream.h index 427b52b054..7a4bccbb46 100644 --- a/libs/ardour/ardour/diskstream.h +++ b/libs/ardour/ardour/diskstream.h @@ -133,8 +133,8 @@ class Diskstream : public SessionObject, public PublicDiskstream virtual XMLNode& get_state(void); virtual int set_state(const XMLNode&, int version); - virtual void request_jack_monitors_input (bool) {} - virtual void ensure_jack_monitors_input (bool) {} + virtual void request_input_monitoring (bool) {} + virtual void ensure_input_monitoring (bool) {} framecnt_t capture_offset() const { return _capture_offset; } virtual void set_capture_offset (); diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h index a267ebb32b..f8db0c6ec4 100644 --- a/libs/ardour/ardour/jack_portengine.h +++ b/libs/ardour/ardour/jack_portengine.h @@ -25,6 +25,9 @@ #include +#include +#include + #include #include "pbd/signals.h" diff --git a/libs/ardour/ardour/midi_diskstream.h b/libs/ardour/ardour/midi_diskstream.h index 34fa0ae79a..b1c126b339 100644 --- a/libs/ardour/ardour/midi_diskstream.h +++ b/libs/ardour/ardour/midi_diskstream.h @@ -81,7 +81,7 @@ class MidiDiskstream : public Diskstream XMLNode& get_state(void); int set_state(const XMLNode&, int version); - void ensure_jack_monitors_input (bool); + void ensure_input_monitoring (bool); boost::shared_ptr write_source () { return _write_source; } diff --git a/libs/ardour/ardour/midi_port.h b/libs/ardour/ardour/midi_port.h index 4a9a2ededc..14dc6cd021 100644 --- a/libs/ardour/ardour/midi_port.h +++ b/libs/ardour/ardour/midi_port.h @@ -67,7 +67,7 @@ class MidiPort : public Port { bool _resolve_required; bool _input_active; - void resolve_notes (void* jack_buffer, MidiBuffer::TimeType when); + void resolve_notes (void* buffer, MidiBuffer::TimeType when); }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/public_diskstream.h b/libs/ardour/ardour/public_diskstream.h index da481a6dee..125e1a21ce 100644 --- a/libs/ardour/ardour/public_diskstream.h +++ b/libs/ardour/ardour/public_diskstream.h @@ -33,8 +33,8 @@ public: virtual ~PublicDiskstream() {} virtual boost::shared_ptr playlist () = 0; - virtual void request_jack_monitors_input (bool) = 0; - virtual void ensure_jack_monitors_input (bool) = 0; + virtual void request_input_monitoring (bool) = 0; + virtual void ensure_input_monitoring (bool) = 0; virtual bool destructive () const = 0; virtual std::list > & last_capture_sources () = 0; virtual void set_capture_offset () = 0; diff --git a/libs/ardour/ardour/slave.h b/libs/ardour/ardour/slave.h index adf425ea43..1d8a7dd965 100644 --- a/libs/ardour/ardour/slave.h +++ b/libs/ardour/ardour/slave.h @@ -363,7 +363,7 @@ public: std::string approximate_current_delta() const; private: - void parse_ltc(const jack_nframes_t, const jack_default_audio_sample_t * const, const framecnt_t); + void parse_ltc(const pframes_t, const Sample* const, const framecnt_t); void process_ltc(framepos_t const); void init_engine_dll (framepos_t, int32_t); bool detect_discontinuity(LTCFrameExt *, int, bool); diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index 7159261b51..bdf420763b 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -115,8 +115,8 @@ class Track : public Route, public PublicDiskstream /* PublicDiskstream interface */ boost::shared_ptr playlist (); - void request_jack_monitors_input (bool); - void ensure_jack_monitors_input (bool); + void request_input_monitoring (bool); + void ensure_input_monitoring (bool); bool destructive () const; std::list > & last_capture_sources (); void set_capture_offset (); diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index 2fb4ec9691..17bffc20e4 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -28,8 +28,6 @@ #include #include -#include -#include #include "timecode/bbt_time.h" #include "timecode/time.h" @@ -53,12 +51,12 @@ namespace ARDOUR { class Route; class Region; - typedef jack_default_audio_sample_t Sample; - typedef float pan_t; - typedef float gain_t; - typedef uint32_t layer_t; - typedef uint64_t microseconds_t; - typedef jack_nframes_t pframes_t; + typedef float Sample; + typedef float pan_t; + typedef float gain_t; + typedef uint32_t layer_t; + typedef uint64_t microseconds_t; + typedef uint32_t pframes_t; /* Any position measured in audio frames. Assumed to be non-negative but not enforced. diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc index 0530dbfce9..a82c109cba 100644 --- a/libs/ardour/audio_track.cc +++ b/libs/ardour/audio_track.cc @@ -96,7 +96,7 @@ AudioTrack::set_diskstream (boost::shared_ptr ds) } _diskstream->set_record_enabled (false); - _diskstream->request_jack_monitors_input (false); + _diskstream->request_input_monitoring (false); DiskstreamChanged (); /* EMIT SIGNAL */ } diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc index e67ce9b831..088b2fcc40 100644 --- a/libs/ardour/midi_diskstream.cc +++ b/libs/ardour/midi_diskstream.cc @@ -1259,7 +1259,7 @@ MidiDiskstream::allocate_temporary_buffers () } void -MidiDiskstream::ensure_jack_monitors_input (bool yn) +MidiDiskstream::ensure_input_monitoring (bool yn) { boost::shared_ptr sp = _source_port.lock (); diff --git a/libs/ardour/mtc_slave.cc b/libs/ardour/mtc_slave.cc index b42b4989d2..80d89d6215 100644 --- a/libs/ardour/mtc_slave.cc +++ b/libs/ardour/mtc_slave.cc @@ -600,7 +600,7 @@ MTC_Slave::init_engine_dll (framepos_t pos, framepos_t inc) } /* main entry point from session_process.cc - * in jack_process callback context */ +xo * in process callback context */ bool MTC_Slave::speed_and_position (double& speed, framepos_t& pos) { diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index d37761b6f2..3aaa371f16 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -337,7 +337,7 @@ Port::get_connected_latency_range (LatencyRange& range, bool playback) const if (!connections.empty()) { - range.min = ~((jack_nframes_t) 0); + range.min = ~((pframes_t) 0); range.max = 0; DEBUG_TRACE (DEBUG::Latency, string_compose ("%1: %2 connections to check for latency range\n", name(), connections.size())); diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 8e0ac8604e..d0b2260c3d 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -3820,7 +3820,7 @@ Route::update_port_latencies (PortSet& from, PortSet& to, bool playback, framecn all_connections.min = 0; all_connections.max = 0; } else { - all_connections.min = ~((jack_nframes_t) 0); + all_connections.min = ~((pframes_t) 0); all_connections.max = 0; /* iterate over all "from" ports and determine the latency range for all of their diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index cc4a99b11f..dc6456b73f 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -942,7 +942,7 @@ Session::set_track_monitor_input_status (bool yn) boost::shared_ptr tr = boost::dynamic_pointer_cast (*i); if (tr && tr->record_enabled ()) { //cerr << "switching to input = " << !auto_input << __FILE__ << __LINE__ << endl << endl; - tr->request_jack_monitors_input (yn); + tr->request_input_monitoring (yn); } } } diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index f02863393e..57239cb841 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -550,15 +550,15 @@ Track::playlist () } void -Track::request_jack_monitors_input (bool m) +Track::request_input_monitoring (bool m) { - _diskstream->request_jack_monitors_input (m); + _diskstream->request_input_monitoring (m); } void -Track::ensure_jack_monitors_input (bool m) +Track::ensure_input_monitoring (bool m) { - _diskstream->ensure_jack_monitors_input (m); + _diskstream->ensure_input_monitoring (m); } bool -- cgit v1.2.3 From 8685d8eb47684da10a99f6a66547aa416ca0d7b8 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 15:40:46 -0400 Subject: remove use of jack_get_time() from ARDOUR::get_microseconds(), use clock_gettime() instead since this function is never used in reference to a backend clock --- libs/ardour/ardour/ardour.h | 4 +--- libs/ardour/globals.cc | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/libs/ardour/ardour/ardour.h b/libs/ardour/ardour/ardour.h index 5f64c4b6a3..73413c4cc2 100644 --- a/libs/ardour/ardour/ardour.h +++ b/libs/ardour/ardour/ardour.h @@ -67,9 +67,7 @@ namespace ARDOUR { bool translations_are_enabled (); bool set_translations_enabled (bool); - static inline microseconds_t get_microseconds () { - return (microseconds_t) jack_get_time(); - } + microseconds_t get_microseconds (); void setup_fpu (); std::vector get_available_sync_options(); diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index fbce336283..89edc66e84 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -29,6 +29,7 @@ #include #include #include +#include #ifdef WINDOWS_VST_SUPPORT #include @@ -535,3 +536,18 @@ ARDOUR::get_available_sync_options () return ret; } + +/** Return a monotonic value for the number of microseconds that have elapsed + * since an arbitrary zero origin. + */ + +microseconds_t +ARDOUR::get_microseconds () +{ + struct timespec ts; + if (clock_gettime (CLOCK_MONOTONIC, &ts) != 0) { + /* EEEK! */ + return 0; + } + return (microseconds_t) ts.tv_sec * 1000000 + (ts.tv_nsec/1000); +} -- cgit v1.2.3 From 4dc1bbff359308ad884c9429d155f772ebb89bc4 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 16:01:14 -0400 Subject: revert font sizing on audio/midi setup dialog --- gtk2_ardour/ardour3_widget_list.rc | 2 -- 1 file changed, 2 deletions(-) diff --git a/gtk2_ardour/ardour3_widget_list.rc b/gtk2_ardour/ardour3_widget_list.rc index 0994f0d5dc..0e7075cef4 100644 --- a/gtk2_ardour/ardour3_widget_list.rc +++ b/gtk2_ardour/ardour3_widget_list.rc @@ -389,5 +389,3 @@ widget "*transport option button" style:highest "small_text" widget "*transport active option button" style:highest "small_text" widget "*plugin bypass button" style:highest "small_text" widget "*punch button" style:highest "small_text" -widget "*SettingsNotebook" style:highest "settings_notebook" -widget "*SettingsNotebook*" style:highest "settings_notebook" -- cgit v1.2.3 From cec2a3da36e49e22805e039ad99013f5480cebce Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 16:57:23 -0400 Subject: allow ardour to exit after JACK disconnects us --- libs/ardour/audioengine.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 2b9a50f1ef..47bd257bd8 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -933,6 +933,7 @@ void AudioEngine::halted_callback (const char* why) { stop_metering_thread (); + _running = false; Port::PortDrop (); /* EMIT SIGNAL */ Halted (why); /* EMIT SIGNAL */ -- cgit v1.2.3 From 4b9289e17e64431041bc50ff00f0cd64e56e752c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 18:06:08 -0400 Subject: don't waste time with sending MTC or MMC after stop if we're disconnected from the engine. Also, add note about threading oddities with send_mmc_locate() being called from ::non_realtime_stop() which gets called from a *realtime* context. --- libs/ardour/session_transport.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 44a885cd1c..1e492741b8 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -609,12 +609,23 @@ Session::non_realtime_stop (bool abort, int on_entry, bool& finished) have_looped = false; - if (!_engine.freewheeling()) { + /* don't bother with this stuff if we're disconnected from the engine, + because there will be no process callbacks to deliver stuff from + */ + + if (_engine.connected() && !_engine.freewheeling()) { // need to queue this in the next RT cycle _send_timecode_update = true; if (!dynamic_cast(_slave)) { AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdStop)); + + /* This (::non_realtime_stop()) gets called by main + process thread, which will lead to confusion + when calling AsyncMIDIPort::write(). + + Something must be done. XXX + */ send_mmc_locate (_transport_frame); } } -- cgit v1.2.3 From 862315ec2ad570396376f3057438af7dfa80fa9a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 18:11:04 -0400 Subject: actually write JACK command line out to ~/.jackdrc so that settings take effect --- libs/ardour/jack_audiobackend.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index ece8c4788e..4355a57162 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -447,7 +447,7 @@ JACKAudioBackend::setup_jack_startup_command () std::cerr << "JACK command line will be: " << cmdline << std::endl; - // write_jack_config_file (get_jack_server_user_config_file_path(), cmdline); + write_jack_config_file (get_jack_server_user_config_file_path(), cmdline); } /* ---- BASIC STATE CONTROL API: start/stop/pause/freewheel --- */ -- cgit v1.2.3 From 9680c345c420879c4abcec2d1c38650ba9d6cede Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 9 Aug 2013 18:35:07 -0400 Subject: don't write a bogus jack cmdline ... leave the existing ~/.jackdrc file alone if an error creating the cmdline occurs --- libs/ardour/jack_audiobackend.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index 4355a57162..a95242ba4b 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -443,6 +443,7 @@ JACKAudioBackend::setup_jack_startup_command () if (!get_jack_command_line_string (options, cmdline)) { /* error, somehow */ + return; } std::cerr << "JACK command line will be: " << cmdline << std::endl; -- cgit v1.2.3 From 50bbf3f656b6dbf2e338761c05a59236f1792142 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 10 Aug 2013 09:25:18 -0400 Subject: fix output latency option in jack command line --- libs/ardour/jack_utils.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ardour/jack_utils.cc b/libs/ardour/jack_utils.cc index 5e5b9b341e..b4446501bc 100644 --- a/libs/ardour/jack_utils.cc +++ b/libs/ardour/jack_utils.cc @@ -831,7 +831,7 @@ ARDOUR::get_jack_command_line_string (const JackCommandLineOptions& options, str args.push_back (to_string (options.input_latency, std::dec)); } if (options.output_latency) { - args.push_back ("-0"); + args.push_back ("-O"); args.push_back (to_string (options.output_latency, std::dec)); } } -- cgit v1.2.3 From a5a3f713d596fd3d0157017263d6207b5427d133 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 12 Aug 2013 05:40:11 -0400 Subject: assorted extra debug output for MTC --- libs/ardour/midi_port.cc | 4 +++- libs/ardour/mtc_slave.cc | 8 +++++++- libs/midi++2/mtc.cc | 4 ++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libs/ardour/midi_port.cc b/libs/ardour/midi_port.cc index 5589c6e501..1816ddcb6f 100644 --- a/libs/ardour/midi_port.cc +++ b/libs/ardour/midi_port.cc @@ -71,7 +71,9 @@ MidiPort::get_midi_buffer (pframes_t nframes) /* suck all relevant MIDI events from the MIDI port buffer into our MidiBuffer */ - + + cerr << "grabbing " << event_count << " events\n"; + for (pframes_t i = 0; i < event_count; ++i) { pframes_t timestamp; diff --git a/libs/ardour/mtc_slave.cc b/libs/ardour/mtc_slave.cc index 80d89d6215..7f68e54f4b 100644 --- a/libs/ardour/mtc_slave.cc +++ b/libs/ardour/mtc_slave.cc @@ -106,6 +106,8 @@ MTC_Slave::process (pframes_t nframes) /* dump incoming MIDI to parser */ + cerr << "\n\n\n<<<< MTC slave, process " << mb.size() << endl; + for (MidiBuffer::iterator b = mb.begin(); b != mb.end(); ++b) { uint8_t* buf = (*b).buffer(); @@ -113,11 +115,15 @@ MTC_Slave::process (pframes_t nframes) uint32_t limit = (*b).size(); + cerr << "msg of " << limit << " bytes\n"; + for (size_t n = 0; n < limit; ++n) { parser.scanner (buf[n]); } } + cerr << ">>>> MTC slave, done processing\n\n\n"; + return 0; } @@ -331,7 +337,7 @@ MTC_Slave::update_mtc_time (const byte *msg, bool was_full, framepos_t now) a locate command via MMC. */ - //DEBUG_TRACE (DEBUG::MTC, string_compose ("MTC::update_mtc_time - TID:%1\n", ::pthread_self())); + DEBUG_TRACE (DEBUG::MTC, string_compose ("MTC::update_mtc_time - TID:%1\n", ::pthread_self())); TimecodeFormat tc_format; bool reset_tc = true; diff --git a/libs/midi++2/mtc.cc b/libs/midi++2/mtc.cc index affe65ec68..57c78cbfb0 100644 --- a/libs/midi++2/mtc.cc +++ b/libs/midi++2/mtc.cc @@ -33,7 +33,7 @@ using namespace std; using namespace sigc; using namespace MIDI; -#undef DEBUG_MTC +#define DEBUG_MTC bool Parser::possible_mtc (byte *sysex_buf, size_t msglen) @@ -240,7 +240,7 @@ Parser::process_mtc_quarter_frame (byte *msg) /* time code is looking good */ #ifdef DEBUG_MTC - // cerr << "for quarter frame " << which_quarter_frame << " byte = " << hex << (int) msg[1] << dec << endl; + cerr << "for quarter frame " << which_quarter_frame << " byte = " << hex << (int) msg[1] << dec << endl; #endif switch (which_quarter_frame) { -- cgit v1.2.3 From a5a75d5e0d4fb9f2c7db7cf3747da2314c2f9586 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 13 Aug 2013 12:53:28 -0400 Subject: fixes to get MTC (and probably MIDI clock) slaving working again incoming MIDI data has to be parsed EVERY process cycle, not just when Slave::speed_and_position() is called. The private MIDI::Parser owned by the MTC and MClck slaves was irrelevant, since the port has its own. See comments in midi_port.h on the strangled inheritance heirarchy. --- libs/ardour/ardour/midi_port.h | 23 +++++++++++-- libs/ardour/ardour/slave.h | 14 -------- libs/ardour/midi_clock_slave.cc | 39 ++++++---------------- libs/ardour/midi_port.cc | 29 +++++++++++++++-- libs/ardour/midiport_manager.cc | 9 ++++++ libs/ardour/mtc_slave.cc | 71 +++++++++++++++-------------------------- libs/ardour/session_process.cc | 1 - libs/midi++2/mtc.cc | 2 +- 8 files changed, 92 insertions(+), 96 deletions(-) diff --git a/libs/ardour/ardour/midi_port.h b/libs/ardour/ardour/midi_port.h index 14dc6cd021..00617d90ec 100644 --- a/libs/ardour/ardour/midi_port.h +++ b/libs/ardour/ardour/midi_port.h @@ -21,6 +21,8 @@ #ifndef __ardour_midi_port_h__ #define __ardour_midi_port_h__ +#include "midi++/parser.h" + #include "ardour/port.h" #include "ardour/midi_buffer.h" #include "ardour/midi_state_tracker.h" @@ -56,16 +58,33 @@ class MidiPort : public Port { MidiBuffer& get_midi_buffer (pframes_t nframes); + void set_always_parse (bool yn); + MIDI::Parser& self_parser() { return _self_parser; } + protected: - friend class PortManager; + friend class PortManager; - MidiPort (const std::string& name, PortFlags); + MidiPort (const std::string& name, PortFlags); private: MidiBuffer* _buffer; bool _has_been_mixed_down; bool _resolve_required; bool _input_active; + bool _always_parse; + + /* Naming this is tricky. AsyncMIDIPort inherits (for now, aug 2013) from + * both MIDI::Port, which has _parser, and this (ARDOUR::MidiPort). We + * need parsing support in this object, independently of what the + * MIDI::Port/AsyncMIDIPort stuff does. Rather than risk errors coming + * from not explicitly naming which _parser we want, we will call this + * _self_parser for now. + * + * Ultimately, MIDI::Port should probably go away or be fully integrated + * into this object, somehow. + */ + + MIDI::Parser _self_parser; void resolve_notes (void* buffer, MidiBuffer::TimeType when); }; diff --git a/libs/ardour/ardour/slave.h b/libs/ardour/ardour/slave.h index 1d8a7dd965..c60acb1df7 100644 --- a/libs/ardour/ardour/slave.h +++ b/libs/ardour/ardour/slave.h @@ -64,15 +64,6 @@ class Slave { Slave() { } virtual ~Slave() {} - /** The slave should read any incoming information in this method - * and use it adjust its current idea of reality. If no such - * processing is required, it does need to be implemented. - * - * @param nframes specifies the number of frames-worth of data that - * can be read from any ports used by the slave. - */ - virtual int process (pframes_t) { return 0; } - /** * This is the most important function to implement: * Each process cycle, Session::follow_slave will call this method. @@ -263,7 +254,6 @@ class MTC_Slave : public TimecodeSlave { ~MTC_Slave (); void rebind (MidiPort&); - int process (pframes_t); bool speed_and_position (double&, framepos_t&); bool locked() const; @@ -282,7 +272,6 @@ class MTC_Slave : public TimecodeSlave { private: Session& session; MidiPort* port; - MIDI::Parser parser; PBD::ScopedConnectionList port_connections; PBD::ScopedConnection config_connection; bool can_notify_on_unknown_rate; @@ -420,7 +409,6 @@ class MIDIClock_Slave : public Slave { ~MIDIClock_Slave (); void rebind (MidiPort&); - int process (pframes_t); bool speed_and_position (double&, framepos_t&); bool locked() const; @@ -436,8 +424,6 @@ class MIDIClock_Slave : public Slave { protected: ISlaveSessionProxy* session; - MidiPort* port; - MIDI::Parser parser; PBD::ScopedConnectionList port_connections; /// pulses per quarter note for one MIDI clock frame (default 24) diff --git a/libs/ardour/midi_clock_slave.cc b/libs/ardour/midi_clock_slave.cc index 752644e9f4..7eaeeb9e07 100644 --- a/libs/ardour/midi_clock_slave.cc +++ b/libs/ardour/midi_clock_slave.cc @@ -50,13 +50,6 @@ MIDIClock_Slave::MIDIClock_Slave (Session& s, MidiPort& p, int ppqn) session = (ISlaveSessionProxy *) new SlaveSessionProxy(s); rebind (p); reset (); - - parser.timing.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::update_midi_clock, this, _1, _2)); - parser.start.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::start, this, _1, _2)); - parser.contineu.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::contineu, this, _1, _2)); - parser.stop.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::stop, this, _1, _2)); - parser.position.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::position, this, _1, _2, 3)); - } MIDIClock_Slave::MIDIClock_Slave (ISlaveSessionProxy* session_proxy, int ppqn) @@ -72,33 +65,19 @@ MIDIClock_Slave::~MIDIClock_Slave() delete session; } -int -MIDIClock_Slave::process (pframes_t nframes) +void +MIDIClock_Slave::rebind (MidiPort& port) { - MidiBuffer& mb (port->get_midi_buffer (nframes)); + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("MIDIClock_Slave: connecting to port %1\n", port.name())); - /* dump incoming MIDI to parser */ + port_connections.drop_connections (); - for (MidiBuffer::iterator b = mb.begin(); b != mb.end(); ++b) { - uint8_t* buf = (*b).buffer(); + port.self_parser().timing.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::update_midi_clock, this, _1, _2)); + port.self_parser().start.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::start, this, _1, _2)); + port.self_parser().contineu.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::contineu, this, _1, _2)); + port.self_parser().stop.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::stop, this, _1, _2)); + port.self_parser().position.connect_same_thread (port_connections, boost::bind (&MIDIClock_Slave::position, this, _1, _2, 3)); - parser.set_timestamp ((*b).time()); - - uint32_t limit = (*b).size(); - - for (size_t n = 0; n < limit; ++n) { - parser.scanner (buf[n]); - } - } - - return 0; -} - -void -MIDIClock_Slave::rebind (MidiPort& p) -{ - port = &p; - DEBUG_TRACE (DEBUG::MidiClock, string_compose ("MIDIClock_Slave: connecting to port %1\n", port->name())); } void diff --git a/libs/ardour/midi_port.cc b/libs/ardour/midi_port.cc index 1816ddcb6f..eb6759f308 100644 --- a/libs/ardour/midi_port.cc +++ b/libs/ardour/midi_port.cc @@ -33,6 +33,7 @@ MidiPort::MidiPort (const std::string& name, PortFlags flags) , _has_been_mixed_down (false) , _resolve_required (false) , _input_active (true) + , _always_parse (false) { _buffer = new MidiBuffer (AudioEngine::instance()->raw_buffer_size (DataType::MIDI)); } @@ -45,6 +46,8 @@ MidiPort::~MidiPort() void MidiPort::cycle_start (pframes_t nframes) { + framepos_t now = AudioEngine::instance()->sample_time_at_cycle_start(); + Port::cycle_start (nframes); _buffer->clear (); @@ -52,6 +55,24 @@ MidiPort::cycle_start (pframes_t nframes) if (sends_output ()) { port_engine.midi_clear (port_engine.get_buffer (_port_handle, nframes)); } + + if (_always_parse) { + MidiBuffer& mb (get_midi_buffer (nframes)); + + /* dump incoming MIDI to parser */ + + for (MidiBuffer::iterator b = mb.begin(); b != mb.end(); ++b) { + uint8_t* buf = (*b).buffer(); + + _self_parser.set_timestamp (now + (*b).time()); + + uint32_t limit = (*b).size(); + + for (size_t n = 0; n < limit; ++n) { + _self_parser.scanner (buf[n]); + } + } + } } MidiBuffer & @@ -72,8 +93,6 @@ MidiPort::get_midi_buffer (pframes_t nframes) into our MidiBuffer */ - cerr << "grabbing " << event_count << " events\n"; - for (pframes_t i = 0; i < event_count; ++i) { pframes_t timestamp; @@ -217,3 +236,9 @@ MidiPort::set_input_active (bool yn) { _input_active = yn; } + +void +MidiPort::set_always_parse (bool yn) +{ + _always_parse = yn; +} diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc index a4d53d6530..5d4e8e37f6 100644 --- a/libs/ardour/midiport_manager.cc +++ b/libs/ardour/midiport_manager.cc @@ -107,6 +107,15 @@ MidiPortManager::create_ports () _midi_clock_input_port = boost::dynamic_pointer_cast (p); p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MIDI Clock out")); _midi_clock_output_port= boost::dynamic_pointer_cast (p); + + /* These ports all need their incoming data handled in + * Port::cycle_start() and so ... + */ + + _mtc_input_port->set_always_parse (true); + _mtc_output_port->set_always_parse (true); + _midi_clock_input_port->set_always_parse (true); + _midi_clock_output_port->set_always_parse (true); } void diff --git a/libs/ardour/mtc_slave.cc b/libs/ardour/mtc_slave.cc index 7f68e54f4b..e9071af619 100644 --- a/libs/ardour/mtc_slave.cc +++ b/libs/ardour/mtc_slave.cc @@ -73,10 +73,9 @@ MTC_Slave::MTC_Slave (Session& s, MidiPort& p) parse_timecode_offset(); reset (true); - parser.mtc_time.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_time, this, _1, _2, _3)); - parser.mtc_qtr.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_qtr, this, _1, _2, _3)); - parser.mtc_status.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_status, this, _1)); - + port->self_parser().mtc_time.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_time, this, _1, _2, _3)); + port->self_parser().mtc_qtr.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_qtr, this, _1, _2, _3)); + port->self_parser().mtc_status.connect_same_thread (port_connections, boost::bind (&MTC_Slave::update_mtc_status, this, _1)); } MTC_Slave::~MTC_Slave() @@ -99,34 +98,6 @@ MTC_Slave::~MTC_Slave() } } -int -MTC_Slave::process (pframes_t nframes) -{ - MidiBuffer& mb (port->get_midi_buffer (nframes)); - - /* dump incoming MIDI to parser */ - - cerr << "\n\n\n<<<< MTC slave, process " << mb.size() << endl; - - for (MidiBuffer::iterator b = mb.begin(); b != mb.end(); ++b) { - uint8_t* buf = (*b).buffer(); - - parser.set_timestamp ((*b).time()); - - uint32_t limit = (*b).size(); - - cerr << "msg of " << limit << " bytes\n"; - - for (size_t n = 0; n < limit; ++n) { - parser.scanner (buf[n]); - } - } - - cerr << ">>>> MTC slave, done processing\n\n\n"; - - return 0; -} - void MTC_Slave::rebind (MidiPort& p) { @@ -185,7 +156,8 @@ MTC_Slave::outside_window (framepos_t pos) const bool MTC_Slave::locked () const { - return parser.mtc_locked() && last_inbound_frame !=0 && engine_dll_initstate !=0; + DEBUG_TRACE (DEBUG::MTC, string_compose ("locked ? %1 last %2 initstate %3\n", port->self_parser().mtc_locked(), last_inbound_frame, engine_dll_initstate)); + return port->self_parser().mtc_locked() && last_inbound_frame !=0 && engine_dll_initstate !=0; } bool @@ -286,7 +258,6 @@ MTC_Slave::init_mtc_dll(framepos_t tme, double qtr) DEBUG_TRACE (DEBUG::MTC, string_compose ("[re-]init MTC DLL %1 %2 %3\n", t0, t1, e2)); } - /* called from MIDI parser */ void MTC_Slave::update_mtc_qtr (Parser& /*p*/, int which_qtr, framepos_t now) @@ -453,7 +424,7 @@ MTC_Slave::update_mtc_time (const byte *msg, bool was_full, framepos_t now) now, timecode, mtc_frame, was_full, speedup_due_to_tc_mismatch)); if (was_full || outside_window (mtc_frame)) { - DEBUG_TRACE (DEBUG::MTC, string_compose ("update_mtc_time: full TC or outside window. - TID:%1\n", ::pthread_self())); + DEBUG_TRACE (DEBUG::MTC, string_compose ("update_mtc_time: full TC %1 or outside window %2\n", was_full, outside_window (mtc_frame))); session.request_locate (mtc_frame, false); session.request_transport_speed (0); update_mtc_status (MIDI::MTC_Stopped); @@ -477,7 +448,7 @@ MTC_Slave::update_mtc_time (const byte *msg, bool was_full, framepos_t now) DEBUG_TRACE (DEBUG::MTC, string_compose ("new mtc_frame: %1 | MTC-FpT: %2 A3-FpT:%3\n", mtc_frame, (4.0*qtr), session.frames_per_timecode_frame())); - switch (parser.mtc_running()) { + switch (port->self_parser().mtc_running()) { case MTC_Backward: mtc_frame -= mtc_off; qtr *= -1.0; @@ -557,9 +528,10 @@ MTC_Slave::reset_window (framepos_t root) of acceptable MTC frames wide open. otherwise, shrink it down to just 2 video frames ahead of the window root (taking direction into account). */ + framecnt_t const d = (quarter_frame_duration * 4 * frame_tolerance); - switch (parser.mtc_running()) { + switch (port->self_parser().mtc_running()) { case MTC_Forward: window_begin = root; transport_direction = 1; @@ -582,7 +554,7 @@ MTC_Slave::reset_window (framepos_t root) break; } - DEBUG_TRACE (DEBUG::MTC, string_compose ("legal MTC window now %1 .. %2\n", window_begin, window_end)); + DEBUG_TRACE (DEBUG::MTC, string_compose ("reset MTC window @ %3, now %1 .. %2\n", window_begin, window_end, root)); } void @@ -620,9 +592,19 @@ MTC_Slave::speed_and_position (double& speed, framepos_t& pos) read_current (&last); + DEBUG_TRACE (DEBUG::MTC, string_compose ("speed&pos: timestamp %1 speed %2 initstate %3 dir %4 tpos %5 now %6 last-in %7\n", + last.timestamp, + last.speed, + engine_dll_initstate, + transport_direction, + sess_pos, + now, + last_inbound_frame)); + /* re-init engine DLL here when state changed (direction, first_mtc_timestamp) */ - if (last.timestamp == 0) { engine_dll_initstate = 0; } - else if (engine_dll_initstate != transport_direction && last.speed != 0) { + if (last.timestamp == 0) { + engine_dll_initstate = 0; + } else if (engine_dll_initstate != transport_direction && last.speed != 0) { engine_dll_initstate = transport_direction; init_engine_dll(last.position, session.engine().samples_per_cycle()); engine_dll_reinitialized = true; @@ -656,9 +638,7 @@ MTC_Slave::speed_and_position (double& speed, framepos_t& pos) /* interpolate position according to speed and time since last quarter-frame*/ if (speed_flt == 0.0f) { elapsed = 0; - } - else - { + } else { /* scale elapsed time by the current MTC speed */ elapsed = (framecnt_t) rint (speed_flt * (now - last.timestamp)); if (give_slave_full_control_over_transport_speed() && !engine_dll_reinitialized) { @@ -688,14 +668,13 @@ MTC_Slave::speed_and_position (double& speed, framepos_t& pos) */ if (!session.actively_recording() && speed != 0 - && ( (pos < 0) || (labs(pos - sess_pos) > 3 * session.frame_rate()) ) - ) { + && ((pos < 0) || (labs(pos - sess_pos) > 3 * session.frame_rate()))) { engine_dll_initstate = 0; queue_reset (false); } /* provide a .1% deadzone to lock the speed */ - if (fabs(speed - 1.0) <= 0.001) + if (fabs (speed - 1.0) <= 0.001) speed = 1.0; DEBUG_TRACE (DEBUG::MTC, string_compose ("MTCsync spd: %1 pos: %2 | last-pos: %3 elapsed: %4 delta: %5\n", diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index 6a24198bec..3c46a2e0a6 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -491,7 +491,6 @@ Session::follow_slave (pframes_t nframes) goto noroll; } - _slave->process (nframes); _slave->speed_and_position (slave_speed, slave_transport_frame); DEBUG_TRACE (DEBUG::Slave, string_compose ("Slave position %1 speed %2\n", slave_transport_frame, slave_speed)); diff --git a/libs/midi++2/mtc.cc b/libs/midi++2/mtc.cc index 57c78cbfb0..0c2d8a41b3 100644 --- a/libs/midi++2/mtc.cc +++ b/libs/midi++2/mtc.cc @@ -33,7 +33,7 @@ using namespace std; using namespace sigc; using namespace MIDI; -#define DEBUG_MTC +#undef DEBUG_MTC bool Parser::possible_mtc (byte *sysex_buf, size_t msglen) -- cgit v1.2.3 From e87424f514d9c8bfbd9851ce338061d693464363 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 13 Aug 2013 13:24:05 -0400 Subject: re-enable MIDI tracing for ARDOUR::MidiPort --- gtk2_ardour/midi_tracer.cc | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/gtk2_ardour/midi_tracer.cc b/gtk2_ardour/midi_tracer.cc index fee339d126..ba116d39aa 100644 --- a/gtk2_ardour/midi_tracer.cc +++ b/gtk2_ardour/midi_tracer.cc @@ -164,16 +164,25 @@ MidiTracer::port_changed () return; } + /* The inheritance heirarchy makes this messy. AsyncMIDIPort has two + * available MIDI::Parsers what we could connect to, ::self_parser() + * (from ARDOUR::MidiPort) and ::parser() from MIDI::Port. One day, + * this mess will all go away ... + */ + boost::shared_ptr async = boost::dynamic_pointer_cast (p); if (!async) { - /* pure ARDOUR::MidiPort ... cannot currently attach to it because it - * has no Parser. - */ - return; + + boost::shared_ptr mp = boost::dynamic_pointer_cast (p); + + if (mp) { + mp->self_parser().any.connect_same_thread (_parser_connection, boost::bind (&MidiTracer::tracer, this, _1, _2, _3)); + } + + } else { + async->parser()->any.connect_same_thread (_parser_connection, boost::bind (&MidiTracer::tracer, this, _1, _2, _3)); } - - async->parser()->any.connect_same_thread (_parser_connection, boost::bind (&MidiTracer::tracer, this, _1, _2, _3)); } void -- cgit v1.2.3 From 07c63fb2d72d7c5ef609bd972fa6a3138560d74a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 13 Aug 2013 21:59:05 -0400 Subject: save and restore all ardour-owned MIDI ports still need to check on MCU port status --- libs/ardour/ardour/midiport_manager.h | 11 +++--- libs/ardour/ardour/port.h | 5 +++ libs/ardour/ardour/rc_configuration.h | 2 ++ libs/ardour/midiport_manager.cc | 68 +++++++++++++++++++++++++++-------- libs/ardour/port.cc | 59 ++++++++++++++++++++++++++++++ libs/ardour/rc_configuration.cc | 28 +++++++-------- 6 files changed, 137 insertions(+), 36 deletions(-) diff --git a/libs/ardour/ardour/midiport_manager.h b/libs/ardour/ardour/midiport_manager.h index df33038f2b..9a32bfe475 100644 --- a/libs/ardour/ardour/midiport_manager.h +++ b/libs/ardour/ardour/midiport_manager.h @@ -41,11 +41,6 @@ class MidiPortManager { MidiPortManager(); virtual ~MidiPortManager (); - MidiPort* add_port (MidiPort *); - void remove_port (MidiPort *); - - MidiPort* port (const std::string&); - /* Ports used for control. These are read/written to outside of the * process callback (asynchronously with respect to when data * actually arrives). @@ -70,7 +65,8 @@ class MidiPortManager { boost::shared_ptr midi_clock_input_port() const { return _midi_clock_input_port; } boost::shared_ptr midi_clock_output_port() const { return _midi_clock_output_port; } - void set_port_states (std::list); + void set_midi_port_states (); + std::list get_midi_port_states () const; PBD::Signal0 PortsChanged; @@ -80,6 +76,9 @@ class MidiPortManager { MIDI::Port* _midi_output_port; MIDI::Port* _mmc_input_port; MIDI::Port* _mmc_output_port; + /* these point to the same objects as the 4 members above, + but cast to their ARDOUR::Port base class + */ boost::shared_ptr _midi_in; boost::shared_ptr _midi_out; boost::shared_ptr _mmc_in; diff --git a/libs/ardour/ardour/port.h b/libs/ardour/ardour/port.h index 06175de673..77bf2b6f71 100644 --- a/libs/ardour/ardour/port.h +++ b/libs/ardour/ardour/port.h @@ -135,6 +135,11 @@ public: virtual void increment_port_buffer_offset (pframes_t n); + virtual XMLNode& get_state (void) const; + virtual int set_state (const XMLNode&, int version); + + static std::string state_node_name; + protected: Port (std::string const &, DataType, PortFlags); diff --git a/libs/ardour/ardour/rc_configuration.h b/libs/ardour/ardour/rc_configuration.h index ff1c5f035c..9943821d61 100644 --- a/libs/ardour/ardour/rc_configuration.h +++ b/libs/ardour/ardour/rc_configuration.h @@ -53,6 +53,7 @@ class RCConfiguration : public Configuration XMLNode* control_protocol_state () { return _control_protocol_state; } std::list midi_port_states () { return _midi_port_states; } + std::list old_midi_port_states () { return _old_midi_port_states; } /* define accessor methods */ @@ -86,6 +87,7 @@ class RCConfiguration : public Configuration state once the audio engine and hence ports are up. */ std::list _midi_port_states; + std::list _old_midi_port_states; }; /* XXX: rename this */ diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc index 5d4e8e37f6..7abd47580b 100644 --- a/libs/ardour/midiport_manager.cc +++ b/libs/ardour/midiport_manager.cc @@ -20,6 +20,7 @@ #include "ardour/audioengine.h" #include "ardour/async_midi_port.h" #include "ardour/midiport_manager.h" +#include "ardour/rc_configuration.h" #include "i18n.h" @@ -56,13 +57,6 @@ MidiPortManager::~MidiPortManager () } -MidiPort* -MidiPortManager::port (string const & n) -{ - boost::shared_ptr mp = boost::dynamic_pointer_cast (AudioEngine::instance()->get_port_by_name (n)); - return mp.get(); -} - void MidiPortManager::create_ports () { @@ -116,19 +110,65 @@ MidiPortManager::create_ports () _mtc_output_port->set_always_parse (true); _midi_clock_input_port->set_always_parse (true); _midi_clock_output_port->set_always_parse (true); + + set_midi_port_states (); } void -MidiPortManager::set_port_states (list s) +MidiPortManager::set_midi_port_states () { - PortManager::PortList pl; - - AudioEngine::instance()->get_ports (DataType::MIDI, pl); + list nodes; + XMLProperty* prop; + typedef map > PortMap; + PortMap ports; + const int version = 0; + + nodes = Config->midi_port_states (); + + ports.insert (make_pair (_mtc_input_port->name(), _mtc_input_port)); + ports.insert (make_pair (_mtc_output_port->name(), _mtc_output_port)); + ports.insert (make_pair (_midi_clock_input_port->name(), _midi_clock_input_port)); + ports.insert (make_pair (_midi_clock_output_port->name(), _midi_clock_output_port)); + ports.insert (make_pair (_midi_input_port->name(), _midi_in)); + ports.insert (make_pair (_midi_output_port->name(), _midi_out)); + ports.insert (make_pair (_mmc_input_port->name(), _mmc_in)); + ports.insert (make_pair (_mmc_output_port->name(), _mmc_out)); - for (list::iterator i = s.begin(); i != s.end(); ++i) { - for (PortManager::PortList::const_iterator j = pl.begin(); j != pl.end(); ++j) { - // (*j)->set_state (**i); + for (list::iterator n = nodes.begin(); n != nodes.end(); ++n) { + if ((prop = (*n)->property (X_("name"))) == 0) { + continue; + } + + PortMap::iterator p = ports.find (prop->value()); + if (p == ports.end()) { + continue; } + + p->second->set_state (**n, version); } } +list +MidiPortManager::get_midi_port_states () const +{ + typedef map > PortMap; + PortMap ports; + list s; + + ports.insert (make_pair (_mtc_input_port->name(), _mtc_input_port)); + ports.insert (make_pair (_mtc_output_port->name(), _mtc_output_port)); + ports.insert (make_pair (_midi_clock_input_port->name(), _midi_clock_input_port)); + ports.insert (make_pair (_midi_clock_output_port->name(), _midi_clock_output_port)); + ports.insert (make_pair (_midi_input_port->name(), _midi_in)); + ports.insert (make_pair (_midi_output_port->name(), _midi_out)); + ports.insert (make_pair (_mmc_input_port->name(), _mmc_in)); + ports.insert (make_pair (_mmc_output_port->name(), _mmc_out)); + + for (PortMap::const_iterator p = ports.begin(); p != ports.end(); ++p) { + s.push_back (&p->second->get_state()); + } + + return s; +} + + diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index 3aaa371f16..8fadad4fcc 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -44,6 +44,7 @@ PBD::Signal0 Port::PortDrop; bool Port::_connecting_blocked = false; pframes_t Port::_global_port_buffer_offset = 0; pframes_t Port::_cycle_nframes = 0; +std::string Port::state_node_name = X_("Port"); /* a handy define to shorten what would otherwise be a needlessly verbose * repeated phrase @@ -453,3 +454,61 @@ Port::physically_connected () const return port_engine.physically_connected (_port_handle); } +XMLNode& +Port::get_state () const +{ + XMLNode* root = new XMLNode (state_node_name); + + root->add_property (X_("name"), AudioEngine::instance()->make_port_name_relative (name())); + + if (receives_input()) { + root->add_property (X_("direction"), X_("input")); + } else { + root->add_property (X_("direction"), X_("output")); + } + + vector c; + + get_connections (c); + + for (vector::const_iterator i = c.begin(); i != c.end(); ++i) { + XMLNode* child = new XMLNode (X_("Connection")); + child->add_property (X_("other"), *i); + root->add_child_nocopy (*child); + } + + return *root; +} + +int +Port::set_state (const XMLNode& node, int) +{ + const XMLProperty* prop; + + if (node.name() != state_node_name) { + return -1; + } + + if ((prop = node.property (X_("name"))) != 0) { + set_name (prop->value()); + } + + const XMLNodeList& children (node.children()); + + _connections.clear (); + + for (XMLNodeList::const_iterator c = children.begin(); c != children.end(); ++c) { + + if ((*c)->name() != X_("Connection")) { + continue; + } + + if ((prop = (*c)->property (X_("other"))) == 0) { + continue; + } + + _connections.insert (prop->value()); + } + + return 0; +} diff --git a/libs/ardour/rc_configuration.cc b/libs/ardour/rc_configuration.cc index 007d6041db..773ecf7d85 100644 --- a/libs/ardour/rc_configuration.cc +++ b/libs/ardour/rc_configuration.cc @@ -27,12 +27,13 @@ #include "pbd/xml++.h" #include "pbd/file_utils.h" +#include "ardour/audioengine.h" #include "ardour/control_protocol_manager.h" #include "ardour/diskstream.h" #include "ardour/filesystem_paths.h" +#include "ardour/port.h" #include "ardour/rc_configuration.h" #include "ardour/session_metadata.h" -#include "ardour/midiport_manager.h" #include "i18n.h" @@ -62,9 +63,12 @@ RCConfiguration::RCConfiguration () { } - RCConfiguration::~RCConfiguration () { + for (list::iterator i = _old_midi_port_states.begin(); i != _old_midi_port_states.end(); ++i) { + delete *i; + } + for (list::iterator i = _midi_port_states.begin(); i != _midi_port_states.end(); ++i) { delete *i; } @@ -176,20 +180,10 @@ RCConfiguration::get_state () root = new XMLNode("Ardour"); - /* XXX - * GET STATE OF MIDI::Port HERE - */ -#if 0 - MidiPortManager* mm = MidiPortManager::instance(); - - if (mm) { - boost::shared_ptr ports = mm->get_midi_ports(); - - for (MidiPortManager::PortList::const_iterator i = ports->begin(); i != ports->end(); ++i) { - // root->add_child_nocopy ((*i)->get_state()); - } - } -#endif + list midi_port_nodes = AudioEngine::instance()->get_midi_port_states(); + for (list::const_iterator n = midi_port_nodes.begin(); n != midi_port_nodes.end(); ++n) { + root->add_child_nocopy (**n); + } root->add_child_nocopy (get_variables ()); @@ -255,6 +249,8 @@ RCConfiguration::set_state (const XMLNode& root, int version) } else if (node->name() == ControlProtocolManager::state_node_name) { _control_protocol_state = new XMLNode (*node); } else if (node->name() == MIDI::Port::state_node_name) { + _old_midi_port_states.push_back (new XMLNode (*node)); + } else if (node->name() == ARDOUR::Port::state_node_name) { _midi_port_states.push_back (new XMLNode (*node)); } } -- cgit v1.2.3 From dfac01bdd472217ddbc1a70049c05e8de56ca113 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 13 Aug 2013 22:06:31 -0400 Subject: don't bother with old MIDI port data in ardour.rc result: we lose connections to global MIDI ports in older sessions. may fix this in the future --- libs/ardour/ardour/rc_configuration.h | 2 -- libs/ardour/rc_configuration.cc | 6 ------ 2 files changed, 8 deletions(-) diff --git a/libs/ardour/ardour/rc_configuration.h b/libs/ardour/ardour/rc_configuration.h index 9943821d61..ff1c5f035c 100644 --- a/libs/ardour/ardour/rc_configuration.h +++ b/libs/ardour/ardour/rc_configuration.h @@ -53,7 +53,6 @@ class RCConfiguration : public Configuration XMLNode* control_protocol_state () { return _control_protocol_state; } std::list midi_port_states () { return _midi_port_states; } - std::list old_midi_port_states () { return _old_midi_port_states; } /* define accessor methods */ @@ -87,7 +86,6 @@ class RCConfiguration : public Configuration state once the audio engine and hence ports are up. */ std::list _midi_port_states; - std::list _old_midi_port_states; }; /* XXX: rename this */ diff --git a/libs/ardour/rc_configuration.cc b/libs/ardour/rc_configuration.cc index 773ecf7d85..071d50ac03 100644 --- a/libs/ardour/rc_configuration.cc +++ b/libs/ardour/rc_configuration.cc @@ -65,10 +65,6 @@ RCConfiguration::RCConfiguration () RCConfiguration::~RCConfiguration () { - for (list::iterator i = _old_midi_port_states.begin(); i != _old_midi_port_states.end(); ++i) { - delete *i; - } - for (list::iterator i = _midi_port_states.begin(); i != _midi_port_states.end(); ++i) { delete *i; } @@ -248,8 +244,6 @@ RCConfiguration::set_state (const XMLNode& root, int version) SessionMetadata::Metadata()->set_state (*node, version); } else if (node->name() == ControlProtocolManager::state_node_name) { _control_protocol_state = new XMLNode (*node); - } else if (node->name() == MIDI::Port::state_node_name) { - _old_midi_port_states.push_back (new XMLNode (*node)); } else if (node->name() == ARDOUR::Port::state_node_name) { _midi_port_states.push_back (new XMLNode (*node)); } -- cgit v1.2.3 From 7b34b6a3f6ec6920bf4718a878e3aea7011851ab Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 14 Aug 2013 12:39:34 -0400 Subject: provide clock_gettime() implementation for lovely OSX, which doesn't have it --- libs/ardour/globals.cc | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index 89edc66e84..4e99bc767e 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -540,6 +540,31 @@ ARDOUR::get_available_sync_options () /** Return a monotonic value for the number of microseconds that have elapsed * since an arbitrary zero origin. */ + +#ifdef __MACH__ +/* Thanks Apple for not implementing this basic SUSv2, POSIX.1-2001 function + */ +#include +#define CLOCK_REALTIME 0 +#define CLOCK_MONOTONIC 0 +int +clock_gettime (int /*clk_id*/, struct timespec *t) +{ + static bool initialized = false; + static mach_timebase_info_data_t timebase; + if (!initialized) { + mach_timebase_info(&timebase); + initialized = true; + } + uint64_t time; + time = mach_absolute_time(); + double nseconds = ((double)time * (double)timebase.numer)/((double)timebase.denom); + double seconds = ((double)time * (double)timebase.numer)/((double)timebase.denom * 1e9); + t->tv_sec = seconds; + t->tv_nsec = nseconds; + return 0; +} +#endif microseconds_t ARDOUR::get_microseconds () -- cgit v1.2.3 From 8d8770f4ccd4d4d5a7731b6cd0ac28ce40ba00d0 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 14 Aug 2013 12:40:10 -0400 Subject: remove JACK midi system stuff from jack_utils, because we're not going to use it (for a while, at least) --- libs/ardour/ardour/jack_utils.h | 10 ---------- libs/ardour/jack_utils.cc | 31 +++---------------------------- 2 files changed, 3 insertions(+), 38 deletions(-) diff --git a/libs/ardour/ardour/jack_utils.h b/libs/ardour/ardour/jack_utils.h index 169dc12580..bc94da3361 100644 --- a/libs/ardour/ardour/jack_utils.h +++ b/libs/ardour/ardour/jack_utils.h @@ -45,16 +45,6 @@ namespace ARDOUR { */ void get_jack_default_audio_driver_name (std::string& driver_name); - /** - * Get a list of possible JACK midi driver names based on platform - */ - void get_jack_midi_system_names (const std::string& driver, std::vector& driver_names); - - /** - * Get the default JACK midi driver based on platform - */ - void get_jack_default_midi_system_name (const std::string& driver_name, std::string& midi_system); - /** * Get a list of possible samplerates supported be JACK */ diff --git a/libs/ardour/jack_utils.cc b/libs/ardour/jack_utils.cc index b4446501bc..c16270b261 100644 --- a/libs/ardour/jack_utils.cc +++ b/libs/ardour/jack_utils.cc @@ -129,32 +129,6 @@ ARDOUR::get_jack_default_audio_driver_name (string& audio_driver_name) audio_driver_name = drivers.front (); } -void -ARDOUR::get_jack_midi_system_names (const string& driver, vector& midi_system_names) -{ - midi_system_names.push_back (get_none_string ()); -#ifdef WIN32 - midi_system_names.push_back (winmme_midi_driver_name); -#elif __APPLE__ - midi_system_names.push_back (coreaudio_midi_driver_name); -#else -#ifdef HAVE_ALSA - if (driver == alsa_driver_name) { - midi_system_names.push_back (alsaseq_midi_driver_name); - midi_system_names.push_back (alsaraw_midi_driver_name); - } -#endif -#endif -} - -void -ARDOUR::get_jack_default_midi_system_name (const string& driver, string& midi_system_name) -{ - vector drivers; - get_jack_midi_system_names (driver, drivers); - midi_system_name = drivers.front (); -} - void ARDOUR::get_jack_sample_rate_strings (vector& samplerates) { @@ -584,7 +558,7 @@ ARDOUR::set_path_env_for_jack_autostart (const vector& dirs) #ifdef __APPLE__ // push it back into the environment so that auto-started JACK can find it. // XXX why can't we just expect OS X users to have PATH set correctly? we can't ... - setenv ("PATH", SearchPath(dirs).to_string(), 1); + setenv ("PATH", SearchPath(dirs).to_string().c_str(), 1); #else /* silence a compiler unused variable warning */ (void) dirs; @@ -636,7 +610,8 @@ ARDOUR::get_jack_server_paths (const vector& server_dir_paths, vector& server_paths) { for (vector::const_iterator i = server_names.begin(); i != server_names.end(); ++i) { - find_matching_files_in_directories (server_dir_paths, Glib::PatternSpec(*i), server_paths); + Glib::PatternSpec ps (*i); + find_matching_files_in_directories (server_dir_paths, ps, server_paths); } return !server_paths.empty(); } -- cgit v1.2.3 From 2de09888b6be3c0d81a1a8089b9a8e87ececa0ee Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 14 Aug 2013 12:40:49 -0400 Subject: some const_cast<> additions for OS X where gcc believes that volatile int* means const int* --- gtk2_ardour/midi_tracer.cc | 6 +++--- libs/ardour/midi_diskstream.cc | 16 ++++++++-------- libs/gtkmm2ext/prolooks_helpers.c | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/gtk2_ardour/midi_tracer.cc b/gtk2_ardour/midi_tracer.cc index ba116d39aa..ea4b0c2d54 100644 --- a/gtk2_ardour/midi_tracer.cc +++ b/gtk2_ardour/midi_tracer.cc @@ -404,9 +404,9 @@ MidiTracer::tracer (Parser&, byte* msg, size_t len) fifo.write (&buf, 1); - if (g_atomic_int_get (&_update_queued) == 0) { + if (g_atomic_int_get (const_cast (&_update_queued)) == 0) { gui_context()->call_slot (invalidator (*this), boost::bind (&MidiTracer::update, this)); - g_atomic_int_inc (&_update_queued); + g_atomic_int_inc (const_cast (&_update_queued)); } } @@ -414,7 +414,7 @@ void MidiTracer::update () { bool updated = false; - g_atomic_int_dec_and_test (&_update_queued); + g_atomic_int_dec_and_test (const_cast (&_update_queued)); RefPtr buf (text.get_buffer()); diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc index 088b2fcc40..66a3754e2d 100644 --- a/libs/ardour/midi_diskstream.cc +++ b/libs/ardour/midi_diskstream.cc @@ -202,8 +202,8 @@ MidiDiskstream::non_realtime_input_change () seek (_session.transport_frame()); } - g_atomic_int_set(&_frames_pending_write, 0); - g_atomic_int_set(&_num_captured_loops, 0); + g_atomic_int_set(const_cast (&_frames_pending_write), 0); + g_atomic_int_set(const_cast (&_num_captured_loops), 0); } int @@ -376,8 +376,8 @@ MidiDiskstream::process (BufferSet& bufs, framepos_t transport_frame, pframes_t } _write_source->mark_write_starting_now( capture_start_frame, capture_captured, loop_length); - g_atomic_int_set(&_frames_pending_write, 0); - g_atomic_int_set(&_num_captured_loops, 0); + g_atomic_int_set(const_cast (&_frames_pending_write), 0); + g_atomic_int_set(const_cast (&_num_captured_loops), 0); was_recording = true; } } @@ -446,7 +446,7 @@ MidiDiskstream::process (BufferSet& bufs, framepos_t transport_frame, pframes_t break; } } - g_atomic_int_add(&_frames_pending_write, nframes); + g_atomic_int_add(const_cast (&_frames_pending_write), nframes); if (buf.size() != 0) { Glib::Threads::Mutex::Lock lm (_gui_feed_buffer_mutex, Glib::Threads::TRY_LOCK); @@ -799,7 +799,7 @@ MidiDiskstream::do_flush (RunContext /*context*/, bool force_flush) return 0; } - const framecnt_t total = g_atomic_int_get(&_frames_pending_write); + const framecnt_t total = g_atomic_int_get(const_cast (&_frames_pending_write)); if (total == 0 || _capture_buf->read_space() == 0 || @@ -834,7 +834,7 @@ MidiDiskstream::do_flush (RunContext /*context*/, bool force_flush) error << string_compose(_("MidiDiskstream %1: cannot write to disk"), id()) << endmsg; return -1; } - g_atomic_int_add(&_frames_pending_write, -to_write); + g_atomic_int_add(const_cast (&_frames_pending_write), -to_write); } out: @@ -1044,7 +1044,7 @@ MidiDiskstream::transport_looped (framepos_t) the Source and/or entirely after the capture is finished. */ if (was_recording) { - g_atomic_int_add(&_num_captured_loops, 1); + g_atomic_int_add(const_cast (&_num_captured_loops), 1); } } diff --git a/libs/gtkmm2ext/prolooks_helpers.c b/libs/gtkmm2ext/prolooks_helpers.c index 1489a8cb3e..cdac2dbafe 100644 --- a/libs/gtkmm2ext/prolooks_helpers.c +++ b/libs/gtkmm2ext/prolooks_helpers.c @@ -891,7 +891,7 @@ GType prolooks_hsl_get_type (void) { gpointer prolooks_hsl_ref (gpointer instance) { ProlooksHSL* self; self = instance; - g_atomic_int_inc (&self->ref_count); + g_atomic_int_inc (&self->ref_count); return instance; } -- cgit v1.2.3 From e711dfae12a3922476f5ff39c6b015d6617ed16c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 14 Aug 2013 12:44:48 -0400 Subject: remove misleading + incorrect documentation --- libs/surfaces/mackie/surface_port.cc | 4 ---- 1 file changed, 4 deletions(-) diff --git a/libs/surfaces/mackie/surface_port.cc b/libs/surfaces/mackie/surface_port.cc index fd9feaff74..6583f3307f 100644 --- a/libs/surfaces/mackie/surface_port.cc +++ b/libs/surfaces/mackie/surface_port.cc @@ -46,10 +46,6 @@ using namespace Mackie; using namespace PBD; using namespace ARDOUR; -/** @param input_port Input MIDI::Port; this object takes responsibility for - * adding & removing it from the MIDI::Manager and destroying it. @param - * output_port Output MIDI::Port; responsibility similarly taken. - */ SurfacePort::SurfacePort (Surface& s) : _surface (&s) { -- cgit v1.2.3 From 588cc3af74524a3f6bdae16c93ba0975f55fcc1e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 15 Aug 2013 11:43:37 -0400 Subject: check master sources when determining whether a region uses a source. should fix #5618 --- libs/ardour/region.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc index 706dda4a0a..3b9dc308ec 100644 --- a/libs/ardour/region.cc +++ b/libs/ardour/region.cc @@ -1490,6 +1490,20 @@ Region::uses_source (boost::shared_ptr source) const } } + for (SourceList::const_iterator i = _master_sources.begin(); i != _master_sources.end(); ++i) { + if (*i == source) { + return true; + } + + boost::shared_ptr ps = boost::dynamic_pointer_cast (*i); + + if (ps) { + if (ps->playlist()->uses_source (source)) { + return true; + } + } + } + return false; } -- cgit v1.2.3 From 04bf9d1e9594688db4a69c3660feef2efe23945b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 15 Aug 2013 11:44:47 -0400 Subject: fix newly-appearing crash-at-close caused by muddled thinking in pbd/pthread_utils threads created with this code can now just return a value as they normally would, and the infrastructure will ensure cleanup. there is no longer any reason to call pthread_exit_pbd() and so that has been removed. --- gtk2_ardour/editor_audio_import.cc | 2 -- libs/ardour/butler.cc | 4 +-- libs/pbd/pbd/pthread_utils.h | 1 - libs/pbd/pthread_utils.cc | 53 ++++++++++++++++++++++++-------------- 4 files changed, 34 insertions(+), 26 deletions(-) diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 3cb2d378c2..7089372e63 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -962,7 +962,5 @@ void * Editor::import_thread () { _session->import_files (import_status); - pthread_exit_pbd (0); - /*NOTREACHED*/ return 0; } diff --git a/libs/ardour/butler.cc b/libs/ardour/butler.cc index db1b316368..a948c185b8 100644 --- a/libs/ardour/butler.cc +++ b/libs/ardour/butler.cc @@ -185,7 +185,7 @@ Butler::thread_work () break; case Request::Quit: - pthread_exit_pbd (0); + return 0; /*NOTREACHED*/ break; @@ -327,8 +327,6 @@ restart: empty_pool_trash (); } - pthread_exit_pbd (0); - /*NOTREACHED*/ return (0); } diff --git a/libs/pbd/pbd/pthread_utils.h b/libs/pbd/pbd/pthread_utils.h index 793c3a1980..0c7b5f3ac1 100644 --- a/libs/pbd/pbd/pthread_utils.h +++ b/libs/pbd/pbd/pthread_utils.h @@ -31,7 +31,6 @@ int pthread_create_and_store (std::string name, pthread_t *thread, void * (*st void pthread_cancel_one (pthread_t thread); void pthread_cancel_all (); void pthread_kill_all (int signum); -void pthread_exit_pbd (void* status); const char* pthread_name (); void pthread_set_name (const char* name); diff --git a/libs/pbd/pthread_utils.cc b/libs/pbd/pthread_utils.cc index e8b5e2690d..3d3cb96fb5 100644 --- a/libs/pbd/pthread_utils.cc +++ b/libs/pbd/pthread_utils.cc @@ -72,12 +72,34 @@ fake_thread_start (void* arg) void* (*thread_work)(void*) = ts->thread_work; void* thread_arg = ts->arg; + /* name will be deleted by the default handler for GStaticPrivate, when the thread exits */ + pthread_set_name (ts->name.c_str()); + /* we don't need this object anymore */ + delete ts; - /* name will be deleted by the default handler for GStaticPrivate, when the thread exits */ - return thread_work (thread_arg); + /* actually run the thread's work function */ + + void* ret = thread_work (thread_arg); + + /* cleanup */ + + pthread_mutex_lock (&thread_map_lock); + + for (ThreadMap::iterator i = all_threads.begin(); i != all_threads.end(); ++i) { + if (pthread_equal ((*i), pthread_self())) { + all_threads.erase (i); + break; + } + } + + pthread_mutex_unlock (&thread_map_lock); + + /* done */ + + return ret; } int @@ -139,10 +161,16 @@ void pthread_cancel_all () { pthread_mutex_lock (&thread_map_lock); - for (ThreadMap::iterator i = all_threads.begin(); i != all_threads.end(); ++i) { - if ((*i) != pthread_self()) { + for (ThreadMap::iterator i = all_threads.begin(); i != all_threads.end(); ) { + + ThreadMap::iterator nxt = i; + ++nxt; + + if (!pthread_equal ((*i), pthread_self())) { pthread_cancel ((*i)); } + + i = nxt; } all_threads.clear(); pthread_mutex_unlock (&thread_map_lock); @@ -153,7 +181,7 @@ pthread_cancel_one (pthread_t thread) { pthread_mutex_lock (&thread_map_lock); for (ThreadMap::iterator i = all_threads.begin(); i != all_threads.end(); ++i) { - if ((*i) == thread) { + if (pthread_equal ((*i), thread)) { all_threads.erase (i); break; } @@ -163,18 +191,3 @@ pthread_cancel_one (pthread_t thread) pthread_mutex_unlock (&thread_map_lock); } -void -pthread_exit_pbd (void* status) -{ - pthread_t thread = pthread_self(); - - pthread_mutex_lock (&thread_map_lock); - for (ThreadMap::iterator i = all_threads.begin(); i != all_threads.end(); ++i) { - if ((*i) == thread) { - all_threads.erase (i); - break; - } - } - pthread_mutex_unlock (&thread_map_lock); - pthread_exit (status); -} -- cgit v1.2.3 From 7fe7e7ad4bd7370ffd89a29ddd341dd845546bca Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 15 Aug 2013 14:55:10 -0400 Subject: update czech translations from pavel fric --- gtk2_ardour/po/cs.po | 3928 ++++++++++++++++++++--------------------------- libs/gtkmm2ext/po/cs.po | 6 +- 2 files changed, 1666 insertions(+), 2268 deletions(-) diff --git a/gtk2_ardour/po/cs.po b/gtk2_ardour/po/cs.po index ca3a9ed176..6fcd10bf4d 100644 --- a/gtk2_ardour/po/cs.po +++ b/gtk2_ardour/po/cs.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-06-11 08:49-0400\n" -"PO-Revision-Date: 2013-02-09 12:28+0100\n" +"POT-Creation-Date: 2013-04-09 09:28-0400\n" +"PO-Revision-Date: 2013-06-13 12:05+0200\n" "Last-Translator: Pavel Fric \n" "Language-Team: Czech \n" "Language: cs\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 1.5\n" +"X-Generator: Lokalize 1.4\n" "X-Poedit-Country: Czech Republic\n" "X-Poedit-Basepath: ../../\n" "X-Poedit-SearchPath-0: gtk2_ardour\n" @@ -148,7 +148,7 @@ msgstr "Armand Klenk" #: about.cc:153 msgid "Julien de Kozak" -msgstr "" +msgstr "Julien de Kozak" #: about.cc:154 msgid "Matt Krai" @@ -261,7 +261,6 @@ msgstr "" "\tRomain Arnaud \n" #: about.cc:183 -#, fuzzy msgid "" "German:\n" "\tKarsten Petersen \n" @@ -270,7 +269,6 @@ msgid "" "\tBenjamin Scherrer \n" "\tEdgar Aichinger \n" "\tRichard Oax \n" -"\tRobin Gloster \n" msgstr "" "NÄ›mÄina:\n" "\tKarsten Petersen \n" @@ -280,7 +278,7 @@ msgstr "" "\tEdgar Aichinger \n" "\tRichard Oax \n" -#: about.cc:190 +#: about.cc:189 msgid "" "Italian:\n" "\tFilippo Pappalardo \n" @@ -290,7 +288,7 @@ msgstr "" "\tFilippo Pappalardo \n" "\tRaffaele Morelli \n" -#: about.cc:191 +#: about.cc:190 msgid "" "Portuguese:\n" "\tRui Nuno Capela \n" @@ -298,7 +296,7 @@ msgstr "" "PortugalÅ¡tina:\n" "\tRui Nuno Capela \n" -#: about.cc:192 +#: about.cc:191 msgid "" "Brazilian Portuguese:\n" "\tAlexander da Franca Fernandes \n" @@ -308,7 +306,7 @@ msgstr "" "\tAlexander da Franca Fernandes \n" "\tChris Ross \n" -#: about.cc:194 +#: about.cc:193 msgid "" "Spanish:\n" "\t Alex Krohn \n" @@ -318,7 +316,7 @@ msgstr "" "\t Alex Krohn \n" "\tPablo Fernández \n" -#: about.cc:195 +#: about.cc:194 msgid "" "Russian:\n" "\t Igor Blinov \n" @@ -328,7 +326,7 @@ msgstr "" "\t Igor Blinov \n" "\tAlexandre Prokoudine \n" -#: about.cc:197 +#: about.cc:196 msgid "" "Greek:\n" "\t Klearchos Gourgourinis \n" @@ -336,7 +334,7 @@ msgstr "" "ŘeÄtina:\n" "\t Klearchos Gourgourinis \n" -#: about.cc:198 +#: about.cc:197 msgid "" "Swedish:\n" "\t Petter Sundlöf \n" @@ -344,7 +342,7 @@ msgstr "" "Å védÅ¡tina:\n" "\t Petter Sundlöf \n" -#: about.cc:199 +#: about.cc:198 msgid "" "Polish:\n" "\t Piotr Zaryk \n" @@ -352,7 +350,7 @@ msgstr "" "PolÅ¡tina:\n" "\t Piotr Zaryk \n" -#: about.cc:200 +#: about.cc:199 msgid "" "Czech:\n" "\t Pavel Fric \n" @@ -360,7 +358,7 @@ msgstr "" "ÄŒeÅ¡tina:\n" "\t Pavel Fric \n" -#: about.cc:201 +#: about.cc:200 msgid "" "Norwegian:\n" "\t Eivind ØdegÃ¥rd\n" @@ -368,7 +366,7 @@ msgstr "" "NorÅ¡tina:\n" "\t Eivind ØdegÃ¥rd\n" -#: about.cc:202 +#: about.cc:201 msgid "" "Chinese:\n" "\t Rui-huai Zhang \n" @@ -376,16 +374,15 @@ msgstr "" "ČínÅ¡tina:\n" "\t Rui-huai Zhang \n" -#: about.cc:580 -#, fuzzy +#: about.cc:579 msgid "Copyright (C) 1999-2013 Paul Davis\n" -msgstr "Autorské právo (C) 1999-2012 Paul Davis\n" +msgstr "Autorské právo (C) 1999-2013 Paul Davis\n" -#: about.cc:584 +#: about.cc:583 msgid "http://ardour.org/" msgstr "http://www.ardour.org" -#: about.cc:585 +#: about.cc:584 msgid "" "%1\n" "(built from revision %2)" @@ -393,23 +390,23 @@ msgstr "" "%1\n" "(Sestaveno na základÄ› revize %2)" -#: about.cc:589 +#: about.cc:588 msgid "Config" msgstr "Nastavení" -#: actions.cc:85 +#: actions.cc:80 msgid "Loading menus from %1" msgstr "Nahrávají se nabídky z %1" -#: actions.cc:88 actions.cc:89 +#: actions.cc:83 actions.cc:84 msgid "badly formatted UI definition file: %1" msgstr "Soubor vymezující uživatelské rozhraní %1 je nesprávnÄ› formátován" -#: actions.cc:91 +#: actions.cc:86 msgid "%1 menu definition file not found" msgstr "%1 soubor s vymezením nabídky nenalezen" -#: actions.cc:95 actions.cc:96 +#: actions.cc:90 actions.cc:91 msgid "%1 will not work without a valid ardour.menus file" msgstr "%1 nebude pracovat bez platného souboru ardour.menus" @@ -429,68 +426,67 @@ msgstr "Režim stopy:" msgid "Instrument:" msgstr "Nástroj:" -#: add_route_dialog.cc:76 +#: add_route_dialog.cc:79 msgid "Audio Tracks" msgstr "Zvukové stopy" -#: add_route_dialog.cc:77 +#: add_route_dialog.cc:80 msgid "MIDI Tracks" msgstr "Stopy MIDI" -#: add_route_dialog.cc:78 +#: add_route_dialog.cc:81 msgid "Audio+MIDI Tracks" msgstr "Zvukové a MIDI stopy" -#: add_route_dialog.cc:79 +#: add_route_dialog.cc:82 msgid "Busses" msgstr "SbÄ›rnice" -#: add_route_dialog.cc:101 +#: add_route_dialog.cc:104 msgid "Add:" msgstr "PÅ™idat:" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:117 startup.cc:808 time_fx_dialog.cc:92 msgid "Options" msgstr "Volby" -#: add_route_dialog.cc:124 bundle_manager.cc:192 region_editor.cc:50 -#: route_group_dialog.cc:65 +#: add_route_dialog.cc:127 bundle_manager.cc:194 region_editor.cc:50 +#: route_group_dialog.cc:66 msgid "Name:" msgstr "Název:" -#: add_route_dialog.cc:154 +#: add_route_dialog.cc:157 msgid "Group:" msgstr "Skupina:" -#: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: add_route_dialog.cc:218 add_route_dialog.cc:227 add_route_dialog.cc:301 +#: rc_option_editor.cc:1450 rc_option_editor.cc:1452 rc_option_editor.cc:1454 +#: rc_option_editor.cc:1472 rc_option_editor.cc:1474 rc_option_editor.cc:1482 +#: rc_option_editor.cc:1484 rc_option_editor.cc:1502 rc_option_editor.cc:1515 +#: rc_option_editor.cc:1517 rc_option_editor.cc:1519 rc_option_editor.cc:1550 +#: rc_option_editor.cc:1552 rc_option_editor.cc:1554 rc_option_editor.cc:1562 +#: rc_option_editor.cc:1570 rc_option_editor.cc:1578 msgid "Audio" msgstr "Zvuk" -#: 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: add_route_dialog.cc:219 add_route_dialog.cc:230 add_route_dialog.cc:302 +#: editor_actions.cc:105 missing_file_dialog.cc:55 rc_option_editor.cc:1701 +#: rc_option_editor.cc:1709 rc_option_editor.cc:1717 rc_option_editor.cc:1726 +#: rc_option_editor.cc:1734 rc_option_editor.cc:1742 rc_option_editor.cc:1750 +#: rc_option_editor.cc:1759 rc_option_editor.cc:1768 rc_option_editor.cc:1777 +#: rc_option_editor.cc:1785 rc_option_editor.cc:1793 msgid "MIDI" msgstr "MIDI" -#: add_route_dialog.cc:217 add_route_dialog.cc:230 add_route_dialog.cc:300 +#: add_route_dialog.cc:220 add_route_dialog.cc:233 add_route_dialog.cc:303 msgid "Audio+MIDI" msgstr "Zvuk + MIDI" -#: add_route_dialog.cc:218 add_route_dialog.cc:233 add_route_dialog.cc:301 +#: add_route_dialog.cc:221 add_route_dialog.cc:236 add_route_dialog.cc:304 msgid "Bus" msgstr "SbÄ›rnice" -#: add_route_dialog.cc:260 +#: add_route_dialog.cc:263 msgid "" "Audio+MIDI tracks are intended for use ONLY with plugins that use " "both audio and MIDI input data\n" @@ -504,64 +500,64 @@ msgstr "" "Pokud takový přídavný modul nemáte v úmyslu používat, potom namísto toho " "použijte normální zvukovou nebo MIDI stopu." -#: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: add_route_dialog.cc:322 add_route_dialog.cc:341 editor_actions.cc:385 +#: editor_rulers.cc:380 time_axis_view.cc:1301 msgid "Normal" msgstr "Obvyklá" -#: add_route_dialog.cc:322 add_route_dialog.cc:340 +#: add_route_dialog.cc:325 add_route_dialog.cc:343 msgid "Non Layered" msgstr "Nevrstvená" -#: add_route_dialog.cc:323 add_route_dialog.cc:342 +#: add_route_dialog.cc:326 add_route_dialog.cc:345 msgid "Tape" msgstr "Pásek" -#: add_route_dialog.cc:423 +#: add_route_dialog.cc:426 msgid "Mono" msgstr "Mono" -#: add_route_dialog.cc:427 +#: add_route_dialog.cc:430 msgid "Stereo" msgstr "Stereo" -#: add_route_dialog.cc:451 +#: add_route_dialog.cc:454 msgid "3 Channel" msgstr "3 kanály" -#: add_route_dialog.cc:455 +#: add_route_dialog.cc:458 msgid "4 Channel" msgstr "4 kanály" -#: add_route_dialog.cc:459 +#: add_route_dialog.cc:462 msgid "5 Channel" msgstr "5 kanálů" -#: add_route_dialog.cc:463 +#: add_route_dialog.cc:466 msgid "6 Channel" msgstr "6 kanálů" -#: add_route_dialog.cc:467 +#: add_route_dialog.cc:470 msgid "8 Channel" msgstr "8 kanálů" -#: add_route_dialog.cc:471 +#: add_route_dialog.cc:474 msgid "12 Channel" msgstr "12 kanálů" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:478 mixer_strip.cc:2137 msgid "Custom" msgstr "Vlastní" -#: add_route_dialog.cc:508 add_route_dialog.cc:524 route_group_menu.cc:81 +#: add_route_dialog.cc:511 add_route_dialog.cc:525 route_group_menu.cc:81 msgid "New Group..." msgstr "Nová skupina..." -#: add_route_dialog.cc:512 route_group_menu.cc:85 +#: add_route_dialog.cc:515 route_group_menu.cc:85 msgid "No Group" msgstr "Žádná skupina" -#: add_route_dialog.cc:588 +#: add_route_dialog.cc:587 msgid "-none-" msgstr "-žádná-" @@ -570,12 +566,11 @@ msgid "Ambiguous File" msgstr "NejednoznaÄný soubor" #: ambiguous_file_dialog.cc:35 -#, fuzzy msgid "" "%1 has found the file %2 in the following places:\n" "\n" msgstr "" -"Ardour nalezl soubor %1 na následujících místech:\n" +"%1 nalezl soubor %2 na následujících místech:\n" "\n" #: ambiguous_file_dialog.cc:44 @@ -628,17 +623,17 @@ msgstr "Normalizovat hodnoty" msgid "FFT analysis window" msgstr "Okno pro rozbor FFT" -#: analysis_window.cc:60 editor.cc:1856 +#: analysis_window.cc:60 editor.cc:1880 msgid "Spectral Analysis" msgstr "Spektrální analýza (FFT rozbor)" -#: analysis_window.cc:67 editor_actions.cc:138 export_channel_selector.cc:557 +#: analysis_window.cc:67 editor_actions.cc:138 export_channel_selector.cc:555 #: session_metadata_dialog.cc:546 msgid "Track" msgstr "Stopa" -#: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: analysis_window.cc:68 editor_actions.cc:619 mixer_ui.cc:124 +#: mixer_ui.cc:1792 msgid "Show" msgstr "Ukázat" @@ -650,90 +645,35 @@ msgstr "Znovu zpracovat data" msgid "button cannot watch state of non-existing Controllable\n" msgstr "TlaÄítko nemůže sledovat stav neexistujícího ovladatelného prvku\n" -#: ardour_ui.cc:179 +#: ardour_ui.cc:168 msgid "audition" msgstr "Poslech" -#: ardour_ui.cc:180 +#: ardour_ui.cc:169 msgid "solo" msgstr "Sólo" -#: ardour_ui.cc:181 +#: ardour_ui.cc:170 msgid "feedback" msgstr "ZpÄ›tná vazba" -#: ardour_ui.cc:183 speaker_dialog.cc:36 -msgid "Speaker Configuration" -msgstr "Nastavení reproduktoru" - -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 -msgid "Theme Manager" -msgstr "Správce témat" - -#: ardour_ui.cc:185 keyeditor.cc:53 -msgid "Key Bindings" -msgstr "Klávesové zkratky" - -#: ardour_ui.cc:186 -msgid "Preferences" -msgstr "Nastavení" - -#: ardour_ui.cc:187 ardour_ui.cc:192 -#, fuzzy -msgid "Add Tracks/Busses" -msgstr "Stopy/SbÄ›rnice" - -#: ardour_ui.cc:188 -msgid "About" -msgstr "O programu" - -#: ardour_ui.cc:189 location_ui.cc:1134 -msgid "Locations" -msgstr "Místa" - -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 -msgid "Tracks and Busses" -msgstr "Stopy a sbÄ›rnice" - -#: ardour_ui.cc:191 -msgid "Properties" -msgstr "Vlastnosti" - -#: ardour_ui.cc:193 bundle_manager.cc:263 -msgid "Bundle Manager" -msgstr "Správce balíků" - -#: ardour_ui.cc:194 big_clock_window.cc:35 -msgid "Big Clock" -msgstr "Velký ukazatel Äasu" - -#: ardour_ui.cc:195 -#, fuzzy -msgid "Audio Connections" -msgstr "Spojení vstupů" - -#: ardour_ui.cc:196 -#, fuzzy -msgid "MIDI Connections" -msgstr "Spojení vstupů" - -#: ardour_ui.cc:198 +#: ardour_ui.cc:172 msgid "Errors" msgstr "Chyby" -#: ardour_ui.cc:299 +#: ardour_ui.cc:293 msgid "could not initialize %1." msgstr "NepodaÅ™ilo se zapnout %1." -#: ardour_ui.cc:394 +#: ardour_ui.cc:353 msgid "Starting audio engine" msgstr "SpouÅ¡tí se zvukový stroj" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:735 startup.cc:613 msgid "%1 is ready for use" msgstr "%1 je pÅ™ipraven pro použití" -#: ardour_ui.cc:811 +#: ardour_ui.cc:783 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" @@ -748,23 +688,23 @@ msgstr "" "Můžete se podívat na omezení pro paměť pomocí příkazu 'ulimit -l', a obvykle " "můžete toto nastavení zmÄ›nit %2." -#: ardour_ui.cc:828 +#: ardour_ui.cc:800 msgid "Do not show this window again" msgstr "Neukazovat toto okno s hlášením znovu" -#: ardour_ui.cc:870 +#: ardour_ui.cc:847 msgid "Don't quit" msgstr "NeukonÄit" -#: ardour_ui.cc:871 +#: ardour_ui.cc:848 msgid "Just quit" msgstr "Pouze ukonÄit" -#: ardour_ui.cc:872 +#: ardour_ui.cc:849 msgid "Save and quit" msgstr "Uložit a ukonÄit" -#: ardour_ui.cc:882 +#: ardour_ui.cc:859 msgid "" "%1 was unable to save your session.\n" "\n" @@ -778,15 +718,15 @@ msgstr "" "\n" "\"Pouze ukonÄit\"." -#: ardour_ui.cc:913 +#: ardour_ui.cc:890 msgid "Please wait while %1 cleans up..." msgstr "PoÄkejte, prosím, zatímco %1 uklízí..." -#: ardour_ui.cc:930 +#: ardour_ui.cc:908 msgid "Unsaved Session" msgstr "Neuložené sezení" -#: ardour_ui.cc:951 +#: ardour_ui.cc:929 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -804,7 +744,7 @@ msgstr "" "\n" "Co chcete dÄ›lat?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:932 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -822,75 +762,75 @@ msgstr "" "\n" "Co chcete dÄ›lat?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:946 msgid "Prompter" msgstr "Otázka" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1024 msgid "disconnected" msgstr "odpojeno" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1031 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "JACK: %.1f kHz / %4.1f ms" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1035 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "JACK: % kHz / %4.1f ms" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1053 msgid "File:" msgstr "Soubor:" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1057 msgid "BWF" msgstr "BWF" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1060 msgid "WAV" msgstr "WAV" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1063 msgid "WAV64" msgstr "WAV64" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1066 session_option_editor.cc:199 msgid "CAF" msgstr "CAF" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1069 msgid "AIFF" msgstr "AIFF" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1072 msgid "iXML" msgstr "iXML" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1075 msgid "RF64" msgstr "RF64" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1083 msgid "32-float" msgstr "32-float" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1086 msgid "24-int" msgstr "24-int" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1089 msgid "16-int" msgstr "16-int" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1108 #, c-format msgid "DSP: %5.1f%%" msgstr "" "Digitální zpracování signálu (DSP): %5.1f%%" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1127 #, c-format msgid "" "Buffers: p:" @@ -901,33 +841,33 @@ msgstr "" "\">%%% c:%%%" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1163 msgid "Disk: Unknown" msgstr "Disk: Neznámý" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1165 msgid "Disk: 24hrs+" msgstr "Disk: 24 hodin +" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1183 msgid "Disk: >24 hrs" msgstr "Disk: >24 hodin" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1194 #, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "Disk: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1220 #, c-format msgid "Timecode|TC: %s" msgstr "ÄŒasový kód|ÄŒK: %s" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1337 ardour_ui.cc:1346 startup.cc:1020 msgid "Recent Sessions" msgstr "Naposledy otevÅ™ená sezení" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1428 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" @@ -935,26 +875,26 @@ msgstr "" "%1 není spojen s JACKem.\n" "Za tohoto stavu není možné otevřít nebo zavřít sezení." -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1455 msgid "Open Session" msgstr "Otevřít sezení" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1473 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1049 msgid "%1 sessions" msgstr "%1 sezení" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1510 msgid "You cannot add a track without a session already loaded." msgstr "Stopy můžete pÅ™idat až teprve tehdy, když bylo sezení nahráno." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1518 msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "NepodaÅ™ilo se vytvoÅ™it %1 novou smíchanou stopu" msgstr[1] "NepodaÅ™ilo se vytvoÅ™it %1 nové smíchané stopy" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1524 ardour_ui.cc:1585 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -966,24 +906,24 @@ msgstr "" "MÄ›l byste uložit %1, ukonÄit Ardour\n" "a spustit JACK znovu s vÄ›tším poÄtem přípojek." -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1559 msgid "You cannot add a track or bus without a session already loaded." msgstr "" "Stopy nebo sbÄ›rnice můžete pÅ™idat až teprve tehdy, když bylo sezení nahráno." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1568 msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "Nelze vytvoÅ™it %1 novou zvukovou stopu" msgstr[1] "Nelze vytvoÅ™it %1 nové zvukové stopy" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1577 msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "NepodaÅ™ilo se vytvoÅ™it %1 novou zvukovou sbÄ›rnici" msgstr[1] "NepodaÅ™ilo se vytvoÅ™it %1 nové zvukové sbÄ›rnice" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1694 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." @@ -991,7 +931,7 @@ msgstr "" "VytvoÅ™te, prosím, jednu nebo i více stop, pÅ™edtím než se pokusíte nahrávat.\n" "Můžete to udÄ›lat volbou \"PÅ™idat stopu nebo sbÄ›rnici\" v nabídce pro sezení." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2084 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" @@ -1001,7 +941,7 @@ msgstr "" "\n" "%1" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2086 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -1013,19 +953,19 @@ msgstr "" "MÄ›l byste se pokusit znovu spustit JACK,\n" "pÅ™ipojit se a uložit sezení." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2112 msgid "Unable to start the session running" msgstr "Nelze spustit nynÄ›jší sezení" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2192 msgid "Take Snapshot" msgstr "UdÄ›lat snímek obrazovky" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2193 msgid "Name of new snapshot" msgstr "Název pro nový snímek obrazovky" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2217 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" @@ -1033,27 +973,27 @@ msgstr "" "Pro zajiÅ¡tÄ›ní sluÄitelnosti s různými systémy\n" "nesmí názvy snímků obrazovky obsahovat znak '%1'" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2229 msgid "Confirm Snapshot Overwrite" msgstr "Potvrdit pÅ™epsání snímku obrazovky" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2230 msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Snímek obrazovky s tímto názvem již existuje. Chcete jej pÅ™epsat?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2233 msgid "Overwrite" msgstr "PÅ™epsat" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2267 msgid "Rename Session" msgstr "PÅ™ejmenovat sezení" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2268 msgid "New session name" msgstr "Nový název sezení:" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2282 ardour_ui.cc:2666 ardour_ui.cc:2711 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" @@ -1061,13 +1001,13 @@ msgstr "" "Pro zajiÅ¡tÄ›ní sluÄitelnosti s různými systémy\n" "nesmí názvy sezení obsahovat znak '%1'" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2290 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" "Tento název se již používá jiným adresářem/složkou. Zkuste to, prosím, znovu." -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2299 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" @@ -1075,19 +1015,19 @@ msgstr "" "PÅ™ejmenování tohoto sezení se nezdaÅ™ilo.\n" "VÄ›ci by v tuto chvíli mohly být vážnÄ› zvorané" -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2414 msgid "Save Template" msgstr "Uložit pÅ™edlohu" -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2415 msgid "Name for template:" msgstr "Název pro pÅ™edlohu:" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2416 msgid "-template" msgstr "-pÅ™edloha" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2454 msgid "" "This session\n" "%1\n" @@ -1097,52 +1037,52 @@ msgstr "" "%1\n" "již existuje. Chcete jej otevřít?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2464 msgid "Open Existing Session" msgstr "Otevřít stávající sezení" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2702 msgid "There is no existing session at \"%1\"" msgstr "V \"%1\" není žádné sezení" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2792 msgid "Please wait while %1 loads your session" msgstr "PoÄkejte, prosím, dokud %1 nenahraje vaÅ¡e sezení" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2807 msgid "Port Registration Error" msgstr "Chyba v zápisu přípojky" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2808 msgid "Click the Close button to try again." msgstr "KlepnÄ›te na tlaÄítko Zavřít, abyste to mohli zkusit znovu." -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2829 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Projekt \"%1 (snímek obrazovky %2)\" nebyl úspěšnÄ› nahrán." -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2835 msgid "Loading Error" msgstr "Chyba pÅ™i nahrávání" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2836 msgid "Click the Refresh button to try again." msgstr "KlepnÄ›te na tlaÄítko Obnovit, abyste to mohli zkusit znovu." -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2918 msgid "Could not create session in \"%1\"" msgstr "V \"%1\" nelze vytvoÅ™it žádné sezení" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3045 msgid "No files were ready for clean-up" msgstr "Pro udÄ›lání pořádku nebyly pÅ™ipraveny žádné soubory" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3049 ardour_ui.cc:3059 ardour_ui.cc:3192 ardour_ui.cc:3199 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "UdÄ›lat pořádek" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3050 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1154,19 +1094,19 @@ msgstr "" "jsou pravdÄ›podobnÄ› zaÄlenÄ›ny jeÅ¡tÄ› v nÄ›jakém\n" "starším snímku obrazovky jako oblasti." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3109 msgid "kilo" msgstr "kilo" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3112 msgid "mega" msgstr "mega" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3115 msgid "giga" msgstr "giga" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3120 msgid "" "The following file was deleted from %2,\n" "releasing %3 %4bytes of disk space" @@ -1180,7 +1120,7 @@ msgstr[1] "" "Následující soubor byl smazán z %2,\n" "a tím se na disku uvolnilo %3 %4 bajtů ukládacího prostoru" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3127 msgid "" "The following file was not in use and \n" "has been moved to: %2\n" @@ -1218,11 +1158,11 @@ msgstr[1] "" "\n" "uvolní se na disku dalších %3 %4 bajtů ukládacího prostoru.\n" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3187 msgid "Are you sure you want to clean-up?" msgstr "Jste si jistý, že chcete udÄ›lat pořádek?" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3194 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" @@ -1234,83 +1174,78 @@ msgstr "" "Po udÄ›lání pořádku budou vÅ¡echny nepoužívané a tudíž nepotÅ™ebné zvukové " "soubory pÅ™esunuty do \"mrtvého\" umístÄ›ní." -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3202 msgid "CleanupDialog" msgstr "Dialog vÄ›novaný dÄ›lání pořádku" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3232 msgid "Cleaned Files" msgstr "Uklizené soubory" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3249 msgid "deleted file" msgstr "smazané soubory" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3346 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" +"Videoserver nebyl spuÅ¡tÄ›n Ardourem. Požadavek na jeho zastavení se pÅ™ehlíží." -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3350 msgid "Stop Video-Server" -msgstr "" +msgstr "Zastavit videoserver" -#: ardour_ui.cc:3331 -#, fuzzy +#: ardour_ui.cc:3351 msgid "Do you really want to stop the Video Server?" -msgstr "Opravdu chcete odstranit %1 %2?" +msgstr "Opravdu chcete zastavit videoserver?" -#: ardour_ui.cc:3334 -#, fuzzy +#: ardour_ui.cc:3354 msgid "Yes, Stop It" -msgstr "Ano, odstranit." +msgstr "Ano, zastavit" -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3380 msgid "The Video Server is already started." -msgstr "" +msgstr "Videoserver je již spuÅ¡tÄ›n\n." -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3382 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" +"VnÄ›jší videoserver je nastaven a je dosažitelný. NespouÅ¡tí se nová instance." -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3390 ardour_ui.cc:3461 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" +"NepodaÅ™ilo se pÅ™ipojit k videoserveru. SpusÅ¥te jej nebo nastavte adresu pro " +"přístup " +"k nÄ›mu v Úpravy -> Nastavení." -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3414 msgid "Specified docroot is not an existing directory." -msgstr "" +msgstr "Zadaný koÅ™en dokumentu (docroot) není existujícím adresářem." -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3419 msgid "Given Video Server is not an executable file." -msgstr "" - -#: ardour_ui.cc:3432 -msgid "Cannot launch the video-server" -msgstr "" - -#: ardour_ui.cc:3441 -msgid "Video-server was started but does not respond to requests..." -msgstr "" +msgstr "Daný videoserver není spustitelným souborem." -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3485 editor_audio_import.cc:629 msgid "could not open %1" msgstr "\"%\" nelze otevřít" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3489 msgid "no video-file selected" -msgstr "" +msgstr "Nebyl vybrán žádný videosoubor" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3650 msgid "Recording was stopped because your system could not keep up." msgstr "" "Nahrávání bylo zastaveno, protože tomu nedostaÄovala rychlost vaÅ¡eho systému." -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3679 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1324,7 +1259,7 @@ msgstr "" "PÅ™esnÄ›ji Å™eÄeno nebylo možné dostateÄnÄ› rychle zapisovat data\n" "tak, aby se podaÅ™ilo udržet krok s nahráváním.\n" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3698 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1338,12 +1273,11 @@ msgstr "" "PÅ™esnÄ›ji Å™eÄeno nebylo možné dostateÄnÄ› rychle Äíst data\n" "tak, aby se podaÅ™ilo udržet krok s pÅ™ehráváním.\n" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3738 msgid "Crash Recovery" msgstr "Obnovení po havárii" -#: ardour_ui.cc:3730 -#, fuzzy +#: ardour_ui.cc:3739 msgid "" "This session appears to have been in the\n" "middle of recording when %1 or\n" @@ -1354,26 +1288,26 @@ msgid "" "what you would like to do.\n" msgstr "" "Zdá se, že toto sezení bylo pÅ™eruÅ¡eno bÄ›hem\n" -"nahrávání, když byl Ardour nebo\n" +"nahrávání, když byl %1 nebo\n" "poÄítaÄ zastaven.\n" "\n" "%1 pro vás může obnovit jakákoli zachycená\n" "zvuková data, nebo je odmítnout.\n" "RozhodnÄ›te se, prosím, jak chcete dále pokraÄovat.\n" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3751 msgid "Ignore crash data" msgstr "Odmítnout data" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3752 msgid "Recover from crash" msgstr "Obnovit data" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3772 msgid "Sample Rate Mismatch" msgstr "Vzorkovací kmitoÄet neodpovídá" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3773 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" @@ -1383,23 +1317,31 @@ msgstr "" "%2 nyní běží na %3 Hz. Pokud toto sezení nahrajete,\n" "je možné, že zvuk bude pÅ™ehráván pÅ™i nesprávném vzorkovacím kmitoÄtu.\n" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3782 msgid "Do not load session" msgstr "Projekt nenahrávat" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3783 msgid "Load session anyway" msgstr "Projekt pÅ™esto nahrát" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3804 msgid "Could not disconnect from JACK" msgstr "Nelze se odpojit od JACKa" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3817 msgid "Could not reconnect to JACK" msgstr "Nelze se znovu spojit s JACKem" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:3902 +msgid "Check the website for more..." +msgstr "Najít více na internetových stránkách..." + +#: ardour_ui.cc:3915 +msgid "Click to open the program website in your web browser" +msgstr "Klepnout pro otevÅ™ení stránek programu v prohlížeÄi" + +#: ardour_ui.cc:4152 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1413,6 +1355,17 @@ msgid "" "\n" "From now on, use the -2000 version with older versions of %3" msgstr "" +"%4 Toto je sezení ze starší verze %3%5\n" +"\n" +"%3 zkopíroval soubor se starým sezením\n" +"\n" +"%6%1%7\n" +"\n" +"do\n" +"\n" +"%6%2%7\n" +"\n" +"Od nynÄ›jÅ¡ka používejte verzi -2000 staršími verzemif %3" #: ardour_ui2.cc:72 msgid "UI: cannot setup editor" @@ -1422,35 +1375,35 @@ msgstr "Uživatelské rozhraní: editor nemohl být spuÅ¡tÄ›n." msgid "UI: cannot setup mixer" msgstr "Uživatelské rozhraní: směšovaÄ nemohl být spuÅ¡tÄ›n." -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:127 msgid "Play from playhead" msgstr "PÅ™ehrávat od ukazatele polohy pÅ™ehrávání" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:128 msgid "Stop playback" msgstr "Zastavit pÅ™ehrávání" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:129 msgid "Toggle record" msgstr "Spustit nahrávání" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:130 msgid "Play range/selection" msgstr "PÅ™ehrávat rozsah/výbÄ›r" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:131 msgid "Go to start of session" msgstr "PÅ™ejít na zaÄátek sezení" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:132 msgid "Go to end of session" msgstr "PÅ™ejít na konec sezení" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:133 msgid "Play loop range" msgstr "PÅ™ehrávat rozsah smyÄky" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:134 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" @@ -1458,23 +1411,23 @@ msgstr "" "Nouzové zastavení MIDI\n" "Poslat nota vypnuta a nastavit znovu zprávy ovladaÄe na vÅ¡ech kanálech MIDI" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:135 msgid "Return to last playback start when stopped" msgstr "PÅ™i zastavení se vrátit na zaÄátek posledního pÅ™ehrávání" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:136 msgid "Playhead follows Range Selections and Edits" msgstr "Ukazatele polohy následuje výbÄ›ry rozsahu a úpravy" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:137 msgid "Be sensible about input monitoring" msgstr "Spustit automatické sledování vstupu" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:138 msgid "Enable/Disable audio click" msgstr "Povolit/Zakázat slyÅ¡itelné klapnutí" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:139 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" @@ -1482,7 +1435,7 @@ msgstr "" "Je v Äinnosti pÅ™i sólovém pÅ™ehrávání nÄ›které ze stop.\n" "Pro vypnutí sóla klepnÄ›te." -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:140 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" @@ -1490,12 +1443,11 @@ msgstr "" "Je v Äinnosti pÅ™i poslechu.\n" "Klepnutím se poslech zastaví." -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:141 msgid "When active, there is a feedback loop." msgstr "Je-li v Äinnosti, je tu smyÄka se zpÄ›tnou vazbou." -#: ardour_ui2.cc:140 -#, fuzzy +#: ardour_ui2.cc:142 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1508,11 +1460,8 @@ msgstr "" "Úpravy textu: pÅ™epis zprava doleva Esc: zruÅ¡it; Enter: " "potvrdit; úpravy pÅ™ipojit '+' nebo '-' pro zadání Äasů delta (nárůst " "promÄ›nné).\n" -"Podrobnosti hledejte na http://ardour.org/" -"a3_features_clocks." -#: ardour_ui2.cc:141 -#, fuzzy +#: ardour_ui2.cc:143 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1525,38 +1474,36 @@ msgstr "" "Úpravy textu: pÅ™epis zprava doleva Esc: zruÅ¡it; Enter: " "potvrdit; úpravy pÅ™ipojit '+' nebo '-' pro zadání Äasů delta (nárůst " "promÄ›nné).\n" -"Podrobnosti hledejte na http://ardour.org/" -"a3_features_clocks." -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:175 msgid "[ERROR]: " msgstr "[CHYBA]:" -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:177 msgid "[WARNING]: " msgstr "[VAROVÃNÃ]:" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:179 msgid "[INFO]: " msgstr "[INFORMACE]: " -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:243 ardour_ui_ed.cc:417 msgid "Auto Return" msgstr "Automatický návrat" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:245 ardour_ui_ed.cc:420 msgid "Follow Edits" msgstr "Následovat úpravy" -#: ardour_ui2.cc:621 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 -#: 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 +#: ardour_ui2.cc:631 rc_option_editor.cc:1006 rc_option_editor.cc:1024 +#: rc_option_editor.cc:1027 rc_option_editor.cc:1029 rc_option_editor.cc:1031 +#: rc_option_editor.cc:1039 rc_option_editor.cc:1047 rc_option_editor.cc:1049 +#: rc_option_editor.cc:1057 rc_option_editor.cc:1064 rc_option_editor.cc:1073 +#: rc_option_editor.cc:1075 rc_option_editor.cc:1077 rc_option_editor.cc:1085 +#: rc_option_editor.cc:1087 rc_option_editor.cc:1096 +#: session_option_editor.cc:236 session_option_editor.cc:238 +#: session_option_editor.cc:259 session_option_editor.cc:261 +#: session_option_editor.cc:263 session_option_editor.cc:270 msgid "Misc" msgstr "Různé" @@ -1572,29 +1519,29 @@ msgstr "Nachystat směšovaÄ" msgid "Reload Session History" msgstr "Znovu nahrát průbÄ›h sezení" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dependents.cc:125 +msgid "This screen is not tall enough to display the mixer window" +msgstr "" +"Tato obrazovka není dostateÄnÄ› velká na to, aby zobrazila okno směšovaÄe" + +#: ardour_ui_dialogs.cc:225 msgid "Don't close" msgstr "Nezavírat" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:226 msgid "Just close" msgstr "Pouze zavřít" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:227 msgid "Save and close" msgstr "Uložit a zavřít" -#: ardour_ui_dialogs.cc:293 -msgid "This screen is not tall enough to display the mixer window" -msgstr "" -"Tato obrazovka není dostateÄnÄ› velká na to, aby zobrazila okno směšovaÄe" - #: ardour_ui_ed.cc:103 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:457 session_option_editor.cc:83 session_option_editor.cc:90 msgid "Sync" msgstr "Seřídit" @@ -1626,15 +1573,15 @@ msgstr "Typ souboru" msgid "Sample Format" msgstr "Vzorkovací formát" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 msgid "Control Surfaces" msgstr "Ovládací spínaÄe" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1552 msgid "Plugins" msgstr "Přídavné moduly" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1905 msgid "Metering" msgstr "Ukazatel hladiny" @@ -1662,7 +1609,7 @@ msgstr "Otevřít..." msgid "Recent..." msgstr "Naposledy použité..." -#: ardour_ui_ed.cc:127 panner_editor.cc:29 playlist_selector.cc:64 +#: ardour_ui_ed.cc:127 panner_editor.cc:29 playlist_selector.cc:65 msgid "Close" msgstr "Zavřít" @@ -1670,359 +1617,418 @@ msgstr "Zavřít" msgid "Add Track or Bus..." msgstr "PÅ™idat stopu nebo sbÄ›rnici..." -#: ardour_ui_ed.cc:135 -#, fuzzy +#: ardour_ui_ed.cc:136 msgid "Open Video" -msgstr "Otevřít sezení" +msgstr "Otevřít video" -#: ardour_ui_ed.cc:138 -#, fuzzy +#: ardour_ui_ed.cc:139 msgid "Remove Video" -msgstr "Odstranit rozsah" +msgstr "Odstranit video" -#: ardour_ui_ed.cc:141 -#, fuzzy +#: ardour_ui_ed.cc:142 msgid "Export To Video File" -msgstr "Vyvést jako zvukový soubor" +msgstr "Vyvést jako videosoubor" + +#: ardour_ui_ed.cc:152 +msgid "Connect" +msgstr "Spojit" -#: ardour_ui_ed.cc:145 +#: ardour_ui_ed.cc:158 msgid "Snapshot..." msgstr "Snímek obrazovky..." -#: ardour_ui_ed.cc:149 +#: ardour_ui_ed.cc:162 msgid "Save As..." msgstr "Uložit jako..." -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:166 editor_actions.cc:1717 editor_markers.cc:859 +#: editor_snapshots.cc:123 mixer_strip.cc:1465 route_time_axis.cc:1471 msgid "Rename..." msgstr "PÅ™ejmenovat..." -#: ardour_ui_ed.cc:157 +#: ardour_ui_ed.cc:170 msgid "Save Template..." msgstr "Uložit jako pÅ™edlohu..." -#: ardour_ui_ed.cc:160 +#: ardour_ui_ed.cc:173 msgid "Metadata" msgstr "Popisná data" -#: ardour_ui_ed.cc:163 +#: ardour_ui_ed.cc:176 msgid "Edit Metadata..." msgstr "Upravit popisná data..." -#: ardour_ui_ed.cc:166 +#: ardour_ui_ed.cc:179 msgid "Import Metadata..." msgstr "Zavést popisná data..." -#: ardour_ui_ed.cc:169 +#: ardour_ui_ed.cc:182 msgid "Export To Audio File(s)..." msgstr "Vyvést jako zvukový soubor(y)..." -#: ardour_ui_ed.cc:172 +#: ardour_ui_ed.cc:185 msgid "Stem export..." msgstr "Vyvést vybranou stopu jako jeden soubor..." -#: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: ardour_ui_ed.cc:188 editor_export_audio.cc:63 export_dialog.cc:129 msgid "Export" msgstr "Vyvést" -#: ardour_ui_ed.cc:178 +#: ardour_ui_ed.cc:191 msgid "Clean-up Unused Sources..." msgstr "Odstranit nepoužívané zdroje..." -#: ardour_ui_ed.cc:182 +#: ardour_ui_ed.cc:195 msgid "Flush Wastebasket" msgstr "Vyprázdnit koÅ¡" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: ardour_ui_ed.cc:202 keyeditor.cc:253 rc_option_editor.cc:1466 msgid "JACK" msgstr "JACK" -#: ardour_ui_ed.cc:190 route_params_ui.cc:104 +#: ardour_ui_ed.cc:203 route_params_ui.cc:104 msgid "Latency" msgstr "Prodleva" -#: ardour_ui_ed.cc:192 +#: ardour_ui_ed.cc:205 msgid "Reconnect" msgstr "PÅ™ipojit znovu" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 +#: ardour_ui_ed.cc:208 global_port_matrix.cc:198 io_selector.cc:210 #: mixer_strip.cc:712 mixer_strip.cc:838 msgid "Disconnect" msgstr "Odpojit" -#: ardour_ui_ed.cc:222 +#: ardour_ui_ed.cc:235 msgid "Quit" msgstr "UkonÄit" -#: ardour_ui_ed.cc:226 +#: ardour_ui_ed.cc:239 msgid "Maximise Editor Space" msgstr "ZvÄ›tÅ¡it okno editoru" -#: ardour_ui_ed.cc:227 +#: ardour_ui_ed.cc:240 msgid "Show Toolbars" msgstr "Ukázat nástrojové panely" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:243 mixer_ui.cc:1862 mixer_ui.cc:1868 msgid "Window|Mixer" msgstr "Okno/SměšovaÄ" -#: ardour_ui_ed.cc:231 -#, fuzzy -msgid "Toggle Editor+Mixer" -msgstr "Ukázat editor nebo mixér navrchu" +#: ardour_ui_ed.cc:244 +msgid "Mixer on Top" +msgstr "SměšovaÄ navrchu" + +#: ardour_ui_ed.cc:245 +msgid "Preferences" +msgstr "Nastavení" + +#: ardour_ui_ed.cc:246 +msgid "Properties" +msgstr "Vlastnosti" + +#: ardour_ui_ed.cc:247 route_params_ui.cc:57 route_params_ui.cc:604 +msgid "Tracks and Busses" +msgstr "Stopy a sbÄ›rnice" + +#: ardour_ui_ed.cc:250 location_ui.cc:1134 +msgid "Locations" +msgstr "Místa" + +#: ardour_ui_ed.cc:252 ardour_ui_ed.cc:656 +msgid "Big Clock" +msgstr "Velký ukazatel Äasu" + +#: ardour_ui_ed.cc:254 speaker_dialog.cc:36 +msgid "Speaker Configuration" +msgstr "Nastavení reproduktoru" + +#: ardour_ui_ed.cc:256 global_port_matrix.cc:164 +msgid "Audio Connection Manager" +msgstr "Správce zvukových spojení" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:258 global_port_matrix.cc:167 +msgid "MIDI Connection Manager" +msgstr "Správce MIDI spojení" + +#: ardour_ui_ed.cc:260 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "SledovaÄ MIDI" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:262 +msgid "About" +msgstr "O programu" + +#: ardour_ui_ed.cc:263 msgid "Chat" msgstr "Povídání" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:265 msgid "Help|Manual" msgstr "NápovÄ›da|PříruÄka" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:266 msgid "Reference" msgstr "Odkaz" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:267 theme_manager.cc:55 theme_manager.cc:62 +msgid "Theme Manager" +msgstr "Správce témat" + +#: ardour_ui_ed.cc:268 keyeditor.cc:53 +msgid "Key Bindings" +msgstr "Klávesové zkratky" + +#: ardour_ui_ed.cc:269 bundle_manager.cc:265 +msgid "Bundle Manager" +msgstr "Správce balíků" + +#: ardour_ui_ed.cc:272 +msgid "Add Audio Track" +msgstr "PÅ™idat zvukovou stopu" + +#: ardour_ui_ed.cc:274 +msgid "Add Audio Bus" +msgstr "PÅ™idat zvukovou sbÄ›rnici" + +#: ardour_ui_ed.cc:276 +msgid "Add MIDI Track" +msgstr "PÅ™idat MIDI stopu" + +#: ardour_ui_ed.cc:281 plugin_ui.cc:461 msgid "Save" msgstr "Uložit" -#: ardour_ui_ed.cc:248 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:289 rc_option_editor.cc:1116 rc_option_editor.cc:1127 +#: rc_option_editor.cc:1136 rc_option_editor.cc:1149 rc_option_editor.cc:1162 +#: rc_option_editor.cc:1171 rc_option_editor.cc:1181 rc_option_editor.cc:1183 +#: rc_option_editor.cc:1193 rc_option_editor.cc:1209 rc_option_editor.cc:1222 +#: rc_option_editor.cc:1240 rc_option_editor.cc:1242 rc_option_editor.cc:1256 +#: rc_option_editor.cc:1259 rc_option_editor.cc:1261 rc_option_editor.cc:1278 +#: rc_option_editor.cc:1289 msgid "Transport" msgstr "PÅ™esun" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:295 engine_dialog.cc:85 sfdb_ui.cc:559 msgid "Stop" msgstr "Zastavit" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:298 msgid "Roll" msgstr "ProjíždÄ›t" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:302 msgid "Start/Stop" msgstr "Spustit/Zastavit" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:305 msgid "Start/Continue/Stop" msgstr "Spustit/PokraÄovat/Zastavit" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:308 msgid "Stop and Forget Capture" msgstr "Zastavit a odmítnout zvukový záznam" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:318 msgid "Transition To Roll" msgstr "PÅ™ehrávat dopÅ™edu" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:322 msgid "Transition To Reverse" msgstr "PÅ™ehrávat dozadu" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:326 msgid "Play Loop Range" msgstr "PÅ™ehrávat rozsah smyÄky" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:329 msgid "Play Selected Range" msgstr "PÅ™ehrát vybraný rozsah" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:332 msgid "Play Selection w/Preroll" msgstr "PÅ™ehrávat vybranou oblast s pÅ™etáÄením vpÅ™ed" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:336 msgid "Enable Record" msgstr "Povolit nahrávání" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:339 msgid "Start Recording" msgstr "ZaÄít s nahráváním" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:343 msgid "Rewind" msgstr "PÅ™etoÄit zpÄ›t" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:346 msgid "Rewind (Slow)" msgstr "PÅ™etoÄit zpÄ›t (pomalu)" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:349 msgid "Rewind (Fast)" msgstr "PÅ™etoÄit zpÄ›t (rychle)" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:352 startup.cc:702 msgid "Forward" msgstr "PÅ™etoÄit vpÅ™ed" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:355 msgid "Forward (Slow)" msgstr "PÅ™etoÄit vpÅ™ed (pomalu)" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:358 msgid "Forward (Fast)" msgstr "PÅ™etoÄit vpÅ™ed (rychle)" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:361 msgid "Goto Zero" msgstr "SkoÄit k bodu nula" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:364 msgid "Goto Start" msgstr "SkoÄit na zaÄátek" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:367 msgid "Goto End" msgstr "SkoÄit na konec" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:370 msgid "Goto Wall Clock" msgstr "SkoÄit na pÅ™esný místní Äas" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:374 msgid "Focus On Clock" msgstr "ZaostÅ™it na ukazatel Äasu" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 -#: editor_actions.cc:544 editor_actions.cc:553 export_timespan_selector.cc:88 +#: ardour_ui_ed.cc:378 ardour_ui_ed.cc:387 audio_clock.cc:2046 editor.cc:241 +#: editor_actions.cc:544 editor_actions.cc:554 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 -#: session_option_editor.cc:109 session_option_editor.cc:122 -#: session_option_editor.cc:124 session_option_editor.cc:126 +#: session_option_editor.cc:80 session_option_editor.cc:98 +#: session_option_editor.cc:111 session_option_editor.cc:124 +#: session_option_editor.cc:126 session_option_editor.cc:128 msgid "Timecode" msgstr "ÄŒasový kód" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:380 ardour_ui_ed.cc:389 editor_actions.cc:542 msgid "Bars & Beats" msgstr "Takty & Doby" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:382 ardour_ui_ed.cc:391 msgid "Minutes & Seconds" msgstr "Minuty & Sekundy" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:384 ardour_ui_ed.cc:393 audio_clock.cc:2050 editor.cc:242 #: editor_actions.cc:543 msgid "Samples" msgstr "Vzorky" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:396 msgid "Punch In" msgstr "ZaÄít pÅ™epis oblasti" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:397 mixer_strip.cc:1905 route_ui.cc:132 #: time_info_box.cc:113 msgid "In" msgstr "Vstup" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:400 msgid "Punch Out" msgstr "UkonÄit pÅ™epis oblasti" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:401 time_info_box.cc:114 msgid "Out" msgstr "Výstup" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:404 msgid "Punch In/Out" msgstr "PÅ™epsat oblast" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:405 msgid "In/Out" msgstr "Vstup/Výstup" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:408 rc_option_editor.cc:1073 msgid "Click" msgstr "Klepnout" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:411 msgid "Auto Input" msgstr "Automatický vstup" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:414 msgid "Auto Play" msgstr "Automatické pÅ™ehrávání" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:425 msgid "Sync Startup to Video" msgstr "Seřídit spuÅ¡tÄ›ní s videem" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:427 msgid "Time Master" msgstr "Řízení Äasu" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:434 msgid "Toggle Record Enable Track %1" msgstr "Spustit nahrávání stopy %1" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:441 msgid "Percentage" msgstr "Procentní podíl" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:442 shuttle_control.cc:168 msgid "Semitones" msgstr "Polotóny" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:446 msgid "Send MTC" msgstr "Poslat MTC" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:448 msgid "Send MMC" msgstr "Poslat MMC" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:450 msgid "Use MMC" msgstr "Použít MMC" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:452 rc_option_editor.cc:1704 msgid "Send MIDI Clock" msgstr "Poslat Äas MIDI" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:454 msgid "Send MIDI Feedback" msgstr "Poslat zpÄ›tnou vazbu MIDI" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:460 msgid "Panic" msgstr "Nouzové zastavení" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:600 msgid "Wall Clock" msgstr "NástÄ›nné hodiny" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:601 msgid "Disk Space" msgstr "Místo na disku" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:602 msgid "DSP" msgstr "Digitální zpracování signálu (DSP)" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:603 msgid "Buffers" msgstr "Vyrovnávací pamÄ›ti" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:604 msgid "JACK Sampling Rate and Latency" msgstr "Vzorkovací kmitoÄet a prodleva JACK" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:605 msgid "Timecode Format" msgstr "Formát Äasového kódu" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:606 msgid "File Format" msgstr "Souborový formát" @@ -2038,11 +2044,11 @@ msgstr "" msgid "Internal" msgstr "VnitÅ™ní" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:475 msgid "Enable/Disable external positional sync" msgstr "Povolit/Zakázat vnÄ›jší seřízení podle polohy" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:477 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "Seřízení k JACKovi není možné: je nastaveno vytáhnutí/stáhnutí videa" @@ -2063,16 +2069,16 @@ msgstr "Táhnout" msgid "%+.4f%%" msgstr "%+.4f%%" -#: audio_clock.cc:1237 editor.cc:239 editor_actions.cc:135 +#: audio_clock.cc:1237 editor.cc:243 editor_actions.cc:135 #: editor_actions.cc:536 msgid "Tempo" msgstr "Tempo" -#: audio_clock.cc:1241 editor.cc:240 editor_actions.cc:537 +#: audio_clock.cc:1241 editor.cc:244 editor_actions.cc:537 msgid "Meter" msgstr "Druh taktu" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1037 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2083,7 +2089,7 @@ msgstr "Chyba v programování: %1" msgid "programming error: %1 %2" msgstr "Chyba v programování: %1 %2" -#: audio_clock.cc:2048 editor.cc:236 export_timespan_selector.cc:98 +#: audio_clock.cc:2048 editor.cc:240 export_timespan_selector.cc:98 msgid "Bars:Beats" msgstr "Takty:Doby" @@ -2161,32 +2167,32 @@ msgid "hide track" msgstr "Skrýt tuto stopu" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:452 +#: generic_pluginui.cc:729 panner_ui.cc:150 msgid "Automation|Manual" msgstr "Automatizace|PříruÄka" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 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:1957 editor.cc:2034 +#: editor_actions.cc:118 editor_actions.cc:1865 gain_meter.cc:198 +#: generic_pluginui.cc:455 generic_pluginui.cc:731 midi_time_axis.cc:1489 +#: midi_time_axis.cc:1492 midi_time_axis.cc:1495 panner_ui.cc:153 msgid "Play" msgstr "PÅ™ehrát" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:458 +#: generic_pluginui.cc:733 panner_ui.cc:156 msgid "Write" msgstr "Zapsat" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:461 +#: generic_pluginui.cc:735 panner_ui.cc:159 msgid "Touch" msgstr "Dotknout se" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:464 msgid "???" msgstr "???" @@ -2194,8 +2200,8 @@ msgstr "???" msgid "clear automation" msgstr "Vyprázdnit automatizaci" -#: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: automation_time_axis.cc:485 editor_actions.cc:616 editor_markers.cc:858 +#: location_ui.cc:55 plugin_selector.cc:86 route_time_axis.cc:699 msgid "Hide" msgstr "Skrýt" @@ -2211,67 +2217,68 @@ msgstr "Stav" msgid "Discrete" msgstr "Samostatný" -#: 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:1481 editor.cc:1488 editor.cc:1544 +#: editor.cc:1550 export_format_dialog.cc:476 msgid "Linear" msgstr "Čárový" #: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 -#: shuttle_control.cc:188 +#: shuttle_control.cc:187 msgid "Mode" msgstr "Režim" -#: bundle_manager.cc:181 +#: bundle_manager.cc:183 msgid "Disassociate" msgstr "OddÄ›lit" -#: bundle_manager.cc:185 +#: bundle_manager.cc:187 msgid "Edit Bundle" msgstr "Upravit balík" -#: bundle_manager.cc:200 +#: bundle_manager.cc:202 msgid "Direction:" msgstr "SmÄ›r:" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:207 bundle_manager.cc:211 mixer_strip.cc:156 +#: mixer_strip.cc:2133 msgid "Input" msgstr "Vstup" -#: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: bundle_manager.cc:208 bundle_manager.cc:213 bundle_manager.cc:247 +#: mixer_strip.cc:161 mixer_strip.cc:2136 msgid "Output" msgstr "Výstup" -#: bundle_manager.cc:264 editor.cc:1974 editor_actions.cc:90 +#: bundle_manager.cc:266 editor.cc:1998 editor_actions.cc:90 #: editor_actions.cc:100 msgid "Edit" msgstr "Upravit" -#: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 +#: bundle_manager.cc:267 editor.cc:5525 editor_actions.cc:310 +#: editor_actions.cc:368 plugin_ui.cc:462 processor_box.cc:2207 #: route_time_axis.cc:704 msgid "Delete" msgstr "Smazat" -#: bundle_manager.cc:271 bundle_manager.cc:439 editor_route_groups.cc:96 -#: editor_routes.cc:202 midi_list_editor.cc:106 session_metadata_dialog.cc:525 +#: bundle_manager.cc:273 bundle_manager.cc:441 editor_route_groups.cc:96 +#: editor_routes.cc:202 midi_list_editor.cc:106 rc_option_editor.cc:656 +#: session_metadata_dialog.cc:525 msgid "Name" msgstr "Název" -#: bundle_manager.cc:282 +#: bundle_manager.cc:284 msgid "New" msgstr "Nový" -#: bundle_manager.cc:332 +#: bundle_manager.cc:334 msgid "Bundle" msgstr "Balík" -#: bundle_manager.cc:417 +#: bundle_manager.cc:419 msgid "Add Channel" msgstr "PÅ™idat kanál" -#: bundle_manager.cc:424 +#: bundle_manager.cc:426 msgid "Rename Channel" msgstr "PÅ™ejmenovat kanál" @@ -2417,565 +2424,565 @@ msgid "Time" msgstr "ÄŒas" #: edit_note_dialog.cc:98 editor_regions.cc:114 -#: export_timespan_selector.cc:359 export_timespan_selector.cc:421 +#: export_timespan_selector.cc:361 export_timespan_selector.cc:425 #: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "Délka" -#: edit_note_dialog.cc:165 +#: edit_note_dialog.cc:168 msgid "edit note" msgstr "Upravit notu" -#: editor.cc:137 editor.cc:3429 +#: editor.cc:141 editor.cc:3455 msgid "CD Frames" msgstr "Snímky CD" -#: editor.cc:138 editor.cc:3431 +#: editor.cc:142 editor.cc:3457 msgid "Timecode Frames" msgstr "Snímky Äasového kódu" -#: editor.cc:139 editor.cc:3433 +#: editor.cc:143 editor.cc:3459 msgid "Timecode Seconds" msgstr "Sekundy Äasového kódu" -#: editor.cc:140 editor.cc:3435 +#: editor.cc:144 editor.cc:3461 msgid "Timecode Minutes" msgstr "Minuty Äasového kódu" -#: editor.cc:141 editor.cc:3437 +#: editor.cc:145 editor.cc:3463 msgid "Seconds" msgstr "Sekundy" -#: editor.cc:142 editor.cc:3439 +#: editor.cc:146 editor.cc:3465 msgid "Minutes" msgstr "Minuty" -#: editor.cc:143 editor.cc:3413 quantize_dialog.cc:37 quantize_dialog.cc:141 +#: editor.cc:147 editor.cc:3439 quantize_dialog.cc:37 quantize_dialog.cc:141 msgid "Beats/128" msgstr "Doby/128" -#: editor.cc:144 editor.cc:3411 quantize_dialog.cc:38 quantize_dialog.cc:143 +#: editor.cc:148 editor.cc:3437 quantize_dialog.cc:38 quantize_dialog.cc:143 msgid "Beats/64" msgstr "Doby/64" -#: editor.cc:145 editor.cc:3409 quantize_dialog.cc:39 quantize_dialog.cc:145 +#: editor.cc:149 editor.cc:3435 quantize_dialog.cc:39 quantize_dialog.cc:145 msgid "Beats/32" msgstr "Doby/32" -#: editor.cc:146 editor.cc:3407 +#: editor.cc:150 editor.cc:3433 msgid "Beats/28" msgstr "Doby/28" -#: editor.cc:147 editor.cc:3405 +#: editor.cc:151 editor.cc:3431 msgid "Beats/24" msgstr "Doby/24" -#: editor.cc:148 editor.cc:3403 +#: editor.cc:152 editor.cc:3429 msgid "Beats/20" msgstr "Doby/20" -#: editor.cc:149 editor.cc:3401 quantize_dialog.cc:40 quantize_dialog.cc:147 +#: editor.cc:153 editor.cc:3427 quantize_dialog.cc:40 quantize_dialog.cc:147 msgid "Beats/16" msgstr "Doby/16" -#: editor.cc:150 editor.cc:3399 +#: editor.cc:154 editor.cc:3425 msgid "Beats/14" msgstr "Doby/14" -#: editor.cc:151 editor.cc:3397 +#: editor.cc:155 editor.cc:3423 msgid "Beats/12" msgstr "Doby/12" -#: editor.cc:152 editor.cc:3395 +#: editor.cc:156 editor.cc:3421 msgid "Beats/10" msgstr "Doby/10" -#: editor.cc:153 editor.cc:3393 quantize_dialog.cc:41 quantize_dialog.cc:149 +#: editor.cc:157 editor.cc:3419 quantize_dialog.cc:41 quantize_dialog.cc:149 msgid "Beats/8" msgstr "Doby/8" -#: editor.cc:154 editor.cc:3391 +#: editor.cc:158 editor.cc:3417 msgid "Beats/7" msgstr "Doby/7" -#: editor.cc:155 editor.cc:3389 +#: editor.cc:159 editor.cc:3415 msgid "Beats/6" msgstr "Doby/6" -#: editor.cc:156 editor.cc:3387 +#: editor.cc:160 editor.cc:3413 msgid "Beats/5" msgstr "Doby/5" -#: editor.cc:157 editor.cc:3385 quantize_dialog.cc:42 quantize_dialog.cc:151 +#: editor.cc:161 editor.cc:3411 quantize_dialog.cc:42 quantize_dialog.cc:151 msgid "Beats/4" msgstr "Doby/4" -#: editor.cc:158 editor.cc:3383 quantize_dialog.cc:43 quantize_dialog.cc:153 +#: editor.cc:162 editor.cc:3409 quantize_dialog.cc:43 quantize_dialog.cc:153 msgid "Beats/3" msgstr "Doby/3" -#: editor.cc:159 editor.cc:3381 quantize_dialog.cc:44 quantize_dialog.cc:155 +#: editor.cc:163 editor.cc:3407 quantize_dialog.cc:44 quantize_dialog.cc:155 msgid "Beats/2" msgstr "Doby/2" -#: editor.cc:160 editor.cc:3415 quantize_dialog.cc:45 quantize_dialog.cc:157 +#: editor.cc:164 editor.cc:3441 quantize_dialog.cc:45 quantize_dialog.cc:157 msgid "Beats" msgstr "Doby" -#: editor.cc:161 editor.cc:3417 +#: editor.cc:165 editor.cc:3443 msgid "Bars" msgstr "Takty" -#: editor.cc:162 editor.cc:3419 +#: editor.cc:166 editor.cc:3445 msgid "Marks" msgstr "ZnaÄky" -#: editor.cc:163 editor.cc:3421 +#: editor.cc:167 editor.cc:3447 msgid "Region starts" msgstr "ZaÄátek oblasti" -#: editor.cc:164 editor.cc:3423 +#: editor.cc:168 editor.cc:3449 msgid "Region ends" msgstr "Konec oblasti" -#: editor.cc:165 editor.cc:3427 +#: editor.cc:169 editor.cc:3453 msgid "Region syncs" msgstr "Seřízení oblasti" -#: editor.cc:166 editor.cc:3425 +#: editor.cc:170 editor.cc:3451 msgid "Region bounds" msgstr "Hranice oblasti" -#: editor.cc:171 editor.cc:3455 editor_actions.cc:485 +#: editor.cc:175 editor.cc:3481 editor_actions.cc:485 msgid "No Grid" msgstr "Mřížka vypnuta" -#: editor.cc:172 editor.cc:3457 editor_actions.cc:486 +#: editor.cc:176 editor.cc:3483 editor_actions.cc:486 msgid "Grid" msgstr "Mřížka zapnuta" -#: editor.cc:173 editor.cc:3459 editor_actions.cc:487 +#: editor.cc:177 editor.cc:3485 editor_actions.cc:487 msgid "Magnetic" msgstr "Magnetická" -#: editor.cc:178 editor.cc:188 editor.cc:3498 editor.cc:3523 +#: editor.cc:182 editor.cc:192 editor.cc:3524 editor.cc:3549 #: editor_actions.cc:117 editor_actions.cc:468 msgid "Playhead" msgstr "Ukazatel polohy" -#: editor.cc:179 editor.cc:3496 editor_actions.cc:470 +#: editor.cc:183 editor.cc:3522 editor_actions.cc:470 msgid "Marker" msgstr "ZnaÄka" -#: editor.cc:180 editor.cc:189 editor.cc:3525 editor_actions.cc:469 +#: editor.cc:184 editor.cc:193 editor.cc:3551 editor_actions.cc:469 msgid "Mouse" msgstr "MyÅ¡" -#: editor.cc:185 editor.cc:3517 mono_panner_editor.cc:42 +#: editor.cc:189 editor.cc:3543 mono_panner_editor.cc:42 msgid "Left" msgstr "Vlevo" -#: editor.cc:186 editor.cc:3519 mono_panner_editor.cc:47 +#: editor.cc:190 editor.cc:3545 mono_panner_editor.cc:47 msgid "Right" msgstr "Vpravo" -#: editor.cc:187 editor.cc:3521 +#: editor.cc:191 editor.cc:3547 msgid "Center" msgstr "Na stÅ™ed" -#: editor.cc:190 editor.cc:3090 editor.cc:3527 +#: editor.cc:194 editor.cc:3114 editor.cc:3553 msgid "Edit point" msgstr "Pracovní bod" -#: editor.cc:196 +#: editor.cc:200 msgid "Mushy" msgstr "RuÅ¡ený" -#: editor.cc:197 +#: editor.cc:201 msgid "Smooth" msgstr "Plynulý" -#: editor.cc:198 +#: editor.cc:202 msgid "Balanced multitimbral mixture" msgstr "Vyvážená vícehlasá smÄ›s" -#: editor.cc:199 +#: editor.cc:203 msgid "Unpitched percussion with stable notes" msgstr "Atonální nárazy se stálými tóny" -#: editor.cc:200 +#: editor.cc:204 msgid "Crisp monophonic instrumental" msgstr "Jemná jednokanálová nástrojová hudba" -#: editor.cc:201 +#: editor.cc:205 msgid "Unpitched solo percussion" msgstr "Atonální samostatné nárazy" -#: editor.cc:202 +#: editor.cc:206 msgid "Resample without preserving pitch" msgstr "PÅ™evzorkovat bez zachování výšky tónu" -#: editor.cc:235 +#: editor.cc:239 msgid "Mins:Secs" msgstr "Min:Sec" -#: editor.cc:241 +#: editor.cc:245 msgid "Location Markers" msgstr "ZnaÄky polohy" -#: editor.cc:242 +#: editor.cc:246 msgid "Range Markers" msgstr "ZnaÄky rozsahů" -#: editor.cc:243 +#: editor.cc:247 msgid "Loop/Punch Ranges" msgstr "Rozsahy smyÄky/pÅ™epsání" -#: editor.cc:244 editor_actions.cc:540 +#: editor.cc:248 editor_actions.cc:540 msgid "CD Markers" msgstr "ZnaÄky na CD" -#: editor.cc:245 +#: editor.cc:250 msgid "Video Timeline" -msgstr "" +msgstr "ÄŒasová osa videa" -#: editor.cc:260 +#: editor.cc:266 msgid "mode" msgstr "Režim" -#: editor.cc:542 +#: editor.cc:554 msgid "Regions" msgstr "Oblasti" -#: editor.cc:543 +#: editor.cc:555 msgid "Tracks & Busses" msgstr "Stopy & SbÄ›rnice" -#: editor.cc:544 +#: editor.cc:556 msgid "Snapshots" msgstr "Snímky obrazovky" -#: editor.cc:545 +#: editor.cc:557 msgid "Track & Bus Groups" msgstr "Skupiny stopy a sbÄ›rnice" -#: editor.cc:546 +#: editor.cc:558 msgid "Ranges & Marks" msgstr "Rozsahy a znaÄky" -#: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 -#: 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:1434 -#: rc_option_editor.cc:1438 +#: editor.cc:702 editor.cc:5376 rc_option_editor.cc:1296 +#: rc_option_editor.cc:1304 rc_option_editor.cc:1312 rc_option_editor.cc:1329 +#: rc_option_editor.cc:1331 rc_option_editor.cc:1339 rc_option_editor.cc:1347 +#: rc_option_editor.cc:1367 rc_option_editor.cc:1379 rc_option_editor.cc:1381 +#: rc_option_editor.cc:1389 rc_option_editor.cc:1397 rc_option_editor.cc:1405 +#: rc_option_editor.cc:1413 rc_option_editor.cc:1421 rc_option_editor.cc:1436 +#: rc_option_editor.cc:1440 msgid "Editor" msgstr "Editor" -#: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor.cc:1239 editor.cc:1249 editor.cc:4471 editor_actions.cc:130 +#: editor_actions.cc:1813 msgid "Loop" msgstr "SmyÄka" -#: editor.cc:1231 editor.cc:1241 editor.cc:4467 editor_actions.cc:131 +#: editor.cc:1255 editor.cc:1265 editor.cc:4498 editor_actions.cc:131 #: time_info_box.cc:67 msgid "Punch" msgstr "PÅ™epsání" -#: editor.cc:1352 +#: editor.cc:1376 msgid "Linear (for highly correlated material)" msgstr "Lineární (pro vysoce souvztažný materiál)" -#: editor.cc:1362 editor.cc:1499 editor.cc:1561 +#: editor.cc:1386 editor.cc:1523 editor.cc:1585 msgid "Constant power" msgstr "NemÄ›nná síla" -#: editor.cc:1371 editor.cc:1492 editor.cc:1554 +#: editor.cc:1395 editor.cc:1516 editor.cc:1578 msgid "Symmetric" msgstr "SoumÄ›rný" -#: editor.cc:1381 editor.cc:1474 editor.cc:1536 +#: editor.cc:1405 editor.cc:1498 editor.cc:1560 msgid "Slow" msgstr "Pomalu" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 +#: editor.cc:1414 editor.cc:1507 editor.cc:1569 sfdb_ui.cc:1606 #: sfdb_ui.cc:1715 msgid "Fast" msgstr "Rychle" -#: editor.cc:1437 +#: editor.cc:1461 msgid "programming error: fade in canvas item has no regionview data pointer!" msgstr "" "Chyba v programování: položka plátna postupné zesílení signálu nemá žádný " "ukazatel dat pohledu na oblast!" -#: editor.cc:1448 editor.cc:1512 +#: editor.cc:1472 editor.cc:1536 msgid "Deactivate" msgstr "Zastavit" -#: editor.cc:1450 editor.cc:1514 +#: editor.cc:1474 editor.cc:1538 msgid "Activate" msgstr "Spustit" -#: editor.cc:1458 editor.cc:1521 +#: editor.cc:1482 editor.cc:1545 msgid "Slowest" msgstr "Velmi pomalu" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1596 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "Chyba v programování:" -#: editor.cc:1673 editor.cc:1681 editor_ops.cc:3522 +#: editor.cc:1697 editor.cc:1705 editor_ops.cc:3523 msgid "Freeze" msgstr "Zmrazit" -#: editor.cc:1677 +#: editor.cc:1701 msgid "Unfreeze" msgstr "Rozmrazit" -#: editor.cc:1816 +#: editor.cc:1840 msgid "Selected Regions" msgstr "Vybrané oblasti" -#: editor.cc:1852 editor_markers.cc:895 +#: editor.cc:1876 editor_markers.cc:896 msgid "Play Range" msgstr "PÅ™ehrávat rozsah" -#: editor.cc:1853 editor_markers.cc:898 +#: editor.cc:1877 editor_markers.cc:899 msgid "Loop Range" msgstr "PÅ™ehrávat rozsah smyÄky" -#: editor.cc:1862 editor_actions.cc:332 +#: editor.cc:1886 editor_actions.cc:332 msgid "Move Range Start to Previous Region Boundary" msgstr "PÅ™esunout zaÄátek rozsahu na pÅ™edchozí hranici oblasti" -#: editor.cc:1869 editor_actions.cc:339 +#: editor.cc:1893 editor_actions.cc:339 msgid "Move Range Start to Next Region Boundary" msgstr "PÅ™esunout zaÄátek rozsahu na další hranici oblasti" -#: editor.cc:1876 editor_actions.cc:346 +#: editor.cc:1900 editor_actions.cc:346 msgid "Move Range End to Previous Region Boundary" msgstr "PÅ™esunout konec rozsahu na pÅ™edchozí hranici oblasti" -#: editor.cc:1883 editor_actions.cc:353 +#: editor.cc:1907 editor_actions.cc:353 msgid "Move Range End to Next Region Boundary" msgstr "PÅ™esunout konec rozsahu na další hranici oblasti" -#: editor.cc:1889 +#: editor.cc:1913 msgid "Convert to Region In-Place" msgstr "PÅ™evést na oblast v místÄ›" -#: editor.cc:1890 +#: editor.cc:1914 msgid "Convert to Region in Region List" msgstr "PÅ™evést na oblast v seznamu oblastí" -#: editor.cc:1893 editor_markers.cc:925 +#: editor.cc:1917 editor_markers.cc:926 msgid "Select All in Range" msgstr "Vybrat vÅ¡e v rozsahu" -#: editor.cc:1896 +#: editor.cc:1920 msgid "Set Loop from Range" msgstr "Zřídit smyÄku z rozsahu" -#: editor.cc:1897 +#: editor.cc:1921 msgid "Set Punch from Range" msgstr "Zřídit oblast pÅ™epsání z rozsahu" -#: editor.cc:1900 +#: editor.cc:1924 msgid "Add Range Markers" msgstr "Vložit znaÄky rozsahu" -#: editor.cc:1903 +#: editor.cc:1927 msgid "Crop Region to Range" msgstr "Zkrátit oblast na rozsah" -#: editor.cc:1904 +#: editor.cc:1928 msgid "Fill Range with Region" msgstr "Vyplnit rozsah oblastí" -#: editor.cc:1905 editor_actions.cc:289 +#: editor.cc:1929 editor_actions.cc:289 msgid "Duplicate Range" msgstr "Zdvojit rozsah" -#: editor.cc:1908 +#: editor.cc:1932 msgid "Consolidate Range" msgstr "Sjednotit rozsah" -#: editor.cc:1909 +#: editor.cc:1933 msgid "Consolidate Range With Processing" msgstr "Sjednotit rozsah se zpracováním" -#: editor.cc:1910 +#: editor.cc:1934 msgid "Bounce Range to Region List" msgstr "Vrazit rozsah do seznamu oblastí" -#: editor.cc:1911 +#: editor.cc:1935 msgid "Bounce Range to Region List With Processing" msgstr "Vrazit rozsah do seznamu oblastí se zpracováním" -#: editor.cc:1912 editor_markers.cc:908 +#: editor.cc:1936 editor_markers.cc:909 msgid "Export Range..." msgstr "Vyvést rozsah..." -#: editor.cc:1927 editor.cc:2008 editor_actions.cc:281 +#: editor.cc:1951 editor.cc:2032 editor_actions.cc:281 msgid "Play From Edit Point" msgstr "PÅ™ehrávat od pracovního bodu" -#: editor.cc:1928 editor.cc:2009 +#: editor.cc:1952 editor.cc:2033 msgid "Play From Start" msgstr "PÅ™ehrávat od zaÄátku" -#: editor.cc:1929 +#: editor.cc:1953 msgid "Play Region" msgstr "PÅ™ehrávat oblast" -#: editor.cc:1931 +#: editor.cc:1955 msgid "Loop Region" msgstr "PÅ™ehrávat oblast ve smyÄce" -#: editor.cc:1941 editor.cc:2018 +#: editor.cc:1965 editor.cc:2042 msgid "Select All in Track" msgstr "Vybrat vÅ¡e ve stopÄ›" -#: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: editor.cc:1966 editor.cc:2043 editor_actions.cc:185 +#: export_timespan_selector.cc:53 processor_box.cc:2215 msgid "Select All" msgstr "Vybrat vÅ¡e" -#: editor.cc:1943 editor.cc:2020 +#: editor.cc:1967 editor.cc:2044 msgid "Invert Selection in Track" msgstr "Obrátit výbÄ›r ve stopÄ›" -#: editor.cc:1944 editor.cc:2021 editor_actions.cc:187 +#: editor.cc:1968 editor.cc:2045 editor_actions.cc:187 msgid "Invert Selection" msgstr "Obrátit výbÄ›r" -#: editor.cc:1946 +#: editor.cc:1970 msgid "Set Range to Loop Range" msgstr "Nastavit vybraný rozsah jako rozsah smyÄky" -#: editor.cc:1947 +#: editor.cc:1971 msgid "Set Range to Punch Range" msgstr "Nastavit vybraný rozsah jako rozsah pÅ™epsání" -#: editor.cc:1949 editor.cc:2023 editor_actions.cc:188 +#: editor.cc:1973 editor.cc:2047 editor_actions.cc:188 msgid "Select All After Edit Point" msgstr "Vybrat vÅ¡echny oblasti po pracovním bodÄ›" -#: editor.cc:1950 editor.cc:2024 editor_actions.cc:189 +#: editor.cc:1974 editor.cc:2048 editor_actions.cc:189 msgid "Select All Before Edit Point" msgstr "Vybrat vÅ¡echny oblasti pÅ™ed pracovním bodem" -#: editor.cc:1951 editor.cc:2025 +#: editor.cc:1975 editor.cc:2049 msgid "Select All After Playhead" msgstr "Vybrat vÅ¡echny oblasti po ukazateli polohy" -#: editor.cc:1952 editor.cc:2026 +#: editor.cc:1976 editor.cc:2050 msgid "Select All Before Playhead" msgstr "Vybrat vÅ¡echny oblasti pÅ™ed ukazatelem polohy" -#: editor.cc:1953 +#: editor.cc:1977 msgid "Select All Between Playhead and Edit Point" msgstr "Vybrat vÅ¡echny oblasti mezi ukazatelem polohy a pracovním bodem" -#: editor.cc:1954 +#: editor.cc:1978 msgid "Select All Within Playhead and Edit Point" msgstr "Vybrat vÅ¡echny oblasti v rámci ukazatele polohy a pracovním bodem" -#: editor.cc:1955 +#: editor.cc:1979 msgid "Select Range Between Playhead and Edit Point" msgstr "Vybrat rozsah mezi ukazatelem polohy a pracovním bodem" -#: editor.cc:1957 editor.cc:2028 editor_actions.cc:127 editor_actions.cc:128 +#: editor.cc:1981 editor.cc:2052 editor_actions.cc:127 editor_actions.cc:128 msgid "Select" msgstr "Vybrat" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1989 editor.cc:2060 editor_actions.cc:309 processor_box.cc:2200 msgid "Cut" msgstr "Vyjmout" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1990 editor.cc:2061 editor_actions.cc:312 processor_box.cc:2203 msgid "Copy" msgstr "Kopírovat" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1991 editor.cc:2062 editor_actions.cc:313 processor_box.cc:2211 msgid "Paste" msgstr "Vložit" -#: editor.cc:1971 editor_actions.cc:87 +#: editor.cc:1995 editor_actions.cc:87 msgid "Align" msgstr "Zarovnat" -#: editor.cc:1972 +#: editor.cc:1996 msgid "Align Relative" msgstr "Zarovnat pomÄ›rnÄ›" -#: editor.cc:1979 +#: editor.cc:2003 msgid "Insert Selected Region" msgstr "Vložit vybranou oblast" -#: editor.cc:1980 +#: editor.cc:2004 msgid "Insert Existing Media" msgstr "Vložit stávající zvukové soubory" -#: editor.cc:1989 editor.cc:2045 +#: editor.cc:2013 editor.cc:2069 msgid "Nudge Entire Track Later" msgstr "PostrÄit celou stopu o krok pozdÄ›ji" -#: editor.cc:1990 editor.cc:2046 +#: editor.cc:2014 editor.cc:2070 msgid "Nudge Track After Edit Point Later" msgstr "PostrÄit stopu po pracovním bodu o krok pozdÄ›ji" -#: editor.cc:1991 editor.cc:2047 +#: editor.cc:2015 editor.cc:2071 msgid "Nudge Entire Track Earlier" msgstr "PostrÄit celou stopu o krok dříve" -#: editor.cc:1992 editor.cc:2048 +#: editor.cc:2016 editor.cc:2072 msgid "Nudge Track After Edit Point Earlier" msgstr "PostrÄit stopu po pracovním bodu o krok dříve" -#: editor.cc:1994 editor.cc:2050 +#: editor.cc:2018 editor.cc:2074 msgid "Nudge" msgstr "PostrÄit" -#: editor.cc:3070 +#: editor.cc:3094 msgid "Smart Mode (add Range functions to Object mode)" msgstr "Chytrý režim (pÅ™idat funkce rozsahu do pÅ™edmÄ›tového režimu)" -#: editor.cc:3071 +#: editor.cc:3095 msgid "Object Mode (select/move Objects)" msgstr "PÅ™edmÄ›tový režim (Vybrat/Posunout pÅ™edmÄ›ty)" -#: editor.cc:3072 +#: editor.cc:3096 msgid "Range Mode (select/move Ranges)" msgstr "Rozsahový režim (Vybrat/Posunout rozsahy)" -#: editor.cc:3073 +#: editor.cc:3097 msgid "Draw/Edit MIDI Notes" msgstr "Kreslit/Upravit noty MIDI" -#: editor.cc:3074 +#: editor.cc:3098 msgid "Draw Region Gain" msgstr "Nakreslit sílu hlasitosti v oblasti" -#: editor.cc:3075 +#: editor.cc:3099 msgid "Select Zoom Range" msgstr "Vybrat rozsah pro pÅ™iblížení a oddálení" -#: editor.cc:3076 +#: editor.cc:3100 msgid "Stretch/Shrink Regions and MIDI Notes" msgstr "Protáhnout/ZmenÅ¡it oblasti a noty MIDI" -#: editor.cc:3077 +#: editor.cc:3101 msgid "Listen to Specific Regions" msgstr "Poslouchat vybrané oblasti" -#: editor.cc:3078 +#: editor.cc:3102 msgid "Note Level Editing" msgstr "Upravit na úrovni not" -#: editor.cc:3079 +#: editor.cc:3103 msgid "" "Groups: click to (de)activate\n" "Context-click for other operations" @@ -2983,51 +2990,51 @@ msgstr "" "Skupiny: klepnout pro zapnutí/vypnutí\n" "Klepnutí na související nabídku pro jiné operace" -#: editor.cc:3080 +#: editor.cc:3104 msgid "Nudge Region/Selection Later" msgstr "PostrÄit oblast/výbÄ›r o krok pozdÄ›ji" -#: editor.cc:3081 +#: editor.cc:3105 msgid "Nudge Region/Selection Earlier" msgstr "PostrÄit oblast/výbÄ›r o krok dříve" -#: editor.cc:3082 editor_actions.cc:242 +#: editor.cc:3106 editor_actions.cc:242 msgid "Zoom In" msgstr "PÅ™iblížit" -#: editor.cc:3083 editor_actions.cc:241 +#: editor.cc:3107 editor_actions.cc:241 msgid "Zoom Out" msgstr "Oddálit" -#: editor.cc:3084 editor_actions.cc:243 +#: editor.cc:3108 editor_actions.cc:243 msgid "Zoom to Session" msgstr "Pohled na celé sezení" -#: editor.cc:3085 +#: editor.cc:3109 msgid "Zoom focus" msgstr "Pohled na stÅ™ed" -#: editor.cc:3086 +#: editor.cc:3110 msgid "Expand Tracks" msgstr "Rozbalit stopy" -#: editor.cc:3087 +#: editor.cc:3111 msgid "Shrink Tracks" msgstr "ZmenÅ¡it stopy" -#: editor.cc:3088 +#: editor.cc:3112 msgid "Snap/Grid Units" msgstr "Jednotky zapadnutí/mřížky" -#: editor.cc:3089 +#: editor.cc:3113 msgid "Snap/Grid Mode" msgstr "Režim zapadnutí/mřížky" -#: editor.cc:3091 +#: editor.cc:3115 msgid "Edit Mode" msgstr "Režim úprav" -#: editor.cc:3092 +#: editor.cc:3116 msgid "" "Nudge Clock\n" "(controls distance used to nudge regions and selections)" @@ -3035,39 +3042,39 @@ msgstr "" "Hodiny postrÄení\n" "(řídí vzdálenost použitou k postrÄení oblastí a výbÄ›rů)" -#: editor.cc:3194 +#: editor.cc:3218 msgid "malformed URL passed to drag-n-drop code" msgstr "Neplatná adresa (URL) pÅ™edaná kódu \"táhni a pusÅ¥\"" -#: editor.cc:3256 editor_actions.cc:291 +#: editor.cc:3280 editor_actions.cc:291 msgid "Command|Undo" msgstr "Příkaz|ZpÄ›t" -#: editor.cc:3258 +#: editor.cc:3282 msgid "Command|Undo (%1)" msgstr "Příkaz|ZpÄ›t (%1)" -#: editor.cc:3265 editor_actions.cc:292 +#: editor.cc:3289 editor_actions.cc:292 msgid "Redo" msgstr "Znovu" -#: editor.cc:3267 +#: editor.cc:3291 msgid "Redo (%1)" msgstr "Znovu (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3310 editor.cc:3334 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "Zdvojit" -#: editor.cc:3287 +#: editor.cc:3311 msgid "Number of duplications:" msgstr "PoÄet zdvojení:" -#: editor.cc:3864 +#: editor.cc:3890 msgid "Playlist Deletion" msgstr "Smazání seznamu skladeb" -#: editor.cc:3865 +#: editor.cc:3891 msgid "" "Playlist %1 is currently unused.\n" "If it is kept, its audio files will not be cleaned.\n" @@ -3078,36 +3085,36 @@ msgstr "" "používány.\n" "Jestliže se smaže, budou jím používané zvukové soubory smazány." -#: editor.cc:3875 +#: editor.cc:3901 msgid "Delete Playlist" msgstr "Smazat seznam skladeb" -#: editor.cc:3876 +#: editor.cc:3902 msgid "Keep Playlist" msgstr "Ponechat seznam skladeb" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3903 editor_audio_import.cc:579 editor_ops.cc:5860 +#: processor_box.cc:1953 processor_box.cc:1978 msgid "Cancel" msgstr "ZruÅ¡it" -#: editor.cc:4021 +#: editor.cc:4047 msgid "new playlists" msgstr "Nový seznam skladeb" -#: editor.cc:4037 +#: editor.cc:4063 msgid "copy playlists" msgstr "Kopírovat seznam skladeb" -#: editor.cc:4052 +#: editor.cc:4078 msgid "clear playlists" msgstr "Vyprázdnit seznam skladeb" -#: editor.cc:4687 +#: editor.cc:4718 msgid "Please wait while %1 loads visual data." msgstr "PoÄkejte, prosím, zatímco %1 nahrává vizuální data." -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5524 editor_markers.cc:941 panner_ui.cc:393 processor_box.cc:2231 msgid "Edit..." msgstr "Upravit..." @@ -3156,7 +3163,7 @@ msgstr "Vrstvení" msgid "Position" msgstr "Poloha" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:123 gain_meter.cc:754 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "UstÅ™ihnout" @@ -3169,9 +3176,9 @@ msgstr "Zesílení signálu" msgid "Ranges" msgstr "Rozsahy" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 -#: session_option_editor.cc:147 session_option_editor.cc:156 -#: session_option_editor.cc:163 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:147 +#: session_option_editor.cc:149 session_option_editor.cc:158 +#: session_option_editor.cc:165 msgid "Fades" msgstr "Slábnutí" @@ -3199,7 +3206,7 @@ msgstr "Klesání ukazatele hladiny" msgid "Meter hold" msgstr "Držení ukazatele hladiny" -#: editor_actions.cc:113 session_option_editor.cc:234 +#: editor_actions.cc:113 session_option_editor.cc:236 msgid "MIDI Options" msgstr "Volby pro MIDI" @@ -3207,8 +3214,8 @@ msgstr "Volby pro MIDI" msgid "Misc Options" msgstr "Různé volby" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 -#: session_option_editor.cc:218 session_option_editor.cc:225 +#: editor_actions.cc:115 rc_option_editor.cc:1454 route_group_dialog.cc:48 +#: session_option_editor.cc:220 session_option_editor.cc:227 msgid "Monitoring" msgstr "Sledování" @@ -3248,7 +3255,7 @@ msgstr "Vedlejší údaj o Äase" msgid "Separate" msgstr "RozdÄ›lit" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 +#: editor_actions.cc:132 mixer_strip.cc:1917 route_time_axis.cc:199 #: route_time_axis.cc:2397 msgid "Solo" msgstr "Sólo" @@ -3385,7 +3392,7 @@ msgstr "Ukazatele polohy na zaÄátek rozsahu výbÄ›ru" msgid "Playhead to Range End" msgstr "Ukazatele polohy na konec rozsahu výbÄ›ru" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2217 msgid "Deselect All" msgstr "OdznaÄit vÅ¡e" @@ -3653,8 +3660,8 @@ msgstr "Vložit ticho" msgid "Toggle Active" msgstr "Spustit/Zastavit stopu" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 +#: editor_actions.cc:370 editor_actions.cc:1714 editor_markers.cc:877 +#: editor_markers.cc:942 editor_snapshots.cc:121 mixer_strip.cc:1489 #: route_time_axis.cc:701 msgid "Remove" msgstr "Odstranit" @@ -3671,11 +3678,11 @@ msgstr "NejvÄ›tší" msgid "Larger" msgstr "VÄ›tší" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:378 time_axis_view.cc:1300 msgid "Large" msgstr "Velká" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:382 time_axis_view.cc:1302 msgid "Small" msgstr "Malá" @@ -3771,8 +3778,8 @@ msgstr "Slepit" msgid "Slide" msgstr "Vsunout" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 -#: editor_rulers.cc:386 location_ui.cc:56 +#: editor_actions.cc:478 editor_actions.cc:1735 editor_markers.cc:861 +#: editor_rulers.cc:389 location_ui.cc:56 msgid "Lock" msgstr "Zamknout" @@ -3940,438 +3947,431 @@ msgstr "Oblasti smyÄky/pÅ™epsání" msgid "Min:Sec" msgstr "Min:Sek" -#: editor_actions.cc:547 editor_actions.cc:550 -#, fuzzy +#: editor_actions.cc:548 editor_actions.cc:551 msgid "Video Monitor" -msgstr "Sledování" +msgstr "Sledování videa" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:550 rc_option_editor.cc:1837 msgid "Video" -msgstr "" +msgstr "Video" -#: editor_actions.cc:552 -#, fuzzy +#: editor_actions.cc:553 msgid "Always on Top" -msgstr "Pozvednout zcela nahoru" +msgstr "Vždy nahoÅ™e" -#: editor_actions.cc:554 -#, fuzzy +#: editor_actions.cc:555 msgid "Framenumber" -msgstr "Režim stopy" +msgstr "Číslo snímku" -#: editor_actions.cc:555 -#, fuzzy +#: editor_actions.cc:556 msgid "Timecode Background" -msgstr "Sekundy Äasového kódu" +msgstr "Pozadí Äasového kódu" -#: editor_actions.cc:556 -#, fuzzy +#: editor_actions.cc:557 msgid "Fullscreen" -msgstr "Plné ticho" +msgstr "Celá obrazovka" -#: editor_actions.cc:557 -#, fuzzy +#: editor_actions.cc:558 msgid "Letterbox" -msgstr "Lepší" +msgstr "Å irokoúhlý formát" -#: editor_actions.cc:558 -#, fuzzy +#: editor_actions.cc:559 msgid "Original Size" -msgstr "Původní poloha" +msgstr "Původní velikost" -#: editor_actions.cc:608 +#: editor_actions.cc:611 msgid "Sort" msgstr "Třídit" -#: editor_actions.cc:610 region_editor.cc:51 +#: editor_actions.cc:613 region_editor.cc:51 msgid "Audition" msgstr "Poslech" -#: editor_actions.cc:619 editor_routes.cc:470 mixer_ui.cc:1161 +#: editor_actions.cc:622 editor_routes.cc:470 mixer_ui.cc:1160 msgid "Show All" msgstr "Ukázat vÅ¡e" -#: editor_actions.cc:620 +#: editor_actions.cc:623 msgid "Show Automatic Regions" msgstr "Ukázat automatické oblasti" -#: editor_actions.cc:622 +#: editor_actions.cc:625 msgid "Ascending" msgstr "Vzestupný" -#: editor_actions.cc:624 +#: editor_actions.cc:627 msgid "Descending" msgstr "Sestupný" -#: editor_actions.cc:627 +#: editor_actions.cc:630 msgid "By Region Name" msgstr "Podle názvu oblasti" -#: editor_actions.cc:629 +#: editor_actions.cc:632 msgid "By Region Length" msgstr "Podle délky oblasti" -#: editor_actions.cc:631 +#: editor_actions.cc:634 msgid "By Region Position" msgstr "Podle polohy oblasti" -#: editor_actions.cc:633 +#: editor_actions.cc:636 msgid "By Region Timestamp" msgstr "Podle Äasové razítka oblasti" -#: editor_actions.cc:635 +#: editor_actions.cc:638 msgid "By Region Start in File" msgstr "Podle zaÄátku oblasti v souboru" -#: editor_actions.cc:637 +#: editor_actions.cc:640 msgid "By Region End in File" msgstr "Podle konce oblasti v souboru" -#: editor_actions.cc:639 +#: editor_actions.cc:642 msgid "By Source File Name" msgstr "Podle názvu zdrojového souboru" -#: editor_actions.cc:641 +#: editor_actions.cc:644 msgid "By Source File Length" msgstr "Podle délky zdrojového souboru" -#: editor_actions.cc:643 +#: editor_actions.cc:646 msgid "By Source File Creation Date" msgstr "Podle data vytvoÅ™ení zdrojového souboru" -#: editor_actions.cc:645 +#: editor_actions.cc:648 msgid "By Source Filesystem" msgstr "Podle souborového systému zdroje" -#: editor_actions.cc:648 +#: editor_actions.cc:651 msgid "Remove Unused" msgstr "Odstranit nepoužívané" -#: editor_actions.cc:652 editor_audio_import.cc:279 +#: editor_actions.cc:655 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 msgid "Import" msgstr "Zavést" -#: editor_actions.cc:655 +#: editor_actions.cc:658 msgid "Import to Region List..." msgstr "Zavést do seznamu oblastí..." -#: editor_actions.cc:658 session_import_dialog.cc:43 +#: editor_actions.cc:661 session_import_dialog.cc:43 msgid "Import From Session" msgstr "Zavést ze sezení" -#: editor_actions.cc:661 +#: editor_actions.cc:664 msgid "Show Summary" msgstr "Ukázat shrnutí" -#: editor_actions.cc:663 +#: editor_actions.cc:666 msgid "Show Group Tabs" msgstr "Ukázat karty se skupinami" -#: editor_actions.cc:665 +#: editor_actions.cc:668 msgid "Show Measures" msgstr "Ukázat mřížku s takty" -#: editor_actions.cc:669 +#: editor_actions.cc:672 msgid "Show Logo" msgstr "Ukázat logo" -#: editor_actions.cc:673 +#: editor_actions.cc:676 msgid "Toggle MIDI Input Active for Editor-Selected Tracks/Busses" msgstr "PÅ™epnout vstup MIDI pro v editoru vybrané stopy/sbÄ›rnice" -#: editor_actions.cc:696 +#: editor_actions.cc:699 msgid "Loaded editor bindings from %1" msgstr "Nahrané vazby editoru z %1" -#: editor_actions.cc:698 +#: editor_actions.cc:701 msgid "Could not find editor.bindings in search path %1" msgstr "V prohledávané cestÄ› %1 se editor.bindings nalézt nepodaÅ™ilo" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1026 editor_actions.cc:1422 editor_actions.cc:1433 +#: editor_actions.cc:1486 editor_actions.cc:1497 editor_actions.cc:1544 +#: editor_actions.cc:1554 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "Chyba v programování: %1: %2" -#: editor_actions.cc:1713 +#: editor_actions.cc:1720 msgid "Raise" msgstr "Pozvednout" -#: editor_actions.cc:1716 +#: editor_actions.cc:1723 msgid "Raise to Top" msgstr "Pozvednout zcela nahoru" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1726 gtk-custom-ruler.c:132 msgid "Lower" msgstr "Dát dolů" -#: editor_actions.cc:1722 +#: editor_actions.cc:1729 msgid "Lower to Bottom" msgstr "Dát zcela dolů" -#: editor_actions.cc:1725 +#: editor_actions.cc:1732 msgid "Move to Original Position" msgstr "Posunout na původní polohu" -#: editor_actions.cc:1730 +#: editor_actions.cc:1738 msgid "Lock to Video" -msgstr "" +msgstr "Uzamknout k videu" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:868 msgid "Glue to Bars and Beats" msgstr "PÅ™ilepit k taktům a dobám" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 msgid "Remove Sync" msgstr "Odstranit bod zapadnutí" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:200 msgid "Mute" msgstr "Ztlumit" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 msgid "Normalize..." msgstr "Normalizovat..." -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "Obrátit" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 msgid "Make Mono Regions" msgstr "PÅ™emÄ›nit na monofonní oblasti" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "Zvýšit sílu hlasitosti" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "Snížit sílu hlasitosti" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "Posun výšky tónu..." -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 msgid "Transpose..." msgstr "PÅ™evést..." -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 msgid "Opaque" msgstr "Neprůhledný" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "Postupné zesílení signálu" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "Postupné zeslabení signálu" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 msgid "Multi-Duplicate..." msgstr "Vícekrát zdvojit..." -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "Doplnit stopu" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:956 msgid "Set Loop Range" msgstr "Zřídit oblast smyÄky" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 msgid "Set Punch" msgstr "Zřídit oblast pÅ™epsání" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 msgid "Add Single Range Marker" msgstr "PÅ™idat znaÄku jednoho rozsahu" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 msgid "Add Range Marker Per Region" msgstr "Vložit znaÄku rozsahu na oblast" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 msgid "Snap Position To Grid" msgstr "Zapadnout polohu do mřížky" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 msgid "Close Gaps" msgstr "Zavřít mezery" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "Rytmická páska..." -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 msgid "Export..." msgstr "Vyvést..." -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 msgid "Separate Under" msgstr "RozdÄ›lit pod" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 msgid "Set Fade In Length" msgstr "ZmÄ›nit délku postupného zesílení signálu" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 msgid "Set Fade Out Length" msgstr "ZmÄ›nit délku postupného zeslabení signálu" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 msgid "Set Tempo from Region = Bar" msgstr "Stanovit tempo z \"oblast = takt\"" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 msgid "Split at Percussion Onsets" msgstr "RozdÄ›lit oblasti na zaÄátcích úderů bicích" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 msgid "List Editor..." msgstr "Editor seznamu..." -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "Vlastnosti..." -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "Vrazit (se zpracováním)" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "Vrazit (bez zpracování)" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "Spojit" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "ZruÅ¡it spojení" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "Spektrální analýza..." -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 msgid "Reset Envelope" msgstr "Nastavit kÅ™ivku síly zvuku znovu" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 msgid "Reset Gain" msgstr "Nastavit sílu hlasitosti znovu" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 msgid "Envelope Active" msgstr "ÄŒinná kÅ™ivka síly zvuku" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 msgid "Quantize..." msgstr "Kvantovat..." -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "Vložit zmÄ›nu zapojení..." -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "Odpojit od jiných kopií" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "Obnažit ticho..." -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 msgid "Set Range Selection" msgstr "Vybrat rozsah oblasti" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 msgid "Nudge Later" msgstr "PostrÄit o krok pozdÄ›ji" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 msgid "Nudge Earlier" msgstr "PostrÄit o krok dříve" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 msgid "Nudge Later by Capture Offset" msgstr "PostrÄit o krok pozdÄ›ji podle odsazení nahrávání" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 msgid "Nudge Earlier by Capture Offset" msgstr "PostrÄit o krok dříve podle odsazení nahrávání" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "Zkrátit na oblast smyÄky" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "Zkrátit na oblast pÅ™epsání" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 msgid "Trim to Previous" msgstr "Zkrátit na pÅ™edchozí" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 msgid "Trim to Next" msgstr "Zkrátit na další" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 msgid "Insert Region From Region List" msgstr "Vložit oblast ze seznamu oblastí" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 msgid "Set Sync Position" msgstr "Nastavit polohu bodu zapadnutí oblasti" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "Umístit pÅ™echod" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "RozdÄ›lit" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 msgid "Trim Start at Edit Point" msgstr "ZastÅ™ihnout zaÄátek oblasti na pracovním bodu" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 msgid "Trim End at Edit Point" msgstr "ZastÅ™ihnout konec oblasti na pracovním bodu" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 msgid "Align Start" msgstr "Zarovnat zaÄátek" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 msgid "Align Start Relative" msgstr "Zarovnat zaÄátek pomÄ›rnÄ›" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 msgid "Align End" msgstr "Zarovnat konec" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 msgid "Align End Relative" msgstr "Zarovnat konec pomÄ›rnÄ›" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 msgid "Align Sync" msgstr "Zarovnat bod zapadnutí" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 msgid "Align Sync Relative" msgstr "Zarovnat bod zapadnutí pomÄ›rnÄ›" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "Vybrat vrchní..." @@ -4400,7 +4400,7 @@ msgstr "" "Projekt již obsahuje zdrojový soubor nazvaný %1. Chcete zavést %2 jako nový " "soubor nebo jej pÅ™eskoÄit?" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 msgid "Cancel Import" msgstr "ZruÅ¡it zavedení" @@ -4438,64 +4438,63 @@ msgstr "" msgid "Embed it anyway" msgstr "PÅ™esto vložit" -#: editor_drag.cc:1000 +#: editor_drag.cc:1008 msgid "fixed time region drag" msgstr "Oblast souÄasnÄ› pÅ™esunout" -#: editor_drag.cc:1700 -#, fuzzy +#: editor_drag.cc:1718 msgid "Video Start:" -msgstr "Mike Start" +msgstr "ZaÄátek videa:" -#: editor_drag.cc:1702 +#: editor_drag.cc:1720 msgid "Diff:" -msgstr "" +msgstr "Rozdíly:" -#: editor_drag.cc:1722 +#: editor_drag.cc:1740 msgid "Move Video" -msgstr "" +msgstr "Posunout video" -#: editor_drag.cc:2200 +#: editor_drag.cc:2219 msgid "copy meter mark" msgstr "Kopírovat znaÄku druhu taktu" -#: editor_drag.cc:2208 +#: editor_drag.cc:2227 msgid "move meter mark" msgstr "Pohnout znaÄkou druhu taktu" -#: editor_drag.cc:2320 +#: editor_drag.cc:2339 msgid "copy tempo mark" msgstr "Kopírovat znaÄku tempa" -#: editor_drag.cc:2328 +#: editor_drag.cc:2347 msgid "move tempo mark" msgstr "Posunout znaÄku tempa" -#: editor_drag.cc:2544 +#: editor_drag.cc:2563 msgid "change fade in length" msgstr "ZmÄ›nit délku postupného zesílení signálu" -#: editor_drag.cc:2662 +#: editor_drag.cc:2681 msgid "change fade out length" msgstr "ZmÄ›nit délku postupného slábnutí signálu" -#: editor_drag.cc:3017 +#: editor_drag.cc:3036 msgid "move marker" msgstr "Pohnout znaÄkou" -#: editor_drag.cc:3580 +#: editor_drag.cc:3599 msgid "An error occurred while executing time stretch operation" msgstr "PÅ™i provádÄ›ní operace protáhnutí Äasu se vyskytla chyba" -#: editor_drag.cc:4010 +#: editor_drag.cc:4029 msgid "programming_error: %1" msgstr "Chyba v programování: %1" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4099 editor_markers.cc:681 msgid "new range marker" msgstr "Nová znaÄka rozsahu" -#: editor_drag.cc:4761 +#: editor_drag.cc:4780 msgid "rubberband selection" msgstr "Pružný výbÄ›r oblasti" @@ -4563,8 +4562,8 @@ msgstr "Sólo|S" msgid "Sharing Solo?" msgstr "Sdílení sóla?" -#: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: editor_route_groups.cc:103 midi_time_axis.cc:1505 midi_time_axis.cc:1508 +#: midi_time_axis.cc:1511 mixer_strip.cc:1903 msgid "Rec" msgstr "Nahr" @@ -4601,17 +4600,17 @@ msgid "Activate this button to operate on all tracks when none are selected." msgstr "" "Zapnout toto tlaÄítko pro práci na vÅ¡ech stopách, když žádná není vybrána." -#: editor_route_groups.cc:442 mixer_ui.cc:1449 +#: editor_route_groups.cc:442 mixer_ui.cc:1448 msgid "unnamed" msgstr "Bez názvu" -#: editor_export_audio.cc:90 editor_markers.cc:695 editor_markers.cc:782 -#: editor_markers.cc:967 editor_markers.cc:985 editor_markers.cc:1003 -#: editor_markers.cc:1022 editor_markers.cc:1041 editor_markers.cc:1071 -#: editor_markers.cc:1102 editor_markers.cc:1132 editor_markers.cc:1160 -#: editor_markers.cc:1191 editor_markers.cc:1216 editor_markers.cc:1267 -#: editor_markers.cc:1311 editor_markers.cc:1337 editor_markers.cc:1514 -#: editor_mouse.cc:2478 +#: editor_export_audio.cc:90 editor_markers.cc:696 editor_markers.cc:783 +#: editor_markers.cc:968 editor_markers.cc:986 editor_markers.cc:1004 +#: editor_markers.cc:1023 editor_markers.cc:1042 editor_markers.cc:1072 +#: editor_markers.cc:1103 editor_markers.cc:1133 editor_markers.cc:1161 +#: editor_markers.cc:1192 editor_markers.cc:1217 editor_markers.cc:1268 +#: editor_markers.cc:1312 editor_markers.cc:1338 editor_markers.cc:1515 +#: editor_mouse.cc:2542 msgid "programming error: marker canvas item has no marker object pointer!" msgstr "" "Chyba v programování: položka plátna znaÄka nemá žádný ukazatel objektu " @@ -4629,117 +4628,113 @@ msgstr "PÅ™epsat existující soubor" msgid "Fit to Window" msgstr "Umístit do okna" -#: editor_markers.cc:129 +#: editor_markers.cc:130 msgid "start" msgstr "ZaÄátek" -#: editor_markers.cc:130 +#: editor_markers.cc:131 msgid "end" msgstr "Konec" -#: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 +#: editor_markers.cc:647 editor_ops.cc:1744 editor_ops.cc:1764 #: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 msgid "add marker" msgstr "PÅ™idat znaÄku" -#: editor_markers.cc:677 +#: editor_markers.cc:678 msgid "range" msgstr "Rozsah" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:714 location_ui.cc:840 msgid "remove marker" msgstr "Odstranit znaÄky" -#: editor_markers.cc:849 +#: editor_markers.cc:850 msgid "Locate to Here" msgstr "Ukazatele polohy postavit sem" -#: editor_markers.cc:850 +#: editor_markers.cc:851 msgid "Play from Here" msgstr "PÅ™ehrávat od tohoto bodu" -#: editor_markers.cc:851 +#: editor_markers.cc:852 msgid "Move Mark to Playhead" msgstr "Posunout znaÄku k ukazateli polohy" -#: editor_markers.cc:855 +#: editor_markers.cc:856 msgid "Create Range to Next Marker" msgstr "VytvoÅ™it rozsah až k další znaÄce" -#: editor_markers.cc:896 -#, fuzzy +#: editor_markers.cc:897 msgid "Locate to Marker" -msgstr "Ukazatele polohy postavit na znaÄky" +msgstr "Umístit ke znaÄce" -#: editor_markers.cc:897 -#, fuzzy +#: editor_markers.cc:898 msgid "Play from Marker" -msgstr "PÅ™ehrávat od tohoto bodu" +msgstr "PÅ™ehrávat od znaÄky" -#: editor_markers.cc:900 -#, fuzzy +#: editor_markers.cc:901 msgid "Set Marker from Playhead" -msgstr "Nastavit znaÄku rozsahu od ukazatele polohy" +msgstr "Nastavit znaÄku od ukazatele polohy" -#: editor_markers.cc:902 -#, fuzzy +#: editor_markers.cc:903 msgid "Set Range from Selection" -msgstr "Nastavit rozsah z výbÄ›ru rozsahu" +msgstr "Nastavit rozsah z výbÄ›ru" -#: editor_markers.cc:905 +#: editor_markers.cc:906 msgid "Zoom to Range" msgstr "Najet na rozsah" -#: editor_markers.cc:912 +#: editor_markers.cc:913 msgid "Hide Range" msgstr "Skrýt rozsah" -#: editor_markers.cc:913 +#: editor_markers.cc:914 msgid "Rename Range..." msgstr "PÅ™ejmenovat rozsah..." -#: editor_markers.cc:917 +#: editor_markers.cc:918 msgid "Remove Range" msgstr "Odstranit rozsah" -#: editor_markers.cc:924 +#: editor_markers.cc:925 msgid "Separate Regions in Range" msgstr "RozdÄ›lit oblasti na hranicích rozsahů" -#: editor_markers.cc:927 +#: editor_markers.cc:928 msgid "Select Range" msgstr "Vybrat rozsah" -#: editor_markers.cc:956 +#: editor_markers.cc:957 msgid "Set Punch Range" msgstr "Nastavit rozsah pÅ™epsání" -#: editor_markers.cc:1351 editor_ops.cc:1699 +#: editor_markers.cc:1352 editor_ops.cc:1699 msgid "New Name:" msgstr "Nový název:" -#: editor_markers.cc:1354 +#: editor_markers.cc:1355 msgid "Rename Mark" msgstr "PÅ™ejmenovat znaÄku" -#: editor_markers.cc:1356 +#: editor_markers.cc:1357 msgid "Rename Range" msgstr "PÅ™ejmenovat rozsah" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1364 editor_mouse.cc:2574 processor_box.cc:1731 +#: processor_box.cc:2213 route_time_axis.cc:968 route_ui.cc:1535 msgid "Rename" msgstr "PÅ™ejmenovat" -#: editor_markers.cc:1376 +#: editor_markers.cc:1377 msgid "rename marker" msgstr "PÅ™ejmenovat znaÄku" -#: editor_markers.cc:1399 +#: editor_markers.cc:1400 msgid "set loop range" msgstr "Nastavit rozsah smyÄky" -#: editor_markers.cc:1405 +#: editor_markers.cc:1406 msgid "set punch range" msgstr "Nastavit rozsah pÅ™epsání" @@ -4752,7 +4747,7 @@ msgstr "" msgid "Editor::event_frame() used on unhandled event type %1" msgstr "Editor::event_frame() se používá u neznámého druhu události %1" -#: editor_mouse.cc:2235 editor_mouse.cc:2260 editor_mouse.cc:2273 +#: editor_mouse.cc:2312 editor_mouse.cc:2337 editor_mouse.cc:2350 msgid "" "programming error: control point canvas item has no control point object " "pointer!" @@ -4760,15 +4755,15 @@ msgstr "" "Chyba v programování: položka plátna místo ovládání nemá žádný ukazatel " "objektu místa ovládání!" -#: editor_mouse.cc:2416 +#: editor_mouse.cc:2480 msgid "start point trim" msgstr "UstÅ™ihnout poÄáteÄní bod" -#: editor_mouse.cc:2441 +#: editor_mouse.cc:2505 msgid "End point trim" msgstr "UstÅ™ihnout koncový bod" -#: editor_mouse.cc:2508 +#: editor_mouse.cc:2572 msgid "Name for region:" msgstr "Název oblasti:" @@ -4864,71 +4859,71 @@ msgstr "Dát oblasti zcela dolů" msgid "Rename Region" msgstr "PÅ™ejmenovat oblast" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1729 route_ui.cc:1533 msgid "New name:" msgstr "Nový název:" -#: editor_ops.cc:2682 +#: editor_ops.cc:2683 msgid "separate" msgstr "RozdÄ›lit" -#: editor_ops.cc:2795 +#: editor_ops.cc:2796 msgid "separate region under" msgstr "RozdÄ›lit oblast pod" -#: editor_ops.cc:2916 +#: editor_ops.cc:2917 msgid "trim to selection" msgstr "UstÅ™ihnout na výbÄ›ru" -#: editor_ops.cc:3052 +#: editor_ops.cc:3053 msgid "set sync point" msgstr "UrÄit bod zapadnutí" -#: editor_ops.cc:3076 +#: editor_ops.cc:3077 msgid "remove region sync" msgstr "Odstranit bod zapadnutí oblasti" -#: editor_ops.cc:3098 +#: editor_ops.cc:3099 msgid "move regions to original position" msgstr "Posunout oblasti na původní polohu" -#: editor_ops.cc:3100 +#: editor_ops.cc:3101 msgid "move region to original position" msgstr "Posunout oblast na původní polohu" -#: editor_ops.cc:3121 +#: editor_ops.cc:3122 msgid "align selection" msgstr "Zarovnat výbÄ›r" -#: editor_ops.cc:3195 +#: editor_ops.cc:3196 msgid "align selection (relative)" msgstr "Zarovnat výbÄ›r pomÄ›rnÄ›" -#: editor_ops.cc:3229 +#: editor_ops.cc:3230 msgid "align region" msgstr "Zarovnat oblast" -#: editor_ops.cc:3280 +#: editor_ops.cc:3281 msgid "trim front" msgstr "UstÅ™ihnout vpÅ™edu" -#: editor_ops.cc:3280 +#: editor_ops.cc:3281 msgid "trim back" msgstr "UstÅ™ihnout vzadu" -#: editor_ops.cc:3310 +#: editor_ops.cc:3311 msgid "trim to loop" msgstr "Zkrátit na oblast smyÄky" -#: editor_ops.cc:3320 +#: editor_ops.cc:3321 msgid "trim to punch" msgstr "Zkrátit na oblast pÅ™epsání" -#: editor_ops.cc:3382 +#: editor_ops.cc:3383 msgid "trim to region" msgstr "Zkrátit na oblast" -#: editor_ops.cc:3492 +#: editor_ops.cc:3493 msgid "" "This track/bus cannot be frozen because the signal adds or loses channels " "before reaching the outputs.\n" @@ -4940,11 +4935,11 @@ msgstr "" "Obvykle je to způsobeno přídavnými moduly, jež vytvářejí stereo výstup z " "monofonního vstupu nebo naopak." -#: editor_ops.cc:3495 +#: editor_ops.cc:3496 msgid "Cannot freeze" msgstr "Nelze zmrazit" -#: editor_ops.cc:3501 +#: editor_ops.cc:3502 msgid "" "%1\n" "\n" @@ -4959,24 +4954,23 @@ msgstr "" "\n" "Zmrazení jen zpracuje signál až k prvnímu poslání/vložení/vrácení." -#: editor_ops.cc:3505 +#: editor_ops.cc:3506 msgid "Freeze anyway" msgstr "PÅ™esto zmrazit" -#: editor_ops.cc:3506 +#: editor_ops.cc:3507 msgid "Don't freeze" msgstr "Nemrazit" -#: editor_ops.cc:3507 +#: editor_ops.cc:3508 msgid "Freeze Limits" msgstr "Omezení zmražení" -#: editor_ops.cc:3522 +#: editor_ops.cc:3523 msgid "Cancel Freeze" msgstr "ZruÅ¡it zmrazení" -#: editor_ops.cc:3553 -#, fuzzy +#: editor_ops.cc:3554 msgid "" "You can't perform this operation because the processing of the signal will " "cause one or more of the tracks to end up with a region with more channels " @@ -4989,51 +4983,51 @@ msgstr "" "\n" "Můžete to udÄ›lat bez zpracování, což je odliÅ¡ná operace." -#: editor_ops.cc:3557 +#: editor_ops.cc:3558 msgid "Cannot bounce" msgstr "Nelze vyhodit" -#: editor_ops.cc:3568 +#: editor_ops.cc:3569 msgid "bounce range" msgstr "Vrazit rozsah" -#: editor_ops.cc:3678 +#: editor_ops.cc:3679 msgid "delete" msgstr "Smazat" -#: editor_ops.cc:3681 +#: editor_ops.cc:3682 msgid "cut" msgstr "Vyjmout" -#: editor_ops.cc:3684 +#: editor_ops.cc:3685 msgid "copy" msgstr "Kopírovat" -#: editor_ops.cc:3687 +#: editor_ops.cc:3688 msgid "clear" msgstr "Vyprázdnit" -#: editor_ops.cc:3785 +#: editor_ops.cc:3786 msgid " objects" msgstr "PÅ™edmÄ›ty" -#: editor_ops.cc:3815 +#: editor_ops.cc:3816 msgid " range" msgstr "Rozsah" -#: editor_ops.cc:3957 editor_ops.cc:3984 +#: editor_ops.cc:3958 editor_ops.cc:3985 msgid "remove region" msgstr "Odstranit oblast" -#: editor_ops.cc:4391 +#: editor_ops.cc:4392 msgid "duplicate selection" msgstr "Zdvojit výbÄ›r" -#: editor_ops.cc:4469 +#: editor_ops.cc:4470 msgid "nudge track" msgstr "PostrÄit stopu" -#: editor_ops.cc:4506 +#: editor_ops.cc:4507 msgid "" "Do you really want to destroy the last capture?\n" "(This is destructive and cannot be undone)" @@ -5041,133 +5035,132 @@ msgstr "" "Opravdu chcete zruÅ¡it poslední nahrávku?\n" "(Toto nelze vrátit zpÄ›t!)" -#: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 +#: editor_ops.cc:4510 editor_ops.cc:6516 editor_regions.cc:460 #: editor_snapshots.cc:158 route_ui.cc:1477 msgid "No, do nothing." msgstr "Ne, nedÄ›lat nic." -#: editor_ops.cc:4510 +#: editor_ops.cc:4511 msgid "Yes, destroy it." msgstr "Ano, odstranit." -#: editor_ops.cc:4512 +#: editor_ops.cc:4513 msgid "Destroy last capture" msgstr "ZniÄit poslední nahrávku" -#: editor_ops.cc:4573 +#: editor_ops.cc:4574 msgid "normalize" msgstr "Normalizovat" -#: editor_ops.cc:4668 +#: editor_ops.cc:4669 msgid "reverse regions" msgstr "Obrátit oblasti" -#: editor_ops.cc:4702 +#: editor_ops.cc:4703 msgid "strip silence" msgstr "Obnažit ticho" -#: editor_ops.cc:4763 +#: editor_ops.cc:4764 msgid "Fork Region(s)" msgstr "Rozdvojit oblast(i)" -#: editor_ops.cc:4963 +#: editor_ops.cc:4964 msgid "reset region gain" msgstr "Nastavit sílu hlasitosti v oblasti znovu" -#: editor_ops.cc:5016 +#: editor_ops.cc:5017 msgid "region gain envelope active" msgstr "KÅ™ivka síly zvuku v oblasti Äinná" -#: editor_ops.cc:5043 +#: editor_ops.cc:5044 msgid "toggle region lock" msgstr "PÅ™epnout zámek oblasti" -#: editor_ops.cc:5067 -#, fuzzy +#: editor_ops.cc:5069 msgid "Toggle Video Lock" -msgstr "PÅ™epnout zámek oblasti" +msgstr "PÅ™epnout zámek videa" -#: editor_ops.cc:5091 +#: editor_ops.cc:5095 msgid "region lock style" msgstr "Styl zámku oblasti" -#: editor_ops.cc:5116 +#: editor_ops.cc:5120 msgid "change region opacity" msgstr "ZmÄ›nit neprůhlednost oblasti" -#: editor_ops.cc:5231 +#: editor_ops.cc:5235 msgid "set fade in length" msgstr "ZmÄ›nit délku postupného zesílení signálu" -#: editor_ops.cc:5238 +#: editor_ops.cc:5242 msgid "set fade out length" msgstr "ZmÄ›nit délku postupného zeslabení signálu" -#: editor_ops.cc:5283 +#: editor_ops.cc:5287 msgid "set fade in shape" msgstr "Upravit tvar kÅ™ivky postupného zesílení signálu" -#: editor_ops.cc:5314 +#: editor_ops.cc:5318 msgid "set fade out shape" msgstr "Upravit tvar kÅ™ivky postupného zeslabení signálu" -#: editor_ops.cc:5344 +#: editor_ops.cc:5348 msgid "set fade in active" msgstr "Spustit postupné zesílení signálu" -#: editor_ops.cc:5373 +#: editor_ops.cc:5377 msgid "set fade out active" msgstr "Spustit postupné zeslabení signálu" -#: editor_ops.cc:5638 +#: editor_ops.cc:5642 msgid "set loop range from selection" msgstr "Nastavit rozsah smyÄky z výbÄ›ru" -#: editor_ops.cc:5660 +#: editor_ops.cc:5664 msgid "set loop range from edit range" msgstr "Nastavit rozsah smyÄky z oblasti úprav" -#: editor_ops.cc:5689 +#: editor_ops.cc:5693 msgid "set loop range from region" msgstr "Nastavit rozsah smyÄky z oblasti" -#: editor_ops.cc:5707 +#: editor_ops.cc:5711 msgid "set punch range from selection" msgstr "Nastavit rozsah pÅ™epsání z výbÄ›ru" -#: editor_ops.cc:5724 +#: editor_ops.cc:5728 msgid "set punch range from edit range" msgstr "Nastavit rozsah pÅ™epsání z oblasti úprav" -#: editor_ops.cc:5748 +#: editor_ops.cc:5752 msgid "set punch range from region" msgstr "Nastavit rozsah pÅ™epsání z oblasti" -#: editor_ops.cc:5857 +#: editor_ops.cc:5861 msgid "Add new marker" msgstr "PÅ™idat novou znaÄku" -#: editor_ops.cc:5858 +#: editor_ops.cc:5862 msgid "Set global tempo" msgstr "Nastavit celkové tempo" -#: editor_ops.cc:5861 +#: editor_ops.cc:5865 msgid "Define one bar" msgstr "Vymezit jeden takt" -#: editor_ops.cc:5862 +#: editor_ops.cc:5866 msgid "Do you want to set the global tempo or add a new tempo marker?" msgstr "Chcete stanovit celkové tempo, nebo pÅ™idat novou znaÄku tempa?" -#: editor_ops.cc:5888 +#: editor_ops.cc:5892 msgid "set tempo from region" msgstr "Nastavit tempo podle oblasti" -#: editor_ops.cc:5918 +#: editor_ops.cc:5922 msgid "split regions" msgstr "RozdÄ›lit oblasti" -#: editor_ops.cc:5960 +#: editor_ops.cc:5964 msgid "" "You are about to split\n" "%1\n" @@ -5179,11 +5172,11 @@ msgstr "" "do %2 kusů.\n" "Toto by mohlo trvat velmi dlouho." -#: editor_ops.cc:5967 +#: editor_ops.cc:5971 msgid "Call for the Ferret!" msgstr "Volání po slídilovi!" -#: editor_ops.cc:5968 +#: editor_ops.cc:5972 msgid "" "Press OK to continue with this split operation\n" "or ask the Ferret dialog to tune the analysis" @@ -5191,52 +5184,52 @@ msgstr "" "StisknÄ›te OK kvůli pokraÄování v této operaci rozdÄ›lení\n" "nebo se pokuste v oknÄ› slídilovÄ› vyladit rozbor." -#: editor_ops.cc:5970 +#: editor_ops.cc:5974 msgid "Press OK to continue with this split operation" msgstr "StisknÄ›te OK kvůli pokraÄování v této operaci rozdÄ›lení" -#: editor_ops.cc:5973 +#: editor_ops.cc:5977 msgid "Excessive split?" msgstr "NadmÄ›rné rozdÄ›lení?" -#: editor_ops.cc:6125 +#: editor_ops.cc:6129 msgid "place transient" msgstr "Umístit pÅ™echod" -#: editor_ops.cc:6160 +#: editor_ops.cc:6164 msgid "snap regions to grid" msgstr "Zapadnout oblasti do mřížky" -#: editor_ops.cc:6199 +#: editor_ops.cc:6203 msgid "Close Region Gaps" msgstr "Zavřít mezery oblastí" -#: editor_ops.cc:6204 +#: editor_ops.cc:6208 msgid "Crossfade length" msgstr "Délka prolínání" -#: editor_ops.cc:6213 editor_ops.cc:6224 rhythm_ferret.cc:120 -#: session_option_editor.cc:153 +#: editor_ops.cc:6217 editor_ops.cc:6228 rhythm_ferret.cc:120 +#: session_option_editor.cc:155 msgid "ms" msgstr "ms" -#: editor_ops.cc:6215 +#: editor_ops.cc:6219 msgid "Pull-back length" msgstr "Délka ustoupení" -#: editor_ops.cc:6228 +#: editor_ops.cc:6232 msgid "Ok" msgstr "OK" -#: editor_ops.cc:6243 +#: editor_ops.cc:6247 msgid "close region gaps" msgstr "Zavřít mezery oblastí" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6465 route_ui.cc:1451 msgid "That would be bad news ...." msgstr "To by byly nepříjemné zprávy..." -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6470 route_ui.cc:1456 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5252,23 +5245,23 @@ msgstr "" "upravte svůj soubor ardour.rc, kde nastavte volbu\n" "\"allow-special-bus-removal\" na \"yes\"" -#: editor_ops.cc:6483 +#: editor_ops.cc:6487 msgid "tracks" msgstr "Stopy" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6489 route_ui.cc:1817 msgid "track" msgstr "Stopa" -#: editor_ops.cc:6489 +#: editor_ops.cc:6493 msgid "busses" msgstr "SbÄ›rnice" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6495 route_ui.cc:1817 msgid "bus" msgstr "SbÄ›rnice" -#: editor_ops.cc:6496 +#: editor_ops.cc:6500 msgid "" "Do you really want to remove %1 %2 and %3 %4?\n" "(You may also lose the playlists associated with the %2)\n" @@ -5280,7 +5273,7 @@ msgstr "" "\n" "Tento krok nelze vrátit zpÄ›t, a soubor se sezením bude pÅ™epsán!" -#: editor_ops.cc:6501 +#: editor_ops.cc:6505 msgid "" "Do you really want to remove %1 %2?\n" "(You may also lose the playlists associated with the %2)\n" @@ -5292,7 +5285,7 @@ msgstr "" "\n" "Tento krok nelze vrátit zpÄ›t, a soubor se sezením bude pÅ™epsán!" -#: editor_ops.cc:6507 +#: editor_ops.cc:6511 msgid "" "Do you really want to remove %1 %2?\n" "\n" @@ -5302,45 +5295,45 @@ msgstr "" "\n" "Tento krok nelze vrátit zpÄ›t, a soubor se sezením bude pÅ™epsán" -#: editor_ops.cc:6514 +#: editor_ops.cc:6518 msgid "Yes, remove them." msgstr "Ano, odstranit." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6520 editor_snapshots.cc:159 route_ui.cc:1478 msgid "Yes, remove it." msgstr "Ano, odstranit." -#: editor_ops.cc:6521 editor_ops.cc:6523 +#: editor_ops.cc:6525 editor_ops.cc:6527 msgid "Remove %1" msgstr "Odstranit %1" -#: editor_ops.cc:6582 +#: editor_ops.cc:6586 msgid "insert time" msgstr "Vložit ticho" -#: editor_ops.cc:6739 +#: editor_ops.cc:6743 msgid "There are too many tracks to fit in the current window" msgstr "" "Bylo vybráno příliÅ¡ mnoho stop, než aby se vÅ¡echny veÅ¡ly do nynÄ›jšího okna" -#: editor_ops.cc:6839 +#: editor_ops.cc:6843 #, c-format msgid "Saved view %u" msgstr "Uložen pohled %u" -#: editor_ops.cc:6864 +#: editor_ops.cc:6868 msgid "mute regions" msgstr "ZtiÅ¡it oblasti" -#: editor_ops.cc:6866 +#: editor_ops.cc:6870 msgid "mute region" msgstr "ZtiÅ¡it oblast" -#: editor_ops.cc:6903 +#: editor_ops.cc:6907 msgid "combine regions" msgstr "Spojit oblasti" -#: editor_ops.cc:6941 +#: editor_ops.cc:6945 msgid "uncombine regions" msgstr "ZruÅ¡it spojení oblastí" @@ -5380,7 +5373,7 @@ msgstr "" "Délka postupné zeslabení signálu oblasti (jednotky: vedlejší hodiny), (), " "pokud je zakázáno" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1961 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "Zam" @@ -5397,8 +5390,8 @@ msgstr "PÅ™" msgid "Region position glued to Bars|Beats time?" msgstr "Poloha oblasti pÅ™ilepena k taktům|dobám?" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:722 +#: mixer_strip.cc:1935 panner_ui.cc:554 stereo_panner.cc:237 msgid "M" msgstr "Z" @@ -5467,7 +5460,7 @@ msgstr "Název stopy/sbÄ›rnice" msgid "Track/Bus visible ?" msgstr "Stopa/SbÄ›rnice viditelná?" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1952 route_time_axis.cc:2387 msgid "A" msgstr "ÄŒ" @@ -5475,7 +5468,7 @@ msgstr "ÄŒ" msgid "Track/Bus active ?" msgstr "Stopa/SbÄ›rnice Äinná?" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1936 msgid "I" msgstr "Vst" @@ -5483,7 +5476,7 @@ msgstr "Vst" msgid "MIDI input enabled" msgstr "Vstup MIDI povolen" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1934 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "N" @@ -5496,7 +5489,7 @@ msgstr "Nahrávání povoleno" msgid "Muted" msgstr "Ztlumeno" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1948 msgid "S" msgstr "S" @@ -5508,7 +5501,7 @@ msgstr "Sólo" msgid "SI" msgstr "SamS" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1883 msgid "Solo Isolated" msgstr "Samostatné sólo" @@ -5516,23 +5509,23 @@ msgstr "Samostatné sólo" msgid "Solo Safe (Locked)" msgstr "ZajiÅ¡tÄ›né sólo (zamknuto)" -#: editor_routes.cc:471 mixer_ui.cc:1162 +#: editor_routes.cc:471 mixer_ui.cc:1161 msgid "Hide All" msgstr "Skrýt vÅ¡e" -#: editor_routes.cc:472 mixer_ui.cc:1163 +#: editor_routes.cc:472 mixer_ui.cc:1162 msgid "Show All Audio Tracks" msgstr "Ukázat vÅ¡echny zvukové stopy" -#: editor_routes.cc:473 mixer_ui.cc:1164 +#: editor_routes.cc:473 mixer_ui.cc:1163 msgid "Hide All Audio Tracks" msgstr "Skrýt vÅ¡echny zvukové stopy" -#: editor_routes.cc:474 mixer_ui.cc:1165 +#: editor_routes.cc:474 mixer_ui.cc:1164 msgid "Show All Audio Busses" msgstr "Ukázat vÅ¡echny zvukové sbÄ›rnice" -#: editor_routes.cc:475 mixer_ui.cc:1166 +#: editor_routes.cc:475 mixer_ui.cc:1165 msgid "Hide All Audio Busses" msgstr "Skrýt vÅ¡echny zvukové sbÄ›rnice" @@ -5548,101 +5541,99 @@ msgstr "Skrýt vÅ¡echny MIDI stopy" msgid "Show Tracks With Regions Under Playhead" msgstr "Ukázat stopy s oblastmi pod ukazatelem polohy pÅ™ehrávání" -#: editor_rulers.cc:340 +#: editor_rulers.cc:342 msgid "New location marker" msgstr "Nová znaÄka polohy" -#: editor_rulers.cc:341 +#: editor_rulers.cc:343 msgid "Clear all locations" msgstr "Odstranit vÅ¡echny znaÄky polohy" -#: editor_rulers.cc:342 +#: editor_rulers.cc:344 msgid "Unhide locations" msgstr "Odkrýt znaÄky poloh" -#: editor_rulers.cc:346 +#: editor_rulers.cc:348 msgid "New range" msgstr "Nový rozsah" -#: editor_rulers.cc:347 +#: editor_rulers.cc:349 msgid "Clear all ranges" msgstr "Odstranit vÅ¡echny rozsahy" -#: editor_rulers.cc:348 +#: editor_rulers.cc:350 msgid "Unhide ranges" msgstr "Odkrýt rozsahy" -#: editor_rulers.cc:358 +#: editor_rulers.cc:360 msgid "New CD track marker" msgstr "Nová znaÄka stopy na CD" -#: editor_rulers.cc:363 tempo_dialog.cc:40 +#: editor_rulers.cc:365 tempo_dialog.cc:40 msgid "New Tempo" msgstr "Vložit zmÄ›nu rychlosti/tempa..." -#: editor_rulers.cc:368 tempo_dialog.cc:255 +#: editor_rulers.cc:370 tempo_dialog.cc:255 msgid "New Meter" msgstr "Nový druh taktu" -#: editor_rulers.cc:373 -#, fuzzy +#: editor_rulers.cc:376 msgid "Timeline height" -msgstr "Výška" +msgstr "Výška Äasové osy" -#: editor_rulers.cc:383 -#, fuzzy +#: editor_rulers.cc:386 msgid "Align Video Track" -msgstr "PÅ™idat zvukovou stopu" +msgstr "Zarovnat videostopu" #: editor_selection.cc:889 editor_selection.cc:932 msgid "set selected regions" msgstr "Nastavit vybrané oblasti" -#: editor_selection.cc:1414 +#: editor_selection.cc:1419 msgid "select all" msgstr "Vybrat vÅ¡echny oblasti" -#: editor_selection.cc:1506 +#: editor_selection.cc:1511 msgid "select all within" msgstr "Vybrat vÅ¡e v oblasti" -#: editor_selection.cc:1564 +#: editor_selection.cc:1569 msgid "set selection from range" msgstr "Nastavit oblast výbÄ›ru z rozsahu" -#: editor_selection.cc:1604 +#: editor_selection.cc:1609 msgid "select all from range" msgstr "Vybrat vÅ¡e v rozsahu" -#: editor_selection.cc:1635 +#: editor_selection.cc:1640 msgid "select all from punch" msgstr "Vybrat vÅ¡e v oblasti pÅ™epsání" -#: editor_selection.cc:1666 +#: editor_selection.cc:1671 msgid "select all from loop" msgstr "Vybrat vÅ¡e v oblasti smyÄky" -#: editor_selection.cc:1702 +#: editor_selection.cc:1707 msgid "select all after cursor" msgstr "Vybrat vÅ¡e od ukazatele polohy" -#: editor_selection.cc:1704 +#: editor_selection.cc:1709 msgid "select all before cursor" msgstr "Vybrat vÅ¡e pÅ™ed ukazatelem polohy" -#: editor_selection.cc:1753 +#: editor_selection.cc:1758 msgid "select all after edit" msgstr "Vybrat vÅ¡e od pracovního bodu" -#: editor_selection.cc:1755 +#: editor_selection.cc:1760 msgid "select all before edit" msgstr "Vybrat vÅ¡e pÅ™ed pracovním bodem" -#: editor_selection.cc:1888 +#: editor_selection.cc:1893 msgid "No edit range defined" msgstr "Nestanoven rozsah úprav" -#: editor_selection.cc:1894 +#: editor_selection.cc:1899 msgid "" "the edit point is Selected Marker\n" "but there is no selected marker." @@ -5670,47 +5661,47 @@ msgstr "" msgid "Remove snapshot" msgstr "Odstranit snímek obrazovky" -#: editor_tempodisplay.cc:208 editor_tempodisplay.cc:250 +#: editor_tempodisplay.cc:208 editor_tempodisplay.cc:251 msgid "add" msgstr "PÅ™idat" -#: editor_tempodisplay.cc:231 +#: editor_tempodisplay.cc:232 msgid "add tempo mark" msgstr "PÅ™idat znaÄku zmÄ›ny tempa" -#: editor_tempodisplay.cc:272 +#: editor_tempodisplay.cc:275 msgid "add meter mark" msgstr "PÅ™idat znaÄku zmÄ›ny taktu" -#: editor_tempodisplay.cc:288 editor_tempodisplay.cc:367 -#: editor_tempodisplay.cc:386 +#: editor_tempodisplay.cc:291 editor_tempodisplay.cc:374 +#: editor_tempodisplay.cc:393 msgid "" "programming error: tempo marker canvas item has no marker object pointer!" msgstr "" "Chyba v programování: položka plátna znaÄka tempa nemá žádný ukazatel " "objektu znaÄky!" -#: editor_tempodisplay.cc:293 editor_tempodisplay.cc:372 +#: editor_tempodisplay.cc:296 editor_tempodisplay.cc:379 msgid "programming error: marker for tempo is not a tempo marker!" msgstr "Chyba v programování: znaÄka pro tempo není znaÄkou tempa!" -#: editor_tempodisplay.cc:305 editor_tempodisplay.cc:335 +#: editor_tempodisplay.cc:308 editor_tempodisplay.cc:340 msgid "done" msgstr "Hotovo" -#: editor_tempodisplay.cc:324 editor_tempodisplay.cc:352 +#: editor_tempodisplay.cc:329 editor_tempodisplay.cc:359 msgid "replace tempo mark" msgstr "Nahradit znaÄku zmÄ›ny tempa" -#: editor_tempodisplay.cc:391 editor_tempodisplay.cc:423 +#: editor_tempodisplay.cc:398 editor_tempodisplay.cc:430 msgid "programming error: marker for meter is not a meter marker!" msgstr "Chyba v programování: znaÄka druhu taktu není znaÄkou druhu taktu!" -#: editor_tempodisplay.cc:401 editor_tempodisplay.cc:435 +#: editor_tempodisplay.cc:408 editor_tempodisplay.cc:442 msgid "remove tempo mark" msgstr "Odstranit znaÄku zmÄ›ny tempa" -#: editor_tempodisplay.cc:418 +#: editor_tempodisplay.cc:425 msgid "" "programming error: meter marker canvas item has no marker object pointer!" msgstr "" @@ -5798,7 +5789,7 @@ msgstr "192000 Hz" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 #: engine_dialog.cc:552 midi_channel_selector.cc:163 #: midi_channel_selector.cc:402 midi_channel_selector.cc:438 -#: rc_option_editor.cc:1250 sfdb_ui.cc:542 +#: rc_option_editor.cc:1252 sfdb_ui.cc:542 msgid "None" msgstr "Žádný" @@ -5931,7 +5922,6 @@ msgid "cannot open JACK rc file %1 to store parameters" msgstr "Nelze otevřít JACK soubor rc %1 pro uložení pomocných promÄ›nných" #: engine_dialog.cc:777 -#, fuzzy msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -5959,7 +5949,7 @@ msgstr "" "\n" "PopřípadÄ›, pokud skuteÄnÄ› chcete pouze pÅ™ehrávat\n" "nebo nahrávat, ale nikoli souÄasnÄ› obojí, spusÅ¥te JACK pÅ™ed spuÅ¡tÄ›ním\n" -"Ardouru a potom vyberte přísluÅ¡né zařízení." +"%1 a potom vyberte přísluÅ¡né zařízení." #: engine_dialog.cc:790 msgid "No suitable audio devices" @@ -5994,31 +5984,29 @@ msgstr "Kanály:" msgid "Split to mono files" msgstr "RozdÄ›lit na monofonní soubory" -#: export_channel_selector.cc:182 +#: export_channel_selector.cc:180 msgid "Bus or Track" msgstr "SbÄ›rnice nebo stopa" -#: export_channel_selector.cc:459 +#: export_channel_selector.cc:457 msgid "Region contents without fades nor region gain (channels: %1)" msgstr "Obsah oblasti bez slábnutí ani síla hlasitost oblasti (kanály: %1)" -#: export_channel_selector.cc:463 +#: export_channel_selector.cc:461 msgid "Region contents with fades and region gain (channels: %1)" msgstr "Obsah oblasti se slábnutím a síla hlasitost oblasti (kanály: %1)" -#: export_channel_selector.cc:467 +#: export_channel_selector.cc:465 msgid "Track output (channels: %1)" msgstr "Výstup stopy (kanály: %1)" -#: export_channel_selector.cc:536 -#, fuzzy +#: export_channel_selector.cc:534 msgid "Export region contents" -msgstr "Vyvést oblast" +msgstr "Vyvést obsah oblasti" -#: export_channel_selector.cc:537 -#, fuzzy +#: export_channel_selector.cc:535 msgid "Export track output" -msgstr "Spojit výstupy stop a sbÄ›rnic" +msgstr "Vyvést výstup stopy" #: export_dialog.cc:46 msgid "" @@ -6031,8 +6019,8 @@ msgstr "" msgid "List files" msgstr "Vypsat soubory" -#: export_dialog.cc:164 export_timespan_selector.cc:355 -#: export_timespan_selector.cc:417 +#: export_dialog.cc:164 export_timespan_selector.cc:357 +#: export_timespan_selector.cc:421 msgid "Time Span" msgstr "ÄŒasové rozpÄ›tí" @@ -6141,9 +6129,6 @@ msgid "Folder:" msgstr "Složka:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 msgid "Browse" msgstr "Procházet" @@ -6287,44 +6272,44 @@ msgstr "" msgid "Show Times as:" msgstr "Ukázat Äasy jako:" -#: export_timespan_selector.cc:204 +#: export_timespan_selector.cc:206 msgid " to " msgstr " do " -#: export_timespan_selector.cc:348 export_timespan_selector.cc:407 +#: export_timespan_selector.cc:350 export_timespan_selector.cc:411 msgid "Range" msgstr "Rozsah" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: gain_meter.cc:108 gain_meter.cc:430 gain_meter.cc:819 msgid "-inf" msgstr "-inf" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:114 gain_meter.cc:868 msgid "Fader automation mode" msgstr "Režim automatizace prolínaÄe" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:115 gain_meter.cc:869 msgid "Fader automation type" msgstr "Druh automatizace prolínaÄe" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:124 gain_meter.cc:758 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "Abs" -#: gain_meter.cc:334 +#: gain_meter.cc:333 msgid "-Inf" msgstr "-Inf" -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 +#: gain_meter.cc:725 mixer_strip.cc:1955 panner_ui.cc:557 #: route_time_axis.cc:2391 msgid "P" msgstr "P" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:728 panner_ui.cc:560 msgid "T" msgstr "D" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:731 panner_ui.cc:563 msgid "W" msgstr "Z" @@ -6336,36 +6321,28 @@ msgstr "PÅ™edvolby" msgid "Switches" msgstr "PÅ™epínaÄe" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:372 processor_box.cc:2190 msgid "Controls" msgstr "Ovládání" -#: generic_pluginui.cc:270 +#: generic_pluginui.cc:266 msgid "Plugin Editor: could not build control element for port %1" msgstr "" "Editor přídavných modulů: nepodaÅ™ilo se vytvoÅ™it prvek ovládání pro přípojku " "%1" -#: generic_pluginui.cc:408 +#: generic_pluginui.cc:404 msgid "Meters" msgstr "MěřiÄe" -#: generic_pluginui.cc:423 +#: generic_pluginui.cc:419 msgid "Automation control" msgstr "Ovládání automatického systému" -#: generic_pluginui.cc:430 +#: generic_pluginui.cc:426 msgid "Mgnual" msgstr "RuÄnÄ› provádÄ›né" -#: global_port_matrix.cc:164 -msgid "Audio Connection Manager" -msgstr "Správce zvukových spojení" - -#: global_port_matrix.cc:167 -msgid "MIDI Connection Manager" -msgstr "Správce MIDI spojení" - #: global_port_matrix.cc:204 io_selector.cc:216 msgid "port" msgstr "Přípojka" @@ -6518,11 +6495,11 @@ msgstr "Zavádí se soubor: %1 z %2" msgid "I/O selector" msgstr "VoliÄ vstupu/výstupu" -#: io_selector.cc:266 +#: io_selector.cc:268 msgid "%1 input" msgstr "%1 vstup" -#: io_selector.cc:268 +#: io_selector.cc:270 msgid "%1 output" msgstr "%1 výstup" @@ -6694,7 +6671,6 @@ msgid "%1 could not connect to JACK." msgstr "%1 se nepodaÅ™ilo spojit se s JACKem." #: main.cc:87 -#, fuzzy msgid "" "There are several possible reasons:\n" "\n" @@ -6708,41 +6684,43 @@ msgstr "" "\n" "1) JACK neběží.\n" "2) JACK byl spuÅ¡tÄ›n pod jiným uživatelem, možná pod superuživatelem (root).\n" -"3) Je tu již jiný klient nazvaný \"ardour\".\n" +"3) Je tu již jiný klient nazvaný \"%1\".\n" "\n" "Zvažte, prosím, tyto možnosti, a případnÄ› spusÅ¥te JACKa znovu." -#: main.cc:203 main.cc:324 -#, fuzzy +#: main.cc:201 main.cc:320 msgid "cannot create user %3 folder %1 (%2)" -msgstr "Nelze vytvoÅ™it uživatelův adresář urÄený pro Ardour %1 (%2)" +msgstr "Nelze vytvoÅ™it uživatelův adresář urÄený pro %3 %1 (%2)" -#: main.cc:210 main.cc:331 +#: main.cc:208 main.cc:327 msgid "cannot open pango.rc file %1" msgstr "Nelze otevřít soubor pango.rc %1" -#: main.cc:235 main.cc:358 +#: main.cc:233 main.cc:354 msgid "Cannot find ArdourMono TrueType font" -msgstr "" +msgstr "Nelze nalézt písmo ArdourMono TrueType" -#: main.cc:247 main.cc:364 +#: main.cc:245 main.cc:360 msgid "Cannot load ArdourMono TrueType font." -msgstr "" +msgstr "Nelze nahrát písmo ArdourMono TrueType." -#: main.cc:312 +#: main.cc:308 msgid "" "No fontconfig file found on your system. Things may looked very odd or ugly" msgstr "" +"Ve vaÅ¡em systému nebyl nalezen žádný soubor s nastavením písma. VÄ›ci v " +"rozhraní " +"mohou vypadat velice divnÄ› a oÅ¡klivÄ›." -#: main.cc:368 +#: main.cc:364 msgid "Failed to set fontconfig configuration." -msgstr "" +msgstr "NepodaÅ™ilo se nastavit nastavení písma." -#: main.cc:379 main.cc:395 +#: main.cc:375 main.cc:391 msgid "JACK exited" msgstr "JACK skonÄil" -#: main.cc:382 +#: main.cc:378 msgid "" "JACK exited unexpectedly, and without notifying %1.\n" "\n" @@ -6756,7 +6734,7 @@ msgstr "" "\n" "KlepnÄ›te na OK pro ukonÄení %1." -#: main.cc:397 +#: main.cc:393 msgid "" "JACK exited unexpectedly, and without notifying %1.\n" "\n" @@ -6771,19 +6749,19 @@ msgstr "" "a pÅ™ipojit k nÄ›mu %1 znovu, nebo nyní %1 ukonÄit. V této chvíli nemůžete\n" "uložit své sezení, protože by doÅ¡lo ke ztrátÄ› informací o vaÅ¡em spojení.\n" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr " (sestaveno s verzí " -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr " a GCC verze " -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "Autorské právo (C) 1999-2012 Paul Davis" -#: main.cc:505 +#: main.cc:501 msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" @@ -6791,36 +6769,35 @@ msgstr "" "NÄ›které Äásti: autorské právo (C) Steve Harris, Ari Johnson, Brett Viren, " "Joel Baker, Robin Gareus" -#: main.cc:507 +#: main.cc:503 msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "%1 je poskytován bez NAPROSTO ŽÃDNÉ ZÃRUKY" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "ani pro vhodnost pro OBCHOD nebo způsobilost pro ZVLÃÅ TNà POUŽÃVÃNÃ." -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "Je to svobodný program a vaÅ¡e pomoc s jeho dalším šířením je vítána" -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "dokud dbáte na urÄité podmínky, které jsou uvedeny v souboru COPYING." -#: main.cc:519 +#: main.cc:515 msgid "Cannot xinstall SIGPIPE error handler" msgstr "Nelze nainstalovat SIGPIPE, který má na starosti chyby" -#: main.cc:525 -#, fuzzy +#: main.cc:521 msgid "could not create %1 GUI" -msgstr "NepodaÅ™ilo se vytvoÅ™it obrazové uživatelské rozhraní k Ardouru" +msgstr "NepodaÅ™ilo se vytvoÅ™it obrazové uživatelské rozhraní k %1" #: main_clock.cc:51 msgid "Display delta to edit cursor" msgstr "Zobrazit deltu pro úpravu ukazovátka" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 msgid "MarkerText" msgstr "Text u znaÄky" @@ -6839,89 +6816,80 @@ msgid "Force" msgstr "Vynutit" #: midi_channel_selector.cc:330 midi_channel_selector.cc:372 -#, fuzzy msgid "MIDI Channel Control" -msgstr "Ovládání MIDI" +msgstr "Ovládání kanálu MIDI" #: midi_channel_selector.cc:332 -#, fuzzy msgid "Playback all channels" -msgstr "Skrýt vÅ¡echny kanály" +msgstr "PÅ™ehrávat vÅ¡echny kanály" #: midi_channel_selector.cc:333 -#, fuzzy msgid "Play only selected channels" -msgstr "PÅ™ehrát vybraný rozsah" +msgstr "PÅ™ehrát pouze vybrané kanály" #: midi_channel_selector.cc:334 msgid "Use a single fixed channel for all playback" -msgstr "" +msgstr "Použít pro pÅ™ehrávání jeden pevný kanál" #: midi_channel_selector.cc:335 -#, fuzzy msgid "Record all channels" -msgstr "Skrýt vÅ¡echny kanály" +msgstr "Nahrávat vÅ¡echny kanály" #: midi_channel_selector.cc:336 -#, fuzzy msgid "Record only selected channels" -msgstr "Upravit kanál noty" +msgstr "Nahrávat pouze vybrané kanály" #: midi_channel_selector.cc:337 -#, fuzzy msgid "Force all channels to 1 channel" -msgstr "ZmÄ›nit kanál noty" +msgstr "Vynutit vÅ¡echny kanály do jednoho kanálu" #: midi_channel_selector.cc:378 -#, fuzzy msgid "Inbound" -msgstr "Hranice oblasti" +msgstr "Na vstupu" #: midi_channel_selector.cc:398 -#, fuzzy msgid "Click to enable recording all channels" -msgstr "Povolit/Zakázat tento přídavný modul" +msgstr "Klepnout pro povolení nahrávání vÅ¡ech kanálů" #: midi_channel_selector.cc:403 msgid "Click to disable recording all channels" -msgstr "" +msgstr "Klepnout pro zakázání nahrávání vÅ¡ech kanálů" #: midi_channel_selector.cc:408 msgid "Click to invert currently selected recording channels" -msgstr "" +msgstr "Klepnout pro obrácení nyní vybraných nahrávacích kanálů" #: midi_channel_selector.cc:415 -#, fuzzy msgid "Playback" -msgstr "Pouze pÅ™ehrávání" +msgstr "PÅ™ehrávání" #: midi_channel_selector.cc:434 msgid "Click to enable playback of all channels" -msgstr "" +msgstr "Klepnout pro povolení pÅ™ehrávání vÅ¡ech kanálů" #: midi_channel_selector.cc:439 msgid "Click to disable playback of all channels" -msgstr "" +msgstr "Klepnout pro zakázání pÅ™ehrávání vÅ¡ech kanálů" #: midi_channel_selector.cc:444 msgid "Click to invert current selected playback channels" -msgstr "" +msgstr "Klepnout pro obrácení nyní vybraných pÅ™ehrávacích kanálů" #: midi_channel_selector.cc:622 msgid "Click to toggle playback of channel %1" -msgstr "" +msgstr "Klepnout pro pÅ™epnutí pÅ™ehrávání kanálu %1" #: midi_channel_selector.cc:630 msgid "Click to force all MIDI channel messages to channel %1" -msgstr "" +msgstr "Klepnout pro vynucení vÅ¡ech zpráv kanálu MIDI do kanálu %1" #: midi_channel_selector.cc:720 msgid "Click to toggle recording of channel %1" -msgstr "" +msgstr "Klepnout pro pÅ™epnutí nahrávání kanálu %1" #: midi_channel_selector.cc:728 msgid "Click to force all recorded channels to %1" -msgstr "" +msgstr "Klepnout pro vynucení vÅ¡ech nahrávaných kanálů do %1" #: midi_export_dialog.cc:35 msgid "Export MIDI: %1" @@ -7019,7 +6987,7 @@ msgstr "PÅ™idat novou přípojku MIDI" msgid "Port name:" msgstr "Název přípojky:" -#: midi_port_dialog.cc:45 +#: midi_port_dialog.cc:46 msgid "MidiPortDialog" msgstr "Dialog pro přípojku MIDI" @@ -7041,7 +7009,7 @@ msgstr "PÅ™idání kroku" #: midi_region_view.cc:1862 msgid "insane MIDI patch key %1:%2" -msgstr "" +msgstr "Nesmyslný klÃ­Ä zapojení MIDI %1:%2" #: midi_region_view.cc:1870 midi_region_view.cc:1890 msgid "alter patch change" @@ -7096,32 +7064,28 @@ msgid "change channel" msgstr "ZmÄ›nit kanál" #: midi_region_view.cc:3130 -#, fuzzy msgid "Bank " -msgstr "Banka" +msgstr "Banka " #: midi_region_view.cc:3131 -#, fuzzy msgid "Program " -msgstr "Program" +msgstr "Program " #: midi_region_view.cc:3132 -#, fuzzy msgid "Channel " -msgstr "Kanál" +msgstr "Kanál " #: midi_region_view.cc:3301 midi_region_view.cc:3303 msgid "paste" msgstr "Vložit" -#: midi_region_view.cc:3761 +#: midi_region_view.cc:3763 msgid "delete sysex" msgstr "Smazat SysEx" #: midi_streamview.cc:479 -#, fuzzy msgid "failed to create MIDI region" -msgstr "VytvoÅ™it oblast" +msgstr "NepodaÅ™ilo se vytvoÅ™it oblast MIDI" #: midi_time_axis.cc:262 msgid "External MIDI Device" @@ -7133,12 +7097,11 @@ msgstr "Režim vnÄ›jšího zařízení " #: midi_time_axis.cc:271 msgid "Chns" -msgstr "" +msgstr "Kan" #: midi_time_axis.cc:272 -#, fuzzy msgid "Click to edit channel settings" -msgstr "KlepnÄ›te pro pÅ™idání nového umístÄ›ní" +msgstr "KlepnÄ›te pro úpravu nastavení kanálu" #: midi_time_axis.cc:486 msgid "Show Full Range" @@ -7157,81 +7120,69 @@ msgid "Note Mode" msgstr "Režim noty" #: midi_time_axis.cc:497 -#, fuzzy msgid "Channel Selector" -msgstr "Barvy kanálů" +msgstr "VoliÄ kanálů" #: midi_time_axis.cc:502 msgid "Color Mode" msgstr "Barevný režim" -#: midi_time_axis.cc:561 +#: midi_time_axis.cc:562 msgid "Bender" msgstr "OhýbaÄ" -#: midi_time_axis.cc:565 +#: midi_time_axis.cc:566 msgid "Pressure" msgstr "Tlak" -#: midi_time_axis.cc:578 +#: midi_time_axis.cc:579 msgid "Controllers" msgstr "Ovládací prvky" -#: midi_time_axis.cc:583 +#: midi_time_axis.cc:584 msgid "No MIDI Channels selected" msgstr "Nejsou vybrány žádné kanály MIDI" -#: midi_time_axis.cc:640 midi_time_axis.cc:769 +#: midi_time_axis.cc:641 midi_time_axis.cc:770 msgid "Hide all channels" msgstr "Skrýt vÅ¡echny kanály" -#: midi_time_axis.cc:644 midi_time_axis.cc:773 +#: midi_time_axis.cc:645 midi_time_axis.cc:774 msgid "Show all channels" msgstr "Ukázat vÅ¡echny kanály" -#: midi_time_axis.cc:655 midi_time_axis.cc:784 +#: midi_time_axis.cc:656 midi_time_axis.cc:785 msgid "Channel %1" msgstr "Kanál %1" -#: midi_time_axis.cc:910 midi_time_axis.cc:942 +#: midi_time_axis.cc:911 midi_time_axis.cc:943 msgid "Controllers %1-%2" msgstr "Ovládací prvky %1-%2" -#: midi_time_axis.cc:933 midi_time_axis.cc:936 -#, fuzzy +#: midi_time_axis.cc:934 midi_time_axis.cc:937 msgid "Controller %1" -msgstr "Ovládací prvky %1-%2" +msgstr "Ovládací prvek %1" -#: midi_time_axis.cc:959 +#: midi_time_axis.cc:960 msgid "Sustained" msgstr "Držený tón" -#: midi_time_axis.cc:966 +#: midi_time_axis.cc:967 msgid "Percussive" msgstr "Bicí" -#: midi_time_axis.cc:986 +#: midi_time_axis.cc:987 msgid "Meter Colors" msgstr "Barvy měřidel" -#: midi_time_axis.cc:993 +#: midi_time_axis.cc:994 msgid "Channel Colors" msgstr "Barvy kanálů" -#: midi_time_axis.cc:1000 +#: midi_time_axis.cc:1001 msgid "Track Color" msgstr "Barva stopy" -#: midi_time_axis.cc:1488 midi_time_axis.cc:1494 midi_time_axis.cc:1504 -#: midi_time_axis.cc:1510 -#, fuzzy -msgid "all" -msgstr "Malá" - -#: midi_time_axis.cc:1491 midi_time_axis.cc:1507 -msgid "some" -msgstr "" - #: midi_tracer.cc:43 msgid "Line history: " msgstr "Historie linky: " @@ -7316,7 +7267,7 @@ msgstr "Klepnout pro výbÄ›r dodateÄné složky" msgid "Missing Plugins" msgstr "ChybÄ›jící přídavné moduly" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 msgid "OK" msgstr "OK" @@ -7388,12 +7339,12 @@ msgstr "Nahrané vazby směšovaÄe z %1" msgid "Could not find mixer.bindings in search path %1" msgstr "V prohledávané cestÄ› %1 se nepodaÅ™ilo nalézt vazby směšovaÄe" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1721 msgid "pre" msgstr "PÅ™ed" #: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: rc_option_editor.cc:1884 msgid "Comments" msgstr "Poznámka" @@ -7429,11 +7380,11 @@ msgstr "Samostatné sólo" msgid "Lock Solo Status" msgstr "Zamknout stav sóla" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:201 mixer_strip.cc:1930 msgid "lock" msgstr "Zam" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:202 mixer_strip.cc:1929 msgid "iso" msgstr "Sam" @@ -7441,19 +7392,19 @@ msgstr "Sam" msgid "Mix group" msgstr "Skupina smÄ›si" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:349 rc_option_editor.cc:1881 msgid "Phase Invert" msgstr "Obrácení fáze" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:350 rc_option_editor.cc:1882 route_ui.cc:1213 msgid "Solo Safe" msgstr "ZajiÅ¡tÄ›né sólo" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:353 mixer_ui.cc:123 route_time_axis.cc:664 msgid "Group" msgstr "Skupina" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:354 rc_option_editor.cc:1885 msgid "Meter Point" msgstr "Měřicí bod" @@ -7473,7 +7424,7 @@ msgstr "" msgid "Snd" msgstr "Posl" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2118 msgid "Not connected to JACK - no I/O changes are possible" msgstr "" "Nespojeno s JACKem - na vstupech/výstupech (I/O) nejsou možné žádné zmÄ›ny" @@ -7510,109 +7461,109 @@ msgstr "Klepnout pro PÅ™idat/Upravit poznámky" msgid ": comment editor" msgstr ": editor poznámek" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1429 msgid "Grp" msgstr "Skup" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1432 msgid "~G" msgstr "~S" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1461 msgid "Comments..." msgstr "Poznámky..." -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1463 msgid "Save As Template..." msgstr "Uložit jako pÅ™edlohu..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1469 route_group_dialog.cc:39 route_time_axis.cc:687 msgid "Active" msgstr "ÄŒinné" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1476 msgid "Adjust Latency..." msgstr "Upravit prodlevu..." -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1479 msgid "Protect Against Denormals" msgstr "Chránit proti neobvyklým hodnotám" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1485 route_time_axis.cc:426 msgid "Remote Control ID..." msgstr "ID dálkového ovládání..." -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 msgid "in" msgstr "Vst" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "Po" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 msgid "out" msgstr "Výst" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "Vlastní" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 msgid "pr" msgstr "Pre" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 msgid "po" msgstr "Po" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 msgid "o" msgstr "o" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "c" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:138 msgid "Disk" msgstr "Disk" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1921 monitor_section.cc:63 msgid "AFL" msgstr "AFL" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1924 monitor_section.cc:64 msgid "PFL" msgstr "PFL" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1937 msgid "D" msgstr "D" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1960 msgid "i" msgstr "Vst" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2134 msgid "Pre-fader" msgstr "PÅ™ed-prolínaÄ" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2135 msgid "Post-fader" msgstr "Po-prolínaÄ" -#: mixer_ui.cc:1189 +#: mixer_ui.cc:1188 msgid "track display list item for renamed strip not found!" msgstr "" "OznaÄení pro pÅ™ejmenovaný proužek (mixážní kanál) v seznamu pro zobrazení " "stop nelze najít!" -#: mixer_ui.cc:1273 +#: mixer_ui.cc:1272 msgid "-all-" msgstr "-vÅ¡e-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1791 msgid "Strips" msgstr "Proužky" @@ -7715,7 +7666,7 @@ msgstr "Ztlumit" #: monitor_section.cc:238 msgid "dim" -msgstr "Tlumený" +msgstr "Zeslabit" #: monitor_section.cc:245 msgid "mono" @@ -7726,28 +7677,24 @@ msgid "Monitor" msgstr "Sledování" #: monitor_section.cc:678 -#, fuzzy msgid "Switch monitor to mono" -msgstr "PÅ™ejít na druhou oktávu" +msgstr "PÅ™epnout sledování na mono" #: monitor_section.cc:681 -#, fuzzy msgid "Cut monitor" -msgstr ":sledování" +msgstr "Vyjmout sledování" #: monitor_section.cc:684 -#, fuzzy msgid "Dim monitor" -msgstr ":sledování" +msgstr "Zeslabit sledování" #: monitor_section.cc:687 -#, fuzzy msgid "Toggle exclusive solo mode" -msgstr "Výhradní sólo" +msgstr "PÅ™epnout režim výhradní sólo" #: monitor_section.cc:693 msgid "Toggle mute overrides solo mode" -msgstr "" +msgstr "PÅ™epnout režim ztlumení potlaÄí sólo" #: monitor_section.cc:705 msgid "Cut monitor channel %1" @@ -7766,24 +7713,21 @@ msgid "Invert monitor channel %1" msgstr "Obrátit kanál pro sledování %1" #: monitor_section.cc:730 -#, fuzzy msgid "In-place solo" -msgstr "UzavÅ™ené sólo" +msgstr "Sólo přímo na místÄ›" #: monitor_section.cc:732 -#, fuzzy msgid "After Fade Listen (AFL) solo" -msgstr "Poslech po-prolínaÄi (AFL)" +msgstr "Sólo poslech po prolínání (AFL)" #: monitor_section.cc:734 -#, fuzzy msgid "Pre Fade Listen (PFL) solo" -msgstr "Poslech pÅ™ed-prolínaÄem (PFL)" +msgstr "Sólo poslech pÅ™ed prolínáním (PFL)" #: mono_panner.cc:101 -#, fuzzy, c-format +#, c-format msgid "L:%3d R:%3d" -msgstr "L:%1 P:%2" +msgstr "L:%3d P:%3d" #: mono_panner_editor.cc:33 msgid "Mono Panner" @@ -7795,9 +7739,8 @@ msgid "%" msgstr "%" #: nag.cc:41 -#, fuzzy msgid "Support %1 Development" -msgstr "PodpoÅ™te vývoj Ardouru" +msgstr "PodpoÅ™te vývoj %1" #: nag.cc:42 msgid "I'd like to make a one-time donation" @@ -7921,6 +7864,8 @@ msgstr " -h, --help Ukázat toto sdÄ›lení\n" msgid "" " -a, --no-announcements Do not contact website for announcements\n" msgstr "" +" -a, --no-announcements Nespojovat se se stránkami projektu kvůli " +"oznámením\n" #: opts.cc:62 msgid "" @@ -7976,6 +7921,8 @@ msgstr "" #: opts.cc:70 msgid " -P, --no-connect-ports Do not connect any ports at startup\n" msgstr "" +" -P, --no-connect-ports Nespojovat se pÅ™i spuÅ¡tÄ›ní s jakýmikoli " +"přípojkami\n" #: opts.cc:71 msgid " -S, --sync Draw the gui synchronously \n" @@ -8011,7 +7958,7 @@ msgstr "" msgid "Panner (2D)" msgstr "VyvažovaÄ (2D)" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:494 msgid "Bypass" msgstr "Obejít" @@ -8038,23 +7985,23 @@ msgstr "" msgid "Playlists" msgstr "Seznamy skladeb" -#: playlist_selector.cc:54 +#: playlist_selector.cc:55 msgid "Playlists grouped by track" msgstr "Seznamy skladeb seskupené podle stop" -#: playlist_selector.cc:101 +#: playlist_selector.cc:102 msgid "Playlist for %1" msgstr "Seznam skladeb pro %1" -#: playlist_selector.cc:114 +#: playlist_selector.cc:115 msgid "Other tracks" msgstr "Ostatní stopy" -#: playlist_selector.cc:139 +#: playlist_selector.cc:140 msgid "unassigned" msgstr "NepÅ™idÄ›lené" -#: playlist_selector.cc:194 +#: playlist_selector.cc:195 msgid "Imported" msgstr "Zavedeno" @@ -8066,31 +8013,31 @@ msgstr "Stupnice dB" msgid "Show phase" msgstr "Ukázat fázi" -#: plugin_selector.cc:53 plugin_selector.cc:220 +#: plugin_selector.cc:53 plugin_selector.cc:221 msgid "Name contains" msgstr "Název obsahuje" -#: plugin_selector.cc:54 plugin_selector.cc:224 +#: plugin_selector.cc:54 plugin_selector.cc:225 msgid "Type contains" msgstr "Druh obsahuje" -#: plugin_selector.cc:55 plugin_selector.cc:222 +#: plugin_selector.cc:55 plugin_selector.cc:223 msgid "Category contains" msgstr "Skupina obsahuje" -#: plugin_selector.cc:56 plugin_selector.cc:244 +#: plugin_selector.cc:56 plugin_selector.cc:245 msgid "Author contains" msgstr "Autor obsahuje" -#: plugin_selector.cc:57 plugin_selector.cc:246 +#: plugin_selector.cc:57 plugin_selector.cc:247 msgid "Library contains" msgstr "Sbírka obsahuje" -#: plugin_selector.cc:58 plugin_selector.cc:210 plugin_selector.cc:521 +#: plugin_selector.cc:58 plugin_selector.cc:211 plugin_selector.cc:522 msgid "Favorites only" msgstr "Pouze oblíbené" -#: plugin_selector.cc:59 plugin_selector.cc:214 plugin_selector.cc:521 +#: plugin_selector.cc:59 plugin_selector.cc:215 plugin_selector.cc:522 msgid "Hidden only" msgstr "Pouze skryté" @@ -8098,68 +8045,68 @@ msgstr "Pouze skryté" msgid "Plugin Manager" msgstr "Správce přídavných modulů" -#: plugin_selector.cc:84 +#: plugin_selector.cc:85 msgid "Fav" msgstr "Oblíbené" -#: plugin_selector.cc:86 +#: plugin_selector.cc:87 msgid "Available Plugins" msgstr "Dostupné přídavné moduly" -#: plugin_selector.cc:87 +#: plugin_selector.cc:88 msgid "Type" msgstr "Druh" -#: plugin_selector.cc:88 +#: plugin_selector.cc:89 msgid "Category" msgstr "Skupina" -#: plugin_selector.cc:89 +#: plugin_selector.cc:90 msgid "Creator" msgstr "Tvůrce" -#: plugin_selector.cc:90 +#: plugin_selector.cc:91 msgid "# Audio In" msgstr "# Vstup zvuku" -#: plugin_selector.cc:91 +#: plugin_selector.cc:92 msgid "# Audio Out" msgstr "# Výstup zvuku" -#: plugin_selector.cc:92 +#: plugin_selector.cc:93 msgid "# MIDI In" msgstr "# Vstup MIDI" -#: plugin_selector.cc:93 +#: plugin_selector.cc:94 msgid "# MIDI Out" msgstr "# Výstup MIDI" -#: plugin_selector.cc:115 +#: plugin_selector.cc:116 msgid "Plugins to be connected" msgstr "Přídavné moduly ke spojení" -#: plugin_selector.cc:128 +#: plugin_selector.cc:129 msgid "Add a plugin to the effect list" msgstr "PÅ™idat přídavný modul do seznamu s úÄinky" -#: plugin_selector.cc:132 +#: plugin_selector.cc:133 msgid "Remove a plugin from the effect list" msgstr "Odstranit přídavný modul ze seznamu s úÄinky" -#: plugin_selector.cc:134 +#: plugin_selector.cc:135 msgid "Update available plugins" msgstr "Obnovit dostupné přídavné moduly" -#: plugin_selector.cc:171 +#: plugin_selector.cc:172 msgid "Insert Plugin(s)" msgstr "Vložit přídavný(é) modul(y)" -#: plugin_selector.cc:320 plugin_selector.cc:321 plugin_selector.cc:322 -#: plugin_selector.cc:323 +#: plugin_selector.cc:321 plugin_selector.cc:322 plugin_selector.cc:323 +#: plugin_selector.cc:324 msgid "variable" msgstr "PromÄ›nná" -#: plugin_selector.cc:480 +#: plugin_selector.cc:481 msgid "" "The plugin \"%1\" could not be loaded\n" "\n" @@ -8169,67 +8116,65 @@ msgstr "" "\n" "Více podrobností hledejte a možná najdete v oknÄ› se zápisem" -#: plugin_selector.cc:628 +#: plugin_selector.cc:629 msgid "Favorites" msgstr "Oblíbené" -#: plugin_selector.cc:630 +#: plugin_selector.cc:631 msgid "Plugin Manager..." msgstr "Správce přídavných modulů..." -#: plugin_selector.cc:634 +#: plugin_selector.cc:635 msgid "By Creator" msgstr "Podle tvůrce" -#: plugin_selector.cc:637 +#: plugin_selector.cc:638 msgid "By Category" msgstr "Podle skupiny" -#: plugin_ui.cc:116 +#: plugin_ui.cc:118 msgid "Eh? LADSPA plugins don't have editors!" msgstr "" "Pozoruhodné... Přídavné moduly LADSPA nemají žádné grafické uživatelské " "rozhraní!" -#: plugin_ui.cc:125 plugin_ui.cc:228 -#, fuzzy +#: plugin_ui.cc:127 plugin_ui.cc:270 msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " "version of %1)" msgstr "" -"Neznámý druh přídavného modulu (UpozornÄ›ní: tato verze Ardouru nepodporuje " +"Neznámý druh přídavného modulu (UpozornÄ›ní: tato verze %1 nepodporuje " "žádné přídavné moduly VST)" -#: plugin_ui.cc:128 +#: plugin_ui.cc:130 msgid "unknown type of editor-supplying plugin" msgstr "Neznámý druh přídavného modulu" -#: plugin_ui.cc:258 -#, fuzzy +#: plugin_ui.cc:300 msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " "version of %1)" msgstr "" -"Neznámý druh přídavného modulu pro editor (UpozornÄ›ní: tato verze Ardouru " +"Neznámý druh přídavného modulu pro editor (UpozornÄ›ní: tato verze %1 " "nepodporuje linuxové VST)" -#: plugin_ui.cc:330 +#: plugin_ui.cc:372 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "create_lv2_editor používaný na ne-LV2 přídavný modul" -#: plugin_ui.cc:418 +#: plugin_ui.cc:460 msgid "Add" msgstr "PÅ™idat" -#: plugin_ui.cc:422 +#: plugin_ui.cc:464 msgid "Description" msgstr "Popis" -#: plugin_ui.cc:423 +#: plugin_ui.cc:465 msgid "Plugin analysis" msgstr "Rozbor přídavného modulu" -#: plugin_ui.cc:430 +#: plugin_ui.cc:472 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" @@ -8237,23 +8182,23 @@ msgstr "" "PÅ™ednastavení (jsou-li) pro tento přídavný modul\n" "(tovární i vytvoÅ™ená uživatelem)" -#: plugin_ui.cc:431 +#: plugin_ui.cc:473 msgid "Save a new preset" msgstr "Uložit nové pÅ™ednastavení" -#: plugin_ui.cc:432 +#: plugin_ui.cc:474 msgid "Save the current preset" msgstr "Uložit nynÄ›jší pÅ™ednastavení" -#: plugin_ui.cc:433 +#: plugin_ui.cc:475 msgid "Delete the current preset" msgstr "Smazat nynÄ›jší pÅ™ednastavení" -#: plugin_ui.cc:434 +#: plugin_ui.cc:476 msgid "Disable signal processing by the plugin" msgstr "Zakázat zpracování signálu přídavným modulem" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:509 plugin_ui.cc:675 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" @@ -8261,29 +8206,29 @@ msgstr "" "KlepnÄ›te pro povolení přídavného modulu pro pÅ™ijímání událostí klávesnice, " "kterých by %1 obyÄejnÄ› použil jako zkratek" -#: plugin_ui.cc:468 +#: plugin_ui.cc:510 msgid "Click to enable/disable this plugin" msgstr "Povolit/Zakázat tento přídavný modul" -#: plugin_ui.cc:507 +#: plugin_ui.cc:549 msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "Prodleva (%1 vzorky)" msgstr[1] "Prodleva (%1 vzorků)" -#: plugin_ui.cc:509 +#: plugin_ui.cc:551 msgid "latency (%1 ms)" msgstr "Prodleva (%1 ms)" -#: plugin_ui.cc:520 +#: plugin_ui.cc:562 msgid "Edit Latency" msgstr "Upravit prodlevu" -#: plugin_ui.cc:559 +#: plugin_ui.cc:602 msgid "Plugin preset %1 not found" msgstr "PÅ™ednastavení přídavného modulu %1 nenalezeno" -#: plugin_ui.cc:639 +#: plugin_ui.cc:682 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "KlepnÄ›te pro povolení obvyklého používání klávesových zkratek v %1" @@ -8472,36 +8417,23 @@ msgstr "Nejsou zde žádné přípojky k pÅ™ipojení." msgid "There are no %1 ports to connect." msgstr "Nejsou zde žádné %1 přípojky k pÅ™ipojení." -#: processor_box.cc:255 -msgid "" -"%1\n" -"Double-click to show GUI.\n" -"Alt+double-click to show generic GUI." -msgstr "" - -#: processor_box.cc:258 -msgid "" -"%1\n" -"Double-click to show generic GUI." -msgstr "" - -#: processor_box.cc:371 +#: processor_box.cc:358 msgid "Show All Controls" msgstr "Ukázat vÅ¡echny ovládací prvky" -#: processor_box.cc:375 +#: processor_box.cc:362 msgid "Hide All Controls" msgstr "Skrýt vÅ¡echny ovládací prvky" -#: processor_box.cc:464 +#: processor_box.cc:451 msgid "on" msgstr "Zapnuto" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:451 rc_option_editor.cc:1914 rc_option_editor.cc:1928 msgid "off" msgstr "Vypnuto" -#: processor_box.cc:729 +#: processor_box.cc:716 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" @@ -8509,15 +8441,15 @@ msgstr "" "Klepnutí pravým tlaÄítkem myÅ¡i pro pÅ™idání/odstranÄ›ní/upravení\n" "přídavných modulů, vložení, poslání a další" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1150 processor_box.cc:1540 msgid "Plugin Incompatibility" msgstr "NesluÄitelnost přídavného modulu" -#: processor_box.cc:1187 +#: processor_box.cc:1153 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "Pokusil jste se pÅ™idat přídavný modul \"%1\" do místa %2.\n" -#: processor_box.cc:1193 +#: processor_box.cc:1159 msgid "" "\n" "This plugin has:\n" @@ -8525,19 +8457,19 @@ msgstr "" "\n" "Tento přídavný modul má:\n" -#: processor_box.cc:1196 +#: processor_box.cc:1162 msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "\t%1 vstup MIDI\n" msgstr[1] "\t%1 vstupů MIDI" -#: processor_box.cc:1200 +#: processor_box.cc:1166 msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" msgstr[0] "\t%1 vstup pro zvuk\n" msgstr[1] "\t%1 vstupů pro zvuk" -#: processor_box.cc:1203 +#: processor_box.cc:1169 msgid "" "\n" "but at the insertion point, there are:\n" @@ -8545,19 +8477,19 @@ msgstr "" "\n" "Ale v bodÄ› vložení jsou:\n" -#: processor_box.cc:1206 +#: processor_box.cc:1172 msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "\t%1 kanál MIDI\n" msgstr[1] "\t%1 kanálů MIDI\n" -#: processor_box.cc:1210 +#: processor_box.cc:1176 msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "\t%1 kanál pro zvuk\n" msgstr[1] "\t%1 kanálů pro zvuk\n" -#: processor_box.cc:1213 +#: processor_box.cc:1179 msgid "" "\n" "%1 is unable to insert this plugin here.\n" @@ -8565,11 +8497,11 @@ msgstr "" "\n" "%1 není schopen vložit tento přídavný modul zde." -#: processor_box.cc:1249 +#: processor_box.cc:1216 msgid "Cannot set up new send: %1" msgstr "Nelze nastavit nové odeslání: %1" -#: processor_box.cc:1581 +#: processor_box.cc:1543 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" @@ -8579,21 +8511,21 @@ msgstr "" "pÅ™euspořádat tímto způsobem, protože vstupy a\n" "výstupy nebudou nepracovat správnÄ›." -#: processor_box.cc:1765 +#: processor_box.cc:1728 msgid "Rename Processor" msgstr "PÅ™ejmenovat procesor" -#: processor_box.cc:1796 +#: processor_box.cc:1759 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" "Je nejménÄ› 100 I/O (vstupních/výstupních) objektů, které nesou název %1 - " "název nezmÄ›nÄ›n" -#: processor_box.cc:1930 +#: processor_box.cc:1893 msgid "plugin insert constructor failed" msgstr "Vložení přídavného modulu se nezdaÅ™ilo" -#: processor_box.cc:1941 +#: processor_box.cc:1904 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" @@ -8603,7 +8535,7 @@ msgstr "" "PravdÄ›podobnÄ› se neshoduje vstupní/výstupní nastavení (I/O)\n" "přídavných modulů s nastavením pro tuto stopu." -#: processor_box.cc:1987 +#: processor_box.cc:1950 msgid "" "Do you really want to remove all processors from %1?\n" "(this cannot be undone)" @@ -8611,15 +8543,15 @@ msgstr "" "Doopravdy chcete odstranit vÅ¡echny zpracovatele z %1?\n" "(Toto se pak nedá vrátit zpátky)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:1954 processor_box.cc:1979 msgid "Yes, remove them all" msgstr "Ano, vÅ¡echny odstranit" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:1956 processor_box.cc:1981 msgid "Remove processors" msgstr "PÅ™ejmenovat zpracovatele" -#: processor_box.cc:2008 +#: processor_box.cc:1971 msgid "" "Do you really want to remove all pre-fader processors from %1?\n" "(this cannot be undone)" @@ -8627,7 +8559,7 @@ msgstr "" "Opravdu chcete odstranit vÅ¡echny zpracovatele pÅ™ed-prolínaÄe z %1?\n" "(Toto se pak nedá vrátit zpátky)" -#: processor_box.cc:2011 +#: processor_box.cc:1974 msgid "" "Do you really want to remove all post-fader processors from %1?\n" "(this cannot be undone)" @@ -8635,52 +8567,51 @@ msgstr "" "Opravdu chcete odstranit vÅ¡echny zpracovatele po-prolínaÄe z %1?\n" "(Toto se pak nedá vrátit zpátky)" -#: processor_box.cc:2198 +#: processor_box.cc:2178 msgid "New Plugin" msgstr "Vložit nový přídavný modul" -#: processor_box.cc:2201 +#: processor_box.cc:2181 msgid "New Insert" msgstr "Vložit novou vložku" -#: processor_box.cc:2204 +#: processor_box.cc:2184 msgid "New External Send ..." msgstr "Nové vnÄ›jší odeslání..." -#: processor_box.cc:2208 +#: processor_box.cc:2188 msgid "New Aux Send ..." msgstr "Vložit nové pomocné odeslání (Aux)..." -#: processor_box.cc:2212 +#: processor_box.cc:2192 msgid "Clear (all)" msgstr "Smazat (vÅ¡e)" -#: processor_box.cc:2214 +#: processor_box.cc:2194 msgid "Clear (pre-fader)" msgstr "Smazat (pÅ™ed-prolínaÄ)" -#: processor_box.cc:2216 +#: processor_box.cc:2196 msgid "Clear (post-fader)" msgstr "Smazat (po-prolínaÄ)" -#: processor_box.cc:2242 +#: processor_box.cc:2222 msgid "Activate All" msgstr "Zapnout vÅ¡e" -#: processor_box.cc:2244 +#: processor_box.cc:2224 msgid "Deactivate All" msgstr "Vypnout vÅ¡e" -#: processor_box.cc:2246 +#: processor_box.cc:2226 msgid "A/B Plugins" msgstr "Přídavné moduly A/B" -#: processor_box.cc:2255 -#, fuzzy -msgid "Edit with generic controls..." +#: processor_box.cc:2235 +msgid "Edit with basic controls..." msgstr "Upravit pomocí základních ovládacích prvků..." -#: processor_box.cc:2531 +#: processor_box.cc:2481 msgid "%1: %2 (by %3)" msgstr "%1: %2 (podle %3)" @@ -8800,11 +8731,6 @@ msgstr "PÅ™ehrávání (sekundy ukládání do vyrovnávací pamÄ›ti):" msgid "Recording (seconds of buffering):" msgstr "Nahrávání (sekundy ukládání do vyrovnávací pamÄ›ti):" -#: rc_option_editor.cc:656 -#, fuzzy -msgid "Control Surface Protocol" -msgstr "Ovládací spínaÄe" - #: rc_option_editor.cc:660 msgid "Feedback" msgstr "ZpÄ›tná vazba" @@ -8813,41 +8739,47 @@ msgstr "ZpÄ›tná vazba" msgid "Double-click on a name to edit settings for an enabled protocol" msgstr "Dvojité poklepání na název pro úpravu nastavení povoleného protokolu" -#: rc_option_editor.cc:817 +#: rc_option_editor.cc:818 msgid "Show Video Export Info before export" -msgstr "" +msgstr "Ukázat pÅ™ed uložením do souboru informace o způsobu vyvedení videa" -#: rc_option_editor.cc:818 +#: rc_option_editor.cc:819 msgid "Show Video Server Startup Dialog" -msgstr "" +msgstr "Ukázat spouÅ¡tÄ›cí dialog videoserveru" -#: rc_option_editor.cc:819 +#: rc_option_editor.cc:820 msgid "Advanced Setup (remote video server)" -msgstr "" +msgstr "PokroÄilé nastavení (vzdálený videoserver)" -#: rc_option_editor.cc:827 +#: rc_option_editor.cc:828 msgid "" "When enabled you can speficify a custom video-server URL and docroot. " "- Do not enable this option unless you know what you are doing." msgstr "" +"Je-li povoleno, můžete urÄit adresu vlastního videoserveru (URL) a " +"koÅ™en dokumentu (docroot). - Nepovolujte tuto volbu, pokud nevíte, co dÄ›láte." -#: rc_option_editor.cc:829 +#: rc_option_editor.cc:830 msgid "Video Server URL:" -msgstr "" +msgstr "Adresa videoserveru (URL):" -#: rc_option_editor.cc:834 +#: rc_option_editor.cc:835 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 " "the video-server is runing locally" msgstr "" +"Základní adresa videoserveru (URL) vÄetnÄ› úvodních písmen http. Obvykle to je " +"'http://" +"hostname.example.org:1554/' a výchozí 'http://localhost:1554/', když běží " +"videoserver " +"místnÄ›" -#: rc_option_editor.cc:836 -#, fuzzy +#: rc_option_editor.cc:837 msgid "Video Folder:" -msgstr "Složka:" +msgstr "Složka s videem:" -#: rc_option_editor.cc:841 +#: rc_option_editor.cc:842 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 " @@ -8855,118 +8787,126 @@ msgid "" "docroot or be left empty if it is unvailable. It is used for the local video-" "monitor and file-browsing when opening/adding a video file." msgstr "" +"Místní cesta ke koÅ™enu dokumentu (docroot) videoserveru. Videoserver " +"bude moci pÅ™istupovat pouze k souborům v tomto adresáři. Pokud server " +"poběží na vzdáleném poÄítaÄi, mÄ›la by cesta ukazovat na síťovÄ› pÅ™ipojenou " +"složku koÅ™enu dokumentu (docroot) serveru, nebo být ponechána prázdná, " +"pokud je nedostupný. Používá se pro místní sledování videa a procházení " +"souborů, když je soubor s videem otevírán/pÅ™idáván." -#: rc_option_editor.cc:848 +#: rc_option_editor.cc:849 msgid "" "When enabled an information window with details is displayed before " "the video-export dialog." msgstr "" +"Je-li povoleno, je pÅ™ed dialogem pro ukládání videa zobrazeno " +"informaÄní okno s podrobnostmi." -#: rc_option_editor.cc:853 +#: rc_option_editor.cc:854 msgid "" "When enabled the video server is never launched automatically without " "confirmation" msgstr "" +"Je-li povoleno, videoserver není nikdy spuÅ¡tÄ›n automaticky bez " +"potvrzení" -#: rc_option_editor.cc:993 +#: rc_option_editor.cc:995 msgid "%1 Preferences" msgstr "%1 nastavení" -#: rc_option_editor.cc:1004 +#: rc_option_editor.cc:1006 msgid "DSP CPU Utilization" msgstr "Používání CPU pro DSP" -#: rc_option_editor.cc:1008 +#: rc_option_editor.cc:1010 msgid "Signal processing uses" msgstr "Zpracovávání signálu používá" -#: rc_option_editor.cc:1013 +#: rc_option_editor.cc:1015 msgid "all but one processor" msgstr "VÅ¡ichni kromÄ› jednoho zpracovatele" -#: rc_option_editor.cc:1014 +#: rc_option_editor.cc:1016 msgid "all available processors" msgstr "VÅ¡ichni dostupní zpracovatelé" -#: rc_option_editor.cc:1017 +#: rc_option_editor.cc:1019 msgid "%1 processors" msgstr "%1 zpracovatelé" -#: rc_option_editor.cc:1020 +#: rc_option_editor.cc:1022 msgid "This setting will only take effect when %1 is restarted." msgstr "Toto nastavení se neprojeví, dokud %1 nespustíte znovu." -#: rc_option_editor.cc:1025 +#: rc_option_editor.cc:1027 msgid "Options|Undo" msgstr "Volby|ZpÄ›t" -#: rc_option_editor.cc:1032 +#: rc_option_editor.cc:1034 msgid "Verify removal of last capture" msgstr "Potvrdit odstranÄ›ní poslední nahrávky" -#: rc_option_editor.cc:1040 +#: rc_option_editor.cc:1042 msgid "Make periodic backups of the session file" msgstr "DÄ›lat pravidelné zálohy souboru se sezením" -#: rc_option_editor.cc:1045 +#: rc_option_editor.cc:1047 msgid "Session Management" msgstr "Správa sezení" -#: rc_option_editor.cc:1050 +#: rc_option_editor.cc:1052 msgid "Always copy imported files" msgstr "Vždy kopírovat zavedené soubory" -#: rc_option_editor.cc:1057 +#: rc_option_editor.cc:1059 msgid "Default folder for new sessions:" msgstr "Výchozí složka pro nová sezení:" -#: rc_option_editor.cc:1065 +#: rc_option_editor.cc:1067 msgid "Maximum number of recent sessions" msgstr "Nejvyšší poÄet nedávných sezení" -#: rc_option_editor.cc:1078 +#: rc_option_editor.cc:1080 msgid "Click gain level" msgstr "Úroveň hlasitosti klepnutí" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1085 route_time_axis.cc:206 route_time_axis.cc:667 msgid "Automation" msgstr "Automatizace" -#: rc_option_editor.cc:1088 +#: rc_option_editor.cc:1090 msgid "Thinning factor (larger value => less data)" msgstr "Faktor prostÅ™ihávání (vÄ›tší hodnota => ménÄ› dat)" -#: rc_option_editor.cc:1097 +#: rc_option_editor.cc:1099 msgid "Automation sampling interval (milliseconds)" msgstr "Interval pro automatizaci (v milisekundách)" -#: rc_option_editor.cc:1109 +#: rc_option_editor.cc:1111 msgid "Keep record-enable engaged on stop" msgstr "Udržovat zapnuté nahrávání po zastavení zapojeno" -#: rc_option_editor.cc:1118 +#: rc_option_editor.cc:1120 msgid "Stop recording when an xrun occurs" msgstr "Zastavit nahrávání v případÄ› xrun (Äasového rozdílu)" -#: rc_option_editor.cc:1123 -#, fuzzy +#: rc_option_editor.cc:1125 msgid "" "When enabled %1 will stop recording if an over- or underrun is " "detected by the audio engine" msgstr "" -"Když je povoleno, Ardour zastaví nahrávání, pokud je zjiÅ¡tÄ›no " +"Když je povoleno, %1 zastaví nahrávání, pokud je zjiÅ¡tÄ›no " "pÅ™eteÄení nebo podteÄení" -#: rc_option_editor.cc:1129 +#: rc_option_editor.cc:1131 msgid "Create markers where xruns occur" msgstr "VytvoÅ™it znaÄky tam, kde se xrun (Äasový rozdíl) objeví" -#: rc_option_editor.cc:1138 +#: rc_option_editor.cc:1140 msgid "Stop at the end of the session" msgstr "Zastavit na konci sezení" -#: rc_option_editor.cc:1143 -#, fuzzy +#: rc_option_editor.cc:1145 msgid "" "When enabled if %1 is not recording, it will stop the " "transport when it reaches the current session end marker\n" @@ -8974,17 +8914,16 @@ msgid "" "When disabled %1 will continue to roll past the session end marker at " "all times" msgstr "" -"Když je povoleno, a Ardour nenahrává, je pÅ™i dosažení znaÄky " +"Když je povoleno, a %1 nenahrává, je pÅ™i dosažení znaÄky " "konce sezení pÅ™ehrávání zastaveno.\n" "\n" -"Když je zakázáno Ardour bude pokraÄovat vždy až na konec sezení" +"Když je zakázáno %1 bude pokraÄovat vždy až na konec sezení" -#: rc_option_editor.cc:1151 +#: rc_option_editor.cc:1153 msgid "Do seamless looping (not possible when slaved to MTC, JACK etc)" msgstr "DÄ›lat souvislou smyÄku (není možné, když MTC, JACK atd. jsou hlavní)" -#: rc_option_editor.cc:1156 -#, fuzzy +#: rc_option_editor.cc:1158 msgid "" "When enabled 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 " @@ -8997,13 +8936,14 @@ msgstr "" "skoÄí zpÄ›t, Äímž se vyhne novému umístÄ›ní na konci smyÄky.\n" "\n" "Když je zakázáno, skoÄí se pÅ™i dosažení konce smyÄky na zaÄátek " -"smyÄky, což Äasto způsobí slyÅ¡itelné prasknutí nebo zpoždÄ›ní" +"smyÄky, když %1 dosáhne konce, což Äasto způsobí slyÅ¡itelné prasknutí nebo " +"zpoždÄ›ní" -#: rc_option_editor.cc:1164 +#: rc_option_editor.cc:1166 msgid "Disable per-track record disarm while rolling" msgstr "Zakázat pÅ™i nahrávání stav nahrávání jednotlivé stopy" -#: rc_option_editor.cc:1168 +#: rc_option_editor.cc:1170 msgid "" "When enabled this will prevent you from accidentally stopping " "specific tracks recording during a take" @@ -9011,12 +8951,12 @@ msgstr "" "Když je povoleno, zabrání vám to v nechtÄ›ném zastavení nahrávání " "urÄitých stop" -#: rc_option_editor.cc:1173 +#: rc_option_editor.cc:1175 msgid "12dB gain reduction during fast-forward and fast-rewind" msgstr "" "PÅ™i pÅ™etáÄení rychle dopÅ™edu a rychle dozadu snížit hladinu zvuku o 12dB" -#: rc_option_editor.cc:1177 +#: rc_option_editor.cc:1179 msgid "" "This will reduce the unpleasant increase in perceived volume that occurs " "when fast-forwarding or rewinding through some kinds of audio" @@ -9024,20 +8964,19 @@ msgstr "" "Toto omezí nepříjemné zvýšení vnímané hlasitosti, které se vyskytuje u " "nÄ›kterého materiálu pÅ™i pÅ™etáÄení vpÅ™ed/zpÄ›tném chodu" -#: rc_option_editor.cc:1181 +#: rc_option_editor.cc:1183 msgid "Sync/Slave" msgstr "Sync/Slave" -#: rc_option_editor.cc:1185 +#: rc_option_editor.cc:1187 msgid "External timecode source" msgstr "VnÄ›jší zdroj Äasového kódu" -#: rc_option_editor.cc:1195 +#: rc_option_editor.cc:1197 msgid "Match session video frame rate to external timecode" msgstr "PÅ™izpůsobit rychlost snímkování obrazu vnÄ›jšímu Äasovému kódu" -#: rc_option_editor.cc:1201 -#, fuzzy +#: rc_option_editor.cc:1203 msgid "" "This option controls the value of the video frame rate while chasing " "an external timecode source.\n" @@ -9058,14 +8997,14 @@ msgstr "" "\n" "Když je zakázáno, rychlost snímkování obrazu sezení nebude zmÄ›nÄ›na " "tak, aby odpovídala vybranému vnÄ›jšímu zdroji Äasového kódu. Místo toho " -"ukazatel rychlosti snímkování v hlavních hodinách zÄervená a Ardour bude " +"ukazatel rychlosti snímkování v hlavních hodinách zÄervená a %1 bude " "pÅ™evádÄ›t mezi standardem vnÄ›jšího Äasového kódu a standardem sezení." -#: rc_option_editor.cc:1211 +#: rc_option_editor.cc:1213 msgid "External timecode is sync locked" msgstr "VnÄ›jší Äasový kód je pevnÄ› seřízen" -#: rc_option_editor.cc:1217 +#: rc_option_editor.cc:1219 msgid "" "When enabled indicates that the selected external timecode source " "shares sync (Black & Burst, Wordclock, etc) with the audio interface." @@ -9073,12 +9012,11 @@ msgstr "" "Když je povoleno, ukazuje to, že vybraný vnÄ›jší zdroj Äasového kódu " "běží seřízenÄ› (Black & Burst, Wordclock atd.) se zvukovým rozhraním." -#: rc_option_editor.cc:1224 +#: rc_option_editor.cc:1226 msgid "Lock to 29.9700 fps instead of 30000/1001" msgstr "PevnÄ› na 29.9700 fps namísto 30000/1001" -#: rc_option_editor.cc:1230 -#, fuzzy +#: rc_option_editor.cc:1232 msgid "" "When enabled the external timecode source is assumed to use 29.97 fps " "instead of 30000/1001.\n" @@ -9100,40 +9038,39 @@ msgstr "" "nÄ›kteří výrobci tuto rychlost používají - i když je to proti specifikaci - " "protože pÅ™i variantÄ› s 29.97 fps se nevyskytuje žádný posuv Äasového kódu.\n" -#: rc_option_editor.cc:1240 +#: rc_option_editor.cc:1242 msgid "LTC Reader" msgstr "ÄŒteÄka LTC" -#: rc_option_editor.cc:1244 +#: rc_option_editor.cc:1246 msgid "LTC incoming port" msgstr "Vstupní přípojka LTC" -#: rc_option_editor.cc:1257 +#: rc_option_editor.cc:1259 msgid "LTC Generator" msgstr "Generátor LTC" -#: rc_option_editor.cc:1262 +#: rc_option_editor.cc:1264 msgid "Enable LTC generator" msgstr "Povolit generátor LTC" -#: rc_option_editor.cc:1269 +#: rc_option_editor.cc:1271 msgid "send LTC while stopped" msgstr "Poslat LTC, když pÅ™ehrávání stojí" -#: rc_option_editor.cc:1275 -#, fuzzy +#: rc_option_editor.cc:1277 msgid "" "When enabled %1 will continue to send LTC information even when the " "transport (playhead) is not moving" msgstr "" -"Když je povoleno, Ardour bude pokraÄovat v posílání informací LTC, i " +"Když je povoleno, %1 bude pokraÄovat v posílání informací LTC, i " "když se ukazatel polohy pÅ™ehrávání nepohybuje" -#: rc_option_editor.cc:1281 +#: rc_option_editor.cc:1283 msgid "LTC generator level" msgstr "Hlasitost generátoru LTC" -#: rc_option_editor.cc:1285 +#: rc_option_editor.cc:1287 msgid "" "Specify the Peak Volume of the generated LTC signal in dbFS. A good value " "is 0dBu ^= -18dbFS in an EBU calibrated system" @@ -9141,105 +9078,104 @@ msgstr "" "Zadejte hodnotu vrcholu vytvoÅ™eného signálu LTC v dbFS. Dobrou hodnotou pro " "kalibrovaný systém EBU je 0dBu ^= -18dbFS" -#: rc_option_editor.cc:1297 +#: rc_option_editor.cc:1299 msgid "Link selection of regions and tracks" msgstr "Spojit výbÄ›r oblastí a stop" -#: rc_option_editor.cc:1305 +#: rc_option_editor.cc:1307 msgid "Move relevant automation when audio regions are moved" msgstr "" "PÅ™esunout související automatizaci, když jsou zvukové oblasti pÅ™esunuty" -#: rc_option_editor.cc:1313 +#: rc_option_editor.cc:1315 msgid "Show meters on tracks in the editor" msgstr "Ukázat měřidla na stopách v editoru" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1322 msgid "Regions in active edit groups are edited together" -msgstr "" +msgstr "Oblasti ve skupinách, které se upravují, jsou upravovány spoleÄnÄ›" -#: rc_option_editor.cc:1321 -#, fuzzy +#: rc_option_editor.cc:1323 msgid "whenever they overlap in time" -msgstr "Zkrátit pÅ™ekrývající novou notu" +msgstr "Vždycky když se ÄasovÄ› pÅ™ekrývají" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1324 msgid "only if they have identical length, position and origin" -msgstr "" +msgstr "Jen když mají stejnou délku, polohu a původ" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1334 msgid "Make rubberband selection rectangle snap to the grid" msgstr "UdÄ›lat z pružného výbÄ›ru oblasti obdélníkové zapadnutí do mřížky" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1342 msgid "Show waveforms in regions" msgstr "Ukázat tvary vln v oblastech" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1350 msgid "Show gain envelopes in audio regions" msgstr "Ukázat obálky zesílení v oblastech zvuku" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1351 msgid "in all modes" msgstr "Ve vÅ¡ech režimech" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1352 msgid "only in region gain mode" msgstr "Pouze v režimu zesílení oblasti" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1359 msgid "Waveform scale" msgstr "Velikost tvaru vlny" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1364 msgid "linear" msgstr "Přímý" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1365 msgid "logarithmic" msgstr "Logaritmický" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1371 msgid "Waveform shape" msgstr "Podoba tvaru vlny" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1376 msgid "traditional" msgstr "TradiÄní" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1377 msgid "rectified" msgstr "Narovnaná" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1384 msgid "Show waveforms for audio while it is being recorded" msgstr "Ukázat tvary vln zvuku, když je nahráván" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1392 msgid "Show zoom toolbar" msgstr "Ukázat nástrojový pruh pro zvÄ›tÅ¡ení" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1400 msgid "Color regions using their track's color" msgstr "Obarvit oblasti barvou jejich stopy" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1408 msgid "Update editor window during drags of the summary" msgstr "Obnovit okno editoru bÄ›hem tažení shrnutí" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1416 msgid "Synchronise editor and mixer track order" msgstr "Seřídit poÅ™adí stop v editoru a ve směšovaÄi" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1424 msgid "Synchronise editor and mixer selection" msgstr "Seřídit výbÄ›r v editoru a ve směšovaÄi" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1431 msgid "Name new markers" msgstr "Pojmenovat nové znaÄky" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1437 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9251,337 +9187,347 @@ msgstr "" "\n" "ZnaÄky můžete vždy klepnutím pravým tlaÄítkem myÅ¡i na nÄ› pÅ™ejmenovat" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1443 msgid "Auto-scroll editor window when dragging near its edges" msgstr "Automaticky projíždÄ›t okno editoru pÅ™i tažení blízko jeho okrajů" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1450 msgid "Buffering" msgstr "Ukládání do vyrovnávací pamÄ›ti" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1458 msgid "Record monitoring handled by" msgstr "Sledování nahrávání řízené" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1469 msgid "ardour" msgstr "ardour" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1470 msgid "audio hardware" msgstr "Zvukové technické vybavení" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1477 msgid "Tape machine mode" msgstr "Režim páskového stroje" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1482 msgid "Connection of tracks and busses" msgstr "Spojení stop a sbÄ›rnic" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1487 msgid "Auto-connect master/monitor busses" msgstr "Automaticky spojit hlavní/sledovací sbÄ›rnice" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1494 msgid "Connect track inputs" msgstr "Spojit vstupy stop" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1499 msgid "automatically to physical inputs" msgstr "Automaticky s fyzickými vstupy" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1500 rc_option_editor.cc:1513 msgid "manually" msgstr "RuÄnÄ›" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1506 msgid "Connect track and bus outputs" msgstr "Spojit výstupy stop a sbÄ›rnic" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1511 msgid "automatically to physical outputs" msgstr "Automaticky s fyzickými výstupy" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1512 msgid "automatically to master bus" msgstr "Automaticky s hlavní sbÄ›rnicí" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1517 msgid "Denormals" msgstr "Neobvyklé hodnoty" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1522 msgid "Use DC bias to protect against denormals" msgstr "" "Použít pÅ™edpÄ›tí přímého proudu (DC bias) pro ochranu proti neobvyklým " "hodnotám" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1529 msgid "Processor handling" msgstr "Řízení zpracování" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1534 msgid "no processor handling" msgstr "Žádné řízení zpracování" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1539 msgid "use FlushToZero" msgstr "Použít ZrudnoutKNule" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1543 msgid "use DenormalsAreZero" msgstr "Použít NeobvykléHodnotyJsouNula" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1547 msgid "use FlushToZero and DenormalsAreZero" msgstr "Použít ZrudnoutKNule a NeobvykléHodnotyJsouNula" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1557 msgid "Silence plugins when the transport is stopped" msgstr "ZtiÅ¡it přídavné moduly, když je pÅ™esun zastaven " -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1565 msgid "Make new plugins active" msgstr "Uvést nové přídavné moduly do Äinnosti" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1573 msgid "Enable automatic analysis of audio" msgstr "Povolit automatický rozbor zvuku" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1581 msgid "Replicate missing region channels" msgstr "Zreprodukovat chybÄ›jící kanály oblasti" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: rc_option_editor.cc:1588 rc_option_editor.cc:1603 rc_option_editor.cc:1615 +#: rc_option_editor.cc:1627 rc_option_editor.cc:1639 rc_option_editor.cc:1643 +#: rc_option_editor.cc:1651 rc_option_editor.cc:1659 rc_option_editor.cc:1667 +#: rc_option_editor.cc:1669 rc_option_editor.cc:1677 rc_option_editor.cc:1685 +#: rc_option_editor.cc:1693 msgid "Solo / mute" msgstr "Sólo/Ztlumit" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1591 msgid "Solo-in-place mute cut (dB)" msgstr "Vyjmutí ztlumení sóla (dB)" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1598 msgid "Solo controls are Listen controls" msgstr "Ovládací prvky pro sólo jsou ovládacími prvky pro poslech" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1607 msgid "Listen Position" msgstr "Poloha poslechu" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1612 msgid "after-fader (AFL)" msgstr "Po-prolínaÄ (AFL)" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1613 msgid "pre-fader (PFL)" msgstr "PÅ™ed-prolínaÄ (PFL)" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1619 msgid "PFL signals come from" msgstr "PFL signály pÅ™icházejí z" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1624 msgid "before pre-fader processors" msgstr "Zpracovatelé pÅ™ed pÅ™ed-prolínaÄe" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1625 msgid "pre-fader but after pre-fader processors" msgstr "Zpracovatelé pÅ™ed-prolínaÄe ale po pÅ™ed-prolínaÄe" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1631 msgid "AFL signals come from" msgstr "AFL signály pÅ™icházejí z" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1636 msgid "immediately post-fader" msgstr "OkamžitÄ› po-prolínaÄ" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1637 msgid "after post-fader processors (before pan)" msgstr "Zpracovatelé po po-prolínaÄe (pÅ™ed vyvážením)" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1646 msgid "Exclusive solo" msgstr "Výhradní sólo" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1654 msgid "Show solo muting" msgstr "Sólo ukázat jako onÄ›mÄ›lé" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1662 msgid "Soloing overrides muting" msgstr "Sólo má pÅ™ednost pÅ™ed ztlumením" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1667 msgid "Default track / bus muting options" msgstr "Výchozí volby pro ztlumení stopy/sbÄ›rnice" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1672 msgid "Mute affects pre-fader sends" msgstr "Ztlumení ovlivní odeslání pÅ™ed-prolínaÄe" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1680 msgid "Mute affects post-fader sends" msgstr "Ztlumení ovlivní odeslání po-prolínaÄe" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1688 msgid "Mute affects control outputs" msgstr "Ztlumení ovlivní ovládací výstupy" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1696 msgid "Mute affects main outputs" msgstr "Ztlumení ovlivní hlavní výstupy" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1712 msgid "Send MIDI Time Code" msgstr "Poslat Äasový kód MIDI" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1720 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" "Procento kterékoli strany běžné rychlosti pÅ™esunu k odeslání Äasového kódu " "MIDI (MTC)" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1729 msgid "Obey MIDI Machine Control commands" msgstr "Dodržovat příkazy pro ovládání stroje MIDI" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1737 msgid "Send MIDI Machine Control commands" msgstr "Poslat příkazy pro ovládání stroje MIDI" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1745 msgid "Send MIDI control feedback" msgstr "Poslat zpÄ›tnou vazbu k ovládání MIDI" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1753 msgid "Inbound MMC device ID" msgstr "ID zařízení MMC (ovládání stroje MIDI) na vstupu" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1762 msgid "Outbound MMC device ID" msgstr "ID zařízení MMC (ovládání stroje MIDI) na výstupu" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1771 msgid "Initial program change" msgstr "PoÄáteÄní zmÄ›na programu" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1780 msgid "Display first MIDI bank/program as 0" msgstr "Zobrazit první banku/program MIDI jako 0" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1788 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "Nikdy nezobrazovat periodické zprávy MIDI (MTC, hodiny MIDI)" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1796 msgid "Sound MIDI notes as they are selected" msgstr "Zahrát noty MIDI, když jsou vybrány" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1804 rc_option_editor.cc:1814 rc_option_editor.cc:1816 +#: rc_option_editor.cc:1818 rc_option_editor.cc:1820 rc_option_editor.cc:1833 msgid "User interaction" msgstr "Uživatelská interakce" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1807 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" +"Použít pÅ™eklady %1 zpráv\n" +" (aby se projevilo, vyžaduje opÄ›tovné spuÅ¡tÄ›ní %1)\n" +" (je-li dostupné pro vaÅ¡e jazykové nastavení)" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1814 msgid "Keyboard" msgstr "Klávesnice" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1818 +msgid "Control surfaces" +msgstr "Ovládací spínaÄe" + +#: rc_option_editor.cc:1824 msgid "Control surface remote ID" msgstr "ID vzdálené ovládací plochy" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1829 msgid "assigned by user" msgstr "urÄeno uživatelem" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1830 msgid "follows order of mixer" msgstr "následuje poÅ™adí ve směšovaÄi" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1831 msgid "follows order of editor" msgstr "následuje poÅ™adí v editoru" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 -#, fuzzy -msgid "Preferences|GUI" -msgstr "Nastavení" +#: rc_option_editor.cc:1842 rc_option_editor.cc:1850 rc_option_editor.cc:1860 +#: rc_option_editor.cc:1862 rc_option_editor.cc:1870 rc_option_editor.cc:1888 +#: rc_option_editor.cc:1897 rc_option_editor.cc:1905 rc_option_editor.cc:1919 +#: rc_option_editor.cc:1936 +msgid "GUI" +msgstr "GUI" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1845 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "ObrazovÄ› naznaÄovat pÅ™ejetí ukazatele myÅ¡i nad různými prvky" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1853 msgid "Show tooltips if mouse hovers over a control" msgstr "Ukázat nástrojové rady, když myÅ¡ pÅ™ejede nad prvkem" -#: rc_option_editor.cc:1859 -msgid "GUI" -msgstr "GUI" +#: rc_option_editor.cc:1865 +msgid "Use plugins' own interfaces instead of %1's" +msgstr "Použít vlastní rozhraní přídavných modulů, namísto rozhraní %1" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1873 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" +"Aktualizovat zobrazení hodin ukazujících stav pÅ™ehrávání každých 40 ms " +"namísto každých 100 ms" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1890 msgid "Mixer Strip" msgstr "Proužek směšovaÄe" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1900 msgid "Use narrow strips in the mixer by default" msgstr "Použít úzké proužky ve směšovaÄi jako výchozí" -#: rc_option_editor.cc:1898 +#: rc_option_editor.cc:1909 msgid "Meter hold time" msgstr "ÄŒas držení měřidla" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1915 msgid "short" msgstr "Krátký" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1916 rc_option_editor.cc:1931 msgid "medium" msgstr "StÅ™ední" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1917 msgid "long" msgstr "Dlouhý" -#: rc_option_editor.cc:1912 +#: rc_option_editor.cc:1923 msgid "Meter fall-off" msgstr "Klesání měřidla" -#: rc_option_editor.cc:1918 +#: rc_option_editor.cc:1929 msgid "slowest" msgstr "Nejpomalejší" -#: rc_option_editor.cc:1919 +#: rc_option_editor.cc:1930 msgid "slow" msgstr "Pomalý" -#: rc_option_editor.cc:1921 +#: rc_option_editor.cc:1932 msgid "fast" msgstr "Rychlý" -#: rc_option_editor.cc:1922 +#: rc_option_editor.cc:1933 msgid "faster" msgstr "Rychlejší" -#: rc_option_editor.cc:1923 +#: rc_option_editor.cc:1934 msgid "fastest" msgstr "Nejrychlejší" @@ -9593,7 +9539,7 @@ msgstr "Poslech této oblasti" msgid "Position:" msgstr "Poloha:" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 msgid "End:" msgstr "Konec:" @@ -9811,19 +9757,19 @@ msgstr "VýbÄ›r" msgid "Active state" msgstr "Zapnuto" -#: route_group_dialog.cc:47 route_group_dialog.cc:76 theme_manager.cc:71 +#: route_group_dialog.cc:47 route_group_dialog.cc:77 theme_manager.cc:69 msgid "Color" msgstr "Barva" -#: route_group_dialog.cc:53 +#: route_group_dialog.cc:54 msgid "RouteGroupDialog" msgstr "DialogProSkupinuCest" -#: route_group_dialog.cc:92 +#: route_group_dialog.cc:93 msgid "Sharing" msgstr "Sdílení" -#: route_group_dialog.cc:182 +#: route_group_dialog.cc:183 msgid "" "A route group of this name already exists. Please use a different name." msgstr "" @@ -9903,9 +9849,8 @@ msgid "Hide All Automation" msgstr "Skrýt vÅ¡echny automatizace" #: route_time_axis.cc:396 -#, fuzzy msgid "Processor automation" -msgstr "Vyprázdnit automatizaci" +msgstr "Automatizace procesoru" #: route_time_axis.cc:415 msgid "Color..." @@ -10591,147 +10536,151 @@ msgstr "-4.1667" msgid "-4.1667 - 0.1%" msgstr "-4.1667 - 0.1%" -#: session_option_editor.cc:84 +#: session_option_editor.cc:85 msgid "" "Use Video File's FPS Instead of Timecode Value for Timeline and Video " "Monitor." msgstr "" +"Použít FPS videosouboru namísto hodnoty Äasového kódu pro " +"Äasovou osu a sledování videa." -#: session_option_editor.cc:91 +#: session_option_editor.cc:92 msgid "" "Apply Pull-Up/Down to Video Timeline and Video Monitor (Unless in JACK-sync)." msgstr "" +"Použít vytažení nahoru/stažení dolů na Äasovou osu videa a sledování videa " +"(jestliže není v JACK-sync)." -#: session_option_editor.cc:96 +#: session_option_editor.cc:98 msgid "Ext Timecode Offsets" msgstr "VnÄ›jší posuny Äasového kódu" -#: session_option_editor.cc:100 +#: session_option_editor.cc:102 msgid "Slave Timecode offset" msgstr "Pomocný posun Äasového kódu" -#: session_option_editor.cc:107 +#: session_option_editor.cc:109 msgid "The specified offset is added to the received timecode (MTC or LTC)." msgstr "Stanovený posun je pÅ™idán k pÅ™ijatému Äasovému kódu (MTC nebo LTC)." -#: session_option_editor.cc:113 +#: session_option_editor.cc:115 msgid "Timecode Generator offset" msgstr "Posun pÅ™idaný k vytvoÅ™enému Äasovému kódu" -#: session_option_editor.cc:120 +#: session_option_editor.cc:122 msgid "" "Specify an offset which is added to the generated timecode (so far only LTC)." msgstr "" "Zadejte posun, který je pÅ™idán k vytvoÅ™enému Äasovému kódu (nyní jen LTC)." -#: session_option_editor.cc:124 +#: session_option_editor.cc:126 msgid "JACK Transport/Time Settings" msgstr "Nastavení pÅ™esun/Äas pro JACK" -#: session_option_editor.cc:128 +#: session_option_editor.cc:130 msgid "" "%1 is JACK Time Master (provides Bar|Beat|Tick and other information to JACK)" msgstr "" "%1 je řízení Äasu pro JACK (poskytuje takt|doba|tiknutí a další informace " "pro JACK)" -#: session_option_editor.cc:137 +#: session_option_editor.cc:139 msgid "Default crossfade type" msgstr "Výchozí typ prolínání" -#: session_option_editor.cc:142 +#: session_option_editor.cc:144 msgid "Constant power (-3dB) crossfade" msgstr "Prolínání s nemÄ›nnou silou (-3dB)" -#: session_option_editor.cc:143 +#: session_option_editor.cc:145 msgid "Linear (-6dB) crossfade" msgstr "Lineární prolínání (-6dB)" -#: session_option_editor.cc:148 +#: session_option_editor.cc:150 msgid "destructive-xfade-seconds" msgstr "niÄivé-xfade-sekundy" -#: session_option_editor.cc:149 +#: session_option_editor.cc:151 msgid "Destructive crossfade length" msgstr "Délka niÄivého prolínání" -#: session_option_editor.cc:158 +#: session_option_editor.cc:160 msgid "Region fades active" msgstr "Slábnutí oblastí Äinné" -#: session_option_editor.cc:165 +#: session_option_editor.cc:167 msgid "Region fades visible" msgstr "Slábnutí oblastí viditelné" -#: session_option_editor.cc:172 session_option_editor.cc:185 -#: session_option_editor.cc:199 session_option_editor.cc:201 -#: session_option_editor.cc:207 session_option_editor.cc:214 +#: session_option_editor.cc:174 session_option_editor.cc:187 +#: session_option_editor.cc:201 session_option_editor.cc:203 +#: session_option_editor.cc:209 session_option_editor.cc:216 msgid "Media" msgstr "Hudební soubory" -#: session_option_editor.cc:172 +#: session_option_editor.cc:174 msgid "Audio file format" msgstr "Formát zvukových souborů" -#: session_option_editor.cc:176 +#: session_option_editor.cc:178 msgid "Sample format" msgstr "Vzorkovací formát" -#: session_option_editor.cc:181 +#: session_option_editor.cc:183 msgid "32-bit floating point" msgstr "32 bitové Äíslo s plovoucí desetinnou Äárkou" -#: session_option_editor.cc:182 +#: session_option_editor.cc:184 msgid "24-bit integer" msgstr "24 bitové celé Äíslo" -#: session_option_editor.cc:183 +#: session_option_editor.cc:185 msgid "16-bit integer" msgstr "16 bitové celé Äíslo" -#: session_option_editor.cc:189 +#: session_option_editor.cc:191 msgid "File type" msgstr "Typ souboru" -#: session_option_editor.cc:194 +#: session_option_editor.cc:196 msgid "Broadcast WAVE" msgstr "Broadcast WAVE" -#: session_option_editor.cc:195 +#: session_option_editor.cc:197 msgid "WAVE" msgstr "WAVE" -#: session_option_editor.cc:196 +#: session_option_editor.cc:198 msgid "WAVE-64" msgstr "WAVE-64" -#: session_option_editor.cc:201 +#: session_option_editor.cc:203 msgid "File locations" msgstr "UmístÄ›ní souborů" -#: session_option_editor.cc:203 +#: session_option_editor.cc:205 msgid "Search for audio files in:" msgstr "Zvukové soubory hledat v:" -#: session_option_editor.cc:209 +#: session_option_editor.cc:211 msgid "Search for MIDI files in:" msgstr "MIDI soubory hledat v:" -#: session_option_editor.cc:220 +#: session_option_editor.cc:222 msgid "" "Track Input Monitoring automatically follows transport state (\"auto-input\")" msgstr "" "Sledování vstupu stopy automaticky následuje stav pÅ™ehrávání (\"auto-input\")" -#: session_option_editor.cc:227 +#: session_option_editor.cc:229 msgid "Use monitor section in this session" msgstr "Použít pro toto sezení Äást pro sledování" -#: session_option_editor.cc:238 +#: session_option_editor.cc:240 msgid "MIDI region copies are independent" msgstr "Kopie oblastí MIDI jsou nezávislé" -#: session_option_editor.cc:245 +#: session_option_editor.cc:247 msgid "" "Policy for handling overlapping notes\n" " on the same MIDI channel" @@ -10739,39 +10688,39 @@ msgstr "" "Postoj k zacházení s pÅ™ekrývajícími se notami\n" " na stejném kanálu MIDI" -#: session_option_editor.cc:250 +#: session_option_editor.cc:252 msgid "never allow them" msgstr "Nikdy je nepovolit" -#: session_option_editor.cc:251 +#: session_option_editor.cc:253 msgid "don't do anything in particular" msgstr "Zvlášť nedÄ›lat nic" -#: session_option_editor.cc:252 +#: session_option_editor.cc:254 msgid "replace any overlapped existing note" msgstr "Nahradit každou pÅ™ekrytou notu" -#: session_option_editor.cc:253 +#: session_option_editor.cc:255 msgid "shorten the overlapped existing note" msgstr "Zkrátit pÅ™ekrytou notu" -#: session_option_editor.cc:254 +#: session_option_editor.cc:256 msgid "shorten the overlapping new note" msgstr "Zkrátit pÅ™ekrývající novou notu" -#: session_option_editor.cc:255 +#: session_option_editor.cc:257 msgid "replace both overlapping notes with a single note" msgstr "Nahradit obÄ› pÅ™ekrývající noty jednou notou" -#: session_option_editor.cc:259 +#: session_option_editor.cc:261 msgid "Glue to bars and beats" msgstr "PÅ™ilepit k taktům a dobám" -#: session_option_editor.cc:263 +#: session_option_editor.cc:265 msgid "Glue new markers to bars and beats" msgstr "PÅ™ilepit nové znaÄky k taktům a dobám" -#: session_option_editor.cc:270 +#: session_option_editor.cc:272 msgid "Glue new regions to bars and beats" msgstr "PÅ™ilepit nové oblasti k taktům a dobám" @@ -10847,11 +10796,11 @@ msgstr "Zvukové soubory" msgid "MIDI files" msgstr "Soubory MIDI" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 msgid "All files" msgstr "VÅ¡echny soubory" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 msgid "Browse Files" msgstr "Procházet soubory" @@ -10901,13 +10850,13 @@ msgstr "Nejníže hodnocené" #: sfdb_ui.cc:555 msgid "More" -msgstr "" +msgstr "Více" #: sfdb_ui.cc:572 msgid "ID" msgstr "ID" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:573 msgid "Filename" msgstr "Souborový název" @@ -10956,12 +10905,12 @@ msgstr "ProhlížeÄ zvukových souborů: Nelze rozebrat Å™etÄ›zec znaků:" #: sfdb_ui.cc:960 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Dostupná %1 další strana ze sta výsledků" +msgstr[1] "Dostupné %1 další strany ze sta výsledků" #: sfdb_ui.cc:965 msgid "No more results available" -msgstr "" +msgstr "Nejsou dostupné žádné další výsledky" #: sfdb_ui.cc:1029 msgid "B" @@ -11081,49 +11030,49 @@ msgstr "Rychlý pÅ™evod" msgid "Fastest" msgstr "Co nejrychleji" -#: shuttle_control.cc:56 +#: shuttle_control.cc:55 msgid "Shuttle speed control (Context-click for options)" msgstr "Pendlovat ovládání rychlosti (klepnutí pro související nabídku voleb)" -#: shuttle_control.cc:165 +#: shuttle_control.cc:164 msgid "Percent" msgstr "Procento" -#: shuttle_control.cc:173 +#: shuttle_control.cc:172 msgid "Units" msgstr "Jednotky" -#: shuttle_control.cc:179 shuttle_control.cc:599 +#: shuttle_control.cc:178 shuttle_control.cc:598 msgid "Sprung" msgstr "Pero" -#: shuttle_control.cc:183 shuttle_control.cc:602 +#: shuttle_control.cc:182 shuttle_control.cc:601 msgid "Wheel" msgstr "Kolo" -#: shuttle_control.cc:217 +#: shuttle_control.cc:216 msgid "Maximum speed" msgstr "Nejvyšší rychlost" -#: shuttle_control.cc:561 +#: shuttle_control.cc:560 msgid "Playing" msgstr "PÅ™ehrává se" -#: shuttle_control.cc:576 +#: shuttle_control.cc:575 #, c-format msgid "<<< %+d semitones" msgstr "<<< %+d půltóny" -#: shuttle_control.cc:578 +#: shuttle_control.cc:577 #, c-format msgid ">>> %+d semitones" msgstr ">>> %+d půltóny" -#: shuttle_control.cc:583 +#: shuttle_control.cc:582 msgid "Stopped" msgstr "Zastaveno" -#: splash.cc:73 +#: splash.cc:69 msgid "%1 loading ..." msgstr "Nahrává se %1..." @@ -11148,14 +11097,13 @@ msgid "Open an existing session" msgstr "Otevřít stávající sezení" #: startup.cc:74 -#, fuzzy msgid "" "Use an external mixer or the hardware mixer of your audio interface.\n" "%1 will play NO role in monitoring" msgstr "" "Použít vnÄ›jší směšovaÄ nebo směšovaÄ technického vybavení vaÅ¡eho rozhraní " "pro zvuk.\n" -"Ardour ve sledování NEBUDE hrát žádnou úlohu" +"%1 ve sledování NEBUDE hrát žádnou úlohu" #: startup.cc:76 msgid "Ask %1 to play back material as it is being recorded" @@ -11165,7 +11113,7 @@ msgstr "Požádat %1 o pÅ™ehrávání materiálu, už když je nahráván" msgid "I'd like more options for this session" msgstr "Rád bych mÄ›l pro toto sezení více voleb" -#: startup.cc:194 +#: startup.cc:196 msgid "" "Welcome to this BETA release of Ardour 3.0\n" "\n" @@ -11190,15 +11138,15 @@ msgid "" " http://ardour.org/support\n" msgstr "" -#: startup.cc:218 +#: startup.cc:220 msgid "This is a BETA RELEASE" msgstr "Toto je VYDÃNà BETA" -#: startup.cc:324 +#: startup.cc:326 msgid "Audio / MIDI Setup" msgstr "Nastavení zvuku/MIDI" -#: startup.cc:336 +#: startup.cc:338 msgid "" "%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 " @@ -11215,15 +11163,15 @@ msgstr "" "PÅ™edtím než program zaÄnete používat, je tu jen nÄ›kolik vÄ›cí, které je tÅ™eba " "nastavit." -#: startup.cc:362 +#: startup.cc:364 msgid "Welcome to %1" msgstr "Vítejte v %1" -#: startup.cc:385 +#: startup.cc:387 msgid "Default folder for %1 sessions" msgstr "Výchozí složka pro sezení programu %1" -#: startup.cc:391 +#: startup.cc:393 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" @@ -11239,11 +11187,11 @@ msgstr "" "\n" "(Nová sezení můžete dát kamkoli. Toto je jen výchozí nastavení)" -#: startup.cc:415 +#: startup.cc:417 msgid "Default folder for new sessions" msgstr "Výchozí složka pro nová sezení" -#: startup.cc:436 +#: startup.cc:438 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" @@ -11268,15 +11216,15 @@ msgstr "" "\n" "Pokud nevíte, o Äem to je, prostÄ› pÅ™ijmÄ›te výchozí nastavení." -#: startup.cc:457 +#: startup.cc:459 msgid "Monitoring Choices" msgstr "Volby pro sledování" -#: startup.cc:480 +#: startup.cc:482 msgid "Use a Master bus directly" msgstr "Použít hlavní sbÄ›rnici přímo" -#: startup.cc:482 +#: startup.cc:484 msgid "" "Connect the Master bus directly to your hardware outputs. This is preferable " "for simple usage." @@ -11284,11 +11232,11 @@ msgstr "" "Spojit hlavní sbÄ›rnici přímo s výstupy vaÅ¡eho technického vybavení. To je " "vhodnÄ›jší pro jednoduché použití." -#: startup.cc:491 +#: startup.cc:493 msgid "Use an additional Monitor bus" msgstr "Použít dodateÄnou sbÄ›rnici pro sledování" -#: startup.cc:494 +#: startup.cc:496 msgid "" "Use a Monitor bus between Master bus and hardware outputs for \n" "greater control in monitoring without affecting the mix." @@ -11297,7 +11245,7 @@ msgstr "" "vybavení\n" "pro vÄ›tší dohled nad sledováním bez ovlivnÄ›ní míchání." -#: startup.cc:516 +#: startup.cc:518 msgid "" "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.\n" @@ -11310,111 +11258,103 @@ msgstr "" "\n" "Pokud nevíte, o Äem to je, prostÄ› pÅ™ijmÄ›te výchozí nastavení." -#: startup.cc:527 +#: startup.cc:529 msgid "Monitor Section" msgstr "Část pro sledování" -#: startup.cc:573 -msgid "Check the website for more..." -msgstr "" - -#: startup.cc:576 -msgid "Click to open the program website in your web browser" -msgstr "" - -#: startup.cc:594 +#: startup.cc:569 msgid "What would you like to do ?" msgstr "Co nyní chcete dÄ›lat?" -#: startup.cc:729 +#: startup.cc:704 msgid "Open" msgstr "Otevřít" -#: startup.cc:775 +#: startup.cc:750 msgid "Session name:" msgstr "Název sezení:" -#: startup.cc:798 +#: startup.cc:773 msgid "Create session folder in:" msgstr "Složku se sezením vytvoÅ™it v:" -#: startup.cc:813 +#: startup.cc:788 msgid "Select folder for session" msgstr "Vybrat složku pro sezení" -#: startup.cc:845 +#: startup.cc:820 msgid "Use this template" msgstr "Použít tuto pÅ™edlohu" -#: startup.cc:848 +#: startup.cc:823 msgid "no template" msgstr "Žádná pÅ™edloha" -#: startup.cc:876 +#: startup.cc:851 msgid "Use an existing session as a template:" msgstr "Použít stávající sezení jako pÅ™edlohu:" -#: startup.cc:888 +#: startup.cc:863 msgid "Select template" msgstr "Vybrat pÅ™edlohu" -#: startup.cc:914 +#: startup.cc:889 msgid "New Session" msgstr "Nové sezení" -#: startup.cc:1068 +#: startup.cc:1043 msgid "Select session file" msgstr "Vybrat soubor se sezením" -#: startup.cc:1084 +#: startup.cc:1059 msgid "Browse:" msgstr "Procházet:" -#: startup.cc:1093 +#: startup.cc:1068 msgid "Select a session" msgstr "Vybrat sezení" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1094 startup.cc:1095 startup.cc:1096 msgid "channels" msgstr "Kanály" -#: startup.cc:1135 +#: startup.cc:1110 msgid "Busses" msgstr "SbÄ›rnice" -#: startup.cc:1136 +#: startup.cc:1111 msgid "Inputs" msgstr "Vstupy" -#: startup.cc:1137 +#: startup.cc:1112 msgid "Outputs" msgstr "Výstupy" -#: startup.cc:1145 +#: startup.cc:1120 msgid "Create master bus" msgstr "VytvoÅ™it hlavní sbÄ›rnici" -#: startup.cc:1155 +#: startup.cc:1130 msgid "Automatically connect to physical inputs" msgstr "Automaticky spojit s fyzickými vstupy" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1137 startup.cc:1196 msgid "Use only" msgstr "Použít pouze" -#: startup.cc:1215 +#: startup.cc:1190 msgid "Automatically connect outputs" msgstr "Automaticky spojit výstupy" -#: startup.cc:1237 +#: startup.cc:1212 msgid "... to master bus" msgstr "... s hlavní sbÄ›rnicí" -#: startup.cc:1247 +#: startup.cc:1222 msgid "... to physical outputs" msgstr "... s fyzickými výstupy" -#: startup.cc:1297 +#: startup.cc:1272 msgid "Advanced Session Options" msgstr "PokroÄilé volby pro sezení" @@ -11562,11 +11502,11 @@ msgstr "Vložit zprávu o zmÄ›nÄ› banky" msgid "Insert a program change message" msgstr "Vložit zprávu o zmÄ›nÄ› programu" -#: step_entry.cc:342 step_entry.cc:699 +#: step_entry.cc:342 step_entry.cc:701 msgid "Move Insert Position Back by Note Length" msgstr "PÅ™esunout polohu vložení zpÄ›t podle délky noty" -#: step_entry.cc:343 step_entry.cc:697 +#: step_entry.cc:343 step_entry.cc:699 msgid "Move Insert Position to Edit Point" msgstr "PÅ™esunout polohu vložení k pracovnímu bodu" @@ -11578,234 +11518,234 @@ msgstr "1/Nota" msgid "Octave" msgstr "Oktáva" -#: step_entry.cc:597 +#: step_entry.cc:599 msgid "Insert Note A" msgstr "Vložit notu A" -#: step_entry.cc:598 +#: step_entry.cc:600 msgid "Insert Note A-sharp" msgstr "Vložit notu Ais" -#: step_entry.cc:599 +#: step_entry.cc:601 msgid "Insert Note B" msgstr "Vložit notu H" -#: step_entry.cc:600 +#: step_entry.cc:602 msgid "Insert Note C" msgstr "Vložit notu C" -#: step_entry.cc:601 +#: step_entry.cc:603 msgid "Insert Note C-sharp" msgstr "Vložit notu Cis" -#: step_entry.cc:602 +#: step_entry.cc:604 msgid "Insert Note D" msgstr "Vložit notu D" -#: step_entry.cc:603 +#: step_entry.cc:605 msgid "Insert Note D-sharp" msgstr "Vložit notu Dis" -#: step_entry.cc:604 +#: step_entry.cc:606 msgid "Insert Note E" msgstr "Vložit notu E" -#: step_entry.cc:605 +#: step_entry.cc:607 msgid "Insert Note F" msgstr "Vložit notu F" -#: step_entry.cc:606 +#: step_entry.cc:608 msgid "Insert Note F-sharp" msgstr "Vložit notu Fis" -#: step_entry.cc:607 +#: step_entry.cc:609 msgid "Insert Note G" msgstr "Vložit notu G" -#: step_entry.cc:608 +#: step_entry.cc:610 msgid "Insert Note G-sharp" msgstr "Vložit notu Gis" -#: step_entry.cc:610 +#: step_entry.cc:612 msgid "Insert a Note-length Rest" msgstr "Vložit pomlku o délce noty" -#: step_entry.cc:611 +#: step_entry.cc:613 msgid "Insert a Snap-length Rest" msgstr "Vložit pomlku o délce zapadnutí" -#: step_entry.cc:613 step_entry.cc:614 +#: step_entry.cc:615 step_entry.cc:616 msgid "Move to next octave" msgstr "PÅ™esunout se k další oktávÄ›" -#: step_entry.cc:616 +#: step_entry.cc:618 msgid "Move to Next Note Length" msgstr "PÅ™esunout se k délce další noty" -#: step_entry.cc:617 +#: step_entry.cc:619 msgid "Move to Previous Note Length" msgstr "PÅ™esunout se k délce pÅ™edchozí noty" -#: step_entry.cc:619 +#: step_entry.cc:621 msgid "Increase Note Length" msgstr "ZvÄ›tÅ¡it délku noty" -#: step_entry.cc:620 +#: step_entry.cc:622 msgid "Decrease Note Length" msgstr "ZmenÅ¡it délku noty" -#: step_entry.cc:622 +#: step_entry.cc:624 msgid "Move to Next Note Velocity" msgstr "PÅ™esunout se k síle tónu další noty" -#: step_entry.cc:623 +#: step_entry.cc:625 msgid "Move to Previous Note Velocity" msgstr "PÅ™esunout se k síle tónu pÅ™edchozí noty" -#: step_entry.cc:625 +#: step_entry.cc:627 msgid "Increase Note Velocity" msgstr "ZvÄ›tÅ¡it sílu tónu noty" -#: step_entry.cc:626 +#: step_entry.cc:628 msgid "Decrease Note Velocity" msgstr "ZmenÅ¡it sílu tónu noty" -#: step_entry.cc:628 +#: step_entry.cc:630 msgid "Switch to the 1st octave" msgstr "PÅ™ejít na první oktávu" -#: step_entry.cc:629 +#: step_entry.cc:631 msgid "Switch to the 2nd octave" msgstr "PÅ™ejít na druhou oktávu" -#: step_entry.cc:630 +#: step_entry.cc:632 msgid "Switch to the 3rd octave" msgstr "PÅ™ejít na tÅ™etí oktávu" -#: step_entry.cc:631 +#: step_entry.cc:633 msgid "Switch to the 4th octave" msgstr "PÅ™ejít na Ätvrtou oktávu" -#: step_entry.cc:632 +#: step_entry.cc:634 msgid "Switch to the 5th octave" msgstr "PÅ™ejít na pátou oktávu" -#: step_entry.cc:633 +#: step_entry.cc:635 msgid "Switch to the 6th octave" msgstr "PÅ™ejít na Å¡estou oktávu" -#: step_entry.cc:634 +#: step_entry.cc:636 msgid "Switch to the 7th octave" msgstr "PÅ™ejít na sedmou oktávu" -#: step_entry.cc:635 +#: step_entry.cc:637 msgid "Switch to the 8th octave" msgstr "PÅ™ejít na osmou oktávu" -#: step_entry.cc:636 +#: step_entry.cc:638 msgid "Switch to the 9th octave" msgstr "PÅ™ejít na devátou oktávu" -#: step_entry.cc:637 +#: step_entry.cc:639 msgid "Switch to the 10th octave" msgstr "PÅ™ejít na desátou oktávu" -#: step_entry.cc:638 +#: step_entry.cc:640 msgid "Switch to the 11th octave" msgstr "PÅ™ejít na jedenáctou oktávu" -#: step_entry.cc:643 +#: step_entry.cc:645 msgid "Set Note Length to Whole" msgstr "Nastavit délku noty na celou" -#: step_entry.cc:645 +#: step_entry.cc:647 msgid "Set Note Length to 1/2" msgstr "Nastavit délku noty na 1/2" -#: step_entry.cc:647 +#: step_entry.cc:649 msgid "Set Note Length to 1/3" msgstr "Nastavit délku noty na 1/3" -#: step_entry.cc:649 +#: step_entry.cc:651 msgid "Set Note Length to 1/4" msgstr "Nastavit délku noty na 1/4" -#: step_entry.cc:651 +#: step_entry.cc:653 msgid "Set Note Length to 1/8" msgstr "Nastavit délku noty na 1/8" -#: step_entry.cc:653 +#: step_entry.cc:655 msgid "Set Note Length to 1/16" msgstr "Nastavit délku noty na 1/16" -#: step_entry.cc:655 +#: step_entry.cc:657 msgid "Set Note Length to 1/32" msgstr "Nastavit délku noty na 1/32" -#: step_entry.cc:657 +#: step_entry.cc:659 msgid "Set Note Length to 1/64" msgstr "Nastavit délku noty na 1/64" -#: step_entry.cc:662 +#: step_entry.cc:664 msgid "Set Note Velocity to Pianississimo" msgstr "Nastavit sílu tónu noty na pianississimo" -#: step_entry.cc:664 +#: step_entry.cc:666 msgid "Set Note Velocity to Pianissimo" msgstr "Nastavit sílu tónu noty na pianissimo" -#: step_entry.cc:666 +#: step_entry.cc:668 msgid "Set Note Velocity to Piano" msgstr "Nastavit sílu tónu noty na piano" -#: step_entry.cc:668 +#: step_entry.cc:670 msgid "Set Note Velocity to Mezzo-Piano" msgstr "Nastavit sílu tónu noty na mezzo piano" -#: step_entry.cc:670 +#: step_entry.cc:672 msgid "Set Note Velocity to Mezzo-Forte" msgstr "Nastavit sílu tónu noty na mezzo forte" -#: step_entry.cc:672 +#: step_entry.cc:674 msgid "Set Note Velocity to Forte" msgstr "Nastavit sílu tónu noty na forte" -#: step_entry.cc:674 step_entry.cc:676 +#: step_entry.cc:676 step_entry.cc:678 msgid "Set Note Velocity to Fortississimo" msgstr "Nastavit sílu tónu noty na fortississimo" -#: step_entry.cc:678 +#: step_entry.cc:680 msgid "Toggle Triple Notes" msgstr "PÅ™epnout trojité noty" -#: step_entry.cc:683 +#: step_entry.cc:685 msgid "No Dotted Notes" msgstr "Žádné teÄkované noty" -#: step_entry.cc:685 +#: step_entry.cc:687 msgid "Toggled Dotted Notes" msgstr "PÅ™epnuté teÄkované noty" -#: step_entry.cc:687 +#: step_entry.cc:689 msgid "Toggled Double-Dotted Notes" msgstr "PÅ™epnuté dvojitÄ› teÄkované noty" -#: step_entry.cc:689 +#: step_entry.cc:691 msgid "Toggled Triple-Dotted Notes" msgstr "PÅ™epnuté trojitÄ› teÄkované noty" -#: step_entry.cc:692 +#: step_entry.cc:694 msgid "Toggle Chord Entry" msgstr "PÅ™epnout zápis akordu" -#: step_entry.cc:694 +#: step_entry.cc:696 msgid "Sustain Selected Notes by Note Length" msgstr "Držet vybrané noty podle délky noty" #: stereo_panner.cc:108 -#, fuzzy, c-format +#, c-format msgid "L:%3d R:%3d Width:%d%%" -msgstr "L:%1 P:%2 Šířka: %3%%" +msgstr "L:%3d P:%3d Šířka: %d%%" #: stereo_panner_editor.cc:35 msgid "Stereo Panner" @@ -11920,43 +11860,31 @@ msgstr "Metrum zaÄíná na taktu:" msgid "incomprehensible meter note type (%1)" msgstr "Nesrozumitelný typ noty metra (%1)" -#: theme_manager.cc:57 +#: theme_manager.cc:56 msgid "Dark Theme" msgstr "Tmavý motiv" -#: theme_manager.cc:58 +#: theme_manager.cc:57 msgid "Light Theme" msgstr "SvÄ›tlý motiv" -#: theme_manager.cc:59 +#: theme_manager.cc:58 msgid "Restore Defaults" msgstr "Obnovit výchozí" -#: theme_manager.cc:60 +#: theme_manager.cc:59 msgid "Draw \"flat\" buttons" msgstr "Kreslit plochá tlaÄítka" -#: theme_manager.cc:61 -msgid "All floating windows are dialogs" -msgstr "" - -#: theme_manager.cc:62 +#: theme_manager.cc:60 msgid "Draw waveforms with color gradient" msgstr "Kreslit tvary vln s barevnými pÅ™echody" -#: theme_manager.cc:68 +#: theme_manager.cc:66 msgid "Object" msgstr "Prvek" -#: theme_manager.cc:123 -msgid "" -"Mark all floating windows to be type \"Dialog\" rather than using \"Utility" -"\" for some.\n" -"This may help with some window managers. This requires a restart of %1 to " -"take effect" -msgstr "" - -#: theme_manager.cc:229 +#: theme_manager.cc:215 msgid "Unable to find UI style file %1 in search path %2. %3 will look strange" msgstr "" "Soubor se stylem uživatelského rozhraní %1 nelze ve vyhledávací cestÄ› najít " @@ -11964,7 +11892,7 @@ msgstr "" #: time_axis_view.cc:114 msgid "Track/Bus name (double click to edit)" -msgstr "" +msgstr "Název stopy/sbÄ›rnice (pro úpravy dvakrát klepnout)" #: time_axis_view_item.cc:332 msgid "new duration %1 frame is out of bounds for %2" @@ -11992,43 +11920,43 @@ msgstr "ZmenÅ¡it Äasové zkreslení" msgid "Preserve Formants" msgstr "Zachovat složky rozhodující o barvÄ› zvuku (formanty)" -#: time_fx_dialog.cc:71 +#: time_fx_dialog.cc:72 msgid "TimeFXDialog" msgstr "Okno TimeFX" -#: time_fx_dialog.cc:74 +#: time_fx_dialog.cc:75 msgid "Pitch Shift Audio" msgstr "Posun výšky tónu zvuku" -#: time_fx_dialog.cc:76 +#: time_fx_dialog.cc:77 msgid "Time Stretch Audio" msgstr "Protáhnutí Äasu zvuku" -#: time_fx_dialog.cc:104 transpose_dialog.cc:41 +#: time_fx_dialog.cc:105 transpose_dialog.cc:41 msgid "Octaves:" msgstr "Oktávy:" -#: time_fx_dialog.cc:109 transpose_dialog.cc:46 +#: time_fx_dialog.cc:110 transpose_dialog.cc:46 msgid "Semitones:" msgstr "Půltóny:" -#: time_fx_dialog.cc:114 +#: time_fx_dialog.cc:115 msgid "Cents:" msgstr "Centy:" -#: time_fx_dialog.cc:122 +#: time_fx_dialog.cc:123 msgid "Time|Shift" msgstr "ÄŒas|Posun" -#: time_fx_dialog.cc:146 time_fx_dialog.cc:149 +#: time_fx_dialog.cc:147 time_fx_dialog.cc:150 msgid "TimeFXButton" msgstr "TlaÄítko TimeFX" -#: time_fx_dialog.cc:154 +#: time_fx_dialog.cc:155 msgid "Stretch/Shrink" msgstr "Protáhnout/ZmenÅ¡it" -#: time_fx_dialog.cc:164 +#: time_fx_dialog.cc:165 msgid "Progress" msgstr "Postup" @@ -12100,15 +12028,15 @@ msgstr "Chybná XPM hlaviÄka %1" msgid "missing RGBA style for \"%1\"" msgstr "ChybÄ›jící RGBA styl pro \"%1\"" -#: utils.cc:544 +#: utils.cc:513 msgid "cannot find XPM file for %1" msgstr "Nelze najít soubor XPM pro %1" -#: utils.cc:570 +#: utils.cc:539 msgid "cannot find icon image for %1 using %2" msgstr "Nelze najít obrázek s ikonou pro %1 pomocí %2" -#: utils.cc:585 +#: utils.cc:554 msgid "Caught exception while loading icon named %1" msgstr "bÄ›hem nahrávání ikony s názvem %1 byla zachycena výjimka" @@ -12116,554 +12044,6 @@ msgstr "bÄ›hem nahrávání ikony s názvem %1 byla zachycena výjimka" msgid "VerboseCanvasCursor" msgstr "Ukazovátko podrobného plátna" -#: add_video_dialog.cc:54 -#, fuzzy -msgid "Set Video Track" -msgstr "PÅ™idat zvukovou stopu" - -#: add_video_dialog.cc:62 -#, fuzzy -msgid "Launch External Video Monitor" -msgstr "Sledování pomocí technického vybavení" - -#: add_video_dialog.cc:63 -msgid "Adjust Session Framerate to Match Video Framerate" -msgstr "" - -#: add_video_dialog.cc:65 -msgid "Reload docroot" -msgstr "" - -#: add_video_dialog.cc:110 add_video_dialog.cc:114 -msgid "VideoServerIndex" -msgstr "" - -#: add_video_dialog.cc:128 -#, fuzzy -msgid "Video files" -msgstr "Zvukové soubory" - -#: add_video_dialog.cc:163 -#, fuzzy -msgid "Video Information" -msgstr "Informace o zvukovém souboru" - -#: add_video_dialog.cc:166 -#, fuzzy -msgid "Start:" -msgstr "Spustit" - -#: add_video_dialog.cc:172 -#, fuzzy -msgid "Frame rate:" -msgstr "Vzorkovací kmitoÄet:" - -#: add_video_dialog.cc:175 -msgid "Aspect Ratio:" -msgstr "" - -#: add_video_dialog.cc:653 -msgid " %1 fps" -msgstr "" - -#: editor_videotimeline.cc:138 -#, fuzzy -msgid "Export Successful: %1" -msgstr "Vyvést jako MIDI: %1" - -#: video_timeline.cc:467 -msgid "" -"Parsing video file info failed. Is the Video Server running? Is the file " -"readable by the Video Server? Does the docroot match? Is it a video file?" -msgstr "" - -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." -msgstr "" - -#: video_timeline.cc:507 -msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " -msgstr "" - -#: video_timeline.cc:508 -msgid " vs " -msgstr "" - -#: video_timeline.cc:690 -msgid "" -"Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " -"(a custom path to xjadeo can be specified by setting the XJREMOTE " -"environment variable. It should point to an application compatible with " -"xjadeo's remote-control interface 'xjremote')." -msgstr "" - -#: video_monitor.cc:282 -#, fuzzy -msgid "Video Monitor: File Not Found." -msgstr "Sledování" - -#: transcode_ffmpeg.cc:71 -msgid "" -"No ffprobe or ffmpeg executables could be found on this system.\n" -"Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" -"\n" -"The tools are included with the Ardour releases from ardour.org and also " -"available with the video-server at http://x42.github.com/harvid/\n" -"\n" -"Important: the files need to be installed in $PATH and named ffmpeg_harvid " -"and ffprobe_harvid.\n" -"If you already have a suitable ffmpeg installation on your system, we " -"recommend creating symbolic links from ffmpeg to ffmpeg_harvid and from " -"ffprobe to ffprobe_harvid.\n" -msgstr "" - -#: transcode_video_dialog.cc:55 -#, fuzzy -msgid "Transcode/Import Video File " -msgstr "Vyvést jako zvukový soubor" - -#: transcode_video_dialog.cc:57 -#, fuzzy -msgid "Output File:" -msgstr "Výstupní zařízení:" - -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 -msgid "Abort" -msgstr "" - -#: transcode_video_dialog.cc:62 -#, fuzzy -msgid "Height = " -msgstr "Výška" - -#: transcode_video_dialog.cc:65 -msgid "Manual Override" -msgstr "" - -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." -msgstr "" - -#: transcode_video_dialog.cc:106 -#, fuzzy -msgid "File Information" -msgstr "Informace o zvukovém souboru" - -#: transcode_video_dialog.cc:112 -msgid "" -"No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " -"information." -msgstr "" - -#: transcode_video_dialog.cc:119 -msgid "" -"File-info can not be read. Most likely '%1' is not a valid video-file or an " -"unsupported video codec or format." -msgstr "" - -#: transcode_video_dialog.cc:133 -msgid "FPS:" -msgstr "" - -#: transcode_video_dialog.cc:135 -#, fuzzy -msgid "Duration:" -msgstr "Doba trvání" - -#: transcode_video_dialog.cc:137 -msgid "Codec:" -msgstr "" - -#: transcode_video_dialog.cc:139 -msgid "Geometry:" -msgstr "" - -#: transcode_video_dialog.cc:154 -#, fuzzy -msgid "??" -msgstr "???" - -#: transcode_video_dialog.cc:175 -#, fuzzy -msgid "Import Settings" -msgstr "Volby" - -#: transcode_video_dialog.cc:180 -msgid "Do Not Import Video" -msgstr "" - -#: transcode_video_dialog.cc:181 -msgid "Reference From Current Location" -msgstr "" - -#: transcode_video_dialog.cc:183 -#, fuzzy -msgid "Import/Transcode Video to Session" -msgstr "Zavést ze sezení" - -#: transcode_video_dialog.cc:197 -msgid "Scale Video: Width = " -msgstr "" - -#: transcode_video_dialog.cc:204 -#, fuzzy -msgid "Original Width" -msgstr "Původní poloha" - -#: transcode_video_dialog.cc:219 -msgid "Bitrate (KBit/s):" -msgstr "" - -#: transcode_video_dialog.cc:224 -#, fuzzy -msgid "Extract Audio:" -msgstr "Vyvést zvuk" - -#: transcode_video_dialog.cc:344 -#, fuzzy -msgid "Extracting Audio.." -msgstr "Vyvést zvuk" - -#: transcode_video_dialog.cc:347 -msgid "Audio Extraction Failed." -msgstr "" - -#: transcode_video_dialog.cc:373 -msgid "Transcoding Video.." -msgstr "" - -#: transcode_video_dialog.cc:407 -#, fuzzy -msgid "Transcoding Failed." -msgstr "PÅ™eklady povoleny" - -#: transcode_video_dialog.cc:490 -#, fuzzy -msgid "Save Transcoded Video File" -msgstr "Vyvést jako zvukový soubor" - -#: video_server_dialog.cc:42 -msgid "Launch Video Server" -msgstr "" - -#: video_server_dialog.cc:43 -msgid "Server Executable:" -msgstr "" - -#: video_server_dialog.cc:45 -#, fuzzy -msgid "Server Docroot:" -msgstr "Server:" - -#: video_server_dialog.cc:51 -msgid "Don't show this dialog again. (Reset in Edit->Preferences)." -msgstr "" - -#: video_server_dialog.cc:90 -msgid "" -"The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." -msgstr "" - -#: video_server_dialog.cc:117 -msgid "Listen Address:" -msgstr "" - -#: video_server_dialog.cc:122 -#, fuzzy -msgid "Listen Port:" -msgstr "Poloha poslechu" - -#: video_server_dialog.cc:127 -#, fuzzy -msgid "Cache Size:" -msgstr "NejvÄ›tší velikost" - -#: video_server_dialog.cc:132 -msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" -"The server configured in Edit -> Prefereces -> Video is not reachable.\n" -"Do you want ardour to launch 'harvid' on this machine?" -msgstr "" - -#: video_server_dialog.cc:171 -msgid "Set Video Server Executable" -msgstr "" - -#: video_server_dialog.cc:191 -msgid "Server docroot" -msgstr "" - -#: utils_videotl.cc:52 -msgid "Destination is outside Video Server's docroot. " -msgstr "" - -#: utils_videotl.cc:53 -msgid "" -"The destination file path is outside of the Video Server's docroot. The file " -"will not be readable by the Video Server. Do you still want to continue?" -msgstr "" - -#: utils_videotl.cc:56 -msgid "Continue" -msgstr "" - -#: utils_videotl.cc:62 -#, fuzzy -msgid "Confirm Overwrite" -msgstr "Potvrdit pÅ™epsání snímku obrazovky" - -#: utils_videotl.cc:63 -#, fuzzy -msgid "A file with the same name already exists. Do you want to overwrite it?" -msgstr "Snímek obrazovky s tímto názvem již existuje. Chcete jej pÅ™epsat?" - -#: utils_videotl.cc:73 utils_videotl.cc:89 -#, fuzzy -msgid "Cannot create video folder \"%1\" (%2)" -msgstr "Nelze vytvoÅ™it uživatelův adresář urÄený pro Ardour %1 (%2)" - -#: export_video_dialog.cc:65 -#, fuzzy -msgid "Export Video File " -msgstr "Vyvést jako zvukový soubor" - -#: export_video_dialog.cc:69 -#, fuzzy -msgid "Video:" -msgstr "Mike Start" - -#: export_video_dialog.cc:73 -msgid "Scale Video (W x H):" -msgstr "" - -#: export_video_dialog.cc:78 -msgid "Set Aspect Ratio:" -msgstr "" - -#: export_video_dialog.cc:79 -#, fuzzy -msgid "Normalize Audio" -msgstr "Normalizovat:" - -#: export_video_dialog.cc:80 -msgid "2 Pass Encoding" -msgstr "" - -#: export_video_dialog.cc:81 -msgid "Codec Optimizations:" -msgstr "" - -#: export_video_dialog.cc:83 -#, fuzzy -msgid "Deinterlace" -msgstr "VystÅ™edit ukazatele polohy" - -#: export_video_dialog.cc:84 -msgid "Use [2] B-frames (MPEG 2 or 4 only)" -msgstr "" - -#: export_video_dialog.cc:85 -msgid "Override FPS (Default is to retain FPS from the input video file):" -msgstr "" - -#: export_video_dialog.cc:86 -#, fuzzy -msgid "Include Session Metadata" -msgstr "Upravit popisná data k sezení" - -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 -msgid "" -"No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " -"information." -msgstr "" - -#: export_video_dialog.cc:116 -#, fuzzy -msgid "Output:" -msgstr "Výstupy" - -#: export_video_dialog.cc:126 -#, fuzzy -msgid "Input:" -msgstr "Vstupy" - -#: export_video_dialog.cc:137 -#, fuzzy -msgid "Audio:" -msgstr "Zvuk" - -#: export_video_dialog.cc:139 -#, fuzzy -msgid "Master Bus" -msgstr "Hlavní sbÄ›rnice" - -#: export_video_dialog.cc:166 -#, fuzzy -msgid "Settings:" -msgstr "Cíle" - -#: export_video_dialog.cc:174 -#, fuzzy -msgid "Range:" -msgstr "Rozsah" - -#: export_video_dialog.cc:177 -#, fuzzy -msgid "Preset:" -msgstr "PÅ™ednastavení" - -#: export_video_dialog.cc:180 -#, fuzzy -msgid "Video Codec:" -msgstr "Složka:" - -#: export_video_dialog.cc:183 -#, fuzzy -msgid "Video KBit/s:" -msgstr "Mike Start" - -#: export_video_dialog.cc:186 -#, fuzzy -msgid "Audio Codec:" -msgstr "Režim zvuku:" - -#: export_video_dialog.cc:189 -#, fuzzy -msgid "Audio KBit/s:" -msgstr "Zvukové soubory" - -#: export_video_dialog.cc:192 -#, fuzzy -msgid "Audio Samplerate:" -msgstr "Vzorkovací kmitoÄet:" - -#: export_video_dialog.cc:369 -#, fuzzy -msgid "Normalizing audio" -msgstr "Normalizovat hodnoty" - -#: export_video_dialog.cc:373 -#, fuzzy -msgid "Exporting audio" -msgstr "Vyvést zvuk" - -#: export_video_dialog.cc:419 -#, fuzzy -msgid "Exporting Audio.." -msgstr "Vyvést zvuk" - -#: export_video_dialog.cc:476 -msgid "" -"Export Video: Cannot query duration of video-file, using duration from " -"timeline instead." -msgstr "" - -#: export_video_dialog.cc:505 -msgid "Export Video: No Master Out Ports to Connect for Audio Export" -msgstr "" - -#: export_video_dialog.cc:544 -msgid "Encoding Video.." -msgstr "" - -#: export_video_dialog.cc:563 -msgid "Export Video: Video input file cannot be read." -msgstr "" - -#: export_video_dialog.cc:661 -msgid "Encoding Video.. Pass 1/2" -msgstr "" - -#: export_video_dialog.cc:673 -msgid "Encoding Video.. Pass 2/2" -msgstr "" - -#: export_video_dialog.cc:761 -#, fuzzy -msgid "Transcoding failed." -msgstr "PÅ™eklady povoleny" - -#: export_video_dialog.cc:930 export_video_dialog.cc:950 -#, fuzzy -msgid "Save Exported Video File" -msgstr "Vyvést jako zvukový soubor" - -#: export_video_infobox.cc:30 -#, fuzzy -msgid "Video Export Info" -msgstr "Sledování" - -#: export_video_infobox.cc:31 -msgid "Do Not Show This Dialog Again (Reset in Edit > Preferences > Video)." -msgstr "" - -#: export_video_infobox.cc:43 -msgid "Video Export Info" -msgstr "" - -#: export_video_infobox.cc:46 -msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" -"\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" -"\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" -"\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" -"\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." -msgstr "" - -#~ msgid "Connect" -#~ msgstr "Spojit" - -#~ msgid "Mixer on Top" -#~ msgstr "SměšovaÄ navrchu" - -#~ msgid "Add Audio Track" -#~ msgstr "PÅ™idat zvukovou stopu" - -#~ msgid "Add Audio Bus" -#~ msgstr "PÅ™idat zvukovou sbÄ›rnici" - -#~ msgid "Add MIDI Track" -#~ msgstr "PÅ™idat MIDI stopu" - -#~ msgid "Control surfaces" -#~ msgstr "Ovládací spínaÄe" - -#, fuzzy -#~ msgid "Use plugins' own interfaces instead of %1's" -#~ msgstr "Použít vlastní rozhraní přídavných modulů, namísto rozhraní Ardouru" - #~ msgid "Hid" #~ msgstr "Skryté" @@ -12676,6 +12056,9 @@ msgstr "" #~ msgid "Translations disabled" #~ msgstr "PÅ™eklady zakázány" +#~ msgid "Translations enabled" +#~ msgstr "PÅ™eklady povoleny" + #~ msgid "You must restart %1 for this to take effect." #~ msgstr "Aby se zmÄ›na projevila, musíte %1 spustit znovu." @@ -14661,6 +14044,10 @@ msgstr "" #~ msgid "Software monitoring" #~ msgstr "Sledování pomocí Ardouru" +#, fuzzy +#~ msgid "External monitoring" +#~ msgstr "Sledování pomocí technického vybavení" + #, fuzzy #~ msgid "Analyze region" #~ msgstr "Normalizovat oblast" @@ -14784,6 +14171,9 @@ msgstr "" #~ msgid "Cleanup unused sources" #~ msgstr "Odstranit nepoužívané soubory" +#~ msgid "Toggle Editor or Mixer on Top" +#~ msgstr "Ukázat editor nebo mixér navrchu" + #~ msgid "Seamless Looping" #~ msgstr "Souvislá smyÄka" @@ -15056,6 +14446,14 @@ msgstr "" #~ msgid "Fast Export" #~ msgstr "Zastavit vyvedení do souboru" +#, fuzzy +#~ msgid "Audio Connections Manager" +#~ msgstr "Spojení vstupů" + +#, fuzzy +#~ msgid "MIDI Connections Manager" +#~ msgstr "Spojení vstupů" + #, fuzzy #~ msgid "Ardour" #~ msgstr "ardour: " diff --git a/libs/gtkmm2ext/po/cs.po b/libs/gtkmm2ext/po/cs.po index 83f23f46f3..afff193f8e 100644 --- a/libs/gtkmm2ext/po/cs.po +++ b/libs/gtkmm2ext/po/cs.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2013-04-09 09:28-0400\n" -"PO-Revision-Date: 2013-02-22 21:09+0100\n" +"PO-Revision-Date: 2013-06-13 22:33+0200\n" "Last-Translator: Pavel Fric \n" "Language-Team: Czech \n" "Language: cs\n" @@ -80,10 +80,9 @@ msgid "Unknown" msgstr "Neznámý" #: keyboard.cc:534 -#, fuzzy msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" -"Soubor s pÅ™iÅ™azením kláves pro Ardour \"%1\"se nepodaÅ™ilo najít, nebo " +"Soubor s pÅ™iÅ™azením kláves \"%2\"se nepodaÅ™ilo najít, nebo " "obsahuje chyby." #: tearoff.cc:57 @@ -97,3 +96,4 @@ msgstr "KlepnÄ›te pro ukotvení do hlavního okna" #: textviewer.cc:34 msgid "Close" msgstr "Zavřít" + -- cgit v1.2.3 From 868112bece7ff5f48118e47a605cb5a4b3887a50 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 15 Aug 2013 14:55:57 -0400 Subject: update czech translations from pavel fric, part 2 --- libs/ardour/po/cs.po | 308 +++++++++++++++++++++++++-------------------------- 1 file changed, 150 insertions(+), 158 deletions(-) diff --git a/libs/ardour/po/cs.po b/libs/ardour/po/cs.po index d41c3b5e5b..f273712cc9 100644 --- a/libs/ardour/po/cs.po +++ b/libs/ardour/po/cs.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" -"PO-Revision-Date: 2013-03-03 09:23+0100\n" +"POT-Creation-Date: 2013-04-09 09:28-0400\n" +"PO-Revision-Date: 2013-06-13 22:47+0200\n" "Last-Translator: Pavel Fric \n" "Language-Team: Czech \n" "Language: cs\n" @@ -134,7 +134,7 @@ msgstr "Seznamy zvukových skladeb (nepoužívané)" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 #: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 -#: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 +#: rb_effect.cc:332 session.cc:2464 session.cc:2497 session.cc:3642 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "Chyba v programování: %1" @@ -223,7 +223,7 @@ msgstr "" "Přípojka s názvem \"%1\" již existuje: Prověřte na zdvojené názvy stop/" "sbÄ›rnic" -#: audioengine.cc:846 session.cc:1698 +#: audioengine.cc:846 session.cc:1697 msgid "" "No more JACK ports are available. You will need to stop %1 and restart JACK " "with more ports if you need this many tracks." @@ -462,7 +462,7 @@ msgstr "Nelze nalézt takt CPU (MHz) v /proc/cpuinfo" msgid "audio" msgstr "Zvuk" -#: data_type.cc:28 session.cc:1640 session.cc:1643 +#: data_type.cc:28 session.cc:1639 session.cc:1642 msgid "MIDI" msgstr "MIDI" @@ -577,7 +577,7 @@ msgstr "Trojúhelníkový" msgid "Rectangular" msgstr "Obdélníkový" -#: export_formats.cc:52 session.cc:4854 session.cc:4870 +#: export_formats.cc:52 session.cc:4853 session.cc:4869 msgid "None" msgstr "Žádný" @@ -629,66 +629,70 @@ msgstr "PÅ™i zápisu souboru TOC/CUE se vyskytla chyba:%1" msgid "Cannot convert %1 to Latin-1 text" msgstr "Nelze pÅ™evést %1 na kódování Latin-1" -#: export_profile_manager.cc:93 +#: export_profile_manager.cc:94 msgid "Searching for export formats in %1" msgstr "Hledání vyvádÄ›cích formátů v %1" -#: export_profile_manager.cc:99 +#: export_profile_manager.cc:100 msgid "Unable to create export format directory %1: %2" msgstr "Nelze vytvoÅ™it adresář %1 pro vyvádÄ›cí formáty: %2" -#: export_profile_manager.cc:257 +#: export_profile_manager.cc:258 msgid "Unable to remove export preset %1: %2" msgstr "Nelze odstranit pÅ™ednastavení vyvádÄ›ní %1: %2" -#: export_profile_manager.cc:347 +#: export_profile_manager.cc:348 msgid "Selection" msgstr "VýbÄ›r" -#: export_profile_manager.cc:600 +#: export_profile_manager.cc:466 +msgid "Session" +msgstr "Sezení" + +#: export_profile_manager.cc:587 msgid "Unable to rename export format %1 to %2: %3" msgstr "Nelze pÅ™ejmenovat vyvádÄ›cí formát %1 na %2: %3" -#: export_profile_manager.cc:632 +#: export_profile_manager.cc:619 msgid "Unable to remove export profile %1: %2" msgstr "Nelze odstranit vyvádÄ›cí profil %1: %2" -#: export_profile_manager.cc:649 +#: export_profile_manager.cc:636 msgid "empty format" msgstr "Prázdný formát" -#: export_profile_manager.cc:818 +#: export_profile_manager.cc:805 msgid "No timespan has been selected!" msgstr "Nebyl vybrán žádný Äasový úsek!" -#: export_profile_manager.cc:822 +#: export_profile_manager.cc:809 msgid "No channels have been selected!" msgstr "Nebyly vybrány žádné kanály!" -#: export_profile_manager.cc:826 +#: export_profile_manager.cc:813 msgid "Some channels are empty" msgstr "NÄ›které kanály jsou prázdné" -#: export_profile_manager.cc:859 +#: export_profile_manager.cc:846 msgid "No format selected!" msgstr "Nebyl vybrán žádný formát!" -#: export_profile_manager.cc:861 +#: export_profile_manager.cc:848 msgid "All channels are empty!" msgstr "VÅ¡echny kanály jsou prázdné!" -#: export_profile_manager.cc:863 +#: export_profile_manager.cc:850 msgid "One or more of the selected formats is not compatible with this system!" msgstr "Jeden nebo více formátu není sluÄitelný s tímto systémem!" -#: export_profile_manager.cc:866 +#: export_profile_manager.cc:853 msgid "" "%1 supports only %2 channels, but you have %3 channels in your channel " "configuration" msgstr "" "% podporuje jen %2 kanály, ale ve vaÅ¡em nastavení kanálů se nachází %3 kanál" -#: file_source.cc:198 session_state.cc:2891 +#: file_source.cc:198 session_state.cc:2887 msgid "" "there are already 1000 files with names like %1; versioning discontinued" msgstr "Je již 1000 souborů s názvem, jako je %1; verzování skonÄeno" @@ -944,15 +948,15 @@ msgstr "%s vstup" msgid "%s out" msgstr "%s výstup" -#: io.cc:1534 session.cc:494 session.cc:523 +#: io.cc:1534 session.cc:493 session.cc:522 msgid "mono" msgstr "Mono" -#: io.cc:1536 session.cc:507 session.cc:537 +#: io.cc:1536 session.cc:506 session.cc:536 msgid "L" msgstr "L" -#: io.cc:1536 session.cc:509 session.cc:539 +#: io.cc:1536 session.cc:508 session.cc:538 msgid "R" msgstr "P" @@ -1050,7 +1054,7 @@ msgstr "Locations: Pokus o použití neznámé polohy jako vybrané polohy" msgid "incorrect XML mode passed to Locations::set_state" msgstr "Nesprávný uzel XML pÅ™edán dál Locations::set_state" -#: location.cc:842 session.cc:4355 session_state.cc:1114 +#: location.cc:842 session.cc:4354 session_state.cc:1110 msgid "session" msgstr "Sezení" @@ -1169,7 +1173,7 @@ msgstr "PÅ™evést" #: midi_patch_manager.cc:126 msgid "Duplicate MIDI device `%1' in `%2' ignored" -msgstr "" +msgstr "Zdvojení zařízení MIDI `%1' v `%2' se pÅ™ehlíží" #: midi_source.cc:125 msgid "Missing parameter property on InterpolationStyle" @@ -1189,7 +1193,7 @@ msgstr "ChybÄ›jící vlastnost \"state\" u AutomationState" #: midi_stretch.cc:85 msgid "MIDI stretch created non-MIDI source" -msgstr "" +msgstr "Protažení MIDI vytvoÅ™ilo zdroj, který není MIDI" #: monitor_processor.cc:53 msgid "monitor dim" @@ -1201,15 +1205,15 @@ msgstr "PÅ™eruÅ¡ení sledování " #: monitor_processor.cc:55 msgid "monitor mono" -msgstr "Monitor Mono" +msgstr "Mono sledování" #: monitor_processor.cc:58 msgid "monitor dim level" -msgstr "Síla hlasitosti pro Utlumit Monitor" +msgstr "Síla hlasitosti pro utlumení sledování " #: monitor_processor.cc:62 msgid "monitor solo boost level" -msgstr "Síla hlasitosti pro Monitor Solo Boost" +msgstr "Síla hlasitosti pro zdůraznÄ›ní sóla sledování" #: monitor_processor.cc:512 msgid "cut control %1" @@ -1244,9 +1248,8 @@ msgid "Session framerate adjusted from %1 TO: MTC's %2." msgstr "Rychlost snímkování sezení zmÄ›nÄ›na z %1 na MTC: %2" #: mtc_slave.cc:393 -#, fuzzy msgid "Session and MTC framerate mismatch: MTC:%1 %2:%3." -msgstr "Rychlost snímkování sezení a MTC se neshodují: MTC: %1 Ardour: %2" +msgstr "Rychlost snímkování sezení a MTC se neshodují: MTC: %1 %2:%3." #: operations.cc:24 msgid "capture" @@ -1404,22 +1407,20 @@ msgid "LADSPA: module \"%1\" has no descriptor function." msgstr "LADSPA: Modul \"%1\" nemá žádnou funkci popisu." #: plugin_manager.cc:602 -#, fuzzy msgid "" "VST plugin %1 does not support processReplacing, and so cannot be used in %2 " "at this time" msgstr "" "Přídavný modul VST %1 nepodporuje processReplacing a z toho důvodu jej nyní " -"nelze v Ardouru použít" +"nelze v %2 použít" #: plugin_manager.cc:709 -#, fuzzy msgid "" "linuxVST plugin %1 does not support processReplacing, and so cannot be used " "in %2 at this time" msgstr "" "Přídavný modul linuxVST %1 nepodporuje processReplacing a z toho důvodu jej " -"nyní nelze v Ardouru použít" +"nyní nelze v %2 použít" #: plugin_manager.cc:870 msgid "unknown plugin status type \"%1\" - all entries ignored" @@ -1582,104 +1583,104 @@ msgstr "Poslání (send) %1" msgid "programming error: send created using role %1" msgstr "Chyba v programování: Poslání vytvoÅ™eno pomocí role %1" -#: session.cc:347 +#: session.cc:346 msgid "Set block size and sample rate" msgstr "Nastavit velikost bloku a vzorkovací kmitoÄet" -#: session.cc:352 +#: session.cc:351 msgid "Using configuration" msgstr "Používané nastavení" -#: session.cc:377 +#: session.cc:376 msgid "LTC In" msgstr "Vstup LTC" -#: session.cc:378 +#: session.cc:377 msgid "LTC Out" msgstr "Výstup LTC" -#: session.cc:404 +#: session.cc:403 msgid "LTC-in" msgstr "Vstup LTC" -#: session.cc:405 +#: session.cc:404 msgid "LTC-out" msgstr "Výstup LTC" -#: session.cc:434 +#: session.cc:433 msgid "could not setup Click I/O" msgstr "NepodaÅ™ilo se nastavit vstup/výstup metronomu" -#: session.cc:461 +#: session.cc:460 msgid "cannot setup Click I/O" msgstr "Nelze nastavit vstup/výstup metronomu" -#: session.cc:464 +#: session.cc:463 msgid "Compute I/O Latencies" msgstr "VypoÄítat prodlevy vstupu/výstupu" -#: session.cc:470 +#: session.cc:469 msgid "Set up standard connections" msgstr "Nastavit standardní spojení" -#: session.cc:491 +#: session.cc:490 #, c-format msgid "out %" msgstr "Výstup %" -#: session.cc:505 +#: session.cc:504 #, c-format msgid "out %+%" msgstr "Výstup %+%" -#: session.cc:520 +#: session.cc:519 #, c-format msgid "in %" msgstr "Vstup %" -#: session.cc:534 +#: session.cc:533 #, c-format msgid "in %+%" msgstr "Vstup %+%" -#: session.cc:570 +#: session.cc:569 msgid "Setup signal flow and plugins" msgstr "Nastavit signálový tok a přídavné moduly" -#: session.cc:614 +#: session.cc:613 msgid "Connect to engine" msgstr "Spojit se strojem" -#: session.cc:645 +#: session.cc:644 msgid "cannot connect master output %1 to %2" msgstr "Nelze spojit hlavní výstup %1 s %2" -#: session.cc:704 +#: session.cc:703 msgid "monitor" msgstr "Sledování" -#: session.cc:749 +#: session.cc:748 msgid "cannot connect control input %1 to %2" msgstr "Nelze spojit vstup ovládání %1 s %2" -#: session.cc:769 +#: session.cc:768 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "UpÅ™ednostňovaný vstup/výstup pro sledovací sbÄ›rnici (%1) nelze najít" -#: session.cc:800 +#: session.cc:799 msgid "cannot connect control output %1 to %2" msgstr "Nelze spojit výstup ovládání %1 s %2" -#: session.cc:864 +#: session.cc:863 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "Nelze vytvoÅ™it poslechový systém: Žádný poslech oblastí není možný" -#: session.cc:1043 +#: session.cc:1042 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "" "Sezení: Tuto polohu nelze pro automatický pÅ™epis použít (ZaÄátek <= Konec) " -#: session.cc:1083 +#: session.cc:1082 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" @@ -1687,83 +1688,83 @@ msgstr "" "Tuto polohu nelze pro automatickou smyÄku použít, protože nemá žádnou, nebo " "má zápornou délku" -#: session.cc:1396 +#: session.cc:1395 msgid "feedback loop setup between %1 and %2" msgstr "SmyÄka zpÄ›tné vazby rozpoznána mezi %1 a %2" -#: session.cc:1692 +#: session.cc:1691 msgid "Session: could not create new midi track." msgstr "Sezení: NepodaÅ™ilo se vytvoÅ™it novou stopu MIDI" -#: session.cc:1875 session.cc:1878 +#: session.cc:1874 session.cc:1877 msgid "Audio" msgstr "Zvuk" -#: session.cc:1902 session.cc:1910 session.cc:1987 session.cc:1995 +#: session.cc:1901 session.cc:1909 session.cc:1986 session.cc:1994 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "Nelze nastavit %1 nastavení vstup/%2 výstup pro novou zvukovou stopu" -#: session.cc:1933 +#: session.cc:1932 msgid "Session: could not create new audio track." msgstr "Sezení: NepodaÅ™ilo se vytvoÅ™it novou zvukovou stopu" -#: session.cc:1965 session.cc:1968 +#: session.cc:1964 session.cc:1967 msgid "Bus" msgstr "SbÄ›rnice" -#: session.cc:2018 +#: session.cc:2017 msgid "Session: could not create new audio route." msgstr "Sezení: NepodaÅ™ilo se vytvoÅ™it novou zvukovou cestu" -#: session.cc:2077 session.cc:2087 +#: session.cc:2076 session.cc:2086 msgid "Session: UINT_MAX routes? impossible!" msgstr "Sezení: Cesty UINT_MAX? Nemožné!" -#: session.cc:2109 +#: session.cc:2108 msgid "Session: cannot create track/bus from template description" msgstr "Sezení: Nelze vytvoÅ™it stopu/sbÄ›rnici z popisu pÅ™edlohy" -#: session.cc:2135 +#: session.cc:2134 msgid "Session: could not create new route from template" msgstr "Sezení: NepodaÅ™ilo se vytvoÅ™it novou cestu z pÅ™edlohy" -#: session.cc:2164 +#: session.cc:2163 msgid "Adding new tracks/busses failed" msgstr "Chyba pÅ™i pÅ™idávání nové stopy/sbÄ›rnice" -#: session.cc:3265 +#: session.cc:3264 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "OSUDOVà CHYBA! NepodaÅ™ilo se najít vhodnou verzi %1 pro pÅ™ejmenování" -#: session.cc:3385 session.cc:3443 +#: session.cc:3384 session.cc:3442 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "Již je %1 nahrávek pro %2, což je příliÅ¡ mnoho." -#: session.cc:3833 +#: session.cc:3832 msgid "send ID %1 appears to be in use already" msgstr "Zdá se, že ID poslání (send) %1, se již používá" -#: session.cc:3845 +#: session.cc:3844 msgid "aux send ID %1 appears to be in use already" msgstr "Zdá se, že ID pomocného-poslání (aux-send) %1, se již používá" -#: session.cc:3857 +#: session.cc:3856 msgid "return ID %1 appears to be in use already" msgstr "Zdá se, že ID vrácení (return) %1, se již používá" -#: session.cc:3869 +#: session.cc:3868 msgid "insert ID %1 appears to be in use already" msgstr "Zdá se, že ID vložení (insert) %1, se již používá" -#: session.cc:3996 +#: session.cc:3995 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "Nelze zapsat oblast s Konec <= ZaÄátek (napÅ™. %1 <= %2)" -#: session.cc:4025 +#: session.cc:4024 msgid "too many bounced versions of playlist \"%1\"" msgstr "PříliÅ¡ mnoho odhozených verzí seznamu skladeb \"%1\"" -#: session.cc:4035 +#: session.cc:4034 msgid "cannot create new audio file \"%1\" for %2" msgstr "Nelze vytvoÅ™it nový zvukový soubor \"%1\" pro %2" @@ -1814,7 +1815,7 @@ msgstr "%1: Polohu souboru %2 nelze vyhledat pro vyvedení" msgid "Export ended unexpectedly: %1" msgstr "Vyvedení skonÄilo neoÄekávanÄ›: %1" -#: session_ltc.cc:220 +#: session_ltc.cc:219 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." @@ -1843,9 +1844,8 @@ msgid "Programming error: illegal event type in process_event (%1)" msgstr "Chyba v programování: Neplatný typ události v process_event (%1)" #: session_state.cc:139 -#, fuzzy msgid "Could not use path %1 (%2)" -msgstr "NepodaÅ™ilo se použít cestu %1 (%s)" +msgstr "NepodaÅ™ilo se použít cestu %1 (%2)" #: session_state.cc:267 msgid "solo cut control (dB)" @@ -1920,7 +1920,7 @@ msgstr "NepodaÅ™ilo se pÅ™ejmenovat snímek obrazovky %1 na %2 (%3)" msgid "Could not remove session file at path \"%1\" (%2)" msgstr "NepodaÅ™ilo se odstranit soubor se sezením v cestÄ› \"%1\" (%2)" -#: session_state.cc:761 +#: session_state.cc:759 msgid "" "the %1 audio engine is not connected and state saving would lose all I/O " "connections. Session not saved" @@ -1928,134 +1928,134 @@ msgstr "" "Zvukový stroj %1 není spojen, a pÅ™i ukládání stavu by doÅ¡lo ke ztrátÄ› vÅ¡ech " "spojení vstup/výstup. Sezení neuloženo" -#: session_state.cc:812 +#: session_state.cc:808 msgid "state could not be saved to %1" msgstr "Stav se do %1 uložit nepodaÅ™ilo" -#: session_state.cc:814 session_state.cc:825 +#: session_state.cc:810 session_state.cc:821 msgid "Could not remove temporary session file at path \"%1\" (%2)" msgstr "NepodaÅ™ilo se odstranit doÄasný soubor se sezením v cestÄ› \"%1\" (%2)" -#: session_state.cc:822 +#: session_state.cc:818 msgid "could not rename temporary session file %1 to %2" msgstr "NepodaÅ™ilo se pÅ™ejmenovat doÄasný soubor se sezením %1 na %2" -#: session_state.cc:890 +#: session_state.cc:886 msgid "%1: session file \"%2\" doesn't exist!" msgstr "%1: Soubor se sezením \"%2\" neexistuje!" -#: session_state.cc:902 +#: session_state.cc:898 msgid "Could not understand session file %1" msgstr "NepodaÅ™ilo se porozumÄ›t souboru se sezením\"%1\"" -#: session_state.cc:911 +#: session_state.cc:907 msgid "Session file %1 is not a session" msgstr "Soubor se sezením %1 není sezením" -#: session_state.cc:1208 +#: session_state.cc:1204 msgid "programming error: Session: incorrect XML node sent to set_state()" msgstr "Chyba v programování: Sezení: Nesprávný uzel XML poslán set_state()" -#: session_state.cc:1257 +#: session_state.cc:1253 msgid "Session: XML state has no options section" msgstr "Sezení: XML nemá žádnou Äást \"options\"" -#: session_state.cc:1262 +#: session_state.cc:1258 msgid "Session: XML state has no metadata section" msgstr "Sezení: XML nemá žádnou Äást \"metadata\"" -#: session_state.cc:1273 +#: session_state.cc:1269 msgid "Session: XML state has no sources section" msgstr "Sezení: XML nemá žádnou Äást \"sources\"" -#: session_state.cc:1280 +#: session_state.cc:1276 msgid "Session: XML state has no Tempo Map section" msgstr "Sezení: XML nemá žádnou Äást \"Tempo Map\"" -#: session_state.cc:1287 +#: session_state.cc:1283 msgid "Session: XML state has no locations section" msgstr "Sezení: XML nemá žádnou Äást \"locations\"" -#: session_state.cc:1313 +#: session_state.cc:1309 msgid "Session: XML state has no Regions section" msgstr "Sezení: XML nemá žádnou Äást \"Regions\"" -#: session_state.cc:1320 +#: session_state.cc:1316 msgid "Session: XML state has no playlists section" msgstr "Sezení: XML nemá žádnou Äást \"playlists\"" -#: session_state.cc:1340 +#: session_state.cc:1336 msgid "Session: XML state has no bundles section" msgstr "Sezení: XML nemá žádnou Äást \"bundles\"" -#: session_state.cc:1352 +#: session_state.cc:1348 msgid "Session: XML state has no diskstreams section" msgstr "Sezení: XML nemá žádnou Äást \"diskstreams\"" -#: session_state.cc:1360 +#: session_state.cc:1356 msgid "Session: XML state has no routes section" msgstr "Sezení: XML nemá žádnou Äást \"routes\"" -#: session_state.cc:1372 +#: session_state.cc:1368 msgid "Session: XML state has no route groups section" msgstr "Sezení: XML nemá žádnou Äást \"route groups\"" -#: session_state.cc:1381 +#: session_state.cc:1377 msgid "Session: XML state has no edit groups section" msgstr "Sezení: XML nemá žádnou Äást \"edit groups\"" -#: session_state.cc:1388 +#: session_state.cc:1384 msgid "Session: XML state has no mix groups section" msgstr "Sezení: XML nemá žádnou Äást \"mix groups\"" -#: session_state.cc:1396 +#: session_state.cc:1392 msgid "Session: XML state has no click section" msgstr "Sezení: XML nemá žádnou Äást \"click\"" -#: session_state.cc:1444 +#: session_state.cc:1440 msgid "Session: cannot create Route from XML description." msgstr "Sezení: Nelze vytvoÅ™it cestu z popisu XML" -#: session_state.cc:1448 +#: session_state.cc:1444 msgid "Loaded track/bus %1" msgstr "Byla nahrána stopa/sbÄ›rnice %1" -#: session_state.cc:1546 +#: session_state.cc:1542 msgid "Could not find diskstream for route" msgstr "NepodaÅ™ilo se najít Diskstream pro cestu" -#: session_state.cc:1600 +#: session_state.cc:1596 msgid "Session: cannot create Region from XML description." msgstr "Sezení: Nelze vytvoÅ™it oblast z popisu XML" -#: session_state.cc:1604 +#: session_state.cc:1600 msgid "Can not load state for region '%1'" msgstr "Nelze nahrát stav pro oblast '%1'" -#: session_state.cc:1640 +#: session_state.cc:1636 msgid "Regions in compound description not found (ID's %1 and %2): ignored" msgstr "Oblasti ve spojeném popisu nenalezeny (ID %1 a %2): pÅ™ehlíží se" -#: session_state.cc:1668 +#: session_state.cc:1664 msgid "Nested source has no ID info in session file! (ignored)" msgstr "" "VnoÅ™ený zdroj nemá v souboru se sezením žádné informace ID! (pÅ™ehlíží se)" -#: session_state.cc:1680 +#: session_state.cc:1676 msgid "Cannot reconstruct nested source for region %1" msgstr "Nelze obnovit vnoÅ™ený zdroj pro oblast %1" -#: session_state.cc:1742 +#: session_state.cc:1738 msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" msgstr "Sezení: Uzel XML k popisu zvukové oblasti je neúplný (chybí zdroj)" -#: session_state.cc:1750 session_state.cc:1771 session_state.cc:1791 +#: session_state.cc:1746 session_state.cc:1767 session_state.cc:1787 msgid "" "Session: XMLNode describing a AudioRegion references an unknown source id =%1" msgstr "" "Sezení: Uzel XML k popisu zvukové oblasti odkazuje na ID neznámého zdroje =%1" -#: session_state.cc:1756 session_state.cc:1777 session_state.cc:1797 +#: session_state.cc:1752 session_state.cc:1773 session_state.cc:1793 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" @@ -2063,7 +2063,7 @@ msgstr "" "Sezení: Uzel XML k popisu zvukové oblasti odkazuje na ID nezvukového zdroje =" "%1" -#: session_state.cc:1820 +#: session_state.cc:1816 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" @@ -2071,23 +2071,23 @@ msgstr "" "Sezení: Uzlu XML k popisu zvukové oblasti chybí nÄ›které hlavní zdroje; " "pÅ™ehlíží se" -#: session_state.cc:1854 +#: session_state.cc:1850 msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" msgstr "Sezení: Uzel XML k popisu oblasti MIDI je neúplný (chybí zdroj)" -#: session_state.cc:1862 +#: session_state.cc:1858 msgid "" "Session: XMLNode describing a MidiRegion references an unknown source id =%1" msgstr "" "Sezení: Uzel XML k popisu oblasti MIDI odkazuje na ID neznámého zdroje =%1" -#: session_state.cc:1868 +#: session_state.cc:1864 msgid "" "Session: XMLNode describing a MidiRegion references a non-midi source id =%1" msgstr "" "Sezení: Uzel XML k popisu oblasti MIDI odkazuje na ID ne-MIDI zdroje =%1" -#: session_state.cc:1936 +#: session_state.cc:1932 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" @@ -2095,110 +2095,110 @@ msgstr "" "Nelze vytvoÅ™it nový soubor z názvu oblasti \"%1\" s ident = \"%2\": Je " "příliÅ¡ mnoho souborů s podobnými názvy" -#: session_state.cc:1959 +#: session_state.cc:1955 msgid "Session: cannot create Source from XML description." msgstr "Sezení: Nelze vytvoÅ™it zdroj z popisu XML" -#: session_state.cc:1993 +#: session_state.cc:1989 msgid "A sound file is missing. It will be replaced by silence." msgstr "Chybí zvukový soubor. Bude nahrazen tichem." -#: session_state.cc:2016 +#: session_state.cc:2012 msgid "Found a sound file that cannot be used by %1. Talk to the progammers." msgstr "" "Byl nalezen zvukový soubor, který není použitelný %1. Promluvte si s " "programátory." -#: session_state.cc:2033 +#: session_state.cc:2029 msgid "Could not create templates directory \"%1\" (%2)" msgstr "NepodaÅ™ilo se vytvoÅ™it adresář s pÅ™edlohami \"%1\" (%2)" -#: session_state.cc:2046 +#: session_state.cc:2042 msgid "Template \"%1\" already exists - new version not created" msgstr "PÅ™edloha \"%1\" již existuje - nová verze nebyla vytvoÅ™ena" -#: session_state.cc:2052 +#: session_state.cc:2048 msgid "Could not create directory for Session template\"%1\" (%2)" msgstr "NepodaÅ™ilo se vytvoÅ™it adresář pro pÅ™edlohu sezení \"%1\" (%2)" -#: session_state.cc:2062 +#: session_state.cc:2058 msgid "template not saved" msgstr "PÅ™edloha neuložena" -#: session_state.cc:2072 +#: session_state.cc:2068 msgid "Could not create directory for Session template plugin state\"%1\" (%2)" msgstr "" "NepodaÅ™ilo se vytvoÅ™it adresář pro stav přídavného modulu pÅ™edlohy sezení " "\"%1\" (%2)" -#: session_state.cc:2267 +#: session_state.cc:2263 msgid "Unknown node \"%1\" found in Bundles list from session file" msgstr "Nalezen neznámý uzel \"%1\" v seznamu svazků souboru sezení" -#: session_state.cc:2809 session_state.cc:2815 +#: session_state.cc:2805 session_state.cc:2811 msgid "Cannot expand path %1 (%2)" msgstr "Nelze rozšířit cestu %1 (%2)" -#: session_state.cc:2868 +#: session_state.cc:2864 msgid "Session: cannot create dead file folder \"%1\" (%2)" msgstr "Sezení: Nelze vytvoÅ™it odpadkový koÅ¡ pro zahozen soubory \"%1\" (%2)" -#: session_state.cc:2907 +#: session_state.cc:2903 msgid "cannot rename unused file source from %1 to %2 (%3)" msgstr "Nelze pÅ™ejmenovat nepoužívaný souborový zdroj z %1 na %2 (%3)" -#: session_state.cc:2925 +#: session_state.cc:2921 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "Nelze odstranit vrcholový soubor %1 pro %2 (%3)" -#: session_state.cc:3227 +#: session_state.cc:3223 msgid "could not backup old history file, current history not saved" msgstr "" "NepodaÅ™ilo se vytvoÅ™it zálohu starého souboru se seznamem Äinností, nynÄ›jší " "historie neuložena" -#: session_state.cc:3240 +#: session_state.cc:3236 msgid "history could not be saved to %1" msgstr "NepodaÅ™ilo se uložit seznam Äinností do %1" -#: session_state.cc:3243 +#: session_state.cc:3239 msgid "Could not remove history file at path \"%1\" (%2)" msgstr "" "NepodaÅ™ilo se odstranit soubor se seznamem Äinností v cestÄ› \"%1\" (%2)" -#: session_state.cc:3247 +#: session_state.cc:3243 msgid "could not restore history file from backup %1 (%2)" msgstr "NepodaÅ™ilo se obnovit soubor se seznamem Äinností ze zálohy %1 (%2)" -#: session_state.cc:3272 +#: session_state.cc:3268 msgid "%1: no history file \"%2\" for this session." msgstr "%1: Žádný soubor se seznamem Äinností \"%2\" pro toto sezení." -#: session_state.cc:3278 +#: session_state.cc:3274 msgid "Could not understand session history file \"%1\"" msgstr "NepodaÅ™ilo se porozumÄ›t souboru se seznamem Äinností sezení \"%1\"" -#: session_state.cc:3320 +#: session_state.cc:3316 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "NepodaÅ™ilo se najít MidiSource pro NoteDiffCommand" -#: session_state.cc:3331 +#: session_state.cc:3327 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "NepodaÅ™ilo se najít MidiSource pro SysExDiffCommand" -#: session_state.cc:3342 +#: session_state.cc:3338 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "NepodaÅ™ilo se najít MidiSource pro PatchChangeDiffCommand" -#: session_state.cc:3350 +#: session_state.cc:3346 msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "NepodaÅ™ilo se rozpoznat žádný příkaz v uzlu XML \"%1\"." -#: session_state.cc:3602 +#: session_state.cc:3598 msgid "Session: unknown diskstream type in XML" msgstr "Sezení: Neznámý typ Diskstream v XML" -#: session_state.cc:3607 +#: session_state.cc:3603 msgid "Session: could not load diskstream via XML state" msgstr "Sezení: NepodaÅ™ilo se nahrát Diskstream pomocí stavu XML" @@ -2227,25 +2227,20 @@ msgstr "" "dokud je %1 spojen s transportem JACK." #: smf_source.cc:252 -#, fuzzy msgid "Unable to read event prefix, corrupt MIDI ring" -msgstr "" -"Nelze pÅ™eÄíst pÅ™edponu události, poÅ¡kozená kruhová vyrovnávací paměť MIDI" +msgstr "Nelze pÅ™eÄíst pÅ™edponu události, poÅ¡kozen okraj MIDI" #: smf_source.cc:265 -#, fuzzy msgid "Event has time and size but no body, corrupt MIDI ring" -msgstr "" -"PÅ™eÄteny Äas/velikost, ale ne vyrovnávací paměť, poÅ¡kozená kruhová " -"vyrovnávací paměť MIDI" +msgstr "Událost má Äas a velikost, ale nemá tÄ›lo, poÅ¡kozen okraj MIDI" #: smf_source.cc:271 msgid "Event time is before MIDI source position" -msgstr "" +msgstr "ÄŒas události je pÅ™ed polohou zdroje MIDI" #: smf_source.cc:306 smf_source.cc:345 msgid "Skipping event with unordered time %1" -msgstr "" +msgstr "PÅ™eskakuje se událost s neuspořádaným Äasem %1" #: smf_source.cc:410 msgid "cannot open MIDI file %1 for write" @@ -2647,9 +2642,6 @@ msgstr "Chyba v programování: neznámý nativní formát hlaviÄky: %1" msgid "cannot open directory %1 (%2)" msgstr "Nelze otevřít adresář %1 (%2)" -#~ msgid "Session" -#~ msgstr "Sezení" - #~ msgid "midi" #~ msgstr "midi" -- cgit v1.2.3 From 3247c5a51c1bcd1af57d8670efa32015c94ecf4c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 22 Aug 2013 17:46:19 -0400 Subject: undo the hiding of SR-dependent LV2 ports --- libs/ardour/lv2_plugin.cc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index 219271a7e1..484965e8f4 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -1367,11 +1367,6 @@ LV2Plugin::describe_parameter(Evoral::Parameter which) return X_("hidden"); } - if (lilv_port_has_property(_impl->plugin, - lilv_plugin_get_port_by_index(_impl->plugin, which.id()), _world.lv2_sampleRate)) { - return X_("hidden"); - } - if (lilv_port_has_property(_impl->plugin, lilv_plugin_get_port_by_index(_impl->plugin, which.id()), _world.lv2_reportsLatency)) { return X_("latency"); -- cgit v1.2.3 From 9041d7bc18e97e41da4df84a350c63290825cf44 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 23 Aug 2013 21:26:02 +0200 Subject: don't run meter in import-dialog if the dialog is not visible --- gtk2_ardour/send_ui.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gtk2_ardour/send_ui.cc b/gtk2_ardour/send_ui.cc index 4a16c57259..1bc4e031f0 100644 --- a/gtk2_ardour/send_ui.cc +++ b/gtk2_ardour/send_ui.cc @@ -113,6 +113,10 @@ SendUI::update () void SendUI::fast_update () { + if (!is_mapped()) { + return; + } + if (Config->get_meter_falloff() > 0.0f) { _gpm.update_meters (); } -- cgit v1.2.3 From a5de2c10679cc920a7409d02e32e6dd67778ea75 Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Sat, 24 Aug 2013 14:23:25 +0200 Subject: export: add support for CAF --- libs/ardour/ardour/export_format_base.h | 1 + libs/ardour/enums.cc | 1 + libs/ardour/export_format_manager.cc | 11 +++++++++++ 3 files changed, 13 insertions(+) diff --git a/libs/ardour/ardour/export_format_base.h b/libs/ardour/ardour/export_format_base.h index a96d1148fc..a21c977833 100644 --- a/libs/ardour/ardour/export_format_base.h +++ b/libs/ardour/ardour/export_format_base.h @@ -49,6 +49,7 @@ class ExportFormatBase { F_None = 0, F_WAV = SF_FORMAT_WAV, F_W64 = SF_FORMAT_W64, + F_CAF = SF_FORMAT_CAF, F_AIFF = SF_FORMAT_AIFF, F_AU = SF_FORMAT_AU, F_IRCAM = SF_FORMAT_IRCAM, diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc index ab181d2956..bab0e8ed15 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -509,6 +509,7 @@ setup_enum_writer () REGISTER_CLASS_ENUM (ExportFormatBase, F_RAW); REGISTER_CLASS_ENUM (ExportFormatBase, F_FLAC); REGISTER_CLASS_ENUM (ExportFormatBase, F_Ogg); + REGISTER_CLASS_ENUM (ExportFormatBase, F_CAF); REGISTER (_ExportFormatBase_FormatId); REGISTER_CLASS_ENUM (ExportFormatBase, E_FileDefault); diff --git a/libs/ardour/export_format_manager.cc b/libs/ardour/export_format_manager.cc index 08238ff710..890623c114 100644 --- a/libs/ardour/export_format_manager.cc +++ b/libs/ardour/export_format_manager.cc @@ -178,6 +178,17 @@ ExportFormatManager::init_formats () fl_ptr->set_extension ("w64"); add_format (f_ptr); + f_ptr.reset (fl_ptr = new ExportFormatLinear ("CAF", ExportFormatBase::F_CAF)); + fl_ptr->add_sample_format (ExportFormatBase::SF_U8); + fl_ptr->add_sample_format (ExportFormatBase::SF_16); + fl_ptr->add_sample_format (ExportFormatBase::SF_24); + fl_ptr->add_sample_format (ExportFormatBase::SF_32); + fl_ptr->add_sample_format (ExportFormatBase::SF_Float); + fl_ptr->add_sample_format (ExportFormatBase::SF_Double); + fl_ptr->set_default_sample_format (ExportFormatBase::SF_Float); + fl_ptr->set_extension ("caf"); + add_format (f_ptr); + f_ptr.reset (fl_ptr = new ExportFormatLinear ("RAW", ExportFormatBase::F_RAW)); fl_ptr->add_sample_format (ExportFormatBase::SF_U8); fl_ptr->add_sample_format (ExportFormatBase::SF_8); -- cgit v1.2.3 From 41f6f5574b499c7d0ef50ac35443be0c9e78c026 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 24 Aug 2013 11:45:31 -0400 Subject: fix confusion about whether flip_mode in the Mackie support code is a bool or an enum --- libs/surfaces/mackie/mackie_control_protocol.cc | 6 +++--- libs/surfaces/mackie/mackie_control_protocol.h | 6 +++--- libs/surfaces/mackie/mcp_buttons.cc | 8 ++++++-- libs/surfaces/mackie/strip.cc | 12 ++++++------ 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index cfa6524f70..95c6aa8ca0 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -101,7 +101,7 @@ MackieControlProtocol::MackieControlProtocol (Session& session) , _gui (0) , _zoom_mode (false) , _scrub_mode (false) - , _flip_mode (false) + , _flip_mode (Normal) , _view_mode (Mixer) , _current_selected_track (-1) , _modifier_state (0) @@ -1271,11 +1271,11 @@ MackieControlProtocol::set_view_mode (ViewMode m) } void -MackieControlProtocol::set_flip_mode (bool yn) +MackieControlProtocol::set_flip_mode (FlipMode fm) { Glib::Threads::Mutex::Lock lm (surfaces_lock); - _flip_mode = yn; + _flip_mode = fm; for (Surfaces::iterator s = surfaces.begin(); s != surfaces.end(); ++s) { (*s)->update_flip_mode_display (); diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h index 710745f157..ffc06a32eb 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.h +++ b/libs/surfaces/mackie/mackie_control_protocol.h @@ -123,13 +123,13 @@ class MackieControlProtocol void set_device (const std::string&, bool allow_activation = true); void set_profile (const std::string&); - bool flip_mode () const { return _flip_mode; } + FlipMode flip_mode () const { return _flip_mode; } ViewMode view_mode () const { return _view_mode; } bool zoom_mode () const { return _zoom_mode; } bool metering_active () const { return _metering_active; } void set_view_mode (ViewMode); - void set_flip_mode (bool); + void set_flip_mode (FlipMode); XMLNode& get_state (); int set_state (const XMLNode&, int version); @@ -278,7 +278,7 @@ class MackieControlProtocol void* _gui; bool _zoom_mode; bool _scrub_mode; - bool _flip_mode; + FlipMode _flip_mode; ViewMode _view_mode; int _current_selected_track; int _modifier_state; diff --git a/libs/surfaces/mackie/mcp_buttons.cc b/libs/surfaces/mackie/mcp_buttons.cc index 286e87a0fb..792813bf33 100644 --- a/libs/surfaces/mackie/mcp_buttons.cc +++ b/libs/surfaces/mackie/mcp_buttons.cc @@ -814,8 +814,12 @@ MackieControlProtocol::dyn_release (Button &) LedState MackieControlProtocol::flip_press (Button &) { - set_flip_mode (!_flip_mode); - return (_flip_mode ? on : off); + if (_flip_mode != Normal) { + set_flip_mode (Normal); + } else { + set_flip_mode (Mirror); + } + return ((_flip_mode != Normal) ? on : off); } LedState MackieControlProtocol::flip_release (Button &) diff --git a/libs/surfaces/mackie/strip.cc b/libs/surfaces/mackie/strip.cc index fd8e956ba1..d758aadaa2 100644 --- a/libs/surfaces/mackie/strip.cc +++ b/libs/surfaces/mackie/strip.cc @@ -291,7 +291,7 @@ Strip::notify_gain_changed (bool force_update) Control* control; - if (_surface->mcp().flip_mode()) { + if (_surface->mcp().flip_mode() != Normal) { control = _vpot; } else { control = _fader; @@ -304,7 +304,7 @@ Strip::notify_gain_changed (bool force_update) if (force_update || normalized_position != _last_gain_position_written) { - if (_surface->mcp().flip_mode()) { + if (_surface->mcp().flip_mode() != Normal) { if (!control->in_use()) { _surface->write (_vpot->set (normalized_position, true, Pot::wrap)); } @@ -407,7 +407,7 @@ Strip::notify_panner_width_changed (bool force_update) if (force_update || pos != _last_pan_azi_position_written) { - if (_surface->mcp().flip_mode()) { + if (_surface->mcp().flip_mode() != Normal) { if (control == _fader) { if (!control->in_use()) { @@ -944,7 +944,7 @@ Strip::next_pot_mode () { vector::iterator i; - if (_surface->mcp().flip_mode()) { + if (_surface->mcp().flip_mode() != Normal) { /* do not change vpot mode while in flipped mode */ DEBUG_TRACE (DEBUG::MackieControl, "not stepping pot mode - in flip mode\n"); _surface->write (display (1, "Flip")); @@ -997,7 +997,7 @@ Strip::set_vpot_parameter (Evoral::Parameter p) case PanAzimuthAutomation: pannable = _route->pannable (); if (pannable) { - if (_surface->mcp().flip_mode()) { + if (_surface->mcp().flip_mode() != Normal) { /* gain to vpot, pan azi to fader */ _vpot->set_control (_route->gain_control()); control_by_parameter[GainAutomation] = _vpot; @@ -1025,7 +1025,7 @@ Strip::set_vpot_parameter (Evoral::Parameter p) case PanWidthAutomation: pannable = _route->pannable (); if (pannable) { - if (_surface->mcp().flip_mode()) { + if (_surface->mcp().flip_mode() != Normal) { /* gain to vpot, pan width to fader */ _vpot->set_control (_route->gain_control()); control_by_parameter[GainAutomation] = _vpot; -- cgit v1.2.3 From 1421a34e52862b614f280c751a12893e4abecf88 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 24 Aug 2013 11:46:36 -0400 Subject: pot/po file updates caused by waf i18n --- gtk2_ardour/po/cs.po | 4489 ++++++++++++++++++++++++++++------------------- gtk2_ardour/po/de.po | 1221 +++++++------ gtk2_ardour/po/el.po | 2558 +++++++++++++++------------ gtk2_ardour/po/en_GB.po | 2487 ++++++++++++++------------ gtk2_ardour/po/es.po | 2548 +++++++++++++++------------ gtk2_ardour/po/fr.po | 2551 +++++++++++++++------------ gtk2_ardour/po/it.po | 2554 +++++++++++++++------------ gtk2_ardour/po/nn.po | 2560 +++++++++++++++------------ gtk2_ardour/po/pl.po | 2542 +++++++++++++++------------ gtk2_ardour/po/pt.po | 2556 +++++++++++++++------------ gtk2_ardour/po/pt_PT.po | 2557 +++++++++++++++------------ gtk2_ardour/po/ru.po | 1857 +++++++++++--------- gtk2_ardour/po/sv.po | 2556 +++++++++++++++------------ gtk2_ardour/po/zh.po | 2544 +++++++++++++++------------ libs/ardour/butler.cc | 1 + libs/ardour/po/cs.po | 415 ++--- libs/ardour/po/de.po | 92 +- libs/ardour/po/el.po | 154 +- libs/ardour/po/es.po | 154 +- libs/ardour/po/it.po | 154 +- libs/ardour/po/nn.po | 174 +- libs/ardour/po/pl.po | 154 +- libs/ardour/po/ru.po | 154 +- libs/ardour/po/sv.po | 154 +- libs/ardour/po/zh.po | 154 +- libs/gtkmm2ext/po/cs.po | 10 +- libs/gtkmm2ext/po/de.po | 7 +- libs/gtkmm2ext/po/el.po | 6 +- libs/gtkmm2ext/po/es.po | 21 +- libs/gtkmm2ext/po/fr.po | 6 +- libs/gtkmm2ext/po/nn.po | 6 +- libs/gtkmm2ext/po/pl.po | 6 +- libs/gtkmm2ext/po/pt.po | 6 +- libs/gtkmm2ext/po/ru.po | 6 +- 34 files changed, 20706 insertions(+), 16708 deletions(-) diff --git a/gtk2_ardour/po/cs.po b/gtk2_ardour/po/cs.po index 6fcd10bf4d..452ba5dfb1 100644 --- a/gtk2_ardour/po/cs.po +++ b/gtk2_ardour/po/cs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk-ardour 0.347.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-09 09:28-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-06-13 12:05+0200\n" "Last-Translator: Pavel Fric \n" "Language-Team: Czech \n" @@ -261,6 +261,7 @@ msgstr "" "\tRomain Arnaud \n" #: about.cc:183 +#, fuzzy msgid "" "German:\n" "\tKarsten Petersen \n" @@ -269,6 +270,7 @@ msgid "" "\tBenjamin Scherrer \n" "\tEdgar Aichinger \n" "\tRichard Oax \n" +"\tRobin Gloster \n" msgstr "" "NÄ›mÄina:\n" "\tKarsten Petersen \n" @@ -278,7 +280,7 @@ msgstr "" "\tEdgar Aichinger \n" "\tRichard Oax \n" -#: about.cc:189 +#: about.cc:190 msgid "" "Italian:\n" "\tFilippo Pappalardo \n" @@ -288,7 +290,7 @@ msgstr "" "\tFilippo Pappalardo \n" "\tRaffaele Morelli \n" -#: about.cc:190 +#: about.cc:191 msgid "" "Portuguese:\n" "\tRui Nuno Capela \n" @@ -296,7 +298,7 @@ msgstr "" "PortugalÅ¡tina:\n" "\tRui Nuno Capela \n" -#: about.cc:191 +#: about.cc:192 msgid "" "Brazilian Portuguese:\n" "\tAlexander da Franca Fernandes \n" @@ -306,7 +308,7 @@ msgstr "" "\tAlexander da Franca Fernandes \n" "\tChris Ross \n" -#: about.cc:193 +#: about.cc:194 msgid "" "Spanish:\n" "\t Alex Krohn \n" @@ -316,7 +318,7 @@ msgstr "" "\t Alex Krohn \n" "\tPablo Fernández \n" -#: about.cc:194 +#: about.cc:195 msgid "" "Russian:\n" "\t Igor Blinov \n" @@ -326,7 +328,7 @@ msgstr "" "\t Igor Blinov \n" "\tAlexandre Prokoudine \n" -#: about.cc:196 +#: about.cc:197 msgid "" "Greek:\n" "\t Klearchos Gourgourinis \n" @@ -334,7 +336,7 @@ msgstr "" "ŘeÄtina:\n" "\t Klearchos Gourgourinis \n" -#: about.cc:197 +#: about.cc:198 msgid "" "Swedish:\n" "\t Petter Sundlöf \n" @@ -342,7 +344,7 @@ msgstr "" "Å védÅ¡tina:\n" "\t Petter Sundlöf \n" -#: about.cc:198 +#: about.cc:199 msgid "" "Polish:\n" "\t Piotr Zaryk \n" @@ -350,7 +352,7 @@ msgstr "" "PolÅ¡tina:\n" "\t Piotr Zaryk \n" -#: about.cc:199 +#: about.cc:200 msgid "" "Czech:\n" "\t Pavel Fric \n" @@ -358,7 +360,7 @@ msgstr "" "ÄŒeÅ¡tina:\n" "\t Pavel Fric \n" -#: about.cc:200 +#: about.cc:201 msgid "" "Norwegian:\n" "\t Eivind ØdegÃ¥rd\n" @@ -366,7 +368,7 @@ msgstr "" "NorÅ¡tina:\n" "\t Eivind ØdegÃ¥rd\n" -#: about.cc:201 +#: about.cc:202 msgid "" "Chinese:\n" "\t Rui-huai Zhang \n" @@ -374,15 +376,15 @@ msgstr "" "ČínÅ¡tina:\n" "\t Rui-huai Zhang \n" -#: about.cc:579 +#: about.cc:580 msgid "Copyright (C) 1999-2013 Paul Davis\n" msgstr "Autorské právo (C) 1999-2013 Paul Davis\n" -#: about.cc:583 +#: about.cc:584 msgid "http://ardour.org/" msgstr "http://www.ardour.org" -#: about.cc:584 +#: about.cc:585 msgid "" "%1\n" "(built from revision %2)" @@ -390,27 +392,27 @@ msgstr "" "%1\n" "(Sestaveno na základÄ› revize %2)" -#: about.cc:588 +#: about.cc:589 msgid "Config" msgstr "Nastavení" -#: actions.cc:80 +#: actions.cc:85 msgid "Loading menus from %1" msgstr "Nahrávají se nabídky z %1" -#: actions.cc:83 actions.cc:84 +#: actions.cc:88 actions.cc:89 msgid "badly formatted UI definition file: %1" msgstr "Soubor vymezující uživatelské rozhraní %1 je nesprávnÄ› formátován" -#: actions.cc:86 +#: actions.cc:91 msgid "%1 menu definition file not found" msgstr "%1 soubor s vymezením nabídky nenalezen" -#: actions.cc:90 actions.cc:91 +#: actions.cc:95 actions.cc:96 msgid "%1 will not work without a valid ardour.menus file" msgstr "%1 nebude pracovat bez platného souboru ardour.menus" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 msgid "Add Track or Bus" msgstr "PÅ™idat stopu nebo sbÄ›rnici" @@ -426,67 +428,68 @@ msgstr "Režim stopy:" msgid "Instrument:" msgstr "Nástroj:" -#: add_route_dialog.cc:79 +#: add_route_dialog.cc:76 msgid "Audio Tracks" msgstr "Zvukové stopy" -#: add_route_dialog.cc:80 +#: add_route_dialog.cc:77 msgid "MIDI Tracks" msgstr "Stopy MIDI" -#: add_route_dialog.cc:81 +#: add_route_dialog.cc:78 msgid "Audio+MIDI Tracks" msgstr "Zvukové a MIDI stopy" -#: add_route_dialog.cc:82 +#: add_route_dialog.cc:79 msgid "Busses" msgstr "SbÄ›rnice" -#: add_route_dialog.cc:104 +#: add_route_dialog.cc:101 msgid "Add:" msgstr "PÅ™idat:" -#: add_route_dialog.cc:117 startup.cc:808 time_fx_dialog.cc:92 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 msgid "Options" msgstr "Volby" -#: add_route_dialog.cc:127 bundle_manager.cc:194 region_editor.cc:50 -#: route_group_dialog.cc:66 +#: add_route_dialog.cc:124 bundle_manager.cc:192 region_editor.cc:50 +#: route_group_dialog.cc:65 msgid "Name:" msgstr "Název:" -#: add_route_dialog.cc:157 +#: add_route_dialog.cc:154 msgid "Group:" msgstr "Skupina:" -#: add_route_dialog.cc:218 add_route_dialog.cc:227 add_route_dialog.cc:301 -#: rc_option_editor.cc:1450 rc_option_editor.cc:1452 rc_option_editor.cc:1454 -#: rc_option_editor.cc:1472 rc_option_editor.cc:1474 rc_option_editor.cc:1482 -#: rc_option_editor.cc:1484 rc_option_editor.cc:1502 rc_option_editor.cc:1515 -#: rc_option_editor.cc:1517 rc_option_editor.cc:1519 rc_option_editor.cc:1550 -#: rc_option_editor.cc:1552 rc_option_editor.cc:1554 rc_option_editor.cc:1562 -#: rc_option_editor.cc:1570 rc_option_editor.cc:1578 +#: 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 msgid "Audio" msgstr "Zvuk" -#: add_route_dialog.cc:219 add_route_dialog.cc:230 add_route_dialog.cc:302 -#: editor_actions.cc:105 missing_file_dialog.cc:55 rc_option_editor.cc:1701 -#: rc_option_editor.cc:1709 rc_option_editor.cc:1717 rc_option_editor.cc:1726 -#: rc_option_editor.cc:1734 rc_option_editor.cc:1742 rc_option_editor.cc:1750 -#: rc_option_editor.cc:1759 rc_option_editor.cc:1768 rc_option_editor.cc:1777 -#: rc_option_editor.cc:1785 rc_option_editor.cc:1793 +#: 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 msgid "MIDI" msgstr "MIDI" -#: add_route_dialog.cc:220 add_route_dialog.cc:233 add_route_dialog.cc:303 +#: add_route_dialog.cc:217 add_route_dialog.cc:230 add_route_dialog.cc:300 msgid "Audio+MIDI" msgstr "Zvuk + MIDI" -#: add_route_dialog.cc:221 add_route_dialog.cc:236 add_route_dialog.cc:304 +#: add_route_dialog.cc:218 add_route_dialog.cc:233 add_route_dialog.cc:301 msgid "Bus" msgstr "SbÄ›rnice" -#: add_route_dialog.cc:263 +#: add_route_dialog.cc:260 msgid "" "Audio+MIDI tracks are intended for use ONLY with plugins that use " "both audio and MIDI input data\n" @@ -500,64 +503,64 @@ msgstr "" "Pokud takový přídavný modul nemáte v úmyslu používat, potom namísto toho " "použijte normální zvukovou nebo MIDI stopu." -#: add_route_dialog.cc:322 add_route_dialog.cc:341 editor_actions.cc:385 -#: editor_rulers.cc:380 time_axis_view.cc:1301 +#: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "Obvyklá" -#: add_route_dialog.cc:325 add_route_dialog.cc:343 +#: add_route_dialog.cc:322 add_route_dialog.cc:340 msgid "Non Layered" msgstr "Nevrstvená" -#: add_route_dialog.cc:326 add_route_dialog.cc:345 +#: add_route_dialog.cc:323 add_route_dialog.cc:342 msgid "Tape" msgstr "Pásek" -#: add_route_dialog.cc:426 +#: add_route_dialog.cc:423 msgid "Mono" msgstr "Mono" -#: add_route_dialog.cc:430 +#: add_route_dialog.cc:427 msgid "Stereo" msgstr "Stereo" -#: add_route_dialog.cc:454 +#: add_route_dialog.cc:451 msgid "3 Channel" msgstr "3 kanály" -#: add_route_dialog.cc:458 +#: add_route_dialog.cc:455 msgid "4 Channel" msgstr "4 kanály" -#: add_route_dialog.cc:462 +#: add_route_dialog.cc:459 msgid "5 Channel" msgstr "5 kanálů" -#: add_route_dialog.cc:466 +#: add_route_dialog.cc:463 msgid "6 Channel" msgstr "6 kanálů" -#: add_route_dialog.cc:470 +#: add_route_dialog.cc:467 msgid "8 Channel" msgstr "8 kanálů" -#: add_route_dialog.cc:474 +#: add_route_dialog.cc:471 msgid "12 Channel" msgstr "12 kanálů" -#: add_route_dialog.cc:478 mixer_strip.cc:2137 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "Vlastní" -#: add_route_dialog.cc:511 add_route_dialog.cc:525 route_group_menu.cc:81 +#: add_route_dialog.cc:508 add_route_dialog.cc:524 route_group_menu.cc:81 msgid "New Group..." msgstr "Nová skupina..." -#: add_route_dialog.cc:515 route_group_menu.cc:85 +#: add_route_dialog.cc:512 route_group_menu.cc:85 msgid "No Group" msgstr "Žádná skupina" -#: add_route_dialog.cc:587 +#: add_route_dialog.cc:588 msgid "-none-" msgstr "-žádná-" @@ -623,17 +626,17 @@ msgstr "Normalizovat hodnoty" msgid "FFT analysis window" msgstr "Okno pro rozbor FFT" -#: analysis_window.cc:60 editor.cc:1880 +#: analysis_window.cc:60 editor.cc:1856 msgid "Spectral Analysis" msgstr "Spektrální analýza (FFT rozbor)" -#: analysis_window.cc:67 editor_actions.cc:138 export_channel_selector.cc:555 +#: analysis_window.cc:67 editor_actions.cc:138 export_channel_selector.cc:557 #: session_metadata_dialog.cc:546 msgid "Track" msgstr "Stopa" -#: analysis_window.cc:68 editor_actions.cc:619 mixer_ui.cc:124 -#: mixer_ui.cc:1792 +#: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 +#: mixer_ui.cc:1795 msgid "Show" msgstr "Ukázat" @@ -641,39 +644,90 @@ msgstr "Ukázat" msgid "Re-analyze data" msgstr "Znovu zpracovat data" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "TlaÄítko nemůže sledovat stav neexistujícího ovladatelného prvku\n" -#: ardour_ui.cc:168 +#: ardour_ui.cc:180 msgid "audition" msgstr "Poslech" -#: ardour_ui.cc:169 +#: ardour_ui.cc:181 msgid "solo" msgstr "Sólo" -#: ardour_ui.cc:170 +#: ardour_ui.cc:182 msgid "feedback" msgstr "ZpÄ›tná vazba" -#: ardour_ui.cc:172 +#: ardour_ui.cc:187 speaker_dialog.cc:36 +msgid "Speaker Configuration" +msgstr "Nastavení reproduktoru" + +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 +msgid "Theme Manager" +msgstr "Správce témat" + +#: ardour_ui.cc:189 keyeditor.cc:53 +msgid "Key Bindings" +msgstr "Klávesové zkratky" + +#: ardour_ui.cc:190 +msgid "Preferences" +msgstr "Nastavení" + +#: ardour_ui.cc:191 ardour_ui.cc:196 +#, fuzzy +msgid "Add Tracks/Busses" +msgstr "Stopy/SbÄ›rnice" + +#: ardour_ui.cc:192 +msgid "About" +msgstr "O programu" + +#: ardour_ui.cc:193 location_ui.cc:1146 +msgid "Locations" +msgstr "Místa" + +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 +msgid "Tracks and Busses" +msgstr "Stopy a sbÄ›rnice" + +#: ardour_ui.cc:195 +msgid "Properties" +msgstr "Vlastnosti" + +#: ardour_ui.cc:197 bundle_manager.cc:263 +msgid "Bundle Manager" +msgstr "Správce balíků" + +#: ardour_ui.cc:198 big_clock_window.cc:35 +msgid "Big Clock" +msgstr "Velký ukazatel Äasu" + +#: ardour_ui.cc:199 +#, fuzzy +msgid "Audio Connections" +msgstr "Spojení vstupů" + +#: ardour_ui.cc:200 +#, fuzzy +msgid "MIDI Connections" +msgstr "Spojení vstupů" + +#: ardour_ui.cc:202 msgid "Errors" msgstr "Chyby" -#: ardour_ui.cc:293 -msgid "could not initialize %1." -msgstr "NepodaÅ™ilo se zapnout %1." - -#: ardour_ui.cc:353 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "SpouÅ¡tí se zvukový stroj" -#: ardour_ui.cc:735 startup.cc:613 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "%1 je pÅ™ipraven pro použití" -#: ardour_ui.cc:783 +#: ardour_ui.cc:806 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" @@ -688,23 +742,23 @@ msgstr "" "Můžete se podívat na omezení pro paměť pomocí příkazu 'ulimit -l', a obvykle " "můžete toto nastavení zmÄ›nit %2." -#: ardour_ui.cc:800 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "Neukazovat toto okno s hlášením znovu" -#: ardour_ui.cc:847 +#: ardour_ui.cc:865 msgid "Don't quit" msgstr "NeukonÄit" -#: ardour_ui.cc:848 +#: ardour_ui.cc:866 msgid "Just quit" msgstr "Pouze ukonÄit" -#: ardour_ui.cc:849 +#: ardour_ui.cc:867 msgid "Save and quit" msgstr "Uložit a ukonÄit" -#: ardour_ui.cc:859 +#: ardour_ui.cc:877 msgid "" "%1 was unable to save your session.\n" "\n" @@ -718,15 +772,15 @@ msgstr "" "\n" "\"Pouze ukonÄit\"." -#: ardour_ui.cc:890 +#: ardour_ui.cc:908 msgid "Please wait while %1 cleans up..." msgstr "PoÄkejte, prosím, zatímco %1 uklízí..." -#: ardour_ui.cc:908 +#: ardour_ui.cc:925 msgid "Unsaved Session" msgstr "Neuložené sezení" -#: ardour_ui.cc:929 +#: ardour_ui.cc:946 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -744,7 +798,7 @@ msgstr "" "\n" "Co chcete dÄ›lat?" -#: ardour_ui.cc:932 +#: ardour_ui.cc:949 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -762,75 +816,75 @@ msgstr "" "\n" "Co chcete dÄ›lat?" -#: ardour_ui.cc:946 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "Otázka" -#: ardour_ui.cc:1024 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "odpojeno" -#: ardour_ui.cc:1031 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "JACK: %.1f kHz / %4.1f ms" -#: ardour_ui.cc:1035 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "JACK: % kHz / %4.1f ms" -#: ardour_ui.cc:1053 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 msgid "File:" msgstr "Soubor:" -#: ardour_ui.cc:1057 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "BWF" -#: ardour_ui.cc:1060 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "WAV" -#: ardour_ui.cc:1063 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "WAV64" -#: ardour_ui.cc:1066 session_option_editor.cc:199 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "CAF" -#: ardour_ui.cc:1069 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "AIFF" -#: ardour_ui.cc:1072 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "iXML" -#: ardour_ui.cc:1075 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "RF64" -#: ardour_ui.cc:1083 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "32-float" -#: ardour_ui.cc:1086 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "24-int" -#: ardour_ui.cc:1089 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "16-int" -#: ardour_ui.cc:1108 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "" "Digitální zpracování signálu (DSP): %5.1f%%" -#: ardour_ui.cc:1127 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -841,33 +895,33 @@ msgstr "" "\">%%% c:%%%" -#: ardour_ui.cc:1163 +#: ardour_ui.cc:1188 msgid "Disk: Unknown" msgstr "Disk: Neznámý" -#: ardour_ui.cc:1165 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "Disk: 24 hodin +" -#: ardour_ui.cc:1183 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "Disk: >24 hodin" -#: ardour_ui.cc:1194 +#: ardour_ui.cc:1219 #, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "Disk: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1220 +#: ardour_ui.cc:1245 #, c-format msgid "Timecode|TC: %s" msgstr "ÄŒasový kód|ÄŒK: %s" -#: ardour_ui.cc:1337 ardour_ui.cc:1346 startup.cc:1020 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "Naposledy otevÅ™ená sezení" -#: ardour_ui.cc:1428 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" @@ -875,26 +929,26 @@ msgstr "" "%1 není spojen s JACKem.\n" "Za tohoto stavu není možné otevřít nebo zavřít sezení." -#: ardour_ui.cc:1455 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Otevřít sezení" -#: ardour_ui.cc:1473 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1049 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 msgid "%1 sessions" msgstr "%1 sezení" -#: ardour_ui.cc:1510 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "Stopy můžete pÅ™idat až teprve tehdy, když bylo sezení nahráno." -#: ardour_ui.cc:1518 +#: ardour_ui.cc:1548 msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "NepodaÅ™ilo se vytvoÅ™it %1 novou smíchanou stopu" msgstr[1] "NepodaÅ™ilo se vytvoÅ™it %1 nové smíchané stopy" -#: ardour_ui.cc:1524 ardour_ui.cc:1585 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -906,24 +960,24 @@ msgstr "" "MÄ›l byste uložit %1, ukonÄit Ardour\n" "a spustit JACK znovu s vÄ›tším poÄtem přípojek." -#: ardour_ui.cc:1559 +#: ardour_ui.cc:1589 msgid "You cannot add a track or bus without a session already loaded." msgstr "" "Stopy nebo sbÄ›rnice můžete pÅ™idat až teprve tehdy, když bylo sezení nahráno." -#: ardour_ui.cc:1568 +#: ardour_ui.cc:1598 msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "Nelze vytvoÅ™it %1 novou zvukovou stopu" msgstr[1] "Nelze vytvoÅ™it %1 nové zvukové stopy" -#: ardour_ui.cc:1577 +#: ardour_ui.cc:1607 msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "NepodaÅ™ilo se vytvoÅ™it %1 novou zvukovou sbÄ›rnici" msgstr[1] "NepodaÅ™ilo se vytvoÅ™it %1 nové zvukové sbÄ›rnice" -#: ardour_ui.cc:1694 +#: ardour_ui.cc:1724 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." @@ -931,7 +985,7 @@ msgstr "" "VytvoÅ™te, prosím, jednu nebo i více stop, pÅ™edtím než se pokusíte nahrávat.\n" "Můžete to udÄ›lat volbou \"PÅ™idat stopu nebo sbÄ›rnici\" v nabídce pro sezení." -#: ardour_ui.cc:2084 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" @@ -941,7 +995,7 @@ msgstr "" "\n" "%1" -#: ardour_ui.cc:2086 +#: ardour_ui.cc:2116 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -953,19 +1007,19 @@ msgstr "" "MÄ›l byste se pokusit znovu spustit JACK,\n" "pÅ™ipojit se a uložit sezení." -#: ardour_ui.cc:2112 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Nelze spustit nynÄ›jší sezení" -#: ardour_ui.cc:2192 +#: ardour_ui.cc:2222 msgid "Take Snapshot" msgstr "UdÄ›lat snímek obrazovky" -#: ardour_ui.cc:2193 +#: ardour_ui.cc:2223 msgid "Name of new snapshot" msgstr "Název pro nový snímek obrazovky" -#: ardour_ui.cc:2217 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" @@ -973,27 +1027,27 @@ msgstr "" "Pro zajiÅ¡tÄ›ní sluÄitelnosti s různými systémy\n" "nesmí názvy snímků obrazovky obsahovat znak '%1'" -#: ardour_ui.cc:2229 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "Potvrdit pÅ™epsání snímku obrazovky" -#: ardour_ui.cc:2230 +#: ardour_ui.cc:2260 msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Snímek obrazovky s tímto názvem již existuje. Chcete jej pÅ™epsat?" -#: ardour_ui.cc:2233 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "PÅ™epsat" -#: ardour_ui.cc:2267 +#: ardour_ui.cc:2297 msgid "Rename Session" msgstr "PÅ™ejmenovat sezení" -#: ardour_ui.cc:2268 +#: ardour_ui.cc:2298 msgid "New session name" msgstr "Nový název sezení:" -#: ardour_ui.cc:2282 ardour_ui.cc:2666 ardour_ui.cc:2711 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" @@ -1001,13 +1055,13 @@ msgstr "" "Pro zajiÅ¡tÄ›ní sluÄitelnosti s různými systémy\n" "nesmí názvy sezení obsahovat znak '%1'" -#: ardour_ui.cc:2290 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" "Tento název se již používá jiným adresářem/složkou. Zkuste to, prosím, znovu." -#: ardour_ui.cc:2299 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" @@ -1015,19 +1069,19 @@ msgstr "" "PÅ™ejmenování tohoto sezení se nezdaÅ™ilo.\n" "VÄ›ci by v tuto chvíli mohly být vážnÄ› zvorané" -#: ardour_ui.cc:2414 +#: ardour_ui.cc:2440 msgid "Save Template" msgstr "Uložit pÅ™edlohu" -#: ardour_ui.cc:2415 +#: ardour_ui.cc:2441 msgid "Name for template:" msgstr "Název pro pÅ™edlohu:" -#: ardour_ui.cc:2416 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-pÅ™edloha" -#: ardour_ui.cc:2454 +#: ardour_ui.cc:2480 msgid "" "This session\n" "%1\n" @@ -1037,52 +1091,52 @@ msgstr "" "%1\n" "již existuje. Chcete jej otevřít?" -#: ardour_ui.cc:2464 +#: ardour_ui.cc:2490 msgid "Open Existing Session" msgstr "Otevřít stávající sezení" -#: ardour_ui.cc:2702 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "V \"%1\" není žádné sezení" -#: ardour_ui.cc:2792 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "PoÄkejte, prosím, dokud %1 nenahraje vaÅ¡e sezení" -#: ardour_ui.cc:2807 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "Chyba v zápisu přípojky" -#: ardour_ui.cc:2808 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "KlepnÄ›te na tlaÄítko Zavřít, abyste to mohli zkusit znovu." -#: ardour_ui.cc:2829 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Projekt \"%1 (snímek obrazovky %2)\" nebyl úspěšnÄ› nahrán." -#: ardour_ui.cc:2835 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "Chyba pÅ™i nahrávání" -#: ardour_ui.cc:2836 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "KlepnÄ›te na tlaÄítko Obnovit, abyste to mohli zkusit znovu." -#: ardour_ui.cc:2918 +#: ardour_ui.cc:2941 msgid "Could not create session in \"%1\"" msgstr "V \"%1\" nelze vytvoÅ™it žádné sezení" -#: ardour_ui.cc:3045 +#: ardour_ui.cc:3041 msgid "No files were ready for clean-up" msgstr "Pro udÄ›lání pořádku nebyly pÅ™ipraveny žádné soubory" -#: ardour_ui.cc:3049 ardour_ui.cc:3059 ardour_ui.cc:3192 ardour_ui.cc:3199 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "UdÄ›lat pořádek" -#: ardour_ui.cc:3050 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1094,19 +1148,19 @@ msgstr "" "jsou pravdÄ›podobnÄ› zaÄlenÄ›ny jeÅ¡tÄ› v nÄ›jakém\n" "starším snímku obrazovky jako oblasti." -#: ardour_ui.cc:3109 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "kilo" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3108 msgid "mega" msgstr "mega" -#: ardour_ui.cc:3115 +#: ardour_ui.cc:3111 msgid "giga" msgstr "giga" -#: ardour_ui.cc:3120 +#: ardour_ui.cc:3116 msgid "" "The following file was deleted from %2,\n" "releasing %3 %4bytes of disk space" @@ -1120,7 +1174,7 @@ msgstr[1] "" "Následující soubor byl smazán z %2,\n" "a tím se na disku uvolnilo %3 %4 bajtů ukládacího prostoru" -#: ardour_ui.cc:3127 +#: ardour_ui.cc:3123 msgid "" "The following file was not in use and \n" "has been moved to: %2\n" @@ -1158,11 +1212,11 @@ msgstr[1] "" "\n" "uvolní se na disku dalších %3 %4 bajtů ukládacího prostoru.\n" -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3183 msgid "Are you sure you want to clean-up?" msgstr "Jste si jistý, že chcete udÄ›lat pořádek?" -#: ardour_ui.cc:3194 +#: ardour_ui.cc:3190 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" @@ -1174,78 +1228,87 @@ msgstr "" "Po udÄ›lání pořádku budou vÅ¡echny nepoužívané a tudíž nepotÅ™ebné zvukové " "soubory pÅ™esunuty do \"mrtvého\" umístÄ›ní." -#: ardour_ui.cc:3202 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "Dialog vÄ›novaný dÄ›lání pořádku" -#: ardour_ui.cc:3232 +#: ardour_ui.cc:3228 msgid "Cleaned Files" msgstr "Uklizené soubory" -#: ardour_ui.cc:3249 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "smazané soubory" -#: ardour_ui.cc:3346 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" "Videoserver nebyl spuÅ¡tÄ›n Ardourem. Požadavek na jeho zastavení se pÅ™ehlíží." -#: ardour_ui.cc:3350 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "Zastavit videoserver" -#: ardour_ui.cc:3351 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "Opravdu chcete zastavit videoserver?" -#: ardour_ui.cc:3354 +#: ardour_ui.cc:3345 msgid "Yes, Stop It" msgstr "Ano, zastavit" -#: ardour_ui.cc:3380 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." -msgstr "Videoserver je již spuÅ¡tÄ›n\n." +msgstr "" +"Videoserver je již spuÅ¡tÄ›n\n" +"." -#: ardour_ui.cc:3382 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" "VnÄ›jší videoserver je nastaven a je dosažitelný. NespouÅ¡tí se nová instance." -#: ardour_ui.cc:3390 ardour_ui.cc:3461 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" "NepodaÅ™ilo se pÅ™ipojit k videoserveru. SpusÅ¥te jej nebo nastavte adresu pro " -"přístup " -"k nÄ›mu v Úpravy -> Nastavení." +"přístup k nÄ›mu v Úpravy -> Nastavení." -#: ardour_ui.cc:3414 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "Zadaný koÅ™en dokumentu (docroot) není existujícím adresářem." -#: ardour_ui.cc:3419 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "Daný videoserver není spustitelným souborem." -#: ardour_ui.cc:3485 editor_audio_import.cc:629 +#: ardour_ui.cc:3443 +msgid "Cannot launch the video-server" +msgstr "" + +#: ardour_ui.cc:3452 +msgid "Video-server was started but does not respond to requests..." +msgstr "" + +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "\"%\" nelze otevřít" -#: ardour_ui.cc:3489 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "Nebyl vybrán žádný videosoubor" -#: ardour_ui.cc:3650 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "" "Nahrávání bylo zastaveno, protože tomu nedostaÄovala rychlost vaÅ¡eho systému." -#: ardour_ui.cc:3679 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1259,7 +1322,7 @@ msgstr "" "PÅ™esnÄ›ji Å™eÄeno nebylo možné dostateÄnÄ› rychle zapisovat data\n" "tak, aby se podaÅ™ilo udržet krok s nahráváním.\n" -#: ardour_ui.cc:3698 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1273,11 +1336,11 @@ msgstr "" "PÅ™esnÄ›ji Å™eÄeno nebylo možné dostateÄnÄ› rychle Äíst data\n" "tak, aby se podaÅ™ilo udržet krok s pÅ™ehráváním.\n" -#: ardour_ui.cc:3738 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "Obnovení po havárii" -#: ardour_ui.cc:3739 +#: ardour_ui.cc:3762 msgid "" "This session appears to have been in the\n" "middle of recording when %1 or\n" @@ -1295,19 +1358,19 @@ msgstr "" "zvuková data, nebo je odmítnout.\n" "RozhodnÄ›te se, prosím, jak chcete dále pokraÄovat.\n" -#: ardour_ui.cc:3751 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "Odmítnout data" -#: ardour_ui.cc:3752 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "Obnovit data" -#: ardour_ui.cc:3772 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "Vzorkovací kmitoÄet neodpovídá" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3796 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" @@ -1317,31 +1380,23 @@ msgstr "" "%2 nyní běží na %3 Hz. Pokud toto sezení nahrajete,\n" "je možné, že zvuk bude pÅ™ehráván pÅ™i nesprávném vzorkovacím kmitoÄtu.\n" -#: ardour_ui.cc:3782 +#: ardour_ui.cc:3805 msgid "Do not load session" msgstr "Projekt nenahrávat" -#: ardour_ui.cc:3783 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "Projekt pÅ™esto nahrát" -#: ardour_ui.cc:3804 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "Nelze se odpojit od JACKa" -#: ardour_ui.cc:3817 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "Nelze se znovu spojit s JACKem" -#: ardour_ui.cc:3902 -msgid "Check the website for more..." -msgstr "Najít více na internetových stránkách..." - -#: ardour_ui.cc:3915 -msgid "Click to open the program website in your web browser" -msgstr "Klepnout pro otevÅ™ení stránek programu v prohlížeÄi" - -#: ardour_ui.cc:4152 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1375,35 +1430,40 @@ msgstr "Uživatelské rozhraní: editor nemohl být spuÅ¡tÄ›n." msgid "UI: cannot setup mixer" msgstr "Uživatelské rozhraní: směšovaÄ nemohl být spuÅ¡tÄ›n." -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "Uživatelské rozhraní: směšovaÄ nemohl být spuÅ¡tÄ›n." + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "PÅ™ehrávat od ukazatele polohy pÅ™ehrávání" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Zastavit pÅ™ehrávání" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:132 msgid "Toggle record" msgstr "Spustit nahrávání" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "PÅ™ehrávat rozsah/výbÄ›r" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "PÅ™ejít na zaÄátek sezení" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "PÅ™ejít na konec sezení" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "PÅ™ehrávat rozsah smyÄky" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" @@ -1411,23 +1471,23 @@ msgstr "" "Nouzové zastavení MIDI\n" "Poslat nota vypnuta a nastavit znovu zprávy ovladaÄe na vÅ¡ech kanálech MIDI" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "PÅ™i zastavení se vrátit na zaÄátek posledního pÅ™ehrávání" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:139 msgid "Playhead follows Range Selections and Edits" msgstr "Ukazatele polohy následuje výbÄ›ry rozsahu a úpravy" -#: ardour_ui2.cc:137 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "Spustit automatické sledování vstupu" -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "Povolit/Zakázat slyÅ¡itelné klapnutí" -#: ardour_ui2.cc:139 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" @@ -1435,7 +1495,7 @@ msgstr "" "Je v Äinnosti pÅ™i sólovém pÅ™ehrávání nÄ›které ze stop.\n" "Pro vypnutí sóla klepnÄ›te." -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" @@ -1443,11 +1503,11 @@ msgstr "" "Je v Äinnosti pÅ™i poslechu.\n" "Klepnutím se poslech zastaví." -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "Je-li v Äinnosti, je tu smyÄka se zpÄ›tnou vazbou." -#: ardour_ui2.cc:142 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1461,7 +1521,7 @@ msgstr "" "potvrdit; úpravy pÅ™ipojit '+' nebo '-' pro zadání Äasů delta (nárůst " "promÄ›nné).\n" -#: ardour_ui2.cc:143 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1475,35 +1535,40 @@ msgstr "" "potvrdit; úpravy pÅ™ipojit '+' nebo '-' pro zadání Äasů delta (nárůst " "promÄ›nné).\n" -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "Nastavit kÅ™ivku síly zvuku znovu" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "[CHYBA]:" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "[VAROVÃNÃ]:" -#: ardour_ui2.cc:179 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "[INFORMACE]: " -#: ardour_ui2.cc:243 ardour_ui_ed.cc:417 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "Automatický návrat" -#: ardour_ui2.cc:245 ardour_ui_ed.cc:420 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "Následovat úpravy" -#: ardour_ui2.cc:631 rc_option_editor.cc:1006 rc_option_editor.cc:1024 -#: rc_option_editor.cc:1027 rc_option_editor.cc:1029 rc_option_editor.cc:1031 -#: rc_option_editor.cc:1039 rc_option_editor.cc:1047 rc_option_editor.cc:1049 -#: rc_option_editor.cc:1057 rc_option_editor.cc:1064 rc_option_editor.cc:1073 -#: rc_option_editor.cc:1075 rc_option_editor.cc:1077 rc_option_editor.cc:1085 -#: rc_option_editor.cc:1087 rc_option_editor.cc:1096 -#: session_option_editor.cc:236 session_option_editor.cc:238 -#: session_option_editor.cc:259 session_option_editor.cc:261 -#: session_option_editor.cc:263 session_option_editor.cc:270 +#: 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 +#: 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 msgid "Misc" msgstr "Různé" @@ -1515,37 +1580,37 @@ msgstr "Nachystat editor" msgid "Setup Mixer" msgstr "Nachystat směšovaÄ" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "Znovu nahrát průbÄ›h sezení" -#: ardour_ui_dependents.cc:125 -msgid "This screen is not tall enough to display the mixer window" -msgstr "" -"Tato obrazovka není dostateÄnÄ› velká na to, aby zobrazila okno směšovaÄe" - -#: ardour_ui_dialogs.cc:225 +#: ardour_ui_dialogs.cc:242 msgid "Don't close" msgstr "Nezavírat" -#: ardour_ui_dialogs.cc:226 +#: ardour_ui_dialogs.cc:243 msgid "Just close" msgstr "Pouze zavřít" -#: ardour_ui_dialogs.cc:227 +#: ardour_ui_dialogs.cc:244 msgid "Save and close" msgstr "Uložit a zavřít" +#: ardour_ui_dialogs.cc:340 +msgid "This screen is not tall enough to display the mixer window" +msgstr "" +"Tato obrazovka není dostateÄnÄ› velká na to, aby zobrazila okno směšovaÄe" + #: ardour_ui_ed.cc:103 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:83 session_option_editor.cc:90 +#: port_group.cc:457 session_option_editor.cc:82 session_option_editor.cc:89 msgid "Sync" msgstr "Seřídit" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Volby" @@ -1573,15 +1638,15 @@ msgstr "Typ souboru" msgid "Sample Format" msgstr "Vzorkovací formát" -#: ardour_ui_ed.cc:114 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "Ovládací spínaÄe" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1552 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Přídavné moduly" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1905 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "Ukazatel hladiny" @@ -1597,7 +1662,7 @@ msgstr "ÄŒas udržení" msgid "Denormal Handling" msgstr "Zacházení s neobvyklými vzorky " -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "Nový..." @@ -1609,7 +1674,7 @@ msgstr "Otevřít..." msgid "Recent..." msgstr "Naposledy použité..." -#: ardour_ui_ed.cc:127 panner_editor.cc:29 playlist_selector.cc:65 +#: ardour_ui_ed.cc:127 panner_editor.cc:29 playlist_selector.cc:64 msgid "Close" msgstr "Zavřít" @@ -1617,418 +1682,361 @@ msgstr "Zavřít" msgid "Add Track or Bus..." msgstr "PÅ™idat stopu nebo sbÄ›rnici..." -#: ardour_ui_ed.cc:136 +#: ardour_ui_ed.cc:135 msgid "Open Video" msgstr "Otevřít video" -#: ardour_ui_ed.cc:139 +#: ardour_ui_ed.cc:138 msgid "Remove Video" msgstr "Odstranit video" -#: ardour_ui_ed.cc:142 +#: ardour_ui_ed.cc:141 msgid "Export To Video File" msgstr "Vyvést jako videosoubor" -#: ardour_ui_ed.cc:152 -msgid "Connect" -msgstr "Spojit" - -#: ardour_ui_ed.cc:158 +#: ardour_ui_ed.cc:145 msgid "Snapshot..." msgstr "Snímek obrazovky..." -#: ardour_ui_ed.cc:162 +#: ardour_ui_ed.cc:149 msgid "Save As..." msgstr "Uložit jako..." -#: ardour_ui_ed.cc:166 editor_actions.cc:1717 editor_markers.cc:859 -#: editor_snapshots.cc:123 mixer_strip.cc:1465 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 msgid "Rename..." msgstr "PÅ™ejmenovat..." -#: ardour_ui_ed.cc:170 +#: ardour_ui_ed.cc:157 msgid "Save Template..." msgstr "Uložit jako pÅ™edlohu..." -#: ardour_ui_ed.cc:173 +#: ardour_ui_ed.cc:160 msgid "Metadata" msgstr "Popisná data" -#: ardour_ui_ed.cc:176 +#: ardour_ui_ed.cc:163 msgid "Edit Metadata..." msgstr "Upravit popisná data..." -#: ardour_ui_ed.cc:179 +#: ardour_ui_ed.cc:166 msgid "Import Metadata..." msgstr "Zavést popisná data..." -#: ardour_ui_ed.cc:182 +#: ardour_ui_ed.cc:169 msgid "Export To Audio File(s)..." msgstr "Vyvést jako zvukový soubor(y)..." -#: ardour_ui_ed.cc:185 +#: ardour_ui_ed.cc:172 msgid "Stem export..." msgstr "Vyvést vybranou stopu jako jeden soubor..." -#: ardour_ui_ed.cc:188 editor_export_audio.cc:63 export_dialog.cc:129 +#: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Vyvést" -#: ardour_ui_ed.cc:191 +#: ardour_ui_ed.cc:178 msgid "Clean-up Unused Sources..." msgstr "Odstranit nepoužívané zdroje..." -#: ardour_ui_ed.cc:195 +#: ardour_ui_ed.cc:182 msgid "Flush Wastebasket" msgstr "Vyprázdnit koÅ¡" -#: ardour_ui_ed.cc:202 keyeditor.cc:253 rc_option_editor.cc:1466 +#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1472 msgid "JACK" msgstr "JACK" -#: ardour_ui_ed.cc:203 route_params_ui.cc:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "Prodleva" -#: ardour_ui_ed.cc:205 +#: ardour_ui_ed.cc:192 msgid "Reconnect" msgstr "PÅ™ipojit znovu" -#: ardour_ui_ed.cc:208 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "Odpojit" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:222 msgid "Quit" msgstr "UkonÄit" -#: ardour_ui_ed.cc:239 +#: ardour_ui_ed.cc:226 msgid "Maximise Editor Space" msgstr "ZvÄ›tÅ¡it okno editoru" -#: ardour_ui_ed.cc:240 +#: ardour_ui_ed.cc:227 msgid "Show Toolbars" msgstr "Ukázat nástrojové panely" -#: ardour_ui_ed.cc:243 mixer_ui.cc:1862 mixer_ui.cc:1868 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 msgid "Window|Mixer" msgstr "Okno/SměšovaÄ" -#: ardour_ui_ed.cc:244 -msgid "Mixer on Top" -msgstr "SměšovaÄ navrchu" - -#: ardour_ui_ed.cc:245 -msgid "Preferences" -msgstr "Nastavení" - -#: ardour_ui_ed.cc:246 -msgid "Properties" -msgstr "Vlastnosti" - -#: ardour_ui_ed.cc:247 route_params_ui.cc:57 route_params_ui.cc:604 -msgid "Tracks and Busses" -msgstr "Stopy a sbÄ›rnice" - -#: ardour_ui_ed.cc:250 location_ui.cc:1134 -msgid "Locations" -msgstr "Místa" - -#: ardour_ui_ed.cc:252 ardour_ui_ed.cc:656 -msgid "Big Clock" -msgstr "Velký ukazatel Äasu" - -#: ardour_ui_ed.cc:254 speaker_dialog.cc:36 -msgid "Speaker Configuration" -msgstr "Nastavení reproduktoru" - -#: ardour_ui_ed.cc:256 global_port_matrix.cc:164 -msgid "Audio Connection Manager" -msgstr "Správce zvukových spojení" +#: ardour_ui_ed.cc:231 +#, fuzzy +msgid "Toggle Editor+Mixer" +msgstr "Ukázat editor nebo mixér navrchu" -#: ardour_ui_ed.cc:258 global_port_matrix.cc:167 -msgid "MIDI Connection Manager" -msgstr "Správce MIDI spojení" +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "Okno/SměšovaÄ" -#: ardour_ui_ed.cc:260 midi_tracer.cc:39 +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "SledovaÄ MIDI" -#: ardour_ui_ed.cc:262 -msgid "About" -msgstr "O programu" - -#: ardour_ui_ed.cc:263 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "Povídání" -#: ardour_ui_ed.cc:265 +#: ardour_ui_ed.cc:238 msgid "Help|Manual" msgstr "NápovÄ›da|PříruÄka" -#: ardour_ui_ed.cc:266 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "Odkaz" -#: ardour_ui_ed.cc:267 theme_manager.cc:55 theme_manager.cc:62 -msgid "Theme Manager" -msgstr "Správce témat" - -#: ardour_ui_ed.cc:268 keyeditor.cc:53 -msgid "Key Bindings" -msgstr "Klávesové zkratky" - -#: ardour_ui_ed.cc:269 bundle_manager.cc:265 -msgid "Bundle Manager" -msgstr "Správce balíků" - -#: ardour_ui_ed.cc:272 -msgid "Add Audio Track" -msgstr "PÅ™idat zvukovou stopu" - -#: ardour_ui_ed.cc:274 -msgid "Add Audio Bus" -msgstr "PÅ™idat zvukovou sbÄ›rnici" - -#: ardour_ui_ed.cc:276 -msgid "Add MIDI Track" -msgstr "PÅ™idat MIDI stopu" - -#: ardour_ui_ed.cc:281 plugin_ui.cc:461 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Uložit" -#: ardour_ui_ed.cc:289 rc_option_editor.cc:1116 rc_option_editor.cc:1127 -#: rc_option_editor.cc:1136 rc_option_editor.cc:1149 rc_option_editor.cc:1162 -#: rc_option_editor.cc:1171 rc_option_editor.cc:1181 rc_option_editor.cc:1183 -#: rc_option_editor.cc:1193 rc_option_editor.cc:1209 rc_option_editor.cc:1222 -#: rc_option_editor.cc:1240 rc_option_editor.cc:1242 rc_option_editor.cc:1256 -#: rc_option_editor.cc:1259 rc_option_editor.cc:1261 rc_option_editor.cc:1278 -#: rc_option_editor.cc:1289 +#: 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 msgid "Transport" msgstr "PÅ™esun" -#: ardour_ui_ed.cc:295 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "Zastavit" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "ProjíždÄ›t" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "Spustit/Zastavit" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:265 msgid "Start/Continue/Stop" msgstr "Spustit/PokraÄovat/Zastavit" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:268 msgid "Stop and Forget Capture" msgstr "Zastavit a odmítnout zvukový záznam" -#: ardour_ui_ed.cc:318 +#: ardour_ui_ed.cc:278 msgid "Transition To Roll" msgstr "PÅ™ehrávat dopÅ™edu" -#: ardour_ui_ed.cc:322 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "PÅ™ehrávat dozadu" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "PÅ™ehrávat rozsah smyÄky" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:289 msgid "Play Selected Range" msgstr "PÅ™ehrát vybraný rozsah" -#: ardour_ui_ed.cc:332 +#: ardour_ui_ed.cc:292 msgid "Play Selection w/Preroll" msgstr "PÅ™ehrávat vybranou oblast s pÅ™etáÄením vpÅ™ed" -#: ardour_ui_ed.cc:336 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "Povolit nahrávání" -#: ardour_ui_ed.cc:339 +#: ardour_ui_ed.cc:299 msgid "Start Recording" msgstr "ZaÄít s nahráváním" -#: ardour_ui_ed.cc:343 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "PÅ™etoÄit zpÄ›t" -#: ardour_ui_ed.cc:346 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "PÅ™etoÄit zpÄ›t (pomalu)" -#: ardour_ui_ed.cc:349 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "PÅ™etoÄit zpÄ›t (rychle)" -#: ardour_ui_ed.cc:352 startup.cc:702 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "PÅ™etoÄit vpÅ™ed" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "PÅ™etoÄit vpÅ™ed (pomalu)" -#: ardour_ui_ed.cc:358 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "PÅ™etoÄit vpÅ™ed (rychle)" -#: ardour_ui_ed.cc:361 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "SkoÄit k bodu nula" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "SkoÄit na zaÄátek" -#: ardour_ui_ed.cc:367 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "SkoÄit na konec" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "SkoÄit na pÅ™esný místní Äas" -#: ardour_ui_ed.cc:374 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "ZaostÅ™it na ukazatel Äasu" -#: ardour_ui_ed.cc:378 ardour_ui_ed.cc:387 audio_clock.cc:2046 editor.cc:241 -#: editor_actions.cc:544 editor_actions.cc:554 export_timespan_selector.cc:88 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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:98 -#: session_option_editor.cc:111 session_option_editor.cc:124 -#: session_option_editor.cc:126 session_option_editor.cc:128 +#: session_option_editor.cc:80 session_option_editor.cc:96 +#: session_option_editor.cc:109 session_option_editor.cc:122 +#: session_option_editor.cc:124 session_option_editor.cc:126 msgid "Timecode" msgstr "ÄŒasový kód" -#: ardour_ui_ed.cc:380 ardour_ui_ed.cc:389 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 msgid "Bars & Beats" msgstr "Takty & Doby" -#: ardour_ui_ed.cc:382 ardour_ui_ed.cc:391 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 msgid "Minutes & Seconds" msgstr "Minuty & Sekundy" -#: ardour_ui_ed.cc:384 ardour_ui_ed.cc:393 audio_clock.cc:2050 editor.cc:242 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "Vzorky" -#: ardour_ui_ed.cc:396 +#: ardour_ui_ed.cc:356 msgid "Punch In" msgstr "ZaÄít pÅ™epis oblasti" -#: ardour_ui_ed.cc:397 mixer_strip.cc:1905 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "Vstup" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:360 msgid "Punch Out" msgstr "UkonÄit pÅ™epis oblasti" -#: ardour_ui_ed.cc:401 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "Výstup" -#: ardour_ui_ed.cc:404 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "PÅ™epsat oblast" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:365 msgid "In/Out" msgstr "Vstup/Výstup" -#: ardour_ui_ed.cc:408 rc_option_editor.cc:1073 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "Klepnout" -#: ardour_ui_ed.cc:411 +#: ardour_ui_ed.cc:371 msgid "Auto Input" msgstr "Automatický vstup" -#: ardour_ui_ed.cc:414 +#: ardour_ui_ed.cc:374 msgid "Auto Play" msgstr "Automatické pÅ™ehrávání" -#: ardour_ui_ed.cc:425 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "Seřídit spuÅ¡tÄ›ní s videem" -#: ardour_ui_ed.cc:427 +#: ardour_ui_ed.cc:387 msgid "Time Master" msgstr "Řízení Äasu" -#: ardour_ui_ed.cc:434 +#: ardour_ui_ed.cc:394 msgid "Toggle Record Enable Track %1" msgstr "Spustit nahrávání stopy %1" -#: ardour_ui_ed.cc:441 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "Procentní podíl" -#: ardour_ui_ed.cc:442 shuttle_control.cc:168 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Polotóny" -#: ardour_ui_ed.cc:446 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "Poslat MTC" -#: ardour_ui_ed.cc:448 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "Poslat MMC" -#: ardour_ui_ed.cc:450 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "Použít MMC" -#: ardour_ui_ed.cc:452 rc_option_editor.cc:1704 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 msgid "Send MIDI Clock" msgstr "Poslat Äas MIDI" -#: ardour_ui_ed.cc:454 +#: ardour_ui_ed.cc:414 msgid "Send MIDI Feedback" msgstr "Poslat zpÄ›tnou vazbu MIDI" -#: ardour_ui_ed.cc:460 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "Nouzové zastavení" -#: ardour_ui_ed.cc:600 +#: ardour_ui_ed.cc:560 msgid "Wall Clock" msgstr "NástÄ›nné hodiny" -#: ardour_ui_ed.cc:601 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "Místo na disku" -#: ardour_ui_ed.cc:602 +#: ardour_ui_ed.cc:562 msgid "DSP" msgstr "Digitální zpracování signálu (DSP)" -#: ardour_ui_ed.cc:603 +#: ardour_ui_ed.cc:563 msgid "Buffers" msgstr "Vyrovnávací pamÄ›ti" -#: ardour_ui_ed.cc:604 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "Vzorkovací kmitoÄet a prodleva JACK" -#: ardour_ui_ed.cc:605 +#: ardour_ui_ed.cc:565 msgid "Timecode Format" msgstr "Formát Äasového kódu" -#: ardour_ui_ed.cc:606 +#: ardour_ui_ed.cc:566 msgid "File Format" msgstr "Souborový formát" @@ -2044,11 +2052,11 @@ msgstr "" msgid "Internal" msgstr "VnitÅ™ní" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:482 msgid "Enable/Disable external positional sync" msgstr "Povolit/Zakázat vnÄ›jší seřízení podle polohy" -#: ardour_ui_options.cc:477 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "Seřízení k JACKovi není možné: je nastaveno vytáhnutí/stáhnutí videa" @@ -2069,16 +2077,16 @@ msgstr "Táhnout" msgid "%+.4f%%" msgstr "%+.4f%%" -#: audio_clock.cc:1237 editor.cc:243 editor_actions.cc:135 +#: audio_clock.cc:1237 editor.cc:239 editor_actions.cc:135 #: editor_actions.cc:536 msgid "Tempo" msgstr "Tempo" -#: audio_clock.cc:1241 editor.cc:244 editor_actions.cc:537 +#: audio_clock.cc:1241 editor.cc:240 editor_actions.cc:537 msgid "Meter" msgstr "Druh taktu" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1037 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2089,7 +2097,7 @@ msgstr "Chyba v programování: %1" msgid "programming error: %1 %2" msgstr "Chyba v programování: %1 %2" -#: audio_clock.cc:2048 editor.cc:240 export_timespan_selector.cc:98 +#: audio_clock.cc:2048 editor.cc:236 export_timespan_selector.cc:98 msgid "Bars:Beats" msgstr "Takty:Doby" @@ -2167,32 +2175,32 @@ msgid "hide track" msgstr "Skrýt tuto stopu" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:452 -#: generic_pluginui.cc:729 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 msgid "Automation|Manual" msgstr "Automatizace|PříruÄka" #: automation_time_axis.cc:257 automation_time_axis.cc:318 -#: automation_time_axis.cc:501 editor.cc:1957 editor.cc:2034 +#: 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:455 generic_pluginui.cc:731 midi_time_axis.cc:1489 -#: midi_time_axis.cc:1492 midi_time_axis.cc:1495 panner_ui.cc:153 +#: 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 msgid "Play" msgstr "PÅ™ehrát" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:458 -#: generic_pluginui.cc:733 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "Zapsat" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:461 -#: generic_pluginui.cc:735 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "Dotknout se" -#: automation_time_axis.cc:351 generic_pluginui.cc:464 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "???" @@ -2200,8 +2208,8 @@ msgstr "???" msgid "clear automation" msgstr "Vyprázdnit automatizaci" -#: automation_time_axis.cc:485 editor_actions.cc:616 editor_markers.cc:858 -#: location_ui.cc:55 plugin_selector.cc:86 route_time_axis.cc:699 +#: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "Skrýt" @@ -2217,68 +2225,67 @@ msgstr "Stav" msgid "Discrete" msgstr "Samostatný" -#: automation_time_axis.cc:537 editor.cc:1481 editor.cc:1488 editor.cc:1544 -#: editor.cc:1550 export_format_dialog.cc:476 +#: automation_time_axis.cc:537 editor.cc:1457 editor.cc:1464 editor.cc:1520 +#: editor.cc:1526 export_format_dialog.cc:476 msgid "Linear" msgstr "Čárový" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 -#: shuttle_control.cc:187 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 +#: shuttle_control.cc:188 msgid "Mode" msgstr "Režim" -#: bundle_manager.cc:183 +#: bundle_manager.cc:181 msgid "Disassociate" msgstr "OddÄ›lit" -#: bundle_manager.cc:187 +#: bundle_manager.cc:185 msgid "Edit Bundle" msgstr "Upravit balík" -#: bundle_manager.cc:202 +#: bundle_manager.cc:200 msgid "Direction:" msgstr "SmÄ›r:" -#: bundle_manager.cc:207 bundle_manager.cc:211 mixer_strip.cc:156 -#: mixer_strip.cc:2133 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "Vstup" -#: bundle_manager.cc:208 bundle_manager.cc:213 bundle_manager.cc:247 -#: mixer_strip.cc:161 mixer_strip.cc:2136 +#: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "Výstup" -#: bundle_manager.cc:266 editor.cc:1998 editor_actions.cc:90 +#: bundle_manager.cc:264 editor.cc:1974 editor_actions.cc:90 #: editor_actions.cc:100 msgid "Edit" msgstr "Upravit" -#: bundle_manager.cc:267 editor.cc:5525 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:462 processor_box.cc:2207 -#: route_time_axis.cc:704 +#: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "Smazat" -#: bundle_manager.cc:273 bundle_manager.cc:441 editor_route_groups.cc:96 -#: editor_routes.cc:202 midi_list_editor.cc:106 rc_option_editor.cc:656 -#: session_metadata_dialog.cc:525 +#: bundle_manager.cc:271 bundle_manager.cc:439 editor_route_groups.cc:96 +#: editor_routes.cc:202 midi_list_editor.cc:106 session_metadata_dialog.cc:525 msgid "Name" msgstr "Název" -#: bundle_manager.cc:284 +#: bundle_manager.cc:282 msgid "New" msgstr "Nový" -#: bundle_manager.cc:334 +#: bundle_manager.cc:332 msgid "Bundle" msgstr "Balík" -#: bundle_manager.cc:419 +#: bundle_manager.cc:417 msgid "Add Channel" msgstr "PÅ™idat kanál" -#: bundle_manager.cc:426 +#: bundle_manager.cc:424 msgid "Rename Channel" msgstr "PÅ™ejmenovat kanál" @@ -2424,565 +2431,565 @@ msgid "Time" msgstr "ÄŒas" #: edit_note_dialog.cc:98 editor_regions.cc:114 -#: export_timespan_selector.cc:361 export_timespan_selector.cc:425 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: export_timespan_selector.cc:359 export_timespan_selector.cc:421 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "Délka" -#: edit_note_dialog.cc:168 +#: edit_note_dialog.cc:165 msgid "edit note" msgstr "Upravit notu" -#: editor.cc:141 editor.cc:3455 +#: editor.cc:137 editor.cc:3429 msgid "CD Frames" msgstr "Snímky CD" -#: editor.cc:142 editor.cc:3457 +#: editor.cc:138 editor.cc:3431 msgid "Timecode Frames" msgstr "Snímky Äasového kódu" -#: editor.cc:143 editor.cc:3459 +#: editor.cc:139 editor.cc:3433 msgid "Timecode Seconds" msgstr "Sekundy Äasového kódu" -#: editor.cc:144 editor.cc:3461 +#: editor.cc:140 editor.cc:3435 msgid "Timecode Minutes" msgstr "Minuty Äasového kódu" -#: editor.cc:145 editor.cc:3463 +#: editor.cc:141 editor.cc:3437 msgid "Seconds" msgstr "Sekundy" -#: editor.cc:146 editor.cc:3465 +#: editor.cc:142 editor.cc:3439 msgid "Minutes" msgstr "Minuty" -#: editor.cc:147 editor.cc:3439 quantize_dialog.cc:37 quantize_dialog.cc:141 +#: editor.cc:143 editor.cc:3413 quantize_dialog.cc:37 quantize_dialog.cc:141 msgid "Beats/128" msgstr "Doby/128" -#: editor.cc:148 editor.cc:3437 quantize_dialog.cc:38 quantize_dialog.cc:143 +#: editor.cc:144 editor.cc:3411 quantize_dialog.cc:38 quantize_dialog.cc:143 msgid "Beats/64" msgstr "Doby/64" -#: editor.cc:149 editor.cc:3435 quantize_dialog.cc:39 quantize_dialog.cc:145 +#: editor.cc:145 editor.cc:3409 quantize_dialog.cc:39 quantize_dialog.cc:145 msgid "Beats/32" msgstr "Doby/32" -#: editor.cc:150 editor.cc:3433 +#: editor.cc:146 editor.cc:3407 msgid "Beats/28" msgstr "Doby/28" -#: editor.cc:151 editor.cc:3431 +#: editor.cc:147 editor.cc:3405 msgid "Beats/24" msgstr "Doby/24" -#: editor.cc:152 editor.cc:3429 +#: editor.cc:148 editor.cc:3403 msgid "Beats/20" msgstr "Doby/20" -#: editor.cc:153 editor.cc:3427 quantize_dialog.cc:40 quantize_dialog.cc:147 +#: editor.cc:149 editor.cc:3401 quantize_dialog.cc:40 quantize_dialog.cc:147 msgid "Beats/16" msgstr "Doby/16" -#: editor.cc:154 editor.cc:3425 +#: editor.cc:150 editor.cc:3399 msgid "Beats/14" msgstr "Doby/14" -#: editor.cc:155 editor.cc:3423 +#: editor.cc:151 editor.cc:3397 msgid "Beats/12" msgstr "Doby/12" -#: editor.cc:156 editor.cc:3421 +#: editor.cc:152 editor.cc:3395 msgid "Beats/10" msgstr "Doby/10" -#: editor.cc:157 editor.cc:3419 quantize_dialog.cc:41 quantize_dialog.cc:149 +#: editor.cc:153 editor.cc:3393 quantize_dialog.cc:41 quantize_dialog.cc:149 msgid "Beats/8" msgstr "Doby/8" -#: editor.cc:158 editor.cc:3417 +#: editor.cc:154 editor.cc:3391 msgid "Beats/7" msgstr "Doby/7" -#: editor.cc:159 editor.cc:3415 +#: editor.cc:155 editor.cc:3389 msgid "Beats/6" msgstr "Doby/6" -#: editor.cc:160 editor.cc:3413 +#: editor.cc:156 editor.cc:3387 msgid "Beats/5" msgstr "Doby/5" -#: editor.cc:161 editor.cc:3411 quantize_dialog.cc:42 quantize_dialog.cc:151 +#: editor.cc:157 editor.cc:3385 quantize_dialog.cc:42 quantize_dialog.cc:151 msgid "Beats/4" msgstr "Doby/4" -#: editor.cc:162 editor.cc:3409 quantize_dialog.cc:43 quantize_dialog.cc:153 +#: editor.cc:158 editor.cc:3383 quantize_dialog.cc:43 quantize_dialog.cc:153 msgid "Beats/3" msgstr "Doby/3" -#: editor.cc:163 editor.cc:3407 quantize_dialog.cc:44 quantize_dialog.cc:155 +#: editor.cc:159 editor.cc:3381 quantize_dialog.cc:44 quantize_dialog.cc:155 msgid "Beats/2" msgstr "Doby/2" -#: editor.cc:164 editor.cc:3441 quantize_dialog.cc:45 quantize_dialog.cc:157 +#: editor.cc:160 editor.cc:3415 quantize_dialog.cc:45 quantize_dialog.cc:157 msgid "Beats" msgstr "Doby" -#: editor.cc:165 editor.cc:3443 +#: editor.cc:161 editor.cc:3417 msgid "Bars" msgstr "Takty" -#: editor.cc:166 editor.cc:3445 +#: editor.cc:162 editor.cc:3419 msgid "Marks" msgstr "ZnaÄky" -#: editor.cc:167 editor.cc:3447 +#: editor.cc:163 editor.cc:3421 msgid "Region starts" msgstr "ZaÄátek oblasti" -#: editor.cc:168 editor.cc:3449 +#: editor.cc:164 editor.cc:3423 msgid "Region ends" msgstr "Konec oblasti" -#: editor.cc:169 editor.cc:3453 +#: editor.cc:165 editor.cc:3427 msgid "Region syncs" msgstr "Seřízení oblasti" -#: editor.cc:170 editor.cc:3451 +#: editor.cc:166 editor.cc:3425 msgid "Region bounds" msgstr "Hranice oblasti" -#: editor.cc:175 editor.cc:3481 editor_actions.cc:485 +#: editor.cc:171 editor.cc:3455 editor_actions.cc:485 msgid "No Grid" msgstr "Mřížka vypnuta" -#: editor.cc:176 editor.cc:3483 editor_actions.cc:486 +#: editor.cc:172 editor.cc:3457 editor_actions.cc:486 msgid "Grid" msgstr "Mřížka zapnuta" -#: editor.cc:177 editor.cc:3485 editor_actions.cc:487 +#: editor.cc:173 editor.cc:3459 editor_actions.cc:487 msgid "Magnetic" msgstr "Magnetická" -#: editor.cc:182 editor.cc:192 editor.cc:3524 editor.cc:3549 +#: editor.cc:178 editor.cc:188 editor.cc:3498 editor.cc:3523 #: editor_actions.cc:117 editor_actions.cc:468 msgid "Playhead" msgstr "Ukazatel polohy" -#: editor.cc:183 editor.cc:3522 editor_actions.cc:470 +#: editor.cc:179 editor.cc:3496 editor_actions.cc:470 msgid "Marker" msgstr "ZnaÄka" -#: editor.cc:184 editor.cc:193 editor.cc:3551 editor_actions.cc:469 +#: editor.cc:180 editor.cc:189 editor.cc:3525 editor_actions.cc:469 msgid "Mouse" msgstr "MyÅ¡" -#: editor.cc:189 editor.cc:3543 mono_panner_editor.cc:42 +#: editor.cc:185 editor.cc:3517 mono_panner_editor.cc:42 msgid "Left" msgstr "Vlevo" -#: editor.cc:190 editor.cc:3545 mono_panner_editor.cc:47 +#: editor.cc:186 editor.cc:3519 mono_panner_editor.cc:47 msgid "Right" msgstr "Vpravo" -#: editor.cc:191 editor.cc:3547 +#: editor.cc:187 editor.cc:3521 msgid "Center" msgstr "Na stÅ™ed" -#: editor.cc:194 editor.cc:3114 editor.cc:3553 +#: editor.cc:190 editor.cc:3090 editor.cc:3527 msgid "Edit point" msgstr "Pracovní bod" -#: editor.cc:200 +#: editor.cc:196 msgid "Mushy" msgstr "RuÅ¡ený" -#: editor.cc:201 +#: editor.cc:197 msgid "Smooth" msgstr "Plynulý" -#: editor.cc:202 +#: editor.cc:198 msgid "Balanced multitimbral mixture" msgstr "Vyvážená vícehlasá smÄ›s" -#: editor.cc:203 +#: editor.cc:199 msgid "Unpitched percussion with stable notes" msgstr "Atonální nárazy se stálými tóny" -#: editor.cc:204 +#: editor.cc:200 msgid "Crisp monophonic instrumental" msgstr "Jemná jednokanálová nástrojová hudba" -#: editor.cc:205 +#: editor.cc:201 msgid "Unpitched solo percussion" msgstr "Atonální samostatné nárazy" -#: editor.cc:206 +#: editor.cc:202 msgid "Resample without preserving pitch" msgstr "PÅ™evzorkovat bez zachování výšky tónu" -#: editor.cc:239 +#: editor.cc:235 msgid "Mins:Secs" msgstr "Min:Sec" -#: editor.cc:245 +#: editor.cc:241 msgid "Location Markers" msgstr "ZnaÄky polohy" -#: editor.cc:246 +#: editor.cc:242 msgid "Range Markers" msgstr "ZnaÄky rozsahů" -#: editor.cc:247 +#: editor.cc:243 msgid "Loop/Punch Ranges" msgstr "Rozsahy smyÄky/pÅ™epsání" -#: editor.cc:248 editor_actions.cc:540 +#: editor.cc:244 editor_actions.cc:540 msgid "CD Markers" msgstr "ZnaÄky na CD" -#: editor.cc:250 +#: editor.cc:245 msgid "Video Timeline" msgstr "ÄŒasová osa videa" -#: editor.cc:266 +#: editor.cc:260 msgid "mode" msgstr "Režim" -#: editor.cc:554 +#: editor.cc:542 msgid "Regions" msgstr "Oblasti" -#: editor.cc:555 +#: editor.cc:543 msgid "Tracks & Busses" msgstr "Stopy & SbÄ›rnice" -#: editor.cc:556 +#: editor.cc:544 msgid "Snapshots" msgstr "Snímky obrazovky" -#: editor.cc:557 +#: editor.cc:545 msgid "Track & Bus Groups" msgstr "Skupiny stopy a sbÄ›rnice" -#: editor.cc:558 +#: editor.cc:546 msgid "Ranges & Marks" msgstr "Rozsahy a znaÄky" -#: editor.cc:702 editor.cc:5376 rc_option_editor.cc:1296 -#: rc_option_editor.cc:1304 rc_option_editor.cc:1312 rc_option_editor.cc:1329 -#: rc_option_editor.cc:1331 rc_option_editor.cc:1339 rc_option_editor.cc:1347 -#: rc_option_editor.cc:1367 rc_option_editor.cc:1379 rc_option_editor.cc:1381 -#: rc_option_editor.cc:1389 rc_option_editor.cc:1397 rc_option_editor.cc:1405 -#: rc_option_editor.cc:1413 rc_option_editor.cc:1421 rc_option_editor.cc:1436 -#: rc_option_editor.cc:1440 +#: 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 msgid "Editor" msgstr "Editor" -#: editor.cc:1239 editor.cc:1249 editor.cc:4471 editor_actions.cc:130 +#: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 #: editor_actions.cc:1813 msgid "Loop" msgstr "SmyÄka" -#: editor.cc:1255 editor.cc:1265 editor.cc:4498 editor_actions.cc:131 +#: editor.cc:1231 editor.cc:1241 editor.cc:4467 editor_actions.cc:131 #: time_info_box.cc:67 msgid "Punch" msgstr "PÅ™epsání" -#: editor.cc:1376 +#: editor.cc:1352 msgid "Linear (for highly correlated material)" msgstr "Lineární (pro vysoce souvztažný materiál)" -#: editor.cc:1386 editor.cc:1523 editor.cc:1585 +#: editor.cc:1362 editor.cc:1499 editor.cc:1561 msgid "Constant power" msgstr "NemÄ›nná síla" -#: editor.cc:1395 editor.cc:1516 editor.cc:1578 +#: editor.cc:1371 editor.cc:1492 editor.cc:1554 msgid "Symmetric" msgstr "SoumÄ›rný" -#: editor.cc:1405 editor.cc:1498 editor.cc:1560 +#: editor.cc:1381 editor.cc:1474 editor.cc:1536 msgid "Slow" msgstr "Pomalu" -#: editor.cc:1414 editor.cc:1507 editor.cc:1569 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "Rychle" -#: editor.cc:1461 +#: editor.cc:1437 msgid "programming error: fade in canvas item has no regionview data pointer!" msgstr "" "Chyba v programování: položka plátna postupné zesílení signálu nemá žádný " "ukazatel dat pohledu na oblast!" -#: editor.cc:1472 editor.cc:1536 +#: editor.cc:1448 editor.cc:1512 msgid "Deactivate" msgstr "Zastavit" -#: editor.cc:1474 editor.cc:1538 +#: editor.cc:1450 editor.cc:1514 msgid "Activate" msgstr "Spustit" -#: editor.cc:1482 editor.cc:1545 +#: editor.cc:1458 editor.cc:1521 msgid "Slowest" msgstr "Velmi pomalu" -#: editor.cc:1596 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "Chyba v programování:" -#: editor.cc:1697 editor.cc:1705 editor_ops.cc:3523 +#: editor.cc:1673 editor.cc:1681 editor_ops.cc:3522 msgid "Freeze" msgstr "Zmrazit" -#: editor.cc:1701 +#: editor.cc:1677 msgid "Unfreeze" msgstr "Rozmrazit" -#: editor.cc:1840 +#: editor.cc:1816 msgid "Selected Regions" msgstr "Vybrané oblasti" -#: editor.cc:1876 editor_markers.cc:896 +#: editor.cc:1852 editor_markers.cc:895 msgid "Play Range" msgstr "PÅ™ehrávat rozsah" -#: editor.cc:1877 editor_markers.cc:899 +#: editor.cc:1853 editor_markers.cc:898 msgid "Loop Range" msgstr "PÅ™ehrávat rozsah smyÄky" -#: editor.cc:1886 editor_actions.cc:332 +#: editor.cc:1862 editor_actions.cc:332 msgid "Move Range Start to Previous Region Boundary" msgstr "PÅ™esunout zaÄátek rozsahu na pÅ™edchozí hranici oblasti" -#: editor.cc:1893 editor_actions.cc:339 +#: editor.cc:1869 editor_actions.cc:339 msgid "Move Range Start to Next Region Boundary" msgstr "PÅ™esunout zaÄátek rozsahu na další hranici oblasti" -#: editor.cc:1900 editor_actions.cc:346 +#: editor.cc:1876 editor_actions.cc:346 msgid "Move Range End to Previous Region Boundary" msgstr "PÅ™esunout konec rozsahu na pÅ™edchozí hranici oblasti" -#: editor.cc:1907 editor_actions.cc:353 +#: editor.cc:1883 editor_actions.cc:353 msgid "Move Range End to Next Region Boundary" msgstr "PÅ™esunout konec rozsahu na další hranici oblasti" -#: editor.cc:1913 +#: editor.cc:1889 msgid "Convert to Region In-Place" msgstr "PÅ™evést na oblast v místÄ›" -#: editor.cc:1914 +#: editor.cc:1890 msgid "Convert to Region in Region List" msgstr "PÅ™evést na oblast v seznamu oblastí" -#: editor.cc:1917 editor_markers.cc:926 +#: editor.cc:1893 editor_markers.cc:925 msgid "Select All in Range" msgstr "Vybrat vÅ¡e v rozsahu" -#: editor.cc:1920 +#: editor.cc:1896 msgid "Set Loop from Range" msgstr "Zřídit smyÄku z rozsahu" -#: editor.cc:1921 +#: editor.cc:1897 msgid "Set Punch from Range" msgstr "Zřídit oblast pÅ™epsání z rozsahu" -#: editor.cc:1924 +#: editor.cc:1900 msgid "Add Range Markers" msgstr "Vložit znaÄky rozsahu" -#: editor.cc:1927 +#: editor.cc:1903 msgid "Crop Region to Range" msgstr "Zkrátit oblast na rozsah" -#: editor.cc:1928 +#: editor.cc:1904 msgid "Fill Range with Region" msgstr "Vyplnit rozsah oblastí" -#: editor.cc:1929 editor_actions.cc:289 +#: editor.cc:1905 editor_actions.cc:289 msgid "Duplicate Range" msgstr "Zdvojit rozsah" -#: editor.cc:1932 +#: editor.cc:1908 msgid "Consolidate Range" msgstr "Sjednotit rozsah" -#: editor.cc:1933 +#: editor.cc:1909 msgid "Consolidate Range With Processing" msgstr "Sjednotit rozsah se zpracováním" -#: editor.cc:1934 +#: editor.cc:1910 msgid "Bounce Range to Region List" msgstr "Vrazit rozsah do seznamu oblastí" -#: editor.cc:1935 +#: editor.cc:1911 msgid "Bounce Range to Region List With Processing" msgstr "Vrazit rozsah do seznamu oblastí se zpracováním" -#: editor.cc:1936 editor_markers.cc:909 +#: editor.cc:1912 editor_markers.cc:908 msgid "Export Range..." msgstr "Vyvést rozsah..." -#: editor.cc:1951 editor.cc:2032 editor_actions.cc:281 +#: editor.cc:1927 editor.cc:2008 editor_actions.cc:281 msgid "Play From Edit Point" msgstr "PÅ™ehrávat od pracovního bodu" -#: editor.cc:1952 editor.cc:2033 +#: editor.cc:1928 editor.cc:2009 msgid "Play From Start" msgstr "PÅ™ehrávat od zaÄátku" -#: editor.cc:1953 +#: editor.cc:1929 msgid "Play Region" msgstr "PÅ™ehrávat oblast" -#: editor.cc:1955 +#: editor.cc:1931 msgid "Loop Region" msgstr "PÅ™ehrávat oblast ve smyÄce" -#: editor.cc:1965 editor.cc:2042 +#: editor.cc:1941 editor.cc:2018 msgid "Select All in Track" msgstr "Vybrat vÅ¡e ve stopÄ›" -#: editor.cc:1966 editor.cc:2043 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2215 +#: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Vybrat vÅ¡e" -#: editor.cc:1967 editor.cc:2044 +#: editor.cc:1943 editor.cc:2020 msgid "Invert Selection in Track" msgstr "Obrátit výbÄ›r ve stopÄ›" -#: editor.cc:1968 editor.cc:2045 editor_actions.cc:187 +#: editor.cc:1944 editor.cc:2021 editor_actions.cc:187 msgid "Invert Selection" msgstr "Obrátit výbÄ›r" -#: editor.cc:1970 +#: editor.cc:1946 msgid "Set Range to Loop Range" msgstr "Nastavit vybraný rozsah jako rozsah smyÄky" -#: editor.cc:1971 +#: editor.cc:1947 msgid "Set Range to Punch Range" msgstr "Nastavit vybraný rozsah jako rozsah pÅ™epsání" -#: editor.cc:1973 editor.cc:2047 editor_actions.cc:188 +#: editor.cc:1949 editor.cc:2023 editor_actions.cc:188 msgid "Select All After Edit Point" msgstr "Vybrat vÅ¡echny oblasti po pracovním bodÄ›" -#: editor.cc:1974 editor.cc:2048 editor_actions.cc:189 +#: editor.cc:1950 editor.cc:2024 editor_actions.cc:189 msgid "Select All Before Edit Point" msgstr "Vybrat vÅ¡echny oblasti pÅ™ed pracovním bodem" -#: editor.cc:1975 editor.cc:2049 +#: editor.cc:1951 editor.cc:2025 msgid "Select All After Playhead" msgstr "Vybrat vÅ¡echny oblasti po ukazateli polohy" -#: editor.cc:1976 editor.cc:2050 +#: editor.cc:1952 editor.cc:2026 msgid "Select All Before Playhead" msgstr "Vybrat vÅ¡echny oblasti pÅ™ed ukazatelem polohy" -#: editor.cc:1977 +#: editor.cc:1953 msgid "Select All Between Playhead and Edit Point" msgstr "Vybrat vÅ¡echny oblasti mezi ukazatelem polohy a pracovním bodem" -#: editor.cc:1978 +#: editor.cc:1954 msgid "Select All Within Playhead and Edit Point" msgstr "Vybrat vÅ¡echny oblasti v rámci ukazatele polohy a pracovním bodem" -#: editor.cc:1979 +#: editor.cc:1955 msgid "Select Range Between Playhead and Edit Point" msgstr "Vybrat rozsah mezi ukazatelem polohy a pracovním bodem" -#: editor.cc:1981 editor.cc:2052 editor_actions.cc:127 editor_actions.cc:128 +#: editor.cc:1957 editor.cc:2028 editor_actions.cc:127 editor_actions.cc:128 msgid "Select" msgstr "Vybrat" -#: editor.cc:1989 editor.cc:2060 editor_actions.cc:309 processor_box.cc:2200 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Vyjmout" -#: editor.cc:1990 editor.cc:2061 editor_actions.cc:312 processor_box.cc:2203 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "Kopírovat" -#: editor.cc:1991 editor.cc:2062 editor_actions.cc:313 processor_box.cc:2211 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Vložit" -#: editor.cc:1995 editor_actions.cc:87 +#: editor.cc:1971 editor_actions.cc:87 msgid "Align" msgstr "Zarovnat" -#: editor.cc:1996 +#: editor.cc:1972 msgid "Align Relative" msgstr "Zarovnat pomÄ›rnÄ›" -#: editor.cc:2003 +#: editor.cc:1979 msgid "Insert Selected Region" msgstr "Vložit vybranou oblast" -#: editor.cc:2004 +#: editor.cc:1980 msgid "Insert Existing Media" msgstr "Vložit stávající zvukové soubory" -#: editor.cc:2013 editor.cc:2069 +#: editor.cc:1989 editor.cc:2045 msgid "Nudge Entire Track Later" msgstr "PostrÄit celou stopu o krok pozdÄ›ji" -#: editor.cc:2014 editor.cc:2070 +#: editor.cc:1990 editor.cc:2046 msgid "Nudge Track After Edit Point Later" msgstr "PostrÄit stopu po pracovním bodu o krok pozdÄ›ji" -#: editor.cc:2015 editor.cc:2071 +#: editor.cc:1991 editor.cc:2047 msgid "Nudge Entire Track Earlier" msgstr "PostrÄit celou stopu o krok dříve" -#: editor.cc:2016 editor.cc:2072 +#: editor.cc:1992 editor.cc:2048 msgid "Nudge Track After Edit Point Earlier" msgstr "PostrÄit stopu po pracovním bodu o krok dříve" -#: editor.cc:2018 editor.cc:2074 +#: editor.cc:1994 editor.cc:2050 msgid "Nudge" msgstr "PostrÄit" -#: editor.cc:3094 +#: editor.cc:3070 msgid "Smart Mode (add Range functions to Object mode)" msgstr "Chytrý režim (pÅ™idat funkce rozsahu do pÅ™edmÄ›tového režimu)" -#: editor.cc:3095 +#: editor.cc:3071 msgid "Object Mode (select/move Objects)" msgstr "PÅ™edmÄ›tový režim (Vybrat/Posunout pÅ™edmÄ›ty)" -#: editor.cc:3096 +#: editor.cc:3072 msgid "Range Mode (select/move Ranges)" msgstr "Rozsahový režim (Vybrat/Posunout rozsahy)" -#: editor.cc:3097 +#: editor.cc:3073 msgid "Draw/Edit MIDI Notes" msgstr "Kreslit/Upravit noty MIDI" -#: editor.cc:3098 +#: editor.cc:3074 msgid "Draw Region Gain" msgstr "Nakreslit sílu hlasitosti v oblasti" -#: editor.cc:3099 +#: editor.cc:3075 msgid "Select Zoom Range" msgstr "Vybrat rozsah pro pÅ™iblížení a oddálení" -#: editor.cc:3100 +#: editor.cc:3076 msgid "Stretch/Shrink Regions and MIDI Notes" msgstr "Protáhnout/ZmenÅ¡it oblasti a noty MIDI" -#: editor.cc:3101 +#: editor.cc:3077 msgid "Listen to Specific Regions" msgstr "Poslouchat vybrané oblasti" -#: editor.cc:3102 +#: editor.cc:3078 msgid "Note Level Editing" msgstr "Upravit na úrovni not" -#: editor.cc:3103 +#: editor.cc:3079 msgid "" "Groups: click to (de)activate\n" "Context-click for other operations" @@ -2990,51 +2997,51 @@ msgstr "" "Skupiny: klepnout pro zapnutí/vypnutí\n" "Klepnutí na související nabídku pro jiné operace" -#: editor.cc:3104 +#: editor.cc:3080 msgid "Nudge Region/Selection Later" msgstr "PostrÄit oblast/výbÄ›r o krok pozdÄ›ji" -#: editor.cc:3105 +#: editor.cc:3081 msgid "Nudge Region/Selection Earlier" msgstr "PostrÄit oblast/výbÄ›r o krok dříve" -#: editor.cc:3106 editor_actions.cc:242 +#: editor.cc:3082 editor_actions.cc:242 msgid "Zoom In" msgstr "PÅ™iblížit" -#: editor.cc:3107 editor_actions.cc:241 +#: editor.cc:3083 editor_actions.cc:241 msgid "Zoom Out" msgstr "Oddálit" -#: editor.cc:3108 editor_actions.cc:243 +#: editor.cc:3084 editor_actions.cc:243 msgid "Zoom to Session" msgstr "Pohled na celé sezení" -#: editor.cc:3109 +#: editor.cc:3085 msgid "Zoom focus" msgstr "Pohled na stÅ™ed" -#: editor.cc:3110 +#: editor.cc:3086 msgid "Expand Tracks" msgstr "Rozbalit stopy" -#: editor.cc:3111 +#: editor.cc:3087 msgid "Shrink Tracks" msgstr "ZmenÅ¡it stopy" -#: editor.cc:3112 +#: editor.cc:3088 msgid "Snap/Grid Units" msgstr "Jednotky zapadnutí/mřížky" -#: editor.cc:3113 +#: editor.cc:3089 msgid "Snap/Grid Mode" msgstr "Režim zapadnutí/mřížky" -#: editor.cc:3115 +#: editor.cc:3091 msgid "Edit Mode" msgstr "Režim úprav" -#: editor.cc:3116 +#: editor.cc:3092 msgid "" "Nudge Clock\n" "(controls distance used to nudge regions and selections)" @@ -3042,39 +3049,39 @@ msgstr "" "Hodiny postrÄení\n" "(řídí vzdálenost použitou k postrÄení oblastí a výbÄ›rů)" -#: editor.cc:3218 +#: editor.cc:3194 msgid "malformed URL passed to drag-n-drop code" msgstr "Neplatná adresa (URL) pÅ™edaná kódu \"táhni a pusÅ¥\"" -#: editor.cc:3280 editor_actions.cc:291 +#: editor.cc:3256 editor_actions.cc:291 msgid "Command|Undo" msgstr "Příkaz|ZpÄ›t" -#: editor.cc:3282 +#: editor.cc:3258 msgid "Command|Undo (%1)" msgstr "Příkaz|ZpÄ›t (%1)" -#: editor.cc:3289 editor_actions.cc:292 +#: editor.cc:3265 editor_actions.cc:292 msgid "Redo" msgstr "Znovu" -#: editor.cc:3291 +#: editor.cc:3267 msgid "Redo (%1)" msgstr "Znovu (%1)" -#: editor.cc:3310 editor.cc:3334 editor_actions.cc:106 editor_actions.cc:1794 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "Zdvojit" -#: editor.cc:3311 +#: editor.cc:3287 msgid "Number of duplications:" msgstr "PoÄet zdvojení:" -#: editor.cc:3890 +#: editor.cc:3864 msgid "Playlist Deletion" msgstr "Smazání seznamu skladeb" -#: editor.cc:3891 +#: editor.cc:3865 msgid "" "Playlist %1 is currently unused.\n" "If it is kept, its audio files will not be cleaned.\n" @@ -3085,36 +3092,36 @@ msgstr "" "používány.\n" "Jestliže se smaže, budou jím používané zvukové soubory smazány." -#: editor.cc:3901 +#: editor.cc:3875 msgid "Delete Playlist" msgstr "Smazat seznam skladeb" -#: editor.cc:3902 +#: editor.cc:3876 msgid "Keep Playlist" msgstr "Ponechat seznam skladeb" -#: editor.cc:3903 editor_audio_import.cc:579 editor_ops.cc:5860 -#: processor_box.cc:1953 processor_box.cc:1978 +#: editor.cc:3877 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 "ZruÅ¡it" -#: editor.cc:4047 +#: editor.cc:4021 msgid "new playlists" msgstr "Nový seznam skladeb" -#: editor.cc:4063 +#: editor.cc:4037 msgid "copy playlists" msgstr "Kopírovat seznam skladeb" -#: editor.cc:4078 +#: editor.cc:4052 msgid "clear playlists" msgstr "Vyprázdnit seznam skladeb" -#: editor.cc:4718 +#: editor.cc:4687 msgid "Please wait while %1 loads visual data." msgstr "PoÄkejte, prosím, zatímco %1 nahrává vizuální data." -#: editor.cc:5524 editor_markers.cc:941 panner_ui.cc:393 processor_box.cc:2231 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 msgid "Edit..." msgstr "Upravit..." @@ -3163,7 +3170,7 @@ msgstr "Vrstvení" msgid "Position" msgstr "Poloha" -#: editor_actions.cc:101 gain_meter.cc:123 gain_meter.cc:754 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "UstÅ™ihnout" @@ -3176,9 +3183,9 @@ msgstr "Zesílení signálu" msgid "Ranges" msgstr "Rozsahy" -#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:147 -#: session_option_editor.cc:149 session_option_editor.cc:158 -#: session_option_editor.cc:165 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 +#: session_option_editor.cc:147 session_option_editor.cc:156 +#: session_option_editor.cc:163 msgid "Fades" msgstr "Slábnutí" @@ -3206,7 +3213,7 @@ msgstr "Klesání ukazatele hladiny" msgid "Meter hold" msgstr "Držení ukazatele hladiny" -#: editor_actions.cc:113 session_option_editor.cc:236 +#: editor_actions.cc:113 session_option_editor.cc:234 msgid "MIDI Options" msgstr "Volby pro MIDI" @@ -3214,8 +3221,8 @@ msgstr "Volby pro MIDI" msgid "Misc Options" msgstr "Různé volby" -#: editor_actions.cc:115 rc_option_editor.cc:1454 route_group_dialog.cc:48 -#: session_option_editor.cc:220 session_option_editor.cc:227 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 +#: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "Sledování" @@ -3255,8 +3262,8 @@ msgstr "Vedlejší údaj o Äase" msgid "Separate" msgstr "RozdÄ›lit" -#: editor_actions.cc:132 mixer_strip.cc:1917 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "Sólo" @@ -3268,7 +3275,7 @@ msgstr "Podřízené snímky" msgid "Timecode fps" msgstr "ÄŒasový kód FPS" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Výška" @@ -3392,7 +3399,7 @@ msgstr "Ukazatele polohy na zaÄátek rozsahu výbÄ›ru" msgid "Playhead to Range End" msgstr "Ukazatele polohy na konec rozsahu výbÄ›ru" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2217 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "OdznaÄit vÅ¡e" @@ -3660,9 +3667,9 @@ msgstr "Vložit ticho" msgid "Toggle Active" msgstr "Spustit/Zastavit stopu" -#: editor_actions.cc:370 editor_actions.cc:1714 editor_markers.cc:877 -#: editor_markers.cc:942 editor_snapshots.cc:121 mixer_strip.cc:1489 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "Odstranit" @@ -3670,19 +3677,19 @@ msgstr "Odstranit" msgid "Fit Selected Tracks" msgstr "PÅ™izpůsobit na vybrané stopy" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "NejvÄ›tší" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "VÄ›tší" -#: editor_actions.cc:382 editor_rulers.cc:378 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "Velká" -#: editor_actions.cc:388 editor_rulers.cc:382 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "Malá" @@ -3778,8 +3785,8 @@ msgstr "Slepit" msgid "Slide" msgstr "Vsunout" -#: editor_actions.cc:478 editor_actions.cc:1735 editor_markers.cc:861 -#: editor_rulers.cc:389 location_ui.cc:56 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 +#: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "Zamknout" @@ -3947,179 +3954,180 @@ msgstr "Oblasti smyÄky/pÅ™epsání" msgid "Min:Sec" msgstr "Min:Sek" -#: editor_actions.cc:548 editor_actions.cc:551 +#: editor_actions.cc:547 editor_actions.cc:550 msgid "Video Monitor" msgstr "Sledování videa" -#: editor_actions.cc:550 rc_option_editor.cc:1837 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "Video" -#: editor_actions.cc:553 +#: editor_actions.cc:552 msgid "Always on Top" msgstr "Vždy nahoÅ™e" -#: editor_actions.cc:555 -msgid "Framenumber" +#: editor_actions.cc:554 +#, fuzzy +msgid "Frame number" msgstr "Číslo snímku" -#: editor_actions.cc:556 +#: editor_actions.cc:555 msgid "Timecode Background" msgstr "Pozadí Äasového kódu" -#: editor_actions.cc:557 +#: editor_actions.cc:556 msgid "Fullscreen" msgstr "Celá obrazovka" -#: editor_actions.cc:558 +#: editor_actions.cc:557 msgid "Letterbox" msgstr "Å irokoúhlý formát" -#: editor_actions.cc:559 +#: editor_actions.cc:558 msgid "Original Size" msgstr "Původní velikost" -#: editor_actions.cc:611 +#: editor_actions.cc:608 msgid "Sort" msgstr "Třídit" -#: editor_actions.cc:613 region_editor.cc:51 +#: editor_actions.cc:610 region_editor.cc:51 msgid "Audition" msgstr "Poslech" -#: editor_actions.cc:622 editor_routes.cc:470 mixer_ui.cc:1160 +#: editor_actions.cc:619 editor_routes.cc:470 mixer_ui.cc:1161 msgid "Show All" msgstr "Ukázat vÅ¡e" -#: editor_actions.cc:623 +#: editor_actions.cc:620 msgid "Show Automatic Regions" msgstr "Ukázat automatické oblasti" -#: editor_actions.cc:625 +#: editor_actions.cc:622 msgid "Ascending" msgstr "Vzestupný" -#: editor_actions.cc:627 +#: editor_actions.cc:624 msgid "Descending" msgstr "Sestupný" -#: editor_actions.cc:630 +#: editor_actions.cc:627 msgid "By Region Name" msgstr "Podle názvu oblasti" -#: editor_actions.cc:632 +#: editor_actions.cc:629 msgid "By Region Length" msgstr "Podle délky oblasti" -#: editor_actions.cc:634 +#: editor_actions.cc:631 msgid "By Region Position" msgstr "Podle polohy oblasti" -#: editor_actions.cc:636 +#: editor_actions.cc:633 msgid "By Region Timestamp" msgstr "Podle Äasové razítka oblasti" -#: editor_actions.cc:638 +#: editor_actions.cc:635 msgid "By Region Start in File" msgstr "Podle zaÄátku oblasti v souboru" -#: editor_actions.cc:640 +#: editor_actions.cc:637 msgid "By Region End in File" msgstr "Podle konce oblasti v souboru" -#: editor_actions.cc:642 +#: editor_actions.cc:639 msgid "By Source File Name" msgstr "Podle názvu zdrojového souboru" -#: editor_actions.cc:644 +#: editor_actions.cc:641 msgid "By Source File Length" msgstr "Podle délky zdrojového souboru" -#: editor_actions.cc:646 +#: editor_actions.cc:643 msgid "By Source File Creation Date" msgstr "Podle data vytvoÅ™ení zdrojového souboru" -#: editor_actions.cc:648 +#: editor_actions.cc:645 msgid "By Source Filesystem" msgstr "Podle souborového systému zdroje" -#: editor_actions.cc:651 +#: editor_actions.cc:648 msgid "Remove Unused" msgstr "Odstranit nepoužívané" -#: editor_actions.cc:655 editor_audio_import.cc:279 +#: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Zavést" -#: editor_actions.cc:658 +#: editor_actions.cc:655 msgid "Import to Region List..." msgstr "Zavést do seznamu oblastí..." -#: editor_actions.cc:661 session_import_dialog.cc:43 +#: editor_actions.cc:658 session_import_dialog.cc:43 msgid "Import From Session" msgstr "Zavést ze sezení" -#: editor_actions.cc:664 +#: editor_actions.cc:661 msgid "Show Summary" msgstr "Ukázat shrnutí" -#: editor_actions.cc:666 +#: editor_actions.cc:663 msgid "Show Group Tabs" msgstr "Ukázat karty se skupinami" -#: editor_actions.cc:668 +#: editor_actions.cc:665 msgid "Show Measures" msgstr "Ukázat mřížku s takty" -#: editor_actions.cc:672 +#: editor_actions.cc:669 msgid "Show Logo" msgstr "Ukázat logo" -#: editor_actions.cc:676 +#: editor_actions.cc:673 msgid "Toggle MIDI Input Active for Editor-Selected Tracks/Busses" msgstr "PÅ™epnout vstup MIDI pro v editoru vybrané stopy/sbÄ›rnice" -#: editor_actions.cc:699 +#: editor_actions.cc:696 msgid "Loaded editor bindings from %1" msgstr "Nahrané vazby editoru z %1" -#: editor_actions.cc:701 +#: editor_actions.cc:698 msgid "Could not find editor.bindings in search path %1" msgstr "V prohledávané cestÄ› %1 se editor.bindings nalézt nepodaÅ™ilo" -#: editor_actions.cc:1026 editor_actions.cc:1422 editor_actions.cc:1433 -#: editor_actions.cc:1486 editor_actions.cc:1497 editor_actions.cc:1544 -#: editor_actions.cc:1554 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "Chyba v programování: %1: %2" -#: editor_actions.cc:1720 +#: editor_actions.cc:1722 msgid "Raise" msgstr "Pozvednout" -#: editor_actions.cc:1723 +#: editor_actions.cc:1725 msgid "Raise to Top" msgstr "Pozvednout zcela nahoru" -#: editor_actions.cc:1726 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "Dát dolů" -#: editor_actions.cc:1729 +#: editor_actions.cc:1731 msgid "Lower to Bottom" msgstr "Dát zcela dolů" -#: editor_actions.cc:1732 +#: editor_actions.cc:1734 msgid "Move to Original Position" msgstr "Posunout na původní polohu" -#: editor_actions.cc:1738 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "Uzamknout k videu" -#: editor_actions.cc:1744 editor_markers.cc:868 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "PÅ™ilepit k taktům a dobám" @@ -4127,7 +4135,7 @@ msgstr "PÅ™ilepit k taktům a dobám" msgid "Remove Sync" msgstr "Odstranit bod zapadnutí" -#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Ztlumit" @@ -4179,7 +4187,7 @@ msgstr "Vícekrát zdvojit..." msgid "Fill Track" msgstr "Doplnit stopu" -#: editor_actions.cc:1809 editor_markers.cc:956 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "Zřídit oblast smyÄky" @@ -4400,32 +4408,32 @@ msgstr "" "Projekt již obsahuje zdrojový soubor nazvaný %1. Chcete zavést %2 jako nový " "soubor nebo jej pÅ™eskoÄit?" -#: editor_audio_import.cc:279 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "ZruÅ¡it zavedení" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Editor: soubor \"%1\" nelze otevřít (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "ZruÅ¡it celé zavedení" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "Toto nevložit" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "Vložit vÅ¡e bez ptaní" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 msgid "Sample rate" msgstr "Vzorkovací kmitoÄet" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4434,67 +4442,67 @@ msgstr "" "Vzorkovací kmitoÄet tohoto souboru se neshoduje se vzorkovacím kmitoÄtem " "sezení!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "PÅ™esto vložit" -#: editor_drag.cc:1008 +#: editor_drag.cc:1000 msgid "fixed time region drag" msgstr "Oblast souÄasnÄ› pÅ™esunout" -#: editor_drag.cc:1718 +#: editor_drag.cc:1700 msgid "Video Start:" msgstr "ZaÄátek videa:" -#: editor_drag.cc:1720 +#: editor_drag.cc:1702 msgid "Diff:" msgstr "Rozdíly:" -#: editor_drag.cc:1740 +#: editor_drag.cc:1722 msgid "Move Video" msgstr "Posunout video" -#: editor_drag.cc:2219 +#: editor_drag.cc:2200 msgid "copy meter mark" msgstr "Kopírovat znaÄku druhu taktu" -#: editor_drag.cc:2227 +#: editor_drag.cc:2208 msgid "move meter mark" msgstr "Pohnout znaÄkou druhu taktu" -#: editor_drag.cc:2339 +#: editor_drag.cc:2320 msgid "copy tempo mark" msgstr "Kopírovat znaÄku tempa" -#: editor_drag.cc:2347 +#: editor_drag.cc:2328 msgid "move tempo mark" msgstr "Posunout znaÄku tempa" -#: editor_drag.cc:2563 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "ZmÄ›nit délku postupného zesílení signálu" -#: editor_drag.cc:2681 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "ZmÄ›nit délku postupného slábnutí signálu" -#: editor_drag.cc:3036 +#: editor_drag.cc:3018 msgid "move marker" msgstr "Pohnout znaÄkou" -#: editor_drag.cc:3599 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "PÅ™i provádÄ›ní operace protáhnutí Äasu se vyskytla chyba" -#: editor_drag.cc:4029 +#: editor_drag.cc:4011 msgid "programming_error: %1" msgstr "Chyba v programování: %1" -#: editor_drag.cc:4099 editor_markers.cc:681 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "Nová znaÄka rozsahu" -#: editor_drag.cc:4780 +#: editor_drag.cc:4762 msgid "rubberband selection" msgstr "Pružný výbÄ›r oblasti" @@ -4562,8 +4570,8 @@ msgstr "Sólo|S" msgid "Sharing Solo?" msgstr "Sdílení sóla?" -#: editor_route_groups.cc:103 midi_time_axis.cc:1505 midi_time_axis.cc:1508 -#: midi_time_axis.cc:1511 mixer_strip.cc:1903 +#: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "Nahr" @@ -4600,17 +4608,17 @@ msgid "Activate this button to operate on all tracks when none are selected." msgstr "" "Zapnout toto tlaÄítko pro práci na vÅ¡ech stopách, když žádná není vybrána." -#: editor_route_groups.cc:442 mixer_ui.cc:1448 +#: editor_route_groups.cc:442 mixer_ui.cc:1449 msgid "unnamed" msgstr "Bez názvu" -#: editor_export_audio.cc:90 editor_markers.cc:696 editor_markers.cc:783 -#: editor_markers.cc:968 editor_markers.cc:986 editor_markers.cc:1004 -#: editor_markers.cc:1023 editor_markers.cc:1042 editor_markers.cc:1072 -#: editor_markers.cc:1103 editor_markers.cc:1133 editor_markers.cc:1161 -#: editor_markers.cc:1192 editor_markers.cc:1217 editor_markers.cc:1268 -#: editor_markers.cc:1312 editor_markers.cc:1338 editor_markers.cc:1515 -#: editor_mouse.cc:2542 +#: editor_export_audio.cc:90 editor_markers.cc:695 editor_markers.cc:782 +#: editor_markers.cc:967 editor_markers.cc:985 editor_markers.cc:1003 +#: editor_markers.cc:1022 editor_markers.cc:1041 editor_markers.cc:1071 +#: editor_markers.cc:1102 editor_markers.cc:1132 editor_markers.cc:1160 +#: editor_markers.cc:1191 editor_markers.cc:1216 editor_markers.cc:1267 +#: editor_markers.cc:1311 editor_markers.cc:1337 editor_markers.cc:1514 +#: editor_mouse.cc:2478 msgid "programming error: marker canvas item has no marker object pointer!" msgstr "" "Chyba v programování: položka plátna znaÄka nemá žádný ukazatel objektu " @@ -4628,113 +4636,113 @@ msgstr "PÅ™epsat existující soubor" msgid "Fit to Window" msgstr "Umístit do okna" -#: editor_markers.cc:130 +#: editor_markers.cc:129 msgid "start" msgstr "ZaÄátek" -#: editor_markers.cc:131 +#: editor_markers.cc:130 msgid "end" msgstr "Konec" -#: editor_markers.cc:647 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "PÅ™idat znaÄku" -#: editor_markers.cc:678 +#: editor_markers.cc:677 msgid "range" msgstr "Rozsah" -#: editor_markers.cc:714 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "Odstranit znaÄky" -#: editor_markers.cc:850 +#: editor_markers.cc:849 msgid "Locate to Here" msgstr "Ukazatele polohy postavit sem" -#: editor_markers.cc:851 +#: editor_markers.cc:850 msgid "Play from Here" msgstr "PÅ™ehrávat od tohoto bodu" -#: editor_markers.cc:852 +#: editor_markers.cc:851 msgid "Move Mark to Playhead" msgstr "Posunout znaÄku k ukazateli polohy" -#: editor_markers.cc:856 +#: editor_markers.cc:855 msgid "Create Range to Next Marker" msgstr "VytvoÅ™it rozsah až k další znaÄce" -#: editor_markers.cc:897 +#: editor_markers.cc:896 msgid "Locate to Marker" msgstr "Umístit ke znaÄce" -#: editor_markers.cc:898 +#: editor_markers.cc:897 msgid "Play from Marker" msgstr "PÅ™ehrávat od znaÄky" -#: editor_markers.cc:901 +#: editor_markers.cc:900 msgid "Set Marker from Playhead" msgstr "Nastavit znaÄku od ukazatele polohy" -#: editor_markers.cc:903 +#: editor_markers.cc:902 msgid "Set Range from Selection" msgstr "Nastavit rozsah z výbÄ›ru" -#: editor_markers.cc:906 +#: editor_markers.cc:905 msgid "Zoom to Range" msgstr "Najet na rozsah" -#: editor_markers.cc:913 +#: editor_markers.cc:912 msgid "Hide Range" msgstr "Skrýt rozsah" -#: editor_markers.cc:914 +#: editor_markers.cc:913 msgid "Rename Range..." msgstr "PÅ™ejmenovat rozsah..." -#: editor_markers.cc:918 +#: editor_markers.cc:917 msgid "Remove Range" msgstr "Odstranit rozsah" -#: editor_markers.cc:925 +#: editor_markers.cc:924 msgid "Separate Regions in Range" msgstr "RozdÄ›lit oblasti na hranicích rozsahů" -#: editor_markers.cc:928 +#: editor_markers.cc:927 msgid "Select Range" msgstr "Vybrat rozsah" -#: editor_markers.cc:957 +#: editor_markers.cc:956 msgid "Set Punch Range" msgstr "Nastavit rozsah pÅ™epsání" -#: editor_markers.cc:1352 editor_ops.cc:1699 +#: editor_markers.cc:1351 editor_ops.cc:1699 msgid "New Name:" msgstr "Nový název:" -#: editor_markers.cc:1355 +#: editor_markers.cc:1354 msgid "Rename Mark" msgstr "PÅ™ejmenovat znaÄku" -#: editor_markers.cc:1357 +#: editor_markers.cc:1356 msgid "Rename Range" msgstr "PÅ™ejmenovat rozsah" -#: editor_markers.cc:1364 editor_mouse.cc:2574 processor_box.cc:1731 -#: processor_box.cc:2213 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "PÅ™ejmenovat" -#: editor_markers.cc:1377 +#: editor_markers.cc:1376 msgid "rename marker" msgstr "PÅ™ejmenovat znaÄku" -#: editor_markers.cc:1400 +#: editor_markers.cc:1399 msgid "set loop range" msgstr "Nastavit rozsah smyÄky" -#: editor_markers.cc:1406 +#: editor_markers.cc:1405 msgid "set punch range" msgstr "Nastavit rozsah pÅ™epsání" @@ -4747,7 +4755,7 @@ msgstr "" msgid "Editor::event_frame() used on unhandled event type %1" msgstr "Editor::event_frame() se používá u neznámého druhu události %1" -#: editor_mouse.cc:2312 editor_mouse.cc:2337 editor_mouse.cc:2350 +#: editor_mouse.cc:2235 editor_mouse.cc:2260 editor_mouse.cc:2273 msgid "" "programming error: control point canvas item has no control point object " "pointer!" @@ -4755,15 +4763,15 @@ msgstr "" "Chyba v programování: položka plátna místo ovládání nemá žádný ukazatel " "objektu místa ovládání!" -#: editor_mouse.cc:2480 +#: editor_mouse.cc:2416 msgid "start point trim" msgstr "UstÅ™ihnout poÄáteÄní bod" -#: editor_mouse.cc:2505 +#: editor_mouse.cc:2441 msgid "End point trim" msgstr "UstÅ™ihnout koncový bod" -#: editor_mouse.cc:2572 +#: editor_mouse.cc:2508 msgid "Name for region:" msgstr "Název oblasti:" @@ -4859,71 +4867,71 @@ msgstr "Dát oblasti zcela dolů" msgid "Rename Region" msgstr "PÅ™ejmenovat oblast" -#: editor_ops.cc:2372 processor_box.cc:1729 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 msgid "New name:" msgstr "Nový název:" -#: editor_ops.cc:2683 +#: editor_ops.cc:2682 msgid "separate" msgstr "RozdÄ›lit" -#: editor_ops.cc:2796 +#: editor_ops.cc:2795 msgid "separate region under" msgstr "RozdÄ›lit oblast pod" -#: editor_ops.cc:2917 +#: editor_ops.cc:2916 msgid "trim to selection" msgstr "UstÅ™ihnout na výbÄ›ru" -#: editor_ops.cc:3053 +#: editor_ops.cc:3052 msgid "set sync point" msgstr "UrÄit bod zapadnutí" -#: editor_ops.cc:3077 +#: editor_ops.cc:3076 msgid "remove region sync" msgstr "Odstranit bod zapadnutí oblasti" -#: editor_ops.cc:3099 +#: editor_ops.cc:3098 msgid "move regions to original position" msgstr "Posunout oblasti na původní polohu" -#: editor_ops.cc:3101 +#: editor_ops.cc:3100 msgid "move region to original position" msgstr "Posunout oblast na původní polohu" -#: editor_ops.cc:3122 +#: editor_ops.cc:3121 msgid "align selection" msgstr "Zarovnat výbÄ›r" -#: editor_ops.cc:3196 +#: editor_ops.cc:3195 msgid "align selection (relative)" msgstr "Zarovnat výbÄ›r pomÄ›rnÄ›" -#: editor_ops.cc:3230 +#: editor_ops.cc:3229 msgid "align region" msgstr "Zarovnat oblast" -#: editor_ops.cc:3281 +#: editor_ops.cc:3280 msgid "trim front" msgstr "UstÅ™ihnout vpÅ™edu" -#: editor_ops.cc:3281 +#: editor_ops.cc:3280 msgid "trim back" msgstr "UstÅ™ihnout vzadu" -#: editor_ops.cc:3311 +#: editor_ops.cc:3310 msgid "trim to loop" msgstr "Zkrátit na oblast smyÄky" -#: editor_ops.cc:3321 +#: editor_ops.cc:3320 msgid "trim to punch" msgstr "Zkrátit na oblast pÅ™epsání" -#: editor_ops.cc:3383 +#: editor_ops.cc:3382 msgid "trim to region" msgstr "Zkrátit na oblast" -#: editor_ops.cc:3493 +#: editor_ops.cc:3492 msgid "" "This track/bus cannot be frozen because the signal adds or loses channels " "before reaching the outputs.\n" @@ -4935,11 +4943,11 @@ msgstr "" "Obvykle je to způsobeno přídavnými moduly, jež vytvářejí stereo výstup z " "monofonního vstupu nebo naopak." -#: editor_ops.cc:3496 +#: editor_ops.cc:3495 msgid "Cannot freeze" msgstr "Nelze zmrazit" -#: editor_ops.cc:3502 +#: editor_ops.cc:3501 msgid "" "%1\n" "\n" @@ -4954,23 +4962,23 @@ msgstr "" "\n" "Zmrazení jen zpracuje signál až k prvnímu poslání/vložení/vrácení." -#: editor_ops.cc:3506 +#: editor_ops.cc:3505 msgid "Freeze anyway" msgstr "PÅ™esto zmrazit" -#: editor_ops.cc:3507 +#: editor_ops.cc:3506 msgid "Don't freeze" msgstr "Nemrazit" -#: editor_ops.cc:3508 +#: editor_ops.cc:3507 msgid "Freeze Limits" msgstr "Omezení zmražení" -#: editor_ops.cc:3523 +#: editor_ops.cc:3522 msgid "Cancel Freeze" msgstr "ZruÅ¡it zmrazení" -#: editor_ops.cc:3554 +#: editor_ops.cc:3553 msgid "" "You can't perform this operation because the processing of the signal will " "cause one or more of the tracks to end up with a region with more channels " @@ -4983,51 +4991,51 @@ msgstr "" "\n" "Můžete to udÄ›lat bez zpracování, což je odliÅ¡ná operace." -#: editor_ops.cc:3558 +#: editor_ops.cc:3557 msgid "Cannot bounce" msgstr "Nelze vyhodit" -#: editor_ops.cc:3569 +#: editor_ops.cc:3568 msgid "bounce range" msgstr "Vrazit rozsah" -#: editor_ops.cc:3679 +#: editor_ops.cc:3678 msgid "delete" msgstr "Smazat" -#: editor_ops.cc:3682 +#: editor_ops.cc:3681 msgid "cut" msgstr "Vyjmout" -#: editor_ops.cc:3685 +#: editor_ops.cc:3684 msgid "copy" msgstr "Kopírovat" -#: editor_ops.cc:3688 +#: editor_ops.cc:3687 msgid "clear" msgstr "Vyprázdnit" -#: editor_ops.cc:3786 +#: editor_ops.cc:3785 msgid " objects" msgstr "PÅ™edmÄ›ty" -#: editor_ops.cc:3816 +#: editor_ops.cc:3815 msgid " range" msgstr "Rozsah" -#: editor_ops.cc:3958 editor_ops.cc:3985 +#: editor_ops.cc:3957 editor_ops.cc:3984 msgid "remove region" msgstr "Odstranit oblast" -#: editor_ops.cc:4392 +#: editor_ops.cc:4391 msgid "duplicate selection" msgstr "Zdvojit výbÄ›r" -#: editor_ops.cc:4470 +#: editor_ops.cc:4469 msgid "nudge track" msgstr "PostrÄit stopu" -#: editor_ops.cc:4507 +#: editor_ops.cc:4506 msgid "" "Do you really want to destroy the last capture?\n" "(This is destructive and cannot be undone)" @@ -5035,132 +5043,132 @@ msgstr "" "Opravdu chcete zruÅ¡it poslední nahrávku?\n" "(Toto nelze vrátit zpÄ›t!)" -#: editor_ops.cc:4510 editor_ops.cc:6516 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "Ne, nedÄ›lat nic." -#: editor_ops.cc:4511 +#: editor_ops.cc:4510 msgid "Yes, destroy it." msgstr "Ano, odstranit." -#: editor_ops.cc:4513 +#: editor_ops.cc:4512 msgid "Destroy last capture" msgstr "ZniÄit poslední nahrávku" -#: editor_ops.cc:4574 +#: editor_ops.cc:4573 msgid "normalize" msgstr "Normalizovat" -#: editor_ops.cc:4669 +#: editor_ops.cc:4668 msgid "reverse regions" msgstr "Obrátit oblasti" -#: editor_ops.cc:4703 +#: editor_ops.cc:4702 msgid "strip silence" msgstr "Obnažit ticho" -#: editor_ops.cc:4764 +#: editor_ops.cc:4763 msgid "Fork Region(s)" msgstr "Rozdvojit oblast(i)" -#: editor_ops.cc:4964 +#: editor_ops.cc:4963 msgid "reset region gain" msgstr "Nastavit sílu hlasitosti v oblasti znovu" -#: editor_ops.cc:5017 +#: editor_ops.cc:5016 msgid "region gain envelope active" msgstr "KÅ™ivka síly zvuku v oblasti Äinná" -#: editor_ops.cc:5044 +#: editor_ops.cc:5043 msgid "toggle region lock" msgstr "PÅ™epnout zámek oblasti" -#: editor_ops.cc:5069 +#: editor_ops.cc:5067 msgid "Toggle Video Lock" msgstr "PÅ™epnout zámek videa" -#: editor_ops.cc:5095 +#: editor_ops.cc:5091 msgid "region lock style" msgstr "Styl zámku oblasti" -#: editor_ops.cc:5120 +#: editor_ops.cc:5116 msgid "change region opacity" msgstr "ZmÄ›nit neprůhlednost oblasti" -#: editor_ops.cc:5235 +#: editor_ops.cc:5231 msgid "set fade in length" msgstr "ZmÄ›nit délku postupného zesílení signálu" -#: editor_ops.cc:5242 +#: editor_ops.cc:5238 msgid "set fade out length" msgstr "ZmÄ›nit délku postupného zeslabení signálu" -#: editor_ops.cc:5287 +#: editor_ops.cc:5283 msgid "set fade in shape" msgstr "Upravit tvar kÅ™ivky postupného zesílení signálu" -#: editor_ops.cc:5318 +#: editor_ops.cc:5314 msgid "set fade out shape" msgstr "Upravit tvar kÅ™ivky postupného zeslabení signálu" -#: editor_ops.cc:5348 +#: editor_ops.cc:5344 msgid "set fade in active" msgstr "Spustit postupné zesílení signálu" -#: editor_ops.cc:5377 +#: editor_ops.cc:5373 msgid "set fade out active" msgstr "Spustit postupné zeslabení signálu" -#: editor_ops.cc:5642 +#: editor_ops.cc:5638 msgid "set loop range from selection" msgstr "Nastavit rozsah smyÄky z výbÄ›ru" -#: editor_ops.cc:5664 +#: editor_ops.cc:5660 msgid "set loop range from edit range" msgstr "Nastavit rozsah smyÄky z oblasti úprav" -#: editor_ops.cc:5693 +#: editor_ops.cc:5689 msgid "set loop range from region" msgstr "Nastavit rozsah smyÄky z oblasti" -#: editor_ops.cc:5711 +#: editor_ops.cc:5707 msgid "set punch range from selection" msgstr "Nastavit rozsah pÅ™epsání z výbÄ›ru" -#: editor_ops.cc:5728 +#: editor_ops.cc:5724 msgid "set punch range from edit range" msgstr "Nastavit rozsah pÅ™epsání z oblasti úprav" -#: editor_ops.cc:5752 +#: editor_ops.cc:5748 msgid "set punch range from region" msgstr "Nastavit rozsah pÅ™epsání z oblasti" -#: editor_ops.cc:5861 +#: editor_ops.cc:5857 msgid "Add new marker" msgstr "PÅ™idat novou znaÄku" -#: editor_ops.cc:5862 +#: editor_ops.cc:5858 msgid "Set global tempo" msgstr "Nastavit celkové tempo" -#: editor_ops.cc:5865 +#: editor_ops.cc:5861 msgid "Define one bar" msgstr "Vymezit jeden takt" -#: editor_ops.cc:5866 +#: editor_ops.cc:5862 msgid "Do you want to set the global tempo or add a new tempo marker?" msgstr "Chcete stanovit celkové tempo, nebo pÅ™idat novou znaÄku tempa?" -#: editor_ops.cc:5892 +#: editor_ops.cc:5888 msgid "set tempo from region" msgstr "Nastavit tempo podle oblasti" -#: editor_ops.cc:5922 +#: editor_ops.cc:5918 msgid "split regions" msgstr "RozdÄ›lit oblasti" -#: editor_ops.cc:5964 +#: editor_ops.cc:5960 msgid "" "You are about to split\n" "%1\n" @@ -5172,11 +5180,11 @@ msgstr "" "do %2 kusů.\n" "Toto by mohlo trvat velmi dlouho." -#: editor_ops.cc:5971 +#: editor_ops.cc:5967 msgid "Call for the Ferret!" msgstr "Volání po slídilovi!" -#: editor_ops.cc:5972 +#: editor_ops.cc:5968 msgid "" "Press OK to continue with this split operation\n" "or ask the Ferret dialog to tune the analysis" @@ -5184,52 +5192,52 @@ msgstr "" "StisknÄ›te OK kvůli pokraÄování v této operaci rozdÄ›lení\n" "nebo se pokuste v oknÄ› slídilovÄ› vyladit rozbor." -#: editor_ops.cc:5974 +#: editor_ops.cc:5970 msgid "Press OK to continue with this split operation" msgstr "StisknÄ›te OK kvůli pokraÄování v této operaci rozdÄ›lení" -#: editor_ops.cc:5977 +#: editor_ops.cc:5973 msgid "Excessive split?" msgstr "NadmÄ›rné rozdÄ›lení?" -#: editor_ops.cc:6129 +#: editor_ops.cc:6125 msgid "place transient" msgstr "Umístit pÅ™echod" -#: editor_ops.cc:6164 +#: editor_ops.cc:6160 msgid "snap regions to grid" msgstr "Zapadnout oblasti do mřížky" -#: editor_ops.cc:6203 +#: editor_ops.cc:6199 msgid "Close Region Gaps" msgstr "Zavřít mezery oblastí" -#: editor_ops.cc:6208 +#: editor_ops.cc:6204 msgid "Crossfade length" msgstr "Délka prolínání" -#: editor_ops.cc:6217 editor_ops.cc:6228 rhythm_ferret.cc:120 -#: session_option_editor.cc:155 +#: editor_ops.cc:6213 editor_ops.cc:6224 rhythm_ferret.cc:120 +#: session_option_editor.cc:153 msgid "ms" msgstr "ms" -#: editor_ops.cc:6219 +#: editor_ops.cc:6215 msgid "Pull-back length" msgstr "Délka ustoupení" -#: editor_ops.cc:6232 +#: editor_ops.cc:6228 msgid "Ok" msgstr "OK" -#: editor_ops.cc:6247 +#: editor_ops.cc:6243 msgid "close region gaps" msgstr "Zavřít mezery oblastí" -#: editor_ops.cc:6465 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "To by byly nepříjemné zprávy..." -#: editor_ops.cc:6470 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5245,23 +5253,23 @@ msgstr "" "upravte svůj soubor ardour.rc, kde nastavte volbu\n" "\"allow-special-bus-removal\" na \"yes\"" -#: editor_ops.cc:6487 +#: editor_ops.cc:6483 msgid "tracks" msgstr "Stopy" -#: editor_ops.cc:6489 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 msgid "track" msgstr "Stopa" -#: editor_ops.cc:6493 +#: editor_ops.cc:6489 msgid "busses" msgstr "SbÄ›rnice" -#: editor_ops.cc:6495 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "SbÄ›rnice" -#: editor_ops.cc:6500 +#: editor_ops.cc:6496 msgid "" "Do you really want to remove %1 %2 and %3 %4?\n" "(You may also lose the playlists associated with the %2)\n" @@ -5273,7 +5281,7 @@ msgstr "" "\n" "Tento krok nelze vrátit zpÄ›t, a soubor se sezením bude pÅ™epsán!" -#: editor_ops.cc:6505 +#: editor_ops.cc:6501 msgid "" "Do you really want to remove %1 %2?\n" "(You may also lose the playlists associated with the %2)\n" @@ -5285,7 +5293,7 @@ msgstr "" "\n" "Tento krok nelze vrátit zpÄ›t, a soubor se sezením bude pÅ™epsán!" -#: editor_ops.cc:6511 +#: editor_ops.cc:6507 msgid "" "Do you really want to remove %1 %2?\n" "\n" @@ -5295,45 +5303,45 @@ msgstr "" "\n" "Tento krok nelze vrátit zpÄ›t, a soubor se sezením bude pÅ™epsán" -#: editor_ops.cc:6518 +#: editor_ops.cc:6514 msgid "Yes, remove them." msgstr "Ano, odstranit." -#: editor_ops.cc:6520 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Ano, odstranit." -#: editor_ops.cc:6525 editor_ops.cc:6527 +#: editor_ops.cc:6521 editor_ops.cc:6523 msgid "Remove %1" msgstr "Odstranit %1" -#: editor_ops.cc:6586 +#: editor_ops.cc:6582 msgid "insert time" msgstr "Vložit ticho" -#: editor_ops.cc:6743 +#: editor_ops.cc:6739 msgid "There are too many tracks to fit in the current window" msgstr "" "Bylo vybráno příliÅ¡ mnoho stop, než aby se vÅ¡echny veÅ¡ly do nynÄ›jšího okna" -#: editor_ops.cc:6843 +#: editor_ops.cc:6839 #, c-format msgid "Saved view %u" msgstr "Uložen pohled %u" -#: editor_ops.cc:6868 +#: editor_ops.cc:6864 msgid "mute regions" msgstr "ZtiÅ¡it oblasti" -#: editor_ops.cc:6870 +#: editor_ops.cc:6866 msgid "mute region" msgstr "ZtiÅ¡it oblast" -#: editor_ops.cc:6907 +#: editor_ops.cc:6903 msgid "combine regions" msgstr "Spojit oblasti" -#: editor_ops.cc:6945 +#: editor_ops.cc:6941 msgid "uncombine regions" msgstr "ZruÅ¡it spojení oblastí" @@ -5373,7 +5381,7 @@ msgstr "" "Délka postupné zeslabení signálu oblasti (jednotky: vedlejší hodiny), (), " "pokud je zakázáno" -#: editor_regions.cc:118 mixer_strip.cc:1961 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "Zam" @@ -5390,8 +5398,9 @@ msgstr "PÅ™" msgid "Region position glued to Bars|Beats time?" msgstr "Poloha oblasti pÅ™ilepena k taktům|dobám?" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:722 -#: mixer_strip.cc:1935 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "Z" @@ -5460,7 +5469,8 @@ msgstr "Název stopy/sbÄ›rnice" msgid "Track/Bus visible ?" msgstr "Stopa/SbÄ›rnice viditelná?" -#: editor_routes.cc:204 mixer_strip.cc:1952 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "ÄŒ" @@ -5468,7 +5478,7 @@ msgstr "ÄŒ" msgid "Track/Bus active ?" msgstr "Stopa/SbÄ›rnice Äinná?" -#: editor_routes.cc:205 mixer_strip.cc:1936 +#: editor_routes.cc:205 mixer_strip.cc:1932 msgid "I" msgstr "Vst" @@ -5476,7 +5486,7 @@ msgstr "Vst" msgid "MIDI input enabled" msgstr "Vstup MIDI povolen" -#: editor_routes.cc:206 mixer_strip.cc:1934 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "N" @@ -5489,7 +5499,7 @@ msgstr "Nahrávání povoleno" msgid "Muted" msgstr "Ztlumeno" -#: editor_routes.cc:208 mixer_strip.cc:1948 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "S" @@ -5501,7 +5511,7 @@ msgstr "Sólo" msgid "SI" msgstr "SamS" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1883 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 msgid "Solo Isolated" msgstr "Samostatné sólo" @@ -5509,23 +5519,23 @@ msgstr "Samostatné sólo" msgid "Solo Safe (Locked)" msgstr "ZajiÅ¡tÄ›né sólo (zamknuto)" -#: editor_routes.cc:471 mixer_ui.cc:1161 +#: editor_routes.cc:471 mixer_ui.cc:1162 msgid "Hide All" msgstr "Skrýt vÅ¡e" -#: editor_routes.cc:472 mixer_ui.cc:1162 +#: editor_routes.cc:472 mixer_ui.cc:1163 msgid "Show All Audio Tracks" msgstr "Ukázat vÅ¡echny zvukové stopy" -#: editor_routes.cc:473 mixer_ui.cc:1163 +#: editor_routes.cc:473 mixer_ui.cc:1164 msgid "Hide All Audio Tracks" msgstr "Skrýt vÅ¡echny zvukové stopy" -#: editor_routes.cc:474 mixer_ui.cc:1164 +#: editor_routes.cc:474 mixer_ui.cc:1165 msgid "Show All Audio Busses" msgstr "Ukázat vÅ¡echny zvukové sbÄ›rnice" -#: editor_routes.cc:475 mixer_ui.cc:1165 +#: editor_routes.cc:475 mixer_ui.cc:1166 msgid "Hide All Audio Busses" msgstr "Skrýt vÅ¡echny zvukové sbÄ›rnice" @@ -5541,47 +5551,47 @@ msgstr "Skrýt vÅ¡echny MIDI stopy" msgid "Show Tracks With Regions Under Playhead" msgstr "Ukázat stopy s oblastmi pod ukazatelem polohy pÅ™ehrávání" -#: editor_rulers.cc:342 +#: editor_rulers.cc:340 msgid "New location marker" msgstr "Nová znaÄka polohy" -#: editor_rulers.cc:343 +#: editor_rulers.cc:341 msgid "Clear all locations" msgstr "Odstranit vÅ¡echny znaÄky polohy" -#: editor_rulers.cc:344 +#: editor_rulers.cc:342 msgid "Unhide locations" msgstr "Odkrýt znaÄky poloh" -#: editor_rulers.cc:348 +#: editor_rulers.cc:346 msgid "New range" msgstr "Nový rozsah" -#: editor_rulers.cc:349 +#: editor_rulers.cc:347 msgid "Clear all ranges" msgstr "Odstranit vÅ¡echny rozsahy" -#: editor_rulers.cc:350 +#: editor_rulers.cc:348 msgid "Unhide ranges" msgstr "Odkrýt rozsahy" -#: editor_rulers.cc:360 +#: editor_rulers.cc:358 msgid "New CD track marker" msgstr "Nová znaÄka stopy na CD" -#: editor_rulers.cc:365 tempo_dialog.cc:40 +#: editor_rulers.cc:363 tempo_dialog.cc:40 msgid "New Tempo" msgstr "Vložit zmÄ›nu rychlosti/tempa..." -#: editor_rulers.cc:370 tempo_dialog.cc:255 +#: editor_rulers.cc:368 tempo_dialog.cc:255 msgid "New Meter" msgstr "Nový druh taktu" -#: editor_rulers.cc:376 +#: editor_rulers.cc:373 msgid "Timeline height" msgstr "Výška Äasové osy" -#: editor_rulers.cc:386 +#: editor_rulers.cc:383 msgid "Align Video Track" msgstr "Zarovnat videostopu" @@ -5589,51 +5599,51 @@ msgstr "Zarovnat videostopu" msgid "set selected regions" msgstr "Nastavit vybrané oblasti" -#: editor_selection.cc:1419 +#: editor_selection.cc:1414 msgid "select all" msgstr "Vybrat vÅ¡echny oblasti" -#: editor_selection.cc:1511 +#: editor_selection.cc:1506 msgid "select all within" msgstr "Vybrat vÅ¡e v oblasti" -#: editor_selection.cc:1569 +#: editor_selection.cc:1564 msgid "set selection from range" msgstr "Nastavit oblast výbÄ›ru z rozsahu" -#: editor_selection.cc:1609 +#: editor_selection.cc:1604 msgid "select all from range" msgstr "Vybrat vÅ¡e v rozsahu" -#: editor_selection.cc:1640 +#: editor_selection.cc:1635 msgid "select all from punch" msgstr "Vybrat vÅ¡e v oblasti pÅ™epsání" -#: editor_selection.cc:1671 +#: editor_selection.cc:1666 msgid "select all from loop" msgstr "Vybrat vÅ¡e v oblasti smyÄky" -#: editor_selection.cc:1707 +#: editor_selection.cc:1702 msgid "select all after cursor" msgstr "Vybrat vÅ¡e od ukazatele polohy" -#: editor_selection.cc:1709 +#: editor_selection.cc:1704 msgid "select all before cursor" msgstr "Vybrat vÅ¡e pÅ™ed ukazatelem polohy" -#: editor_selection.cc:1758 +#: editor_selection.cc:1753 msgid "select all after edit" msgstr "Vybrat vÅ¡e od pracovního bodu" -#: editor_selection.cc:1760 +#: editor_selection.cc:1755 msgid "select all before edit" msgstr "Vybrat vÅ¡e pÅ™ed pracovním bodem" -#: editor_selection.cc:1893 +#: editor_selection.cc:1888 msgid "No edit range defined" msgstr "Nestanoven rozsah úprav" -#: editor_selection.cc:1899 +#: editor_selection.cc:1894 msgid "" "the edit point is Selected Marker\n" "but there is no selected marker." @@ -5661,47 +5671,47 @@ msgstr "" msgid "Remove snapshot" msgstr "Odstranit snímek obrazovky" -#: editor_tempodisplay.cc:208 editor_tempodisplay.cc:251 +#: editor_tempodisplay.cc:208 editor_tempodisplay.cc:250 msgid "add" msgstr "PÅ™idat" -#: editor_tempodisplay.cc:232 +#: editor_tempodisplay.cc:231 msgid "add tempo mark" msgstr "PÅ™idat znaÄku zmÄ›ny tempa" -#: editor_tempodisplay.cc:275 +#: editor_tempodisplay.cc:272 msgid "add meter mark" msgstr "PÅ™idat znaÄku zmÄ›ny taktu" -#: editor_tempodisplay.cc:291 editor_tempodisplay.cc:374 -#: editor_tempodisplay.cc:393 +#: editor_tempodisplay.cc:288 editor_tempodisplay.cc:367 +#: editor_tempodisplay.cc:386 msgid "" "programming error: tempo marker canvas item has no marker object pointer!" msgstr "" "Chyba v programování: položka plátna znaÄka tempa nemá žádný ukazatel " "objektu znaÄky!" -#: editor_tempodisplay.cc:296 editor_tempodisplay.cc:379 +#: editor_tempodisplay.cc:293 editor_tempodisplay.cc:372 msgid "programming error: marker for tempo is not a tempo marker!" msgstr "Chyba v programování: znaÄka pro tempo není znaÄkou tempa!" -#: editor_tempodisplay.cc:308 editor_tempodisplay.cc:340 +#: editor_tempodisplay.cc:305 editor_tempodisplay.cc:335 msgid "done" msgstr "Hotovo" -#: editor_tempodisplay.cc:329 editor_tempodisplay.cc:359 +#: editor_tempodisplay.cc:324 editor_tempodisplay.cc:352 msgid "replace tempo mark" msgstr "Nahradit znaÄku zmÄ›ny tempa" -#: editor_tempodisplay.cc:398 editor_tempodisplay.cc:430 +#: editor_tempodisplay.cc:391 editor_tempodisplay.cc:423 msgid "programming error: marker for meter is not a meter marker!" msgstr "Chyba v programování: znaÄka druhu taktu není znaÄkou druhu taktu!" -#: editor_tempodisplay.cc:408 editor_tempodisplay.cc:442 +#: editor_tempodisplay.cc:401 editor_tempodisplay.cc:435 msgid "remove tempo mark" msgstr "Odstranit znaÄku zmÄ›ny tempa" -#: editor_tempodisplay.cc:425 +#: editor_tempodisplay.cc:418 msgid "" "programming error: meter marker canvas item has no marker object pointer!" msgstr "" @@ -5787,141 +5797,145 @@ msgid "192000Hz" msgstr "192000 Hz" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: engine_dialog.cc:562 midi_channel_selector.cc:163 #: midi_channel_selector.cc:402 midi_channel_selector.cc:438 -#: rc_option_editor.cc:1252 sfdb_ui.cc:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Žádný" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "Trojúhelníkový" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "Obdélníkový" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "Tvarovaný" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "PÅ™ehrávání/Nahrávání s jedním zařízením" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "PÅ™ehrávání/Nahrávání se dvÄ›ma zařízeními" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "Pouze pÅ™ehrávání" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "Pouze nahrávání" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "sekv" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "nezpracovaný" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "OvladaÄ:" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 msgid "Audio Interface:" msgstr "Rozhraní pro zvuk:" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "Vzorkovací kmitoÄet:" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "Velikost vyrovnávací pamÄ›ti:" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "PoÄet vyrovnávacích pamÄ›tí:" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "PÅ™ibližná prodleva:" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 msgid "Audio mode:" msgstr "Režim zvuku:" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "Nevšímat si" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "PÅ™eruÅ¡ení klienta" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "PoÄet přípojek:" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "OvladaÄ MIDI:" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "Vložení Å¡umu do signálu:" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "" "V tomto systému nebyl nalezen žádný server JACK. Nainstalujte, prosím, JACK " "a spusÅ¥te Ardour znovu" -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "Server:" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "Vstupní zařízení:" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "Výstupní zařízení:" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "Vstupní prodleva technického vybavení poÄítaÄe:" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "Vzorky" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "Výstupní prodleva technického vybavení poÄítaÄe:" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "Zařízení" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "PokroÄilé" -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "Nelze otevřít JACK soubor rc %1 pro uložení pomocných promÄ›nných" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -5951,32 +5965,32 @@ msgstr "" "nebo nahrávat, ale nikoli souÄasnÄ› obojí, spusÅ¥te JACK pÅ™ed spuÅ¡tÄ›ním\n" "%1 a potom vyberte přísluÅ¡né zařízení." -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "Žádné vhodné zvukové zařízení" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "Vypadá to, že JACK chybí v balíku %1" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "Nejprve musíte vybrat zvukové zařízení." -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "Zdá se, že zařízení %1 v tomto poÄítaÄi neexistuje." -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "Chybí data pro hodnotu nastavení zvuku %1" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" "Soubory s nastavením obsahují cestu k JACK serveru, která neexistuje (%1)" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "Kanály:" @@ -5984,27 +5998,27 @@ msgstr "Kanály:" msgid "Split to mono files" msgstr "RozdÄ›lit na monofonní soubory" -#: export_channel_selector.cc:180 +#: export_channel_selector.cc:182 msgid "Bus or Track" msgstr "SbÄ›rnice nebo stopa" -#: export_channel_selector.cc:457 +#: export_channel_selector.cc:459 msgid "Region contents without fades nor region gain (channels: %1)" msgstr "Obsah oblasti bez slábnutí ani síla hlasitost oblasti (kanály: %1)" -#: export_channel_selector.cc:461 +#: export_channel_selector.cc:463 msgid "Region contents with fades and region gain (channels: %1)" msgstr "Obsah oblasti se slábnutím a síla hlasitost oblasti (kanály: %1)" -#: export_channel_selector.cc:465 +#: export_channel_selector.cc:467 msgid "Track output (channels: %1)" msgstr "Výstup stopy (kanály: %1)" -#: export_channel_selector.cc:534 +#: export_channel_selector.cc:536 msgid "Export region contents" msgstr "Vyvést obsah oblasti" -#: export_channel_selector.cc:535 +#: export_channel_selector.cc:537 msgid "Export track output" msgstr "Vyvést výstup stopy" @@ -6019,8 +6033,8 @@ msgstr "" msgid "List files" msgstr "Vypsat soubory" -#: export_dialog.cc:164 export_timespan_selector.cc:357 -#: export_timespan_selector.cc:421 +#: export_dialog.cc:164 export_timespan_selector.cc:355 +#: export_timespan_selector.cc:417 msgid "Time Span" msgstr "ÄŒasové rozpÄ›tí" @@ -6129,6 +6143,9 @@ msgid "Folder:" msgstr "Složka:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Procházet" @@ -6256,6 +6273,11 @@ msgstr "Volby pro FLAC" msgid "Broadcast Wave options" msgstr "Volby pro Broadcast Wave" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "Opravdu chcete zastavit videoserver?" + #: export_preset_selector.cc:28 msgid "Preset" msgstr "PÅ™ednastavení" @@ -6268,48 +6290,67 @@ msgstr "" "Vybrané pÅ™ednastavení nebylo nahráno úspěšnÄ›!\n" "Možná zmiňuje formát, který byl odstranÄ›n?" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "Opravdu chcete zastavit videoserver?" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "Ukázat Äasy jako:" -#: export_timespan_selector.cc:206 +#: export_timespan_selector.cc:204 msgid " to " msgstr " do " -#: export_timespan_selector.cc:350 export_timespan_selector.cc:411 +#: export_timespan_selector.cc:348 export_timespan_selector.cc:407 msgid "Range" msgstr "Rozsah" -#: gain_meter.cc:108 gain_meter.cc:430 gain_meter.cc:819 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "Chyba v programování: %1 (%2)" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +#, fuzzy +msgid "%1" +msgstr "%" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "-inf" -#: gain_meter.cc:114 gain_meter.cc:868 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "Režim automatizace prolínaÄe" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "Druh automatizace prolínaÄe" -#: gain_meter.cc:124 gain_meter.cc:758 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "Abs" -#: gain_meter.cc:333 -msgid "-Inf" -msgstr "-Inf" - -#: gain_meter.cc:725 mixer_strip.cc:1955 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "P" -#: gain_meter.cc:728 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "D" -#: gain_meter.cc:731 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "Z" @@ -6321,85 +6362,93 @@ msgstr "PÅ™edvolby" msgid "Switches" msgstr "PÅ™epínaÄe" -#: generic_pluginui.cc:242 generic_pluginui.cc:372 processor_box.cc:2190 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "Ovládání" -#: generic_pluginui.cc:266 +#: generic_pluginui.cc:270 msgid "Plugin Editor: could not build control element for port %1" msgstr "" "Editor přídavných modulů: nepodaÅ™ilo se vytvoÅ™it prvek ovládání pro přípojku " "%1" -#: generic_pluginui.cc:404 +#: generic_pluginui.cc:408 msgid "Meters" msgstr "MěřiÄe" -#: generic_pluginui.cc:419 +#: generic_pluginui.cc:423 msgid "Automation control" msgstr "Ovládání automatického systému" -#: generic_pluginui.cc:426 +#: generic_pluginui.cc:430 msgid "Mgnual" msgstr "RuÄnÄ› provádÄ›né" -#: global_port_matrix.cc:204 io_selector.cc:216 -msgid "port" -msgstr "Přípojka" - -#: group_tabs.cc:306 +#: global_port_matrix.cc:164 +msgid "Audio Connection Manager" +msgstr "Správce zvukových spojení" + +#: global_port_matrix.cc:167 +msgid "MIDI Connection Manager" +msgstr "Správce MIDI spojení" + +#: global_port_matrix.cc:213 io_selector.cc:216 +msgid "port" +msgstr "Přípojka" + +#: group_tabs.cc:308 msgid "Selection..." msgstr "VýbÄ›r..." -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "Nahrávání povoleno..." -#: group_tabs.cc:308 +#: group_tabs.cc:310 msgid "Soloed..." msgstr "Sólo..." -#: group_tabs.cc:314 +#: group_tabs.cc:316 msgid "Create New Group ..." msgstr "VytvoÅ™it novou skupinu..." -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "VytvoÅ™it novou skupinu z" -#: group_tabs.cc:318 +#: group_tabs.cc:320 msgid "Edit Group..." msgstr "Upravit skupinu..." -#: group_tabs.cc:319 +#: group_tabs.cc:321 msgid "Collect Group" msgstr "Sebrat skupinu" -#: group_tabs.cc:320 +#: group_tabs.cc:322 msgid "Remove Group" msgstr "Odstranit skupinu" -#: group_tabs.cc:323 +#: group_tabs.cc:325 msgid "Remove Subgroup Bus" msgstr "Odstranit sbÄ›rnici podskupiny" -#: group_tabs.cc:325 +#: group_tabs.cc:327 msgid "Add New Subgroup Bus" msgstr "PÅ™idat novou sbÄ›rnici podskupiny" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "PÅ™idat novou pomocnou sbÄ›rnici (pÅ™ed-prolínaÄ)" -#: group_tabs.cc:328 +#: group_tabs.cc:330 msgid "Add New Aux Bus (post-fader)" msgstr "PÅ™idat novou pomocnou sbÄ›rnici (po-prolínaÄ)" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "Povolit vÅ¡echny skupiny" -#: group_tabs.cc:335 +#: group_tabs.cc:337 msgid "Disable All Groups" msgstr "Zakázat vÅ¡echny skupiny" @@ -6495,11 +6544,11 @@ msgstr "Zavádí se soubor: %1 z %2" msgid "I/O selector" msgstr "VoliÄ vstupu/výstupu" -#: io_selector.cc:268 +#: io_selector.cc:265 msgid "%1 input" msgstr "%1 vstup" -#: io_selector.cc:270 +#: io_selector.cc:267 msgid "%1 output" msgstr "%1 výstup" @@ -6578,7 +6627,7 @@ msgstr[1] "%1 vzorků" msgid "Reset" msgstr "Nastavit znovu" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "Chyba v programování: %1 (%2)" @@ -6606,63 +6655,63 @@ msgstr "Skladatel:" msgid "Pre-Emphasis" msgstr "PÅ™edzdůraznÄ›ní" -#: location_ui.cc:310 +#: location_ui.cc:314 msgid "Remove this range" msgstr "Odstranit tento rozsah" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "ÄŒas zaÄátku - klepnutí prostÅ™edním tlaÄítkem myÅ¡i pro postavení se sem" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "ÄŒas konce - klepnutí prostÅ™edním tlaÄítkem myÅ¡i pro postavení se sem" -#: location_ui.cc:315 +#: location_ui.cc:319 msgid "Set range start from playhead location" msgstr "Nastavit zaÄátek rozsahu z místa ukazatele polohy" -#: location_ui.cc:316 +#: location_ui.cc:320 msgid "Set range end from playhead location" msgstr "Nastavit konec rozsahu z místa ukazatele polohy" -#: location_ui.cc:320 +#: location_ui.cc:324 msgid "Remove this marker" msgstr "Odstranit tuto znaÄku" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "Poloha - klepnutí prostÅ™edním tlaÄítkem myÅ¡i pro postavení se sem" -#: location_ui.cc:323 +#: location_ui.cc:327 msgid "Set marker time from playhead location" msgstr "Nastavit Äas znaÄky z místa ukazatele polohy" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "Na zaÄátku sezení nemůžete zřídit žádnou znaÄku na CD" -#: location_ui.cc:708 +#: location_ui.cc:720 msgid "New Marker" msgstr "Nová znaÄka" -#: location_ui.cc:709 +#: location_ui.cc:721 msgid "New Range" msgstr "Nový rozsah" -#: location_ui.cc:722 +#: location_ui.cc:734 msgid "Loop/Punch Ranges" msgstr "Rozsahy smyÄky/pÅ™epsání" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "ZnaÄky (vÄetnÄ› rejstříku CD)" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "ZnaÄky (vÄetnÄ› rozsahů stop CD)" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "PÅ™idat znaÄku rozsahu" @@ -6688,39 +6737,38 @@ msgstr "" "\n" "Zvažte, prosím, tyto možnosti, a případnÄ› spusÅ¥te JACKa znovu." -#: main.cc:201 main.cc:320 +#: main.cc:203 main.cc:324 msgid "cannot create user %3 folder %1 (%2)" msgstr "Nelze vytvoÅ™it uživatelův adresář urÄený pro %3 %1 (%2)" -#: main.cc:208 main.cc:327 +#: main.cc:210 main.cc:331 msgid "cannot open pango.rc file %1" msgstr "Nelze otevřít soubor pango.rc %1" -#: main.cc:233 main.cc:354 +#: main.cc:235 main.cc:358 msgid "Cannot find ArdourMono TrueType font" msgstr "Nelze nalézt písmo ArdourMono TrueType" -#: main.cc:245 main.cc:360 +#: main.cc:247 main.cc:364 msgid "Cannot load ArdourMono TrueType font." msgstr "Nelze nahrát písmo ArdourMono TrueType." -#: main.cc:308 +#: main.cc:312 msgid "" "No fontconfig file found on your system. Things may looked very odd or ugly" msgstr "" "Ve vaÅ¡em systému nebyl nalezen žádný soubor s nastavením písma. VÄ›ci v " -"rozhraní " -"mohou vypadat velice divnÄ› a oÅ¡klivÄ›." +"rozhraní mohou vypadat velice divnÄ› a oÅ¡klivÄ›." -#: main.cc:364 +#: main.cc:368 msgid "Failed to set fontconfig configuration." msgstr "NepodaÅ™ilo se nastavit nastavení písma." -#: main.cc:375 main.cc:391 +#: main.cc:379 main.cc:395 msgid "JACK exited" msgstr "JACK skonÄil" -#: main.cc:378 +#: main.cc:382 msgid "" "JACK exited unexpectedly, and without notifying %1.\n" "\n" @@ -6734,7 +6782,7 @@ msgstr "" "\n" "KlepnÄ›te na OK pro ukonÄení %1." -#: main.cc:393 +#: main.cc:397 msgid "" "JACK exited unexpectedly, and without notifying %1.\n" "\n" @@ -6785,11 +6833,15 @@ msgstr "Je to svobodný program a vaÅ¡e pomoc s jeho dalším šířením je ví msgid "under certain conditions; see the source for copying conditions." msgstr "dokud dbáte na urÄité podmínky, které jsou uvedeny v souboru COPYING." -#: main.cc:515 +#: main.cc:513 +msgid "could not initialize %1." +msgstr "NepodaÅ™ilo se zapnout %1." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "Nelze nainstalovat SIGPIPE, který má na starosti chyby" -#: main.cc:521 +#: main.cc:528 msgid "could not create %1 GUI" msgstr "NepodaÅ™ilo se vytvoÅ™it obrazové uživatelské rozhraní k %1" @@ -6797,7 +6849,7 @@ msgstr "NepodaÅ™ilo se vytvoÅ™it obrazové uživatelské rozhraní k %1" msgid "Display delta to edit cursor" msgstr "Zobrazit deltu pro úpravu ukazovátka" -#: marker.cc:251 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "Text u znaÄky" @@ -6987,7 +7039,7 @@ msgstr "PÅ™idat novou přípojku MIDI" msgid "Port name:" msgstr "Název přípojky:" -#: midi_port_dialog.cc:46 +#: midi_port_dialog.cc:45 msgid "MidiPortDialog" msgstr "Dialog pro přípojku MIDI" @@ -7079,7 +7131,7 @@ msgstr "Kanál " msgid "paste" msgstr "Vložit" -#: midi_region_view.cc:3763 +#: midi_region_view.cc:3761 msgid "delete sysex" msgstr "Smazat SysEx" @@ -7127,62 +7179,72 @@ msgstr "VoliÄ kanálů" msgid "Color Mode" msgstr "Barevný režim" -#: midi_time_axis.cc:562 +#: midi_time_axis.cc:561 msgid "Bender" msgstr "OhýbaÄ" -#: midi_time_axis.cc:566 +#: midi_time_axis.cc:565 msgid "Pressure" msgstr "Tlak" -#: midi_time_axis.cc:579 +#: midi_time_axis.cc:578 msgid "Controllers" msgstr "Ovládací prvky" -#: midi_time_axis.cc:584 +#: midi_time_axis.cc:583 msgid "No MIDI Channels selected" msgstr "Nejsou vybrány žádné kanály MIDI" -#: midi_time_axis.cc:641 midi_time_axis.cc:770 +#: midi_time_axis.cc:640 midi_time_axis.cc:769 msgid "Hide all channels" msgstr "Skrýt vÅ¡echny kanály" -#: midi_time_axis.cc:645 midi_time_axis.cc:774 +#: midi_time_axis.cc:644 midi_time_axis.cc:773 msgid "Show all channels" msgstr "Ukázat vÅ¡echny kanály" -#: midi_time_axis.cc:656 midi_time_axis.cc:785 +#: midi_time_axis.cc:655 midi_time_axis.cc:784 msgid "Channel %1" msgstr "Kanál %1" -#: midi_time_axis.cc:911 midi_time_axis.cc:943 +#: midi_time_axis.cc:910 midi_time_axis.cc:942 msgid "Controllers %1-%2" msgstr "Ovládací prvky %1-%2" -#: midi_time_axis.cc:934 midi_time_axis.cc:937 +#: midi_time_axis.cc:933 midi_time_axis.cc:936 msgid "Controller %1" msgstr "Ovládací prvek %1" -#: midi_time_axis.cc:960 +#: midi_time_axis.cc:959 msgid "Sustained" msgstr "Držený tón" -#: midi_time_axis.cc:967 +#: midi_time_axis.cc:966 msgid "Percussive" msgstr "Bicí" -#: midi_time_axis.cc:987 +#: midi_time_axis.cc:986 msgid "Meter Colors" msgstr "Barvy měřidel" -#: midi_time_axis.cc:994 +#: midi_time_axis.cc:993 msgid "Channel Colors" msgstr "Barvy kanálů" -#: midi_time_axis.cc:1001 +#: midi_time_axis.cc:1000 msgid "Track Color" msgstr "Barva stopy" +#: midi_time_axis.cc:1488 midi_time_axis.cc:1494 midi_time_axis.cc:1504 +#: midi_time_axis.cc:1510 +#, fuzzy +msgid "all" +msgstr "Malá" + +#: midi_time_axis.cc:1491 midi_time_axis.cc:1507 +msgid "some" +msgstr "" + #: midi_tracer.cc:43 msgid "Line history: " msgstr "Historie linky: " @@ -7267,7 +7329,7 @@ msgstr "Klepnout pro výbÄ›r dodateÄné složky" msgid "Missing Plugins" msgstr "ChybÄ›jící přídavné moduly" -#: missing_plugin_dialog.cc:33 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "OK" @@ -7339,20 +7401,20 @@ msgstr "Nahrané vazby směšovaÄe z %1" msgid "Could not find mixer.bindings in search path %1" msgstr "V prohledávané cestÄ› %1 se nepodaÅ™ilo nalézt vazby směšovaÄe" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1721 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "PÅ™ed" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1884 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 msgid "Comments" msgstr "Poznámka" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "KlepnÄ›te pro pÅ™epnutí šířky proužku tohoto směšovaÄe." -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." @@ -7360,59 +7422,59 @@ msgstr "" "\n" "%1-%2 klepnutí pro pÅ™epnutí šířky vÅ¡ech proužků." -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 msgid "Hide this mixer strip" msgstr "Skrýt tento proužek směšovaÄe" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 msgid "Click to select metering point" msgstr "Vybrat měřicí bod ukazatele hladin" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "výstup" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "Samostatné sólo" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "Zamknout stav sóla" -#: mixer_strip.cc:201 mixer_strip.cc:1930 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "Zam" -#: mixer_strip.cc:202 mixer_strip.cc:1929 +#: mixer_strip.cc:204 mixer_strip.cc:1925 msgid "iso" msgstr "Sam" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 msgid "Mix group" msgstr "Skupina smÄ›si" -#: mixer_strip.cc:349 rc_option_editor.cc:1881 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 msgid "Phase Invert" msgstr "Obrácení fáze" -#: mixer_strip.cc:350 rc_option_editor.cc:1882 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 msgid "Solo Safe" msgstr "ZajiÅ¡tÄ›né sólo" -#: mixer_strip.cc:353 mixer_ui.cc:123 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "Skupina" -#: mixer_strip.cc:354 rc_option_editor.cc:1885 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 msgid "Meter Point" msgstr "Měřicí bod" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 msgid "Enable/Disable MIDI input" msgstr "Povolit/Zakázat vstup MIDI" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 msgid "" "Aux\n" "Sends" @@ -7420,76 +7482,76 @@ msgstr "" "Pomocné\n" "poslání" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 msgid "Snd" msgstr "Posl" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2118 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "" "Nespojeno s JACKem - na vstupech/výstupech (I/O) nejsou možné žádné zmÄ›ny" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "VSTUP do %1" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "VÃSTUP z %1" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 msgid "Disconnected" msgstr "Odpojeno" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 msgid "*Comments*" msgstr "*Poznámky*" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 msgid "Cmt" msgstr "Pozn" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "*Pozn*" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "Klepnout pro PÅ™idat/Upravit poznámky" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr ": editor poznámek" -#: mixer_strip.cc:1429 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "Skup" -#: mixer_strip.cc:1432 +#: mixer_strip.cc:1438 msgid "~G" msgstr "~S" -#: mixer_strip.cc:1461 +#: mixer_strip.cc:1467 msgid "Comments..." msgstr "Poznámky..." -#: mixer_strip.cc:1463 +#: mixer_strip.cc:1469 msgid "Save As Template..." msgstr "Uložit jako pÅ™edlohu..." -#: mixer_strip.cc:1469 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "ÄŒinné" -#: mixer_strip.cc:1476 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "Upravit prodlevu..." -#: mixer_strip.cc:1479 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "Chránit proti neobvyklým hodnotám" -#: mixer_strip.cc:1485 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 msgid "Remote Control ID..." msgstr "ID dálkového ovládání..." @@ -7525,48 +7587,120 @@ msgstr "o" msgid "c" msgstr "c" -#: mixer_strip.cc:1906 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "Disk" -#: mixer_strip.cc:1921 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "AFL" -#: mixer_strip.cc:1924 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "PFL" -#: mixer_strip.cc:1937 +#: mixer_strip.cc:1933 msgid "D" msgstr "D" -#: mixer_strip.cc:1960 +#: mixer_strip.cc:1953 msgid "i" msgstr "Vst" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2128 msgid "Pre-fader" msgstr "PÅ™ed-prolínaÄ" -#: mixer_strip.cc:2135 +#: mixer_strip.cc:2129 msgid "Post-fader" msgstr "Po-prolínaÄ" -#: mixer_ui.cc:1188 +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "Kanál %1" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + +#: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "" "OznaÄení pro pÅ™ejmenovaný proužek (mixážní kanál) v seznamu pro zobrazení " "stop nelze najít!" -#: mixer_ui.cc:1272 +#: mixer_ui.cc:1273 msgid "-all-" msgstr "-vÅ¡e-" -#: mixer_ui.cc:1791 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "Proužky" +#: meter_strip.cc:764 +#, fuzzy +msgid "Variable height" +msgstr "Výška Äasové osy" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "Krátký" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +#, fuzzy +msgid "VU" +msgstr "V" + #: monitor_section.cc:62 msgid "SiP" msgstr "SiP" @@ -7958,7 +8092,7 @@ msgstr "" msgid "Panner (2D)" msgstr "VyvažovaÄ (2D)" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:494 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "Obejít" @@ -7985,23 +8119,23 @@ msgstr "" msgid "Playlists" msgstr "Seznamy skladeb" -#: playlist_selector.cc:55 +#: playlist_selector.cc:54 msgid "Playlists grouped by track" msgstr "Seznamy skladeb seskupené podle stop" -#: playlist_selector.cc:102 +#: playlist_selector.cc:101 msgid "Playlist for %1" msgstr "Seznam skladeb pro %1" -#: playlist_selector.cc:115 +#: playlist_selector.cc:114 msgid "Other tracks" msgstr "Ostatní stopy" -#: playlist_selector.cc:140 +#: playlist_selector.cc:139 msgid "unassigned" msgstr "NepÅ™idÄ›lené" -#: playlist_selector.cc:195 +#: playlist_selector.cc:194 msgid "Imported" msgstr "Zavedeno" @@ -8013,31 +8147,31 @@ msgstr "Stupnice dB" msgid "Show phase" msgstr "Ukázat fázi" -#: plugin_selector.cc:53 plugin_selector.cc:221 +#: plugin_selector.cc:53 plugin_selector.cc:220 msgid "Name contains" msgstr "Název obsahuje" -#: plugin_selector.cc:54 plugin_selector.cc:225 +#: plugin_selector.cc:54 plugin_selector.cc:224 msgid "Type contains" msgstr "Druh obsahuje" -#: plugin_selector.cc:55 plugin_selector.cc:223 +#: plugin_selector.cc:55 plugin_selector.cc:222 msgid "Category contains" msgstr "Skupina obsahuje" -#: plugin_selector.cc:56 plugin_selector.cc:245 +#: plugin_selector.cc:56 plugin_selector.cc:244 msgid "Author contains" msgstr "Autor obsahuje" -#: plugin_selector.cc:57 plugin_selector.cc:247 +#: plugin_selector.cc:57 plugin_selector.cc:246 msgid "Library contains" msgstr "Sbírka obsahuje" -#: plugin_selector.cc:58 plugin_selector.cc:211 plugin_selector.cc:522 +#: plugin_selector.cc:58 plugin_selector.cc:210 plugin_selector.cc:521 msgid "Favorites only" msgstr "Pouze oblíbené" -#: plugin_selector.cc:59 plugin_selector.cc:215 plugin_selector.cc:522 +#: plugin_selector.cc:59 plugin_selector.cc:214 plugin_selector.cc:521 msgid "Hidden only" msgstr "Pouze skryté" @@ -8045,68 +8179,68 @@ msgstr "Pouze skryté" msgid "Plugin Manager" msgstr "Správce přídavných modulů" -#: plugin_selector.cc:85 +#: plugin_selector.cc:84 msgid "Fav" msgstr "Oblíbené" -#: plugin_selector.cc:87 +#: plugin_selector.cc:86 msgid "Available Plugins" msgstr "Dostupné přídavné moduly" -#: plugin_selector.cc:88 +#: plugin_selector.cc:87 msgid "Type" msgstr "Druh" -#: plugin_selector.cc:89 +#: plugin_selector.cc:88 msgid "Category" msgstr "Skupina" -#: plugin_selector.cc:90 +#: plugin_selector.cc:89 msgid "Creator" msgstr "Tvůrce" -#: plugin_selector.cc:91 +#: plugin_selector.cc:90 msgid "# Audio In" msgstr "# Vstup zvuku" -#: plugin_selector.cc:92 +#: plugin_selector.cc:91 msgid "# Audio Out" msgstr "# Výstup zvuku" -#: plugin_selector.cc:93 +#: plugin_selector.cc:92 msgid "# MIDI In" msgstr "# Vstup MIDI" -#: plugin_selector.cc:94 +#: plugin_selector.cc:93 msgid "# MIDI Out" msgstr "# Výstup MIDI" -#: plugin_selector.cc:116 +#: plugin_selector.cc:115 msgid "Plugins to be connected" msgstr "Přídavné moduly ke spojení" -#: plugin_selector.cc:129 +#: plugin_selector.cc:128 msgid "Add a plugin to the effect list" msgstr "PÅ™idat přídavný modul do seznamu s úÄinky" -#: plugin_selector.cc:133 +#: plugin_selector.cc:132 msgid "Remove a plugin from the effect list" msgstr "Odstranit přídavný modul ze seznamu s úÄinky" -#: plugin_selector.cc:135 +#: plugin_selector.cc:134 msgid "Update available plugins" msgstr "Obnovit dostupné přídavné moduly" -#: plugin_selector.cc:172 +#: plugin_selector.cc:171 msgid "Insert Plugin(s)" msgstr "Vložit přídavný(é) modul(y)" -#: plugin_selector.cc:321 plugin_selector.cc:322 plugin_selector.cc:323 -#: plugin_selector.cc:324 +#: plugin_selector.cc:320 plugin_selector.cc:321 plugin_selector.cc:322 +#: plugin_selector.cc:323 msgid "variable" msgstr "PromÄ›nná" -#: plugin_selector.cc:481 +#: plugin_selector.cc:480 msgid "" "The plugin \"%1\" could not be loaded\n" "\n" @@ -8116,41 +8250,41 @@ msgstr "" "\n" "Více podrobností hledejte a možná najdete v oknÄ› se zápisem" -#: plugin_selector.cc:629 +#: plugin_selector.cc:628 msgid "Favorites" msgstr "Oblíbené" -#: plugin_selector.cc:631 +#: plugin_selector.cc:630 msgid "Plugin Manager..." msgstr "Správce přídavných modulů..." -#: plugin_selector.cc:635 +#: plugin_selector.cc:634 msgid "By Creator" msgstr "Podle tvůrce" -#: plugin_selector.cc:638 +#: plugin_selector.cc:637 msgid "By Category" msgstr "Podle skupiny" -#: plugin_ui.cc:118 +#: plugin_ui.cc:116 msgid "Eh? LADSPA plugins don't have editors!" msgstr "" "Pozoruhodné... Přídavné moduly LADSPA nemají žádné grafické uživatelské " "rozhraní!" -#: plugin_ui.cc:127 plugin_ui.cc:270 +#: plugin_ui.cc:125 plugin_ui.cc:227 msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " "version of %1)" msgstr "" -"Neznámý druh přídavného modulu (UpozornÄ›ní: tato verze %1 nepodporuje " -"žádné přídavné moduly VST)" +"Neznámý druh přídavného modulu (UpozornÄ›ní: tato verze %1 nepodporuje žádné " +"přídavné moduly VST)" -#: plugin_ui.cc:130 +#: plugin_ui.cc:128 msgid "unknown type of editor-supplying plugin" msgstr "Neznámý druh přídavného modulu" -#: plugin_ui.cc:300 +#: plugin_ui.cc:257 msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " "version of %1)" @@ -8158,23 +8292,23 @@ msgstr "" "Neznámý druh přídavného modulu pro editor (UpozornÄ›ní: tato verze %1 " "nepodporuje linuxové VST)" -#: plugin_ui.cc:372 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "create_lv2_editor používaný na ne-LV2 přídavný modul" -#: plugin_ui.cc:460 +#: plugin_ui.cc:417 msgid "Add" msgstr "PÅ™idat" -#: plugin_ui.cc:464 +#: plugin_ui.cc:421 msgid "Description" msgstr "Popis" -#: plugin_ui.cc:465 +#: plugin_ui.cc:422 msgid "Plugin analysis" msgstr "Rozbor přídavného modulu" -#: plugin_ui.cc:472 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" @@ -8182,23 +8316,23 @@ msgstr "" "PÅ™ednastavení (jsou-li) pro tento přídavný modul\n" "(tovární i vytvoÅ™ená uživatelem)" -#: plugin_ui.cc:473 +#: plugin_ui.cc:430 msgid "Save a new preset" msgstr "Uložit nové pÅ™ednastavení" -#: plugin_ui.cc:474 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "Uložit nynÄ›jší pÅ™ednastavení" -#: plugin_ui.cc:475 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "Smazat nynÄ›jší pÅ™ednastavení" -#: plugin_ui.cc:476 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "Zakázat zpracování signálu přídavným modulem" -#: plugin_ui.cc:509 plugin_ui.cc:675 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" @@ -8206,29 +8340,41 @@ msgstr "" "KlepnÄ›te pro povolení přídavného modulu pro pÅ™ijímání událostí klávesnice, " "kterých by %1 obyÄejnÄ› použil jako zkratek" -#: plugin_ui.cc:510 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "Povolit/Zakázat tento přídavný modul" -#: plugin_ui.cc:549 +#: plugin_ui.cc:506 msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "Prodleva (%1 vzorky)" msgstr[1] "Prodleva (%1 vzorků)" -#: plugin_ui.cc:551 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "Prodleva (%1 ms)" -#: plugin_ui.cc:562 +#: plugin_ui.cc:519 msgid "Edit Latency" msgstr "Upravit prodlevu" -#: plugin_ui.cc:602 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "PÅ™ednastavení přídavného modulu %1 nenalezeno" -#: plugin_ui.cc:682 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "KlepnÄ›te pro povolení obvyklého používání klávesových zkratek v %1" @@ -8332,46 +8478,46 @@ msgstr "ZjiÅ¡Å¥uje se..." msgid "Port Insert " msgstr "Vložení přípojky " -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 msgid "Sources" msgstr "Zdroje" -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "Cíle" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "PÅ™idat %s %s" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, c-format msgid "Rename '%s'..." msgstr "PÅ™ejmenovat '%s'..." -#: port_matrix.cc:451 +#: port_matrix.cc:472 msgid "Remove all" msgstr "Odstranit vÅ¡e" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, c-format msgid "%s all" msgstr "%s vÅ¡e" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "Znovu prohlédnout" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "Ukázat jednotlivé přípojky" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "PÅ™epnout" -#: port_matrix.cc:702 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." @@ -8379,33 +8525,35 @@ msgstr "" "Přípojku zde nelze pÅ™idat, protože první procesor ve stopÄ› nebo sbÄ›rnici " "nedokáže podporovat nové nastavení." -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "Nelze pÅ™idat přípojku" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "OdstranÄ›ní přípojky nepovoleno" -#: port_matrix.cc:728 +#: port_matrix.cc:749 +#, fuzzy msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" "Tuto přípojku nelze odstranit, protože první přídavný modul ve stopÄ› nebo " "sbÄ›rnici nemůže pÅ™ijmout nový poÄet vstupů." -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, c-format msgid "Remove '%s'" msgstr "Odstranit '%s'" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, c-format msgid "%s all from '%s'" msgstr "%s vÅ¡e z '%s'" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 msgid "channel" msgstr "Kanál" @@ -8417,23 +8565,36 @@ msgstr "Nejsou zde žádné přípojky k pÅ™ipojení." msgid "There are no %1 ports to connect." msgstr "Nejsou zde žádné %1 přípojky k pÅ™ipojení." -#: processor_box.cc:358 +#: processor_box.cc:256 +msgid "" +"%1\n" +"Double-click to show GUI.\n" +"Alt+double-click to show generic GUI." +msgstr "" + +#: processor_box.cc:259 +msgid "" +"%1\n" +"Double-click to show generic GUI." +msgstr "" + +#: processor_box.cc:372 msgid "Show All Controls" msgstr "Ukázat vÅ¡echny ovládací prvky" -#: processor_box.cc:362 +#: processor_box.cc:376 msgid "Hide All Controls" msgstr "Skrýt vÅ¡echny ovládací prvky" -#: processor_box.cc:451 +#: processor_box.cc:465 msgid "on" msgstr "Zapnuto" -#: processor_box.cc:451 rc_option_editor.cc:1914 rc_option_editor.cc:1928 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "Vypnuto" -#: processor_box.cc:716 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" @@ -8441,15 +8602,15 @@ msgstr "" "Klepnutí pravým tlaÄítkem myÅ¡i pro pÅ™idání/odstranÄ›ní/upravení\n" "přídavných modulů, vložení, poslání a další" -#: processor_box.cc:1150 processor_box.cc:1540 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "NesluÄitelnost přídavného modulu" -#: processor_box.cc:1153 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "Pokusil jste se pÅ™idat přídavný modul \"%1\" do místa %2.\n" -#: processor_box.cc:1159 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" @@ -8457,19 +8618,19 @@ msgstr "" "\n" "Tento přídavný modul má:\n" -#: processor_box.cc:1162 +#: processor_box.cc:1209 msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "\t%1 vstup MIDI\n" msgstr[1] "\t%1 vstupů MIDI" -#: processor_box.cc:1166 +#: processor_box.cc:1213 msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" msgstr[0] "\t%1 vstup pro zvuk\n" msgstr[1] "\t%1 vstupů pro zvuk" -#: processor_box.cc:1169 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" @@ -8477,19 +8638,19 @@ msgstr "" "\n" "Ale v bodÄ› vložení jsou:\n" -#: processor_box.cc:1172 +#: processor_box.cc:1219 msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "\t%1 kanál MIDI\n" msgstr[1] "\t%1 kanálů MIDI\n" -#: processor_box.cc:1176 +#: processor_box.cc:1223 msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "\t%1 kanál pro zvuk\n" msgstr[1] "\t%1 kanálů pro zvuk\n" -#: processor_box.cc:1179 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" @@ -8497,11 +8658,11 @@ msgstr "" "\n" "%1 není schopen vložit tento přídavný modul zde." -#: processor_box.cc:1216 +#: processor_box.cc:1262 msgid "Cannot set up new send: %1" msgstr "Nelze nastavit nové odeslání: %1" -#: processor_box.cc:1543 +#: processor_box.cc:1594 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" @@ -8511,21 +8672,21 @@ msgstr "" "pÅ™euspořádat tímto způsobem, protože vstupy a\n" "výstupy nebudou nepracovat správnÄ›." -#: processor_box.cc:1728 +#: processor_box.cc:1778 msgid "Rename Processor" msgstr "PÅ™ejmenovat procesor" -#: processor_box.cc:1759 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" "Je nejménÄ› 100 I/O (vstupních/výstupních) objektů, které nesou název %1 - " "název nezmÄ›nÄ›n" -#: processor_box.cc:1893 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "Vložení přídavného modulu se nezdaÅ™ilo" -#: processor_box.cc:1904 +#: processor_box.cc:1954 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" @@ -8535,7 +8696,7 @@ msgstr "" "PravdÄ›podobnÄ› se neshoduje vstupní/výstupní nastavení (I/O)\n" "přídavných modulů s nastavením pro tuto stopu." -#: processor_box.cc:1950 +#: processor_box.cc:2000 msgid "" "Do you really want to remove all processors from %1?\n" "(this cannot be undone)" @@ -8543,15 +8704,15 @@ msgstr "" "Doopravdy chcete odstranit vÅ¡echny zpracovatele z %1?\n" "(Toto se pak nedá vrátit zpátky)" -#: processor_box.cc:1954 processor_box.cc:1979 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "Ano, vÅ¡echny odstranit" -#: processor_box.cc:1956 processor_box.cc:1981 +#: processor_box.cc:2006 processor_box.cc:2031 msgid "Remove processors" msgstr "PÅ™ejmenovat zpracovatele" -#: processor_box.cc:1971 +#: processor_box.cc:2021 msgid "" "Do you really want to remove all pre-fader processors from %1?\n" "(this cannot be undone)" @@ -8559,7 +8720,7 @@ msgstr "" "Opravdu chcete odstranit vÅ¡echny zpracovatele pÅ™ed-prolínaÄe z %1?\n" "(Toto se pak nedá vrátit zpátky)" -#: processor_box.cc:1974 +#: processor_box.cc:2024 msgid "" "Do you really want to remove all post-fader processors from %1?\n" "(this cannot be undone)" @@ -8567,51 +8728,52 @@ msgstr "" "Opravdu chcete odstranit vÅ¡echny zpracovatele po-prolínaÄe z %1?\n" "(Toto se pak nedá vrátit zpátky)" -#: processor_box.cc:2178 +#: processor_box.cc:2200 msgid "New Plugin" msgstr "Vložit nový přídavný modul" -#: processor_box.cc:2181 +#: processor_box.cc:2203 msgid "New Insert" msgstr "Vložit novou vložku" -#: processor_box.cc:2184 +#: processor_box.cc:2206 msgid "New External Send ..." msgstr "Nové vnÄ›jší odeslání..." -#: processor_box.cc:2188 +#: processor_box.cc:2210 msgid "New Aux Send ..." msgstr "Vložit nové pomocné odeslání (Aux)..." -#: processor_box.cc:2192 +#: processor_box.cc:2214 msgid "Clear (all)" msgstr "Smazat (vÅ¡e)" -#: processor_box.cc:2194 +#: processor_box.cc:2216 msgid "Clear (pre-fader)" msgstr "Smazat (pÅ™ed-prolínaÄ)" -#: processor_box.cc:2196 +#: processor_box.cc:2218 msgid "Clear (post-fader)" msgstr "Smazat (po-prolínaÄ)" -#: processor_box.cc:2222 +#: processor_box.cc:2244 msgid "Activate All" msgstr "Zapnout vÅ¡e" -#: processor_box.cc:2224 +#: processor_box.cc:2246 msgid "Deactivate All" msgstr "Vypnout vÅ¡e" -#: processor_box.cc:2226 +#: processor_box.cc:2248 msgid "A/B Plugins" msgstr "Přídavné moduly A/B" -#: processor_box.cc:2235 -msgid "Edit with basic controls..." +#: processor_box.cc:2257 +#, fuzzy +msgid "Edit with generic controls..." msgstr "Upravit pomocí základních ovládacích prvků..." -#: processor_box.cc:2481 +#: processor_box.cc:2557 msgid "%1: %2 (by %3)" msgstr "%1: %2 (podle %3)" @@ -8731,6 +8893,11 @@ msgstr "PÅ™ehrávání (sekundy ukládání do vyrovnávací pamÄ›ti):" msgid "Recording (seconds of buffering):" msgstr "Nahrávání (sekundy ukládání do vyrovnávací pamÄ›ti):" +#: rc_option_editor.cc:656 +#, fuzzy +msgid "Control Surface Protocol" +msgstr "Ovládací spínaÄe" + #: rc_option_editor.cc:660 msgid "Feedback" msgstr "ZpÄ›tná vazba" @@ -8739,19 +8906,19 @@ msgstr "ZpÄ›tná vazba" msgid "Double-click on a name to edit settings for an enabled protocol" msgstr "Dvojité poklepání na název pro úpravu nastavení povoleného protokolu" -#: rc_option_editor.cc:818 +#: rc_option_editor.cc:817 msgid "Show Video Export Info before export" msgstr "Ukázat pÅ™ed uložením do souboru informace o způsobu vyvedení videa" -#: rc_option_editor.cc:819 +#: rc_option_editor.cc:818 msgid "Show Video Server Startup Dialog" msgstr "Ukázat spouÅ¡tÄ›cí dialog videoserveru" -#: rc_option_editor.cc:820 +#: rc_option_editor.cc:819 msgid "Advanced Setup (remote video server)" msgstr "PokroÄilé nastavení (vzdálený videoserver)" -#: rc_option_editor.cc:828 +#: rc_option_editor.cc:827 msgid "" "When enabled you can speficify a custom video-server URL and docroot. " "- Do not enable this option unless you know what you are doing." @@ -8759,27 +8926,26 @@ msgstr "" "Je-li povoleno, můžete urÄit adresu vlastního videoserveru (URL) a " "koÅ™en dokumentu (docroot). - Nepovolujte tuto volbu, pokud nevíte, co dÄ›láte." -#: rc_option_editor.cc:830 +#: rc_option_editor.cc:829 msgid "Video Server URL:" msgstr "Adresa videoserveru (URL):" -#: rc_option_editor.cc:835 +#: rc_option_editor.cc:834 +#, fuzzy 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" -"Základní adresa videoserveru (URL) vÄetnÄ› úvodních písmen http. Obvykle to je " -"'http://" -"hostname.example.org:1554/' a výchozí 'http://localhost:1554/', když běží " -"videoserver " -"místnÄ›" +"Základní adresa videoserveru (URL) vÄetnÄ› úvodních písmen http. Obvykle to " +"je 'http://hostname.example.org:1554/' a výchozí 'http://localhost:1554/', " +"když běží videoserver místnÄ›" -#: rc_option_editor.cc:837 +#: rc_option_editor.cc:836 msgid "Video Folder:" msgstr "Složka s videem:" -#: rc_option_editor.cc:842 +#: rc_option_editor.cc:841 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 " @@ -8787,14 +8953,14 @@ msgid "" "docroot or be left empty if it is unvailable. It is used for the local video-" "monitor and file-browsing when opening/adding a video file." msgstr "" -"Místní cesta ke koÅ™enu dokumentu (docroot) videoserveru. Videoserver " -"bude moci pÅ™istupovat pouze k souborům v tomto adresáři. Pokud server " -"poběží na vzdáleném poÄítaÄi, mÄ›la by cesta ukazovat na síťovÄ› pÅ™ipojenou " -"složku koÅ™enu dokumentu (docroot) serveru, nebo být ponechána prázdná, " -"pokud je nedostupný. Používá se pro místní sledování videa a procházení " -"souborů, když je soubor s videem otevírán/pÅ™idáván." +"Místní cesta ke koÅ™enu dokumentu (docroot) videoserveru. Videoserver bude " +"moci pÅ™istupovat pouze k souborům v tomto adresáři. Pokud server poběží na " +"vzdáleném poÄítaÄi, mÄ›la by cesta ukazovat na síťovÄ› pÅ™ipojenou složku " +"koÅ™enu dokumentu (docroot) serveru, nebo být ponechána prázdná, pokud je " +"nedostupný. Používá se pro místní sledování videa a procházení souborů, když " +"je soubor s videem otevírán/pÅ™idáván." -#: rc_option_editor.cc:849 +#: rc_option_editor.cc:848 msgid "" "When enabled an information window with details is displayed before " "the video-export dialog." @@ -8802,7 +8968,7 @@ msgstr "" "Je-li povoleno, je pÅ™ed dialogem pro ukládání videa zobrazeno " "informaÄní okno s podrobnostmi." -#: rc_option_editor.cc:854 +#: rc_option_editor.cc:853 msgid "" "When enabled the video server is never launched automatically without " "confirmation" @@ -8810,103 +8976,103 @@ msgstr "" "Je-li povoleno, videoserver není nikdy spuÅ¡tÄ›n automaticky bez " "potvrzení" -#: rc_option_editor.cc:995 +#: rc_option_editor.cc:993 msgid "%1 Preferences" msgstr "%1 nastavení" -#: rc_option_editor.cc:1006 +#: rc_option_editor.cc:1004 msgid "DSP CPU Utilization" msgstr "Používání CPU pro DSP" -#: rc_option_editor.cc:1010 +#: rc_option_editor.cc:1008 msgid "Signal processing uses" msgstr "Zpracovávání signálu používá" -#: rc_option_editor.cc:1015 +#: rc_option_editor.cc:1013 msgid "all but one processor" msgstr "VÅ¡ichni kromÄ› jednoho zpracovatele" -#: rc_option_editor.cc:1016 +#: rc_option_editor.cc:1014 msgid "all available processors" msgstr "VÅ¡ichni dostupní zpracovatelé" -#: rc_option_editor.cc:1019 +#: rc_option_editor.cc:1017 msgid "%1 processors" msgstr "%1 zpracovatelé" -#: rc_option_editor.cc:1022 +#: rc_option_editor.cc:1020 msgid "This setting will only take effect when %1 is restarted." msgstr "Toto nastavení se neprojeví, dokud %1 nespustíte znovu." -#: rc_option_editor.cc:1027 +#: rc_option_editor.cc:1025 msgid "Options|Undo" msgstr "Volby|ZpÄ›t" -#: rc_option_editor.cc:1034 +#: rc_option_editor.cc:1032 msgid "Verify removal of last capture" msgstr "Potvrdit odstranÄ›ní poslední nahrávky" -#: rc_option_editor.cc:1042 +#: rc_option_editor.cc:1040 msgid "Make periodic backups of the session file" msgstr "DÄ›lat pravidelné zálohy souboru se sezením" -#: rc_option_editor.cc:1047 +#: rc_option_editor.cc:1045 msgid "Session Management" msgstr "Správa sezení" -#: rc_option_editor.cc:1052 +#: rc_option_editor.cc:1050 msgid "Always copy imported files" msgstr "Vždy kopírovat zavedené soubory" -#: rc_option_editor.cc:1059 +#: rc_option_editor.cc:1057 msgid "Default folder for new sessions:" msgstr "Výchozí složka pro nová sezení:" -#: rc_option_editor.cc:1067 +#: rc_option_editor.cc:1065 msgid "Maximum number of recent sessions" msgstr "Nejvyšší poÄet nedávných sezení" -#: rc_option_editor.cc:1080 +#: rc_option_editor.cc:1078 msgid "Click gain level" msgstr "Úroveň hlasitosti klepnutí" -#: rc_option_editor.cc:1085 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Automatizace" -#: rc_option_editor.cc:1090 +#: rc_option_editor.cc:1088 msgid "Thinning factor (larger value => less data)" msgstr "Faktor prostÅ™ihávání (vÄ›tší hodnota => ménÄ› dat)" -#: rc_option_editor.cc:1099 +#: rc_option_editor.cc:1097 msgid "Automation sampling interval (milliseconds)" msgstr "Interval pro automatizaci (v milisekundách)" -#: rc_option_editor.cc:1111 +#: rc_option_editor.cc:1109 msgid "Keep record-enable engaged on stop" msgstr "Udržovat zapnuté nahrávání po zastavení zapojeno" -#: rc_option_editor.cc:1120 +#: rc_option_editor.cc:1118 msgid "Stop recording when an xrun occurs" msgstr "Zastavit nahrávání v případÄ› xrun (Äasového rozdílu)" -#: rc_option_editor.cc:1125 +#: rc_option_editor.cc:1123 msgid "" "When enabled %1 will stop recording if an over- or underrun is " "detected by the audio engine" msgstr "" -"Když je povoleno, %1 zastaví nahrávání, pokud je zjiÅ¡tÄ›no " -"pÅ™eteÄení nebo podteÄení" +"Když je povoleno, %1 zastaví nahrávání, pokud je zjiÅ¡tÄ›no pÅ™eteÄení " +"nebo podteÄení" -#: rc_option_editor.cc:1131 +#: rc_option_editor.cc:1129 msgid "Create markers where xruns occur" msgstr "VytvoÅ™it znaÄky tam, kde se xrun (Äasový rozdíl) objeví" -#: rc_option_editor.cc:1140 +#: rc_option_editor.cc:1138 msgid "Stop at the end of the session" msgstr "Zastavit na konci sezení" -#: rc_option_editor.cc:1145 +#: rc_option_editor.cc:1143 msgid "" "When enabled if %1 is not recording, it will stop the " "transport when it reaches the current session end marker\n" @@ -8914,16 +9080,16 @@ msgid "" "When disabled %1 will continue to roll past the session end marker at " "all times" msgstr "" -"Když je povoleno, a %1 nenahrává, je pÅ™i dosažení znaÄky " -"konce sezení pÅ™ehrávání zastaveno.\n" +"Když je povoleno, a %1 nenahrává, je pÅ™i dosažení znaÄky konce " +"sezení pÅ™ehrávání zastaveno.\n" "\n" "Když je zakázáno %1 bude pokraÄovat vždy až na konec sezení" -#: rc_option_editor.cc:1153 +#: rc_option_editor.cc:1151 msgid "Do seamless looping (not possible when slaved to MTC, JACK etc)" msgstr "DÄ›lat souvislou smyÄku (není možné, když MTC, JACK atd. jsou hlavní)" -#: rc_option_editor.cc:1158 +#: rc_option_editor.cc:1156 msgid "" "When enabled 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 " @@ -8939,11 +9105,11 @@ msgstr "" "smyÄky, když %1 dosáhne konce, což Äasto způsobí slyÅ¡itelné prasknutí nebo " "zpoždÄ›ní" -#: rc_option_editor.cc:1166 +#: rc_option_editor.cc:1164 msgid "Disable per-track record disarm while rolling" msgstr "Zakázat pÅ™i nahrávání stav nahrávání jednotlivé stopy" -#: rc_option_editor.cc:1170 +#: rc_option_editor.cc:1168 msgid "" "When enabled this will prevent you from accidentally stopping " "specific tracks recording during a take" @@ -8951,12 +9117,12 @@ msgstr "" "Když je povoleno, zabrání vám to v nechtÄ›ném zastavení nahrávání " "urÄitých stop" -#: rc_option_editor.cc:1175 +#: rc_option_editor.cc:1173 msgid "12dB gain reduction during fast-forward and fast-rewind" msgstr "" "PÅ™i pÅ™etáÄení rychle dopÅ™edu a rychle dozadu snížit hladinu zvuku o 12dB" -#: rc_option_editor.cc:1179 +#: rc_option_editor.cc:1177 msgid "" "This will reduce the unpleasant increase in perceived volume that occurs " "when fast-forwarding or rewinding through some kinds of audio" @@ -8964,19 +9130,19 @@ msgstr "" "Toto omezí nepříjemné zvýšení vnímané hlasitosti, které se vyskytuje u " "nÄ›kterého materiálu pÅ™i pÅ™etáÄení vpÅ™ed/zpÄ›tném chodu" -#: rc_option_editor.cc:1183 +#: rc_option_editor.cc:1181 msgid "Sync/Slave" msgstr "Sync/Slave" -#: rc_option_editor.cc:1187 +#: rc_option_editor.cc:1185 msgid "External timecode source" msgstr "VnÄ›jší zdroj Äasového kódu" -#: rc_option_editor.cc:1197 +#: rc_option_editor.cc:1195 msgid "Match session video frame rate to external timecode" msgstr "PÅ™izpůsobit rychlost snímkování obrazu vnÄ›jšímu Äasovému kódu" -#: rc_option_editor.cc:1203 +#: rc_option_editor.cc:1201 msgid "" "This option controls the value of the video frame rate while chasing " "an external timecode source.\n" @@ -9000,11 +9166,11 @@ msgstr "" "ukazatel rychlosti snímkování v hlavních hodinách zÄervená a %1 bude " "pÅ™evádÄ›t mezi standardem vnÄ›jšího Äasového kódu a standardem sezení." -#: rc_option_editor.cc:1213 +#: rc_option_editor.cc:1211 msgid "External timecode is sync locked" msgstr "VnÄ›jší Äasový kód je pevnÄ› seřízen" -#: rc_option_editor.cc:1219 +#: rc_option_editor.cc:1217 msgid "" "When enabled indicates that the selected external timecode source " "shares sync (Black & Burst, Wordclock, etc) with the audio interface." @@ -9012,11 +9178,11 @@ msgstr "" "Když je povoleno, ukazuje to, že vybraný vnÄ›jší zdroj Äasového kódu " "běží seřízenÄ› (Black & Burst, Wordclock atd.) se zvukovým rozhraním." -#: rc_option_editor.cc:1226 +#: rc_option_editor.cc:1224 msgid "Lock to 29.9700 fps instead of 30000/1001" msgstr "PevnÄ› na 29.9700 fps namísto 30000/1001" -#: rc_option_editor.cc:1232 +#: rc_option_editor.cc:1230 msgid "" "When enabled the external timecode source is assumed to use 29.97 fps " "instead of 30000/1001.\n" @@ -9038,39 +9204,39 @@ msgstr "" "nÄ›kteří výrobci tuto rychlost používají - i když je to proti specifikaci - " "protože pÅ™i variantÄ› s 29.97 fps se nevyskytuje žádný posuv Äasového kódu.\n" -#: rc_option_editor.cc:1242 +#: rc_option_editor.cc:1240 msgid "LTC Reader" msgstr "ÄŒteÄka LTC" -#: rc_option_editor.cc:1246 +#: rc_option_editor.cc:1244 msgid "LTC incoming port" msgstr "Vstupní přípojka LTC" -#: rc_option_editor.cc:1259 +#: rc_option_editor.cc:1257 msgid "LTC Generator" msgstr "Generátor LTC" -#: rc_option_editor.cc:1264 +#: rc_option_editor.cc:1262 msgid "Enable LTC generator" msgstr "Povolit generátor LTC" -#: rc_option_editor.cc:1271 +#: rc_option_editor.cc:1269 msgid "send LTC while stopped" msgstr "Poslat LTC, když pÅ™ehrávání stojí" -#: rc_option_editor.cc:1277 +#: rc_option_editor.cc:1275 msgid "" "When enabled %1 will continue to send LTC information even when the " "transport (playhead) is not moving" msgstr "" -"Když je povoleno, %1 bude pokraÄovat v posílání informací LTC, i " -"když se ukazatel polohy pÅ™ehrávání nepohybuje" +"Když je povoleno, %1 bude pokraÄovat v posílání informací LTC, i když " +"se ukazatel polohy pÅ™ehrávání nepohybuje" -#: rc_option_editor.cc:1283 +#: rc_option_editor.cc:1281 msgid "LTC generator level" msgstr "Hlasitost generátoru LTC" -#: rc_option_editor.cc:1287 +#: rc_option_editor.cc:1285 msgid "" "Specify the Peak Volume of the generated LTC signal in dbFS. A good value " "is 0dBu ^= -18dbFS in an EBU calibrated system" @@ -9078,104 +9244,108 @@ msgstr "" "Zadejte hodnotu vrcholu vytvoÅ™eného signálu LTC v dbFS. Dobrou hodnotou pro " "kalibrovaný systém EBU je 0dBu ^= -18dbFS" -#: rc_option_editor.cc:1299 +#: rc_option_editor.cc:1297 msgid "Link selection of regions and tracks" msgstr "Spojit výbÄ›r oblastí a stop" -#: rc_option_editor.cc:1307 +#: rc_option_editor.cc:1305 msgid "Move relevant automation when audio regions are moved" msgstr "" "PÅ™esunout související automatizaci, když jsou zvukové oblasti pÅ™esunuty" -#: rc_option_editor.cc:1315 +#: rc_option_editor.cc:1313 msgid "Show meters on tracks in the editor" msgstr "Ukázat měřidla na stopách v editoru" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "Oblasti ve skupinách, které se upravují, jsou upravovány spoleÄnÄ›" -#: rc_option_editor.cc:1323 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "Vždycky když se ÄasovÄ› pÅ™ekrývají" -#: rc_option_editor.cc:1324 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "Jen když mají stejnou délku, polohu a původ" -#: rc_option_editor.cc:1334 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "UdÄ›lat z pružného výbÄ›ru oblasti obdélníkové zapadnutí do mřížky" -#: rc_option_editor.cc:1342 +#: rc_option_editor.cc:1348 msgid "Show waveforms in regions" msgstr "Ukázat tvary vln v oblastech" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1356 msgid "Show gain envelopes in audio regions" msgstr "Ukázat obálky zesílení v oblastech zvuku" -#: rc_option_editor.cc:1351 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "Ve vÅ¡ech režimech" -#: rc_option_editor.cc:1352 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "Pouze v režimu zesílení oblasti" -#: rc_option_editor.cc:1359 +#: rc_option_editor.cc:1365 msgid "Waveform scale" msgstr "Velikost tvaru vlny" -#: rc_option_editor.cc:1364 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "Přímý" -#: rc_option_editor.cc:1365 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "Logaritmický" -#: rc_option_editor.cc:1371 +#: rc_option_editor.cc:1377 msgid "Waveform shape" msgstr "Podoba tvaru vlny" -#: rc_option_editor.cc:1376 +#: rc_option_editor.cc:1382 msgid "traditional" msgstr "TradiÄní" -#: rc_option_editor.cc:1377 +#: rc_option_editor.cc:1383 msgid "rectified" msgstr "Narovnaná" -#: rc_option_editor.cc:1384 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "Ukázat tvary vln zvuku, když je nahráván" -#: rc_option_editor.cc:1392 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "Ukázat nástrojový pruh pro zvÄ›tÅ¡ení" -#: rc_option_editor.cc:1400 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "Obarvit oblasti barvou jejich stopy" -#: rc_option_editor.cc:1408 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "Obnovit okno editoru bÄ›hem tažení shrnutí" -#: rc_option_editor.cc:1416 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "Seřídit poÅ™adí stop v editoru a ve směšovaÄi" -#: rc_option_editor.cc:1424 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "Seřídit výbÄ›r v editoru a ve směšovaÄi" -#: rc_option_editor.cc:1431 +#: rc_option_editor.cc:1437 msgid "Name new markers" msgstr "Pojmenovat nové znaÄky" -#: rc_option_editor.cc:1437 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9187,244 +9357,243 @@ msgstr "" "\n" "ZnaÄky můžete vždy klepnutím pravým tlaÄítkem myÅ¡i na nÄ› pÅ™ejmenovat" -#: rc_option_editor.cc:1443 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "Automaticky projíždÄ›t okno editoru pÅ™i tažení blízko jeho okrajů" -#: rc_option_editor.cc:1450 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "Ukládání do vyrovnávací pamÄ›ti" -#: rc_option_editor.cc:1458 +#: rc_option_editor.cc:1464 msgid "Record monitoring handled by" msgstr "Sledování nahrávání řízené" -#: rc_option_editor.cc:1469 +#: rc_option_editor.cc:1475 msgid "ardour" msgstr "ardour" -#: rc_option_editor.cc:1470 +#: rc_option_editor.cc:1476 msgid "audio hardware" msgstr "Zvukové technické vybavení" -#: rc_option_editor.cc:1477 +#: rc_option_editor.cc:1483 msgid "Tape machine mode" msgstr "Režim páskového stroje" -#: rc_option_editor.cc:1482 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "Spojení stop a sbÄ›rnic" -#: rc_option_editor.cc:1487 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "Automaticky spojit hlavní/sledovací sbÄ›rnice" -#: rc_option_editor.cc:1494 +#: rc_option_editor.cc:1500 msgid "Connect track inputs" msgstr "Spojit vstupy stop" -#: rc_option_editor.cc:1499 +#: rc_option_editor.cc:1505 msgid "automatically to physical inputs" msgstr "Automaticky s fyzickými vstupy" -#: rc_option_editor.cc:1500 rc_option_editor.cc:1513 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "RuÄnÄ›" -#: rc_option_editor.cc:1506 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "Spojit výstupy stop a sbÄ›rnic" -#: rc_option_editor.cc:1511 +#: rc_option_editor.cc:1517 msgid "automatically to physical outputs" msgstr "Automaticky s fyzickými výstupy" -#: rc_option_editor.cc:1512 +#: rc_option_editor.cc:1518 msgid "automatically to master bus" msgstr "Automaticky s hlavní sbÄ›rnicí" -#: rc_option_editor.cc:1517 +#: rc_option_editor.cc:1523 msgid "Denormals" msgstr "Neobvyklé hodnoty" -#: rc_option_editor.cc:1522 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "" "Použít pÅ™edpÄ›tí přímého proudu (DC bias) pro ochranu proti neobvyklým " "hodnotám" -#: rc_option_editor.cc:1529 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "Řízení zpracování" -#: rc_option_editor.cc:1534 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "Žádné řízení zpracování" -#: rc_option_editor.cc:1539 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "Použít ZrudnoutKNule" -#: rc_option_editor.cc:1543 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "Použít NeobvykléHodnotyJsouNula" -#: rc_option_editor.cc:1547 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "Použít ZrudnoutKNule a NeobvykléHodnotyJsouNula" -#: rc_option_editor.cc:1557 +#: rc_option_editor.cc:1563 msgid "Silence plugins when the transport is stopped" msgstr "ZtiÅ¡it přídavné moduly, když je pÅ™esun zastaven " -#: rc_option_editor.cc:1565 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "Uvést nové přídavné moduly do Äinnosti" -#: rc_option_editor.cc:1573 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "Povolit automatický rozbor zvuku" -#: rc_option_editor.cc:1581 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "Zreprodukovat chybÄ›jící kanály oblasti" -#: rc_option_editor.cc:1588 rc_option_editor.cc:1603 rc_option_editor.cc:1615 -#: rc_option_editor.cc:1627 rc_option_editor.cc:1639 rc_option_editor.cc:1643 -#: rc_option_editor.cc:1651 rc_option_editor.cc:1659 rc_option_editor.cc:1667 -#: rc_option_editor.cc:1669 rc_option_editor.cc:1677 rc_option_editor.cc:1685 -#: rc_option_editor.cc:1693 +#: 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 msgid "Solo / mute" msgstr "Sólo/Ztlumit" -#: rc_option_editor.cc:1591 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "Vyjmutí ztlumení sóla (dB)" -#: rc_option_editor.cc:1598 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "Ovládací prvky pro sólo jsou ovládacími prvky pro poslech" -#: rc_option_editor.cc:1607 +#: rc_option_editor.cc:1613 msgid "Listen Position" msgstr "Poloha poslechu" -#: rc_option_editor.cc:1612 +#: rc_option_editor.cc:1618 msgid "after-fader (AFL)" msgstr "Po-prolínaÄ (AFL)" -#: rc_option_editor.cc:1613 +#: rc_option_editor.cc:1619 msgid "pre-fader (PFL)" msgstr "PÅ™ed-prolínaÄ (PFL)" -#: rc_option_editor.cc:1619 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "PFL signály pÅ™icházejí z" -#: rc_option_editor.cc:1624 +#: rc_option_editor.cc:1630 msgid "before pre-fader processors" msgstr "Zpracovatelé pÅ™ed pÅ™ed-prolínaÄe" -#: rc_option_editor.cc:1625 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "Zpracovatelé pÅ™ed-prolínaÄe ale po pÅ™ed-prolínaÄe" -#: rc_option_editor.cc:1631 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "AFL signály pÅ™icházejí z" -#: rc_option_editor.cc:1636 +#: rc_option_editor.cc:1642 msgid "immediately post-fader" msgstr "OkamžitÄ› po-prolínaÄ" -#: rc_option_editor.cc:1637 +#: rc_option_editor.cc:1643 msgid "after post-fader processors (before pan)" msgstr "Zpracovatelé po po-prolínaÄe (pÅ™ed vyvážením)" -#: rc_option_editor.cc:1646 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "Výhradní sólo" -#: rc_option_editor.cc:1654 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "Sólo ukázat jako onÄ›mÄ›lé" -#: rc_option_editor.cc:1662 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "Sólo má pÅ™ednost pÅ™ed ztlumením" -#: rc_option_editor.cc:1667 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "Výchozí volby pro ztlumení stopy/sbÄ›rnice" -#: rc_option_editor.cc:1672 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "Ztlumení ovlivní odeslání pÅ™ed-prolínaÄe" -#: rc_option_editor.cc:1680 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "Ztlumení ovlivní odeslání po-prolínaÄe" -#: rc_option_editor.cc:1688 +#: rc_option_editor.cc:1694 msgid "Mute affects control outputs" msgstr "Ztlumení ovlivní ovládací výstupy" -#: rc_option_editor.cc:1696 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "Ztlumení ovlivní hlavní výstupy" -#: rc_option_editor.cc:1712 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "Poslat Äasový kód MIDI" -#: rc_option_editor.cc:1720 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" "Procento kterékoli strany běžné rychlosti pÅ™esunu k odeslání Äasového kódu " "MIDI (MTC)" -#: rc_option_editor.cc:1729 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "Dodržovat příkazy pro ovládání stroje MIDI" -#: rc_option_editor.cc:1737 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "Poslat příkazy pro ovládání stroje MIDI" -#: rc_option_editor.cc:1745 +#: rc_option_editor.cc:1751 msgid "Send MIDI control feedback" msgstr "Poslat zpÄ›tnou vazbu k ovládání MIDI" -#: rc_option_editor.cc:1753 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "ID zařízení MMC (ovládání stroje MIDI) na vstupu" -#: rc_option_editor.cc:1762 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "ID zařízení MMC (ovládání stroje MIDI) na výstupu" -#: rc_option_editor.cc:1771 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "PoÄáteÄní zmÄ›na programu" -#: rc_option_editor.cc:1780 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "Zobrazit první banku/program MIDI jako 0" -#: rc_option_editor.cc:1788 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "Nikdy nezobrazovat periodické zprávy MIDI (MTC, hodiny MIDI)" -#: rc_option_editor.cc:1796 +#: rc_option_editor.cc:1802 msgid "Sound MIDI notes as they are selected" msgstr "Zahrát noty MIDI, když jsou vybrány" -#: rc_option_editor.cc:1804 rc_option_editor.cc:1814 rc_option_editor.cc:1816 -#: rc_option_editor.cc:1818 rc_option_editor.cc:1820 rc_option_editor.cc:1833 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 msgid "User interaction" msgstr "Uživatelská interakce" -#: rc_option_editor.cc:1807 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" @@ -9434,102 +9603,183 @@ msgstr "" " (aby se projevilo, vyžaduje opÄ›tovné spuÅ¡tÄ›ní %1)\n" " (je-li dostupné pro vaÅ¡e jazykové nastavení)" -#: rc_option_editor.cc:1814 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "Klávesnice" -#: rc_option_editor.cc:1818 -msgid "Control surfaces" -msgstr "Ovládací spínaÄe" - -#: rc_option_editor.cc:1824 +#: rc_option_editor.cc:1830 msgid "Control surface remote ID" msgstr "ID vzdálené ovládací plochy" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "urÄeno uživatelem" -#: rc_option_editor.cc:1830 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "následuje poÅ™adí ve směšovaÄi" -#: rc_option_editor.cc:1831 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "následuje poÅ™adí v editoru" -#: rc_option_editor.cc:1842 rc_option_editor.cc:1850 rc_option_editor.cc:1860 -#: rc_option_editor.cc:1862 rc_option_editor.cc:1870 rc_option_editor.cc:1888 -#: rc_option_editor.cc:1897 rc_option_editor.cc:1905 rc_option_editor.cc:1919 -#: rc_option_editor.cc:1936 -msgid "GUI" -msgstr "GUI" +#: 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 +#, fuzzy +msgid "Preferences|GUI" +msgstr "Nastavení" -#: rc_option_editor.cc:1845 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "ObrazovÄ› naznaÄovat pÅ™ejetí ukazatele myÅ¡i nad různými prvky" -#: rc_option_editor.cc:1853 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "Ukázat nástrojové rady, když myÅ¡ pÅ™ejede nad prvkem" -#: rc_option_editor.cc:1865 -msgid "Use plugins' own interfaces instead of %1's" -msgstr "Použít vlastní rozhraní přídavných modulů, namísto rozhraní %1" +#: rc_option_editor.cc:1867 +msgid "GUI" +msgstr "GUI" -#: rc_option_editor.cc:1873 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" "Aktualizovat zobrazení hodin ukazujících stav pÅ™ehrávání každých 40 ms " "namísto každých 100 ms" -#: rc_option_editor.cc:1890 +#: rc_option_editor.cc:1887 msgid "Mixer Strip" msgstr "Proužek směšovaÄe" -#: rc_option_editor.cc:1900 +#: rc_option_editor.cc:1897 msgid "Use narrow strips in the mixer by default" msgstr "Použít úzké proužky ve směšovaÄi jako výchozí" -#: rc_option_editor.cc:1909 -msgid "Meter hold time" +#: rc_option_editor.cc:1906 +#, fuzzy +msgid "Peak hold time" msgstr "ÄŒas držení měřidla" -#: rc_option_editor.cc:1915 +#: rc_option_editor.cc:1912 msgid "short" msgstr "Krátký" -#: rc_option_editor.cc:1916 rc_option_editor.cc:1931 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "StÅ™ední" -#: rc_option_editor.cc:1917 +#: rc_option_editor.cc:1914 msgid "long" msgstr "Dlouhý" -#: rc_option_editor.cc:1923 -msgid "Meter fall-off" +#: rc_option_editor.cc:1920 +#, fuzzy +msgid "DPM fall-off" msgstr "Klesání měřidla" +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" +msgstr "" + +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" + #: rc_option_editor.cc:1929 -msgid "slowest" -msgstr "Nejpomalejší" +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" #: rc_option_editor.cc:1930 -msgid "slow" -msgstr "Pomalý" +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" #: rc_option_editor.cc:1932 -msgid "fast" -msgstr "Rychlý" +msgid "faster [46dB/sec]" +msgstr "" #: rc_option_editor.cc:1933 -msgid "faster" -msgstr "Rychlejší" +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" + +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 +#, fuzzy +msgid "Peak threshold [dBFS]" +msgstr "Prahová hodnota zvuku (dB)" + +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" -#: rc_option_editor.cc:1934 -msgid "fastest" -msgstr "Nejrychlejší" +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -9539,11 +9789,11 @@ msgstr "Poslech této oblasti" msgid "Position:" msgstr "Poloha:" -#: region_editor.cc:90 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Konec:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "Délka:" @@ -9567,23 +9817,23 @@ msgstr "Zdroje:" msgid "Source:" msgstr "Zdroj:" -#: region_editor.cc:167 +#: region_editor.cc:166 msgid "Region '%1'" msgstr "Oblast '%1'" -#: region_editor.cc:274 +#: region_editor.cc:273 msgid "change region start position" msgstr "ZmÄ›nit zaÄáteÄní polohu oblasti" -#: region_editor.cc:290 +#: region_editor.cc:289 msgid "change region end position" msgstr "ZmÄ›nit koncovou polohu oblasti" -#: region_editor.cc:310 +#: region_editor.cc:309 msgid "change region length" msgstr "ZmÄ›nit délku oblasti" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 msgid "change region sync point" msgstr "ZmÄ›nit bod zapadnutí oblasti" @@ -9757,336 +10007,336 @@ msgstr "VýbÄ›r" msgid "Active state" msgstr "Zapnuto" -#: route_group_dialog.cc:47 route_group_dialog.cc:77 theme_manager.cc:69 +#: route_group_dialog.cc:47 route_group_dialog.cc:76 theme_manager.cc:71 msgid "Color" msgstr "Barva" -#: route_group_dialog.cc:54 +#: route_group_dialog.cc:53 msgid "RouteGroupDialog" msgstr "DialogProSkupinuCest" -#: route_group_dialog.cc:93 +#: route_group_dialog.cc:92 msgid "Sharing" msgstr "Sdílení" -#: route_group_dialog.cc:183 +#: route_group_dialog.cc:182 msgid "" "A route group of this name already exists. Please use a different name." msgstr "" "Skupina cesty s tímto názvem již existuje. Použijte, prosím, jiný název." -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "Stopy/SbÄ›rnice" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "Vstupy" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "Výstupy" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "Přídavné moduly, vložky & odeslání" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "Položka v seznamu s cestami pro pÅ™ejmenovanou cestu nebyla nalezena!" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "ZpoždÄ›ní pÅ™ehrávání: % vzorků" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "ŽÃDNà STOPA" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 msgid "No Track or Bus Selected" msgstr "Nebyla vybrána žádná stopa nebo sbÄ›rnice" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "sk" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "se" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "a" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "Nahrávat (klepnutí pravým tlaÄítkem myÅ¡i pro Úpravu kroku)" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "Nahrávat" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 msgid "Route Group" msgstr "Skupina cest" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 msgid "MIDI Controllers and Automation" msgstr "Ovládací prvky MIDI a automatizace" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 msgid "Show All Automation" msgstr "Ukázat vÅ¡echny automatizace" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 msgid "Show Existing Automation" msgstr "Ukázat stávající automatizace" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 msgid "Hide All Automation" msgstr "Skrýt vÅ¡echny automatizace" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 msgid "Processor automation" msgstr "Automatizace procesoru" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 msgid "Color..." msgstr "Barva..." -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "PÅ™ekryto" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "Naskládáno" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 msgid "Layers" msgstr "Vrstvy" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 msgid "Automatic (based on I/O connections)" msgstr "Automaticky (založeno na spojení vstup/výstup)" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 msgid "(Currently: Existing Material)" msgstr "(Nyní: stávající materiál)" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 msgid "(Currently: Capture Time)" msgstr "(Nyní: Äas zachycení)" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 msgid "Align With Existing Material" msgstr "Zarovnat se stávajícím materiálem" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 msgid "Align With Capture Time" msgstr "Zarovnat s Äasem nahrávky" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 msgid "Alignment" msgstr "Zarovnání" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 msgid "Normal Mode" msgstr "Obvyklý režim" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 msgid "Tape Mode" msgstr "Páskový režim" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 msgid "Non-Layered Mode" msgstr "Nevrstvený režim" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Seznam skladeb" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 msgid "Rename Playlist" msgstr "PÅ™ejmenovat seznam skladeb" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 msgid "New name for playlist:" msgstr "Nový název pro seznam skladeb:" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 msgid "New Copy Playlist" msgstr "Seznam skladeb nové kopie" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 msgid "Name for new playlist:" msgstr "Název pro nový seznam skladeb:" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 msgid "New Playlist" msgstr "Nový seznam skladeb" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 msgid "You cannot create a track with that name as it is reserved for %1" msgstr "Nemůžete vytvoÅ™it stopu s tímto názvem, protože je zamluvený pro %1" -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 msgid "New Copy..." msgstr "Nová kopie..." -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 msgid "New Take" msgstr "Nový zábÄ›r" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 msgid "Copy Take" msgstr "Kopírovat zábÄ›r" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "Smazat vybrané" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 msgid "Select From All..." msgstr "Vybrat ze vÅ¡eho..." -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "Vzít: %1.%2" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "Podložky" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 msgid "Remove \"%1\"" msgstr "Odstranit \"%1\"" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "" "Chyba v programování: dvojice vodítek odkazující na podložku jsou " "nesluÄitelné!" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 msgid "After-fade listen (AFL)" msgstr "Poslech po-prolínaÄi (AFL)" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 msgid "Pre-fade listen (PFL)" msgstr "Poslech pÅ™ed-prolínaÄem (PFL)" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "s" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "z" -#: route_ui.cc:114 +#: route_ui.cc:119 msgid "Mute this track" msgstr "Ztlumit tuto stopu" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "Ztlumit ostatní stopy (nesólové)" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "Spustit nahrávání do této stopy" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "Proužky směšovaÄe ukazují odeslání do této sbÄ›rnice" -#: route_ui.cc:133 +#: route_ui.cc:138 msgid "Monitor input" msgstr "Sledovat vstup" -#: route_ui.cc:139 +#: route_ui.cc:144 msgid "Monitor playback" msgstr "Sledovat pÅ™ehrávání" -#: route_ui.cc:586 +#: route_ui.cc:591 msgid "Not connected to JACK - cannot engage record" msgstr "Nespojeno s JACKem - nelze zaÄít s nahráváním" -#: route_ui.cc:781 +#: route_ui.cc:786 msgid "Step Entry" msgstr "Zápis kroku" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "PÅ™iÅ™adit vÅ¡echny stopy (pÅ™ed-prolínaÄ)" -#: route_ui.cc:858 +#: route_ui.cc:863 msgid "Assign all tracks and buses (prefader)" msgstr "PÅ™iÅ™adit vÅ¡echny stopy a sbÄ›rnice (pÅ™ed-prolínaÄ)" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "PÅ™iÅ™adit vÅ¡echny stopy (po-prolínaÄ)" -#: route_ui.cc:866 +#: route_ui.cc:871 msgid "Assign all tracks and buses (postfader)" msgstr "PÅ™iÅ™adit vÅ¡echny stopy a sbÄ›rnice (po-prolínaÄ)" -#: route_ui.cc:870 +#: route_ui.cc:875 msgid "Assign selected tracks (prefader)" msgstr "PÅ™iÅ™adit vybrané stopy (pÅ™ed-prolínaÄ)" -#: route_ui.cc:874 +#: route_ui.cc:879 msgid "Assign selected tracks and buses (prefader)" msgstr "PÅ™iÅ™adit vybrané stopy a sbÄ›rnice (pÅ™ed-prolínaÄ)" -#: route_ui.cc:877 +#: route_ui.cc:882 msgid "Assign selected tracks (postfader)" msgstr "PÅ™iÅ™adit vybrané stopy (po-prolínaÄ)" -#: route_ui.cc:881 +#: route_ui.cc:886 msgid "Assign selected tracks and buses (postfader)" msgstr "PÅ™iÅ™adit vybrané stopy a sbÄ›rnice (po-prolínaÄ)" -#: route_ui.cc:884 +#: route_ui.cc:889 msgid "Copy track/bus gains to sends" msgstr "Kopírovat zesílení stop/sbÄ›rnic do odeslání" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "Nastavit zesílení odeslání na -inf." -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "Nastavit zesílení odeslání na 0dB" -#: route_ui.cc:1206 +#: route_ui.cc:1211 msgid "Solo Isolate" msgstr "Samostatné sólo" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "PÅ™ed-prolínaÄ" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "Po-prolínaÄ" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "Ovládací výstupy" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "Hlavní výstupy" -#: route_ui.cc:1385 +#: route_ui.cc:1390 msgid "Color Selection" msgstr "VýbÄ›r barvy" -#: route_ui.cc:1472 +#: route_ui.cc:1477 msgid "" "Do you really want to remove track \"%1\" ?\n" "\n" @@ -10101,7 +10351,7 @@ msgstr "" "\n" "(Toto nelze vrátit zpÄ›t, a soubor se sezením bude pÅ™epsán!)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 msgid "" "Do you really want to remove bus \"%1\" ?\n" "\n" @@ -10111,15 +10361,15 @@ msgstr "" "\n" "(Tento krok nelze vrátit zpÄ›t, a soubor se sezením bude pÅ™epsán)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 msgid "Remove track" msgstr "Odstranit stopu" -#: route_ui.cc:1484 +#: route_ui.cc:1489 msgid "Remove bus" msgstr "Odstranit sbÄ›rnici" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" @@ -10127,47 +10377,47 @@ msgstr "" "Od použití dvojteÄky (':') se odrazuje v názvech stop a sbÄ›rnic.\n" "Chcete použít tento nový název?" -#: route_ui.cc:1515 +#: route_ui.cc:1520 msgid "Use the new name" msgstr "Použít nový název" -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "Upravit název znovu" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "PÅ™ejmenovat stopu" -#: route_ui.cc:1531 +#: route_ui.cc:1536 msgid "Rename Bus" msgstr "PÅ™ejmenovat sbÄ›rnici" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr " Prodleva" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "Nelze vytvoÅ™it adresář %1 pro pÅ™edlohu cesty" -#: route_ui.cc:1709 +#: route_ui.cc:1714 msgid "Save As Template" msgstr "Uložit jako pÅ™edlohu" -#: route_ui.cc:1710 +#: route_ui.cc:1715 msgid "Template name:" msgstr "Název pÅ™edlohy:" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "ID dálkového ovládání" -#: route_ui.cc:1793 +#: route_ui.cc:1798 msgid "Remote control ID:" msgstr "ID dálkového ovládání:" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10179,15 +10429,15 @@ msgstr "" "\n" "ID dálkového ovládání %3 nelze zmÄ›nit." -#: route_ui.cc:1811 +#: route_ui.cc:1816 msgid "the master bus" msgstr "Hlavní sbÄ›rnice" -#: route_ui.cc:1811 +#: route_ui.cc:1816 msgid "the monitor bus" msgstr "Sledovací sbÄ›rnice" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10206,15 +10456,15 @@ msgstr "" "%4Použijte kartu Uživatelská interakce v oknÄ› pro Nastavení, pokud to chcete " "zmÄ›nit%5" -#: route_ui.cc:1816 +#: route_ui.cc:1821 msgid "the mixer" msgstr "SměšovaÄ" -#: route_ui.cc:1816 +#: route_ui.cc:1821 msgid "the editor" msgstr "Editor" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." @@ -10222,7 +10472,7 @@ msgstr "" "Klepnutí levým tlaÄítkem myÅ¡i pro obrácení (otoÄení fáze) kanálu %1 této " "stopy. Klepnutí pravým tlaÄítkem myÅ¡i pro ukázání nabídky." -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "KlepnÄ›te pro ukázání kanálů pro obrácení (otoÄení fáze)" @@ -10536,151 +10786,151 @@ msgstr "-4.1667" msgid "-4.1667 - 0.1%" msgstr "-4.1667 - 0.1%" -#: session_option_editor.cc:85 +#: session_option_editor.cc:84 msgid "" "Use Video File's FPS Instead of Timecode Value for Timeline and Video " "Monitor." msgstr "" -"Použít FPS videosouboru namísto hodnoty Äasového kódu pro " -"Äasovou osu a sledování videa." +"Použít FPS videosouboru namísto hodnoty Äasového kódu pro Äasovou osu a " +"sledování videa." -#: session_option_editor.cc:92 +#: session_option_editor.cc:91 msgid "" "Apply Pull-Up/Down to Video Timeline and Video Monitor (Unless in JACK-sync)." msgstr "" "Použít vytažení nahoru/stažení dolů na Äasovou osu videa a sledování videa " "(jestliže není v JACK-sync)." -#: session_option_editor.cc:98 +#: session_option_editor.cc:96 msgid "Ext Timecode Offsets" msgstr "VnÄ›jší posuny Äasového kódu" -#: session_option_editor.cc:102 +#: session_option_editor.cc:100 msgid "Slave Timecode offset" msgstr "Pomocný posun Äasového kódu" -#: session_option_editor.cc:109 +#: session_option_editor.cc:107 msgid "The specified offset is added to the received timecode (MTC or LTC)." msgstr "Stanovený posun je pÅ™idán k pÅ™ijatému Äasovému kódu (MTC nebo LTC)." -#: session_option_editor.cc:115 +#: session_option_editor.cc:113 msgid "Timecode Generator offset" msgstr "Posun pÅ™idaný k vytvoÅ™enému Äasovému kódu" -#: session_option_editor.cc:122 +#: session_option_editor.cc:120 msgid "" "Specify an offset which is added to the generated timecode (so far only LTC)." msgstr "" "Zadejte posun, který je pÅ™idán k vytvoÅ™enému Äasovému kódu (nyní jen LTC)." -#: session_option_editor.cc:126 +#: session_option_editor.cc:124 msgid "JACK Transport/Time Settings" msgstr "Nastavení pÅ™esun/Äas pro JACK" -#: session_option_editor.cc:130 +#: session_option_editor.cc:128 msgid "" "%1 is JACK Time Master (provides Bar|Beat|Tick and other information to JACK)" msgstr "" "%1 je řízení Äasu pro JACK (poskytuje takt|doba|tiknutí a další informace " "pro JACK)" -#: session_option_editor.cc:139 +#: session_option_editor.cc:137 msgid "Default crossfade type" msgstr "Výchozí typ prolínání" -#: session_option_editor.cc:144 +#: session_option_editor.cc:142 msgid "Constant power (-3dB) crossfade" msgstr "Prolínání s nemÄ›nnou silou (-3dB)" -#: session_option_editor.cc:145 +#: session_option_editor.cc:143 msgid "Linear (-6dB) crossfade" msgstr "Lineární prolínání (-6dB)" -#: session_option_editor.cc:150 +#: session_option_editor.cc:148 msgid "destructive-xfade-seconds" msgstr "niÄivé-xfade-sekundy" -#: session_option_editor.cc:151 +#: session_option_editor.cc:149 msgid "Destructive crossfade length" msgstr "Délka niÄivého prolínání" -#: session_option_editor.cc:160 +#: session_option_editor.cc:158 msgid "Region fades active" msgstr "Slábnutí oblastí Äinné" -#: session_option_editor.cc:167 +#: session_option_editor.cc:165 msgid "Region fades visible" msgstr "Slábnutí oblastí viditelné" -#: session_option_editor.cc:174 session_option_editor.cc:187 -#: session_option_editor.cc:201 session_option_editor.cc:203 -#: session_option_editor.cc:209 session_option_editor.cc:216 +#: session_option_editor.cc:172 session_option_editor.cc:185 +#: session_option_editor.cc:199 session_option_editor.cc:201 +#: session_option_editor.cc:207 session_option_editor.cc:214 msgid "Media" msgstr "Hudební soubory" -#: session_option_editor.cc:174 +#: session_option_editor.cc:172 msgid "Audio file format" msgstr "Formát zvukových souborů" -#: session_option_editor.cc:178 +#: session_option_editor.cc:176 msgid "Sample format" msgstr "Vzorkovací formát" -#: session_option_editor.cc:183 +#: session_option_editor.cc:181 msgid "32-bit floating point" msgstr "32 bitové Äíslo s plovoucí desetinnou Äárkou" -#: session_option_editor.cc:184 +#: session_option_editor.cc:182 msgid "24-bit integer" msgstr "24 bitové celé Äíslo" -#: session_option_editor.cc:185 +#: session_option_editor.cc:183 msgid "16-bit integer" msgstr "16 bitové celé Äíslo" -#: session_option_editor.cc:191 +#: session_option_editor.cc:189 msgid "File type" msgstr "Typ souboru" -#: session_option_editor.cc:196 +#: session_option_editor.cc:194 msgid "Broadcast WAVE" msgstr "Broadcast WAVE" -#: session_option_editor.cc:197 +#: session_option_editor.cc:195 msgid "WAVE" msgstr "WAVE" -#: session_option_editor.cc:198 +#: session_option_editor.cc:196 msgid "WAVE-64" msgstr "WAVE-64" -#: session_option_editor.cc:203 +#: session_option_editor.cc:201 msgid "File locations" msgstr "UmístÄ›ní souborů" -#: session_option_editor.cc:205 +#: session_option_editor.cc:203 msgid "Search for audio files in:" msgstr "Zvukové soubory hledat v:" -#: session_option_editor.cc:211 +#: session_option_editor.cc:209 msgid "Search for MIDI files in:" msgstr "MIDI soubory hledat v:" -#: session_option_editor.cc:222 +#: session_option_editor.cc:220 msgid "" "Track Input Monitoring automatically follows transport state (\"auto-input\")" msgstr "" "Sledování vstupu stopy automaticky následuje stav pÅ™ehrávání (\"auto-input\")" -#: session_option_editor.cc:229 +#: session_option_editor.cc:227 msgid "Use monitor section in this session" msgstr "Použít pro toto sezení Äást pro sledování" -#: session_option_editor.cc:240 +#: session_option_editor.cc:238 msgid "MIDI region copies are independent" msgstr "Kopie oblastí MIDI jsou nezávislé" -#: session_option_editor.cc:247 +#: session_option_editor.cc:245 msgid "" "Policy for handling overlapping notes\n" " on the same MIDI channel" @@ -10688,87 +10938,143 @@ msgstr "" "Postoj k zacházení s pÅ™ekrývajícími se notami\n" " na stejném kanálu MIDI" -#: session_option_editor.cc:252 +#: session_option_editor.cc:250 msgid "never allow them" msgstr "Nikdy je nepovolit" -#: session_option_editor.cc:253 +#: session_option_editor.cc:251 msgid "don't do anything in particular" msgstr "Zvlášť nedÄ›lat nic" -#: session_option_editor.cc:254 +#: session_option_editor.cc:252 msgid "replace any overlapped existing note" msgstr "Nahradit každou pÅ™ekrytou notu" -#: session_option_editor.cc:255 +#: session_option_editor.cc:253 msgid "shorten the overlapped existing note" msgstr "Zkrátit pÅ™ekrytou notu" -#: session_option_editor.cc:256 +#: session_option_editor.cc:254 msgid "shorten the overlapping new note" msgstr "Zkrátit pÅ™ekrývající novou notu" -#: session_option_editor.cc:257 +#: session_option_editor.cc:255 msgid "replace both overlapping notes with a single note" msgstr "Nahradit obÄ› pÅ™ekrývající noty jednou notou" -#: session_option_editor.cc:261 +#: session_option_editor.cc:259 msgid "Glue to bars and beats" msgstr "PÅ™ilepit k taktům a dobám" -#: session_option_editor.cc:265 +#: session_option_editor.cc:263 msgid "Glue new markers to bars and beats" msgstr "PÅ™ilepit nové znaÄky k taktům a dobám" -#: session_option_editor.cc:272 +#: session_option_editor.cc:270 msgid "Glue new regions to bars and beats" msgstr "PÅ™ilepit nové oblasti k taktům a dobám" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 -msgid "as new tracks" -msgstr "Jako nové stopy" +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "Ukazatel hladiny" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 -msgid "to selected tracks" -msgstr "K vybraným stopám" +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 -msgid "to region list" -msgstr "Na seznam s oblastmi" +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "Ukázat vÅ¡echny MIDI stopy" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 -msgid "as new tape tracks" -msgstr "Jako nové páskové stopy" +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "SbÄ›rnice" -#: sfdb_ui.cc:97 -msgid "programming error: unknown import mode string %1" -msgstr "Chyba v programování: neznámý Å™etÄ›zec režimu zavedení %1" +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "Hlavní sbÄ›rnice" -#: sfdb_ui.cc:124 -msgid "Auto-play" -msgstr "Automatické pÅ™ehrávání" +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "ZmÄ›nit stav nahrávání" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "s tlaÄítkem myÅ¡i" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "Povzbuzení sóla" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "Název stopy/sbÄ›rnice" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 +msgid "as new tracks" +msgstr "Jako nové stopy" + +#: sfdb_ui.cc:88 sfdb_ui.cc:108 +msgid "to selected tracks" +msgstr "K vybraným stopám" + +#: sfdb_ui.cc:90 sfdb_ui.cc:110 +msgid "to region list" +msgstr "Na seznam s oblastmi" + +#: sfdb_ui.cc:92 sfdb_ui.cc:112 +msgid "as new tape tracks" +msgstr "Jako nové páskové stopy" + +#: sfdb_ui.cc:96 +msgid "programming error: unknown import mode string %1" +msgstr "Chyba v programování: neznámý Å™etÄ›zec režimu zavedení %1" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:123 +msgid "Auto-play" +msgstr "Automatické pÅ™ehrávání" + +#: sfdb_ui.cc:129 sfdb_ui.cc:236 msgid "Sound File Information" msgstr "Informace o zvukovém souboru" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 msgid "Timestamp:" msgstr "ÄŒasové razítko:" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "Formát:" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "ZnaÄky:" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "Poslech MIDI souborů jeÅ¡tÄ› není podporován" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Soubor nelze pÅ™eÄíst: %1 (%2)." @@ -10796,11 +11102,11 @@ msgstr "Zvukové soubory" msgid "MIDI files" msgstr "Soubory MIDI" -#: sfdb_ui.cc:458 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "VÅ¡echny soubory" -#: sfdb_ui.cc:477 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "Procházet soubory" @@ -10808,169 +11114,157 @@ msgstr "Procházet soubory" msgid "Paths" msgstr "Cesty" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "Hledat znaÄky" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 msgid "Sort:" msgstr "Třídit:" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 msgid "Longest" msgstr "Nejdelší" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 msgid "Shortest" msgstr "Nejkratší" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 msgid "Newest" msgstr "NejnovÄ›jší" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "Nejstarší" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "Nejvíce stahované" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 msgid "Least downloaded" msgstr "NejménÄ› stahované" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "Nejvýše hodnocené" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "Nejníže hodnocené" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "Více" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 msgid "ID" msgstr "ID" -#: sfdb_ui.cc:573 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 msgid "Filename" msgstr "Souborový název" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 msgid "Duration" msgstr "Doba trvání" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 msgid "Size" msgstr "Velikost" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 msgid "Samplerate" msgstr "Vzorkovací kmitoÄet" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "Licence" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "Hledat volné zvuky" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "StisknÄ›te pro zavedení vybraných souborů a zavÅ™ete toto okno" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "StisknÄ›te pro zavedení vybraných souborů a ponechte toto okno otevÅ™ené" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "StisknÄ›te pro zavÅ™ení tohoto okna bez zavedení jakýchkoli souborů" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "Nalezena %1 shoda" -msgstr[1] "Nalezeny %1 shody" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "ProhlížeÄ zvukových souborů: Nelze rozebrat Å™etÄ›zec znaků:" -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "Dostupná %1 další strana ze sta výsledků" msgstr[1] "Dostupné %1 další strany ze sta výsledků" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "Nejsou dostupné žádné další výsledky" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "B" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "kB " -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "MB" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 msgid "GB" msgstr "GB" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "Hledání nevrátilo žádné výsledky." - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "Nalezena %1 shoda" -msgstr[1] "Nalezeny %1 shody" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "Jedna stopa na soubor" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "Jedna stopa na kanál" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 msgid "sequence files" msgstr "Soubory seÅ™adit vedle sebe" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "VÅ¡echny soubory do jedné stopy" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 msgid "merge files" msgstr "SlouÄit soubory" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 msgid "one region per file" msgstr "Jedna oblast na soubor" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 msgid "one region per channel" msgstr "Jedna oblast na kanál" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 msgid "all files in one region" msgstr "VÅ¡echny soubory v jedné oblasti" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" @@ -10978,101 +11272,101 @@ msgstr "" "Jeden nebo více vybraných souborů\n" "nemůže být použito %1" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "Zkopírovat soubory do sezení" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 msgid "file timestamp" msgstr "ÄŒasové razítko souboru" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 msgid "edit point" msgstr "Pracovní bod" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 msgid "playhead" msgstr "Ukazatel polohy" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 msgid "session start" msgstr "ZaÄátek sezení" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "PÅ™idat soubory jako..." -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 msgid "Insert at" msgstr "Vložit v" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 msgid "Mapping" msgstr "PÅ™iÅ™azení" -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 msgid "Conversion quality" msgstr "Kvalita pÅ™evodu" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "Nejlepší" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "Dobrá" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "Rychlý pÅ™evod" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "Co nejrychleji" -#: shuttle_control.cc:55 +#: shuttle_control.cc:56 msgid "Shuttle speed control (Context-click for options)" msgstr "Pendlovat ovládání rychlosti (klepnutí pro související nabídku voleb)" -#: shuttle_control.cc:164 +#: shuttle_control.cc:165 msgid "Percent" msgstr "Procento" -#: shuttle_control.cc:172 +#: shuttle_control.cc:173 msgid "Units" msgstr "Jednotky" -#: shuttle_control.cc:178 shuttle_control.cc:598 +#: shuttle_control.cc:179 shuttle_control.cc:599 msgid "Sprung" msgstr "Pero" -#: shuttle_control.cc:182 shuttle_control.cc:601 +#: shuttle_control.cc:183 shuttle_control.cc:602 msgid "Wheel" msgstr "Kolo" -#: shuttle_control.cc:216 +#: shuttle_control.cc:217 msgid "Maximum speed" msgstr "Nejvyšší rychlost" -#: shuttle_control.cc:560 +#: shuttle_control.cc:561 msgid "Playing" msgstr "PÅ™ehrává se" -#: shuttle_control.cc:575 +#: shuttle_control.cc:576 #, c-format msgid "<<< %+d semitones" msgstr "<<< %+d půltóny" -#: shuttle_control.cc:577 +#: shuttle_control.cc:578 #, c-format msgid ">>> %+d semitones" msgstr ">>> %+d půltóny" -#: shuttle_control.cc:582 +#: shuttle_control.cc:583 msgid "Stopped" msgstr "Zastaveno" -#: splash.cc:69 +#: splash.cc:73 msgid "%1 loading ..." msgstr "Nahrává se %1..." @@ -11113,23 +11407,23 @@ msgstr "Požádat %1 o pÅ™ehrávání materiálu, už když je nahráván" msgid "I'd like more options for this session" msgstr "Rád bych mÄ›l pro toto sezení více voleb" -#: startup.cc:196 +#: startup.cc:194 msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11138,15 +11432,15 @@ msgid "" " http://ardour.org/support\n" msgstr "" -#: startup.cc:220 +#: startup.cc:218 msgid "This is a BETA RELEASE" msgstr "Toto je VYDÃNà BETA" -#: startup.cc:326 +#: startup.cc:324 msgid "Audio / MIDI Setup" msgstr "Nastavení zvuku/MIDI" -#: startup.cc:338 +#: startup.cc:336 msgid "" "%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 " @@ -11163,15 +11457,15 @@ msgstr "" "PÅ™edtím než program zaÄnete používat, je tu jen nÄ›kolik vÄ›cí, které je tÅ™eba " "nastavit." -#: startup.cc:364 +#: startup.cc:362 msgid "Welcome to %1" msgstr "Vítejte v %1" -#: startup.cc:387 +#: startup.cc:385 msgid "Default folder for %1 sessions" msgstr "Výchozí složka pro sezení programu %1" -#: startup.cc:393 +#: startup.cc:391 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" @@ -11187,11 +11481,11 @@ msgstr "" "\n" "(Nová sezení můžete dát kamkoli. Toto je jen výchozí nastavení)" -#: startup.cc:417 +#: startup.cc:415 msgid "Default folder for new sessions" msgstr "Výchozí složka pro nová sezení" -#: startup.cc:438 +#: startup.cc:436 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" @@ -11216,15 +11510,15 @@ msgstr "" "\n" "Pokud nevíte, o Äem to je, prostÄ› pÅ™ijmÄ›te výchozí nastavení." -#: startup.cc:459 +#: startup.cc:457 msgid "Monitoring Choices" msgstr "Volby pro sledování" -#: startup.cc:482 +#: startup.cc:480 msgid "Use a Master bus directly" msgstr "Použít hlavní sbÄ›rnici přímo" -#: startup.cc:484 +#: startup.cc:482 msgid "" "Connect the Master bus directly to your hardware outputs. This is preferable " "for simple usage." @@ -11232,11 +11526,11 @@ msgstr "" "Spojit hlavní sbÄ›rnici přímo s výstupy vaÅ¡eho technického vybavení. To je " "vhodnÄ›jší pro jednoduché použití." -#: startup.cc:493 +#: startup.cc:491 msgid "Use an additional Monitor bus" msgstr "Použít dodateÄnou sbÄ›rnici pro sledování" -#: startup.cc:496 +#: startup.cc:494 msgid "" "Use a Monitor bus between Master bus and hardware outputs for \n" "greater control in monitoring without affecting the mix." @@ -11245,7 +11539,7 @@ msgstr "" "vybavení\n" "pro vÄ›tší dohled nad sledováním bez ovlivnÄ›ní míchání." -#: startup.cc:518 +#: startup.cc:516 msgid "" "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.\n" @@ -11258,103 +11552,107 @@ msgstr "" "\n" "Pokud nevíte, o Äem to je, prostÄ› pÅ™ijmÄ›te výchozí nastavení." -#: startup.cc:529 +#: startup.cc:527 msgid "Monitor Section" msgstr "Část pro sledování" -#: startup.cc:569 -msgid "What would you like to do ?" -msgstr "Co nyní chcete dÄ›lat?" +#: startup.cc:573 +msgid "Check the website for more..." +msgstr "Najít více na internetových stránkách..." + +#: startup.cc:576 +msgid "Click to open the program website in your web browser" +msgstr "Klepnout pro otevÅ™ení stránek programu v prohlížeÄi" -#: startup.cc:704 +#: startup.cc:729 msgid "Open" msgstr "Otevřít" -#: startup.cc:750 +#: startup.cc:775 msgid "Session name:" msgstr "Název sezení:" -#: startup.cc:773 +#: startup.cc:798 msgid "Create session folder in:" msgstr "Složku se sezením vytvoÅ™it v:" -#: startup.cc:788 +#: startup.cc:821 msgid "Select folder for session" msgstr "Vybrat složku pro sezení" -#: startup.cc:820 +#: startup.cc:853 msgid "Use this template" msgstr "Použít tuto pÅ™edlohu" -#: startup.cc:823 +#: startup.cc:856 msgid "no template" msgstr "Žádná pÅ™edloha" -#: startup.cc:851 +#: startup.cc:884 msgid "Use an existing session as a template:" msgstr "Použít stávající sezení jako pÅ™edlohu:" -#: startup.cc:863 +#: startup.cc:896 msgid "Select template" msgstr "Vybrat pÅ™edlohu" -#: startup.cc:889 +#: startup.cc:922 msgid "New Session" msgstr "Nové sezení" -#: startup.cc:1043 +#: startup.cc:1077 msgid "Select session file" msgstr "Vybrat soubor se sezením" -#: startup.cc:1059 +#: startup.cc:1093 msgid "Browse:" msgstr "Procházet:" -#: startup.cc:1068 +#: startup.cc:1102 msgid "Select a session" msgstr "Vybrat sezení" -#: startup.cc:1094 startup.cc:1095 startup.cc:1096 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "Kanály" -#: startup.cc:1110 +#: startup.cc:1145 msgid "Busses" msgstr "SbÄ›rnice" -#: startup.cc:1111 +#: startup.cc:1146 msgid "Inputs" msgstr "Vstupy" -#: startup.cc:1112 +#: startup.cc:1147 msgid "Outputs" msgstr "Výstupy" -#: startup.cc:1120 +#: startup.cc:1155 msgid "Create master bus" msgstr "VytvoÅ™it hlavní sbÄ›rnici" -#: startup.cc:1130 +#: startup.cc:1165 msgid "Automatically connect to physical inputs" msgstr "Automaticky spojit s fyzickými vstupy" -#: startup.cc:1137 startup.cc:1196 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "Použít pouze" -#: startup.cc:1190 +#: startup.cc:1225 msgid "Automatically connect outputs" msgstr "Automaticky spojit výstupy" -#: startup.cc:1212 +#: startup.cc:1247 msgid "... to master bus" msgstr "... s hlavní sbÄ›rnicí" -#: startup.cc:1222 +#: startup.cc:1257 msgid "... to physical outputs" msgstr "... s fyzickými výstupy" -#: startup.cc:1272 +#: startup.cc:1307 msgid "Advanced Session Options" msgstr "PokroÄilé volby pro sezení" @@ -11502,11 +11800,11 @@ msgstr "Vložit zprávu o zmÄ›nÄ› banky" msgid "Insert a program change message" msgstr "Vložit zprávu o zmÄ›nÄ› programu" -#: step_entry.cc:342 step_entry.cc:701 +#: step_entry.cc:342 step_entry.cc:699 msgid "Move Insert Position Back by Note Length" msgstr "PÅ™esunout polohu vložení zpÄ›t podle délky noty" -#: step_entry.cc:343 step_entry.cc:699 +#: step_entry.cc:343 step_entry.cc:697 msgid "Move Insert Position to Edit Point" msgstr "PÅ™esunout polohu vložení k pracovnímu bodu" @@ -11518,227 +11816,227 @@ msgstr "1/Nota" msgid "Octave" msgstr "Oktáva" -#: step_entry.cc:599 +#: step_entry.cc:597 msgid "Insert Note A" msgstr "Vložit notu A" -#: step_entry.cc:600 +#: step_entry.cc:598 msgid "Insert Note A-sharp" msgstr "Vložit notu Ais" -#: step_entry.cc:601 +#: step_entry.cc:599 msgid "Insert Note B" msgstr "Vložit notu H" -#: step_entry.cc:602 +#: step_entry.cc:600 msgid "Insert Note C" msgstr "Vložit notu C" -#: step_entry.cc:603 +#: step_entry.cc:601 msgid "Insert Note C-sharp" msgstr "Vložit notu Cis" -#: step_entry.cc:604 +#: step_entry.cc:602 msgid "Insert Note D" msgstr "Vložit notu D" -#: step_entry.cc:605 +#: step_entry.cc:603 msgid "Insert Note D-sharp" msgstr "Vložit notu Dis" -#: step_entry.cc:606 +#: step_entry.cc:604 msgid "Insert Note E" msgstr "Vložit notu E" -#: step_entry.cc:607 +#: step_entry.cc:605 msgid "Insert Note F" msgstr "Vložit notu F" -#: step_entry.cc:608 +#: step_entry.cc:606 msgid "Insert Note F-sharp" msgstr "Vložit notu Fis" -#: step_entry.cc:609 +#: step_entry.cc:607 msgid "Insert Note G" msgstr "Vložit notu G" -#: step_entry.cc:610 +#: step_entry.cc:608 msgid "Insert Note G-sharp" msgstr "Vložit notu Gis" -#: step_entry.cc:612 +#: step_entry.cc:610 msgid "Insert a Note-length Rest" msgstr "Vložit pomlku o délce noty" -#: step_entry.cc:613 +#: step_entry.cc:611 msgid "Insert a Snap-length Rest" msgstr "Vložit pomlku o délce zapadnutí" -#: step_entry.cc:615 step_entry.cc:616 +#: step_entry.cc:613 step_entry.cc:614 msgid "Move to next octave" msgstr "PÅ™esunout se k další oktávÄ›" -#: step_entry.cc:618 +#: step_entry.cc:616 msgid "Move to Next Note Length" msgstr "PÅ™esunout se k délce další noty" -#: step_entry.cc:619 +#: step_entry.cc:617 msgid "Move to Previous Note Length" msgstr "PÅ™esunout se k délce pÅ™edchozí noty" -#: step_entry.cc:621 +#: step_entry.cc:619 msgid "Increase Note Length" msgstr "ZvÄ›tÅ¡it délku noty" -#: step_entry.cc:622 +#: step_entry.cc:620 msgid "Decrease Note Length" msgstr "ZmenÅ¡it délku noty" -#: step_entry.cc:624 +#: step_entry.cc:622 msgid "Move to Next Note Velocity" msgstr "PÅ™esunout se k síle tónu další noty" -#: step_entry.cc:625 +#: step_entry.cc:623 msgid "Move to Previous Note Velocity" msgstr "PÅ™esunout se k síle tónu pÅ™edchozí noty" -#: step_entry.cc:627 +#: step_entry.cc:625 msgid "Increase Note Velocity" msgstr "ZvÄ›tÅ¡it sílu tónu noty" -#: step_entry.cc:628 +#: step_entry.cc:626 msgid "Decrease Note Velocity" msgstr "ZmenÅ¡it sílu tónu noty" -#: step_entry.cc:630 +#: step_entry.cc:628 msgid "Switch to the 1st octave" msgstr "PÅ™ejít na první oktávu" -#: step_entry.cc:631 +#: step_entry.cc:629 msgid "Switch to the 2nd octave" msgstr "PÅ™ejít na druhou oktávu" -#: step_entry.cc:632 +#: step_entry.cc:630 msgid "Switch to the 3rd octave" msgstr "PÅ™ejít na tÅ™etí oktávu" -#: step_entry.cc:633 +#: step_entry.cc:631 msgid "Switch to the 4th octave" msgstr "PÅ™ejít na Ätvrtou oktávu" -#: step_entry.cc:634 +#: step_entry.cc:632 msgid "Switch to the 5th octave" msgstr "PÅ™ejít na pátou oktávu" -#: step_entry.cc:635 +#: step_entry.cc:633 msgid "Switch to the 6th octave" msgstr "PÅ™ejít na Å¡estou oktávu" -#: step_entry.cc:636 +#: step_entry.cc:634 msgid "Switch to the 7th octave" msgstr "PÅ™ejít na sedmou oktávu" -#: step_entry.cc:637 +#: step_entry.cc:635 msgid "Switch to the 8th octave" msgstr "PÅ™ejít na osmou oktávu" -#: step_entry.cc:638 +#: step_entry.cc:636 msgid "Switch to the 9th octave" msgstr "PÅ™ejít na devátou oktávu" -#: step_entry.cc:639 +#: step_entry.cc:637 msgid "Switch to the 10th octave" msgstr "PÅ™ejít na desátou oktávu" -#: step_entry.cc:640 +#: step_entry.cc:638 msgid "Switch to the 11th octave" msgstr "PÅ™ejít na jedenáctou oktávu" -#: step_entry.cc:645 +#: step_entry.cc:643 msgid "Set Note Length to Whole" msgstr "Nastavit délku noty na celou" -#: step_entry.cc:647 +#: step_entry.cc:645 msgid "Set Note Length to 1/2" msgstr "Nastavit délku noty na 1/2" -#: step_entry.cc:649 +#: step_entry.cc:647 msgid "Set Note Length to 1/3" msgstr "Nastavit délku noty na 1/3" -#: step_entry.cc:651 +#: step_entry.cc:649 msgid "Set Note Length to 1/4" msgstr "Nastavit délku noty na 1/4" -#: step_entry.cc:653 +#: step_entry.cc:651 msgid "Set Note Length to 1/8" msgstr "Nastavit délku noty na 1/8" -#: step_entry.cc:655 +#: step_entry.cc:653 msgid "Set Note Length to 1/16" msgstr "Nastavit délku noty na 1/16" -#: step_entry.cc:657 +#: step_entry.cc:655 msgid "Set Note Length to 1/32" msgstr "Nastavit délku noty na 1/32" -#: step_entry.cc:659 +#: step_entry.cc:657 msgid "Set Note Length to 1/64" msgstr "Nastavit délku noty na 1/64" -#: step_entry.cc:664 +#: step_entry.cc:662 msgid "Set Note Velocity to Pianississimo" msgstr "Nastavit sílu tónu noty na pianississimo" -#: step_entry.cc:666 +#: step_entry.cc:664 msgid "Set Note Velocity to Pianissimo" msgstr "Nastavit sílu tónu noty na pianissimo" -#: step_entry.cc:668 +#: step_entry.cc:666 msgid "Set Note Velocity to Piano" msgstr "Nastavit sílu tónu noty na piano" -#: step_entry.cc:670 +#: step_entry.cc:668 msgid "Set Note Velocity to Mezzo-Piano" msgstr "Nastavit sílu tónu noty na mezzo piano" -#: step_entry.cc:672 +#: step_entry.cc:670 msgid "Set Note Velocity to Mezzo-Forte" msgstr "Nastavit sílu tónu noty na mezzo forte" -#: step_entry.cc:674 +#: step_entry.cc:672 msgid "Set Note Velocity to Forte" msgstr "Nastavit sílu tónu noty na forte" -#: step_entry.cc:676 step_entry.cc:678 +#: step_entry.cc:674 step_entry.cc:676 msgid "Set Note Velocity to Fortississimo" msgstr "Nastavit sílu tónu noty na fortississimo" -#: step_entry.cc:680 +#: step_entry.cc:678 msgid "Toggle Triple Notes" msgstr "PÅ™epnout trojité noty" -#: step_entry.cc:685 +#: step_entry.cc:683 msgid "No Dotted Notes" msgstr "Žádné teÄkované noty" -#: step_entry.cc:687 +#: step_entry.cc:685 msgid "Toggled Dotted Notes" msgstr "PÅ™epnuté teÄkované noty" -#: step_entry.cc:689 +#: step_entry.cc:687 msgid "Toggled Double-Dotted Notes" msgstr "PÅ™epnuté dvojitÄ› teÄkované noty" -#: step_entry.cc:691 +#: step_entry.cc:689 msgid "Toggled Triple-Dotted Notes" msgstr "PÅ™epnuté trojitÄ› teÄkované noty" -#: step_entry.cc:694 +#: step_entry.cc:692 msgid "Toggle Chord Entry" msgstr "PÅ™epnout zápis akordu" -#: step_entry.cc:696 +#: step_entry.cc:694 msgid "Sustain Selected Notes by Note Length" msgstr "Držet vybrané noty podle délky noty" @@ -11860,31 +12158,43 @@ msgstr "Metrum zaÄíná na taktu:" msgid "incomprehensible meter note type (%1)" msgstr "Nesrozumitelný typ noty metra (%1)" -#: theme_manager.cc:56 +#: theme_manager.cc:57 msgid "Dark Theme" msgstr "Tmavý motiv" -#: theme_manager.cc:57 +#: theme_manager.cc:58 msgid "Light Theme" msgstr "SvÄ›tlý motiv" -#: theme_manager.cc:58 +#: theme_manager.cc:59 msgid "Restore Defaults" msgstr "Obnovit výchozí" -#: theme_manager.cc:59 +#: theme_manager.cc:60 msgid "Draw \"flat\" buttons" msgstr "Kreslit plochá tlaÄítka" -#: theme_manager.cc:60 +#: theme_manager.cc:61 +msgid "All floating windows are dialogs" +msgstr "" + +#: theme_manager.cc:62 msgid "Draw waveforms with color gradient" msgstr "Kreslit tvary vln s barevnými pÅ™echody" -#: theme_manager.cc:66 +#: theme_manager.cc:68 msgid "Object" msgstr "Prvek" -#: theme_manager.cc:215 +#: theme_manager.cc:123 +msgid "" +"Mark all floating windows to be type \"Dialog\" rather than using \"Utility" +"\" for some.\n" +"This may help with some window managers. This requires a restart of %1 to " +"take effect" +msgstr "" + +#: theme_manager.cc:229 msgid "Unable to find UI style file %1 in search path %2. %3 will look strange" msgstr "" "Soubor se stylem uživatelského rozhraní %1 nelze ve vyhledávací cestÄ› najít " @@ -11920,43 +12230,43 @@ msgstr "ZmenÅ¡it Äasové zkreslení" msgid "Preserve Formants" msgstr "Zachovat složky rozhodující o barvÄ› zvuku (formanty)" -#: time_fx_dialog.cc:72 +#: time_fx_dialog.cc:71 msgid "TimeFXDialog" msgstr "Okno TimeFX" -#: time_fx_dialog.cc:75 +#: time_fx_dialog.cc:74 msgid "Pitch Shift Audio" msgstr "Posun výšky tónu zvuku" -#: time_fx_dialog.cc:77 +#: time_fx_dialog.cc:76 msgid "Time Stretch Audio" msgstr "Protáhnutí Äasu zvuku" -#: time_fx_dialog.cc:105 transpose_dialog.cc:41 +#: time_fx_dialog.cc:104 transpose_dialog.cc:41 msgid "Octaves:" msgstr "Oktávy:" -#: time_fx_dialog.cc:110 transpose_dialog.cc:46 +#: time_fx_dialog.cc:109 transpose_dialog.cc:46 msgid "Semitones:" msgstr "Půltóny:" -#: time_fx_dialog.cc:115 +#: time_fx_dialog.cc:114 msgid "Cents:" msgstr "Centy:" -#: time_fx_dialog.cc:123 +#: time_fx_dialog.cc:122 msgid "Time|Shift" msgstr "ÄŒas|Posun" -#: time_fx_dialog.cc:147 time_fx_dialog.cc:150 +#: time_fx_dialog.cc:146 time_fx_dialog.cc:149 msgid "TimeFXButton" msgstr "TlaÄítko TimeFX" -#: time_fx_dialog.cc:155 +#: time_fx_dialog.cc:154 msgid "Stretch/Shrink" msgstr "Protáhnout/ZmenÅ¡it" -#: time_fx_dialog.cc:165 +#: time_fx_dialog.cc:164 msgid "Progress" msgstr "Postup" @@ -12024,19 +12334,19 @@ msgstr "Soubor s nastavením %1 nebyl uložen" msgid "bad XPM header %1" msgstr "Chybná XPM hlaviÄka %1" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "ChybÄ›jící RGBA styl pro \"%1\"" -#: utils.cc:513 +#: utils.cc:591 msgid "cannot find XPM file for %1" msgstr "Nelze najít soubor XPM pro %1" -#: utils.cc:539 +#: utils.cc:617 msgid "cannot find icon image for %1 using %2" msgstr "Nelze najít obrázek s ikonou pro %1 pomocí %2" -#: utils.cc:554 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "bÄ›hem nahrávání ikony s názvem %1 byla zachycena výjimka" @@ -12044,6 +12354,584 @@ msgstr "bÄ›hem nahrávání ikony s názvem %1 byla zachycena výjimka" msgid "VerboseCanvasCursor" msgstr "Ukazovátko podrobného plátna" +#: add_video_dialog.cc:55 +#, fuzzy +msgid "Set Video Track" +msgstr "Zarovnat videostopu" + +#: add_video_dialog.cc:63 +#, fuzzy +msgid "Launch External Video Monitor" +msgstr "Sledování pomocí technického vybavení" + +#: add_video_dialog.cc:64 +msgid "Adjust Session Framerate to Match Video Framerate" +msgstr "" + +#: add_video_dialog.cc:66 +msgid "Reload docroot" +msgstr "" + +#: add_video_dialog.cc:111 add_video_dialog.cc:115 +#, fuzzy +msgid "VideoServerIndex" +msgstr "Zastavit videoserver" + +#: add_video_dialog.cc:129 +#, fuzzy +msgid "Video files" +msgstr "Zvukové soubory" + +#: add_video_dialog.cc:164 +#, fuzzy +msgid "Video Information" +msgstr "Informace o zvukovém souboru" + +#: add_video_dialog.cc:167 +#, fuzzy +msgid "Start:" +msgstr "Spustit" + +#: add_video_dialog.cc:173 +#, fuzzy +msgid "Frame rate:" +msgstr "Vzorkovací kmitoÄet:" + +#: add_video_dialog.cc:176 +msgid "Aspect Ratio:" +msgstr "" + +#: add_video_dialog.cc:654 +msgid " %1 fps" +msgstr "" + +#: editor_videotimeline.cc:146 +#, fuzzy +msgid "Export Successful: %1" +msgstr "Vyvést jako MIDI: %1" + +#: video_timeline.cc:469 +msgid "" +"Parsing video file info failed. Is the Video Server running? Is the file " +"readable by the Video Server? Does the docroot match? Is it a video file?" +msgstr "" + +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." +msgstr "" + +#: video_timeline.cc:515 +msgid "" +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" +msgstr "" + +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." +msgstr "" + +#: video_timeline.cc:737 +msgid "" +"Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " +"(a custom path to xjadeo can be specified by setting the XJREMOTE " +"environment variable. It should point to an application compatible with " +"xjadeo's remote-control interface 'xjremote')." +msgstr "" + +#: video_monitor.cc:281 +#, fuzzy +msgid "Video Monitor: File Not Found." +msgstr "Sledování videa" + +#: transcode_ffmpeg.cc:73 +msgid "" +"No ffprobe or ffmpeg executables could be found on this system.\n" +"Video import and export is not possible until you install those tools.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"\n" +"The tools are included with the %1 releases from ardour.org and also " +"available with the video-server at http://x42.github.com/harvid/\n" +"\n" +"Important: the files need to be installed in $PATH and named ffmpeg_harvid " +"and ffprobe_harvid.\n" +"If you already have a suitable ffmpeg installation on your system, we " +"recommend creating symbolic links from ffmpeg to ffmpeg_harvid and from " +"ffprobe to ffprobe_harvid.\n" +msgstr "" + +#: transcode_video_dialog.cc:56 +#, fuzzy +msgid "Transcode/Import Video File " +msgstr "Vyvést jako videosoubor" + +#: transcode_video_dialog.cc:58 +#, fuzzy +msgid "Output File:" +msgstr "Výstupní zařízení:" + +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 +msgid "Abort" +msgstr "" + +#: transcode_video_dialog.cc:63 +#, fuzzy +msgid "Height = " +msgstr "Výška" + +#: transcode_video_dialog.cc:66 +msgid "Manual Override" +msgstr "" + +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." +msgstr "" + +#: transcode_video_dialog.cc:107 +#, fuzzy +msgid "File Information" +msgstr "Informace o zvukovém souboru" + +#: transcode_video_dialog.cc:113 +msgid "" +"No ffprobe or ffmpeg executables could be found on this system. Video Import " +"is not possible until you install those tools. See the Log window for more " +"information." +msgstr "" + +#: transcode_video_dialog.cc:120 +msgid "" +"File-info can not be read. Most likely '%1' is not a valid video-file or an " +"unsupported video codec or format." +msgstr "" + +#: transcode_video_dialog.cc:134 +msgid "FPS:" +msgstr "" + +#: transcode_video_dialog.cc:136 +#, fuzzy +msgid "Duration:" +msgstr "Doba trvání" + +#: transcode_video_dialog.cc:138 +msgid "Codec:" +msgstr "" + +#: transcode_video_dialog.cc:140 +msgid "Geometry:" +msgstr "" + +#: transcode_video_dialog.cc:155 +#, fuzzy +msgid "??" +msgstr "???" + +#: transcode_video_dialog.cc:176 +#, fuzzy +msgid "Import Settings" +msgstr "Volby" + +#: transcode_video_dialog.cc:181 +#, fuzzy +msgid "Do Not Import Video" +msgstr "Uzamknout k videu" + +#: transcode_video_dialog.cc:182 +msgid "Reference From Current Location" +msgstr "" + +#: transcode_video_dialog.cc:184 +#, fuzzy +msgid "Import/Transcode Video to Session" +msgstr "Zavést ze sezení" + +#: transcode_video_dialog.cc:198 +msgid "Scale Video: Width = " +msgstr "" + +#: transcode_video_dialog.cc:205 +#, fuzzy +msgid "Original Width" +msgstr "Původní velikost" + +#: transcode_video_dialog.cc:220 +msgid "Bitrate (KBit/s):" +msgstr "" + +#: transcode_video_dialog.cc:225 +#, fuzzy +msgid "Extract Audio:" +msgstr "Vyvést zvuk" + +#: transcode_video_dialog.cc:345 +#, fuzzy +msgid "Extracting Audio.." +msgstr "Vyvést zvuk" + +#: transcode_video_dialog.cc:348 +msgid "Audio Extraction Failed." +msgstr "" + +#: transcode_video_dialog.cc:374 +msgid "Transcoding Video.." +msgstr "" + +#: transcode_video_dialog.cc:408 +#, fuzzy +msgid "Transcoding Failed." +msgstr "PÅ™eklady povoleny" + +#: transcode_video_dialog.cc:491 +#, fuzzy +msgid "Save Transcoded Video File" +msgstr "Vyvést jako videosoubor" + +#: video_server_dialog.cc:43 +#, fuzzy +msgid "Launch Video Server" +msgstr "Adresa videoserveru (URL):" + +#: video_server_dialog.cc:44 +msgid "Server Executable:" +msgstr "" + +#: video_server_dialog.cc:46 +#, fuzzy +msgid "Server Docroot:" +msgstr "Server:" + +#: video_server_dialog.cc:52 +msgid "Don't show this dialog again. (Reset in Edit->Preferences)." +msgstr "" + +#: video_server_dialog.cc:92 +msgid "" +"The external video server 'harvid' can not be found. The tool is included " +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." +msgstr "" + +#: video_server_dialog.cc:120 +msgid "Listen Address:" +msgstr "" + +#: video_server_dialog.cc:125 +#, fuzzy +msgid "Listen Port:" +msgstr "Poloha poslechu" + +#: video_server_dialog.cc:130 +#, fuzzy +msgid "Cache Size:" +msgstr "NejvÄ›tší velikost" + +#: video_server_dialog.cc:136 +msgid "" +"%1 relies on an external Video Server for the videotimeline.\n" +"The server configured in Edit -> Prefereces -> Video is not reachable.\n" +"Do you want ardour to launch 'harvid' on this machine?" +msgstr "" + +#: video_server_dialog.cc:176 +#, fuzzy +msgid "Set Video Server Executable" +msgstr "Daný videoserver není spustitelným souborem." + +#: video_server_dialog.cc:196 +msgid "Server docroot" +msgstr "" + +#: utils_videotl.cc:53 +msgid "Destination is outside Video Server's docroot. " +msgstr "" + +#: utils_videotl.cc:54 +msgid "" +"The destination file path is outside of the Video Server's docroot. The file " +"will not be readable by the Video Server. Do you still want to continue?" +msgstr "" + +#: utils_videotl.cc:57 +msgid "Continue" +msgstr "" + +#: utils_videotl.cc:63 +#, fuzzy +msgid "Confirm Overwrite" +msgstr "Potvrdit pÅ™epsání snímku obrazovky" + +#: utils_videotl.cc:64 +#, fuzzy +msgid "A file with the same name already exists. Do you want to overwrite it?" +msgstr "Snímek obrazovky s tímto názvem již existuje. Chcete jej pÅ™epsat?" + +#: utils_videotl.cc:74 utils_videotl.cc:90 +#, fuzzy +msgid "Cannot create video folder \"%1\" (%2)" +msgstr "Nelze vytvoÅ™it uživatelův adresář urÄený pro %3 %1 (%2)" + +#: export_video_dialog.cc:66 +#, fuzzy +msgid "Export Video File " +msgstr "Vyvést jako videosoubor" + +#: export_video_dialog.cc:70 +#, fuzzy +msgid "Video:" +msgstr "Video" + +#: export_video_dialog.cc:74 +msgid "Scale Video (W x H):" +msgstr "" + +#: export_video_dialog.cc:79 +msgid "Set Aspect Ratio:" +msgstr "" + +#: export_video_dialog.cc:80 +#, fuzzy +msgid "Normalize Audio" +msgstr "Normalizovat:" + +#: export_video_dialog.cc:81 +msgid "2 Pass Encoding" +msgstr "" + +#: export_video_dialog.cc:82 +msgid "Codec Optimizations:" +msgstr "" + +#: export_video_dialog.cc:84 +#, fuzzy +msgid "Deinterlace" +msgstr "VystÅ™edit ukazatele polohy" + +#: export_video_dialog.cc:85 +msgid "Use [2] B-frames (MPEG 2 or 4 only)" +msgstr "" + +#: export_video_dialog.cc:86 +msgid "Override FPS (Default is to retain FPS from the input video file):" +msgstr "" + +#: export_video_dialog.cc:87 +#, fuzzy +msgid "Include Session Metadata" +msgstr "Upravit popisná data k sezení" + +#: export_video_dialog.cc:107 +msgid "" +"No ffprobe or ffmpeg executables could be found on this system. Video Export " +"is not possible until you install those tools. See the Log window for more " +"information." +msgstr "" + +#: export_video_dialog.cc:117 +#, fuzzy +msgid "Output:" +msgstr "Výstupy" + +#: export_video_dialog.cc:127 +#, fuzzy +msgid "Input:" +msgstr "Vstupy" + +#: export_video_dialog.cc:138 +#, fuzzy +msgid "Audio:" +msgstr "Zvuk" + +#: export_video_dialog.cc:140 +#, fuzzy +msgid "Master Bus" +msgstr "Hlavní sbÄ›rnice" + +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 +#, fuzzy +msgid "Settings:" +msgstr "Cíle" + +#: export_video_dialog.cc:192 +#, fuzzy +msgid "Range:" +msgstr "Rozsah" + +#: export_video_dialog.cc:195 +#, fuzzy +msgid "Preset:" +msgstr "PÅ™ednastavení" + +#: export_video_dialog.cc:198 +#, fuzzy +msgid "Video Codec:" +msgstr "Složka s videem:" + +#: export_video_dialog.cc:201 +#, fuzzy +msgid "Video KBit/s:" +msgstr "ZaÄátek videa:" + +#: export_video_dialog.cc:204 +#, fuzzy +msgid "Audio Codec:" +msgstr "Režim zvuku:" + +#: export_video_dialog.cc:207 +#, fuzzy +msgid "Audio KBit/s:" +msgstr "Zvukové soubory" + +#: export_video_dialog.cc:210 +#, fuzzy +msgid "Audio Samplerate:" +msgstr "Vzorkovací kmitoÄet:" + +#: export_video_dialog.cc:387 +#, fuzzy +msgid "Normalizing audio" +msgstr "Normalizovat hodnoty" + +#: export_video_dialog.cc:391 +#, fuzzy +msgid "Exporting audio" +msgstr "Vyvést zvuk" + +#: export_video_dialog.cc:437 +#, fuzzy +msgid "Exporting Audio..." +msgstr "Vyvést zvuk" + +#: export_video_dialog.cc:494 +msgid "" +"Export Video: Cannot query duration of video-file, using duration from " +"timeline instead." +msgstr "" + +#: export_video_dialog.cc:523 +msgid "Export Video: No Master Out Ports to Connect for Audio Export" +msgstr "" + +#: export_video_dialog.cc:562 +msgid "Encoding Video..." +msgstr "" + +#: export_video_dialog.cc:581 +msgid "Export Video: Video input file cannot be read." +msgstr "" + +#: export_video_dialog.cc:679 +msgid "Encoding Video.. Pass 1/2" +msgstr "" + +#: export_video_dialog.cc:691 +msgid "Encoding Video.. Pass 2/2" +msgstr "" + +#: export_video_dialog.cc:779 +#, fuzzy +msgid "Transcoding failed." +msgstr "PÅ™eklady povoleny" + +#: export_video_dialog.cc:948 export_video_dialog.cc:968 +#, fuzzy +msgid "Save Exported Video File" +msgstr "Vyvést jako videosoubor" + +#: export_video_infobox.cc:30 +#, fuzzy +msgid "Video Export Info" +msgstr "Ukázat pÅ™ed uložením do souboru informace o způsobu vyvedení videa" + +#: export_video_infobox.cc:31 +msgid "Do Not Show This Dialog Again (Reset in Edit > Preferences > Video)." +msgstr "" + +#: export_video_infobox.cc:43 +#, fuzzy +msgid "Video Export Info" +msgstr "Ukázat pÅ™ed uložením do souboru informace o způsobu vyvedení videa" + +#: export_video_infobox.cc:48 +msgid "" +"Video encoding is a non-trivial task with many details.\n" +"\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" +"\n" +"Open Manual in Browser? " +msgstr "" + +#~ msgid "Connect" +#~ msgstr "Spojit" + +#~ msgid "Mixer on Top" +#~ msgstr "SměšovaÄ navrchu" + +#~ msgid "Add Audio Track" +#~ msgstr "PÅ™idat zvukovou stopu" + +#~ msgid "Add Audio Bus" +#~ msgstr "PÅ™idat zvukovou sbÄ›rnici" + +#~ msgid "Add MIDI Track" +#~ msgstr "PÅ™idat MIDI stopu" + +#~ msgid "-Inf" +#~ msgstr "-Inf" + +#~ msgid "Control surfaces" +#~ msgstr "Ovládací spínaÄe" + +#~ msgid "Use plugins' own interfaces instead of %1's" +#~ msgstr "Použít vlastní rozhraní přídavných modulů, namísto rozhraní %1" + +#~ msgid "slowest" +#~ msgstr "Nejpomalejší" + +#~ msgid "slow" +#~ msgstr "Pomalý" + +#~ msgid "fast" +#~ msgstr "Rychlý" + +#~ msgid "faster" +#~ msgstr "Rychlejší" + +#~ msgid "fastest" +#~ msgstr "Nejrychlejší" + +#~ msgid "found %1 match" +#~ msgid_plural "found %1 matches" +#~ msgstr[0] "Nalezena %1 shoda" +#~ msgstr[1] "Nalezeny %1 shody" + +#~ msgid "Search returned no results." +#~ msgstr "Hledání nevrátilo žádné výsledky." + +#~ msgid "Found %1 match" +#~ msgid_plural "Found %1 matches" +#~ msgstr[0] "Nalezena %1 shoda" +#~ msgstr[1] "Nalezeny %1 shody" + +#~ msgid "What would you like to do ?" +#~ msgstr "Co nyní chcete dÄ›lat?" + #~ msgid "Hid" #~ msgstr "Skryté" @@ -12056,9 +12944,6 @@ msgstr "Ukazovátko podrobného plátna" #~ msgid "Translations disabled" #~ msgstr "PÅ™eklady zakázány" -#~ msgid "Translations enabled" -#~ msgstr "PÅ™eklady povoleny" - #~ msgid "You must restart %1 for this to take effect." #~ msgstr "Aby se zmÄ›na projevila, musíte %1 spustit znovu." @@ -13795,9 +14680,6 @@ msgstr "Ukazovátko podrobného plátna" #~ msgid "Name for new connection:" #~ msgstr "Název nového spojení:" -#~ msgid "rec-enable change" -#~ msgstr "ZmÄ›nit stav nahrávání" - #~ msgid "mix group solo change" #~ msgstr "ZmÄ›nit stav sóla skupiny mixéru" @@ -14044,10 +14926,6 @@ msgstr "Ukazovátko podrobného plátna" #~ msgid "Software monitoring" #~ msgstr "Sledování pomocí Ardouru" -#, fuzzy -#~ msgid "External monitoring" -#~ msgstr "Sledování pomocí technického vybavení" - #, fuzzy #~ msgid "Analyze region" #~ msgstr "Normalizovat oblast" @@ -14171,9 +15049,6 @@ msgstr "Ukazovátko podrobného plátna" #~ msgid "Cleanup unused sources" #~ msgstr "Odstranit nepoužívané soubory" -#~ msgid "Toggle Editor or Mixer on Top" -#~ msgstr "Ukázat editor nebo mixér navrchu" - #~ msgid "Seamless Looping" #~ msgstr "Souvislá smyÄka" @@ -14446,14 +15321,6 @@ msgstr "Ukazovátko podrobného plátna" #~ msgid "Fast Export" #~ msgstr "Zastavit vyvedení do souboru" -#, fuzzy -#~ msgid "Audio Connections Manager" -#~ msgstr "Spojení vstupů" - -#, fuzzy -#~ msgid "MIDI Connections Manager" -#~ msgstr "Spojení vstupů" - #, fuzzy #~ msgid "Ardour" #~ msgstr "ardour: " diff --git a/gtk2_ardour/po/de.po b/gtk2_ardour/po/de.po index c9efd566d1..ae2da4c3f4 100644 --- a/gtk2_ardour/po/de.po +++ b/gtk2_ardour/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk-ardour 0.347.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-28 12:10+0200\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-07-28 15:37+0200\n" "Last-Translator: Edgar Aichinger \n" "Language-Team: German \n" @@ -449,7 +449,7 @@ msgid "Add:" msgstr "Erstelle:" #: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:111 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 msgid "Options" msgstr "Optionen" @@ -463,21 +463,21 @@ msgid "Group:" msgstr "Gruppe:" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "MIDI" @@ -662,75 +662,71 @@ msgstr "Solo" msgid "feedback" msgstr "Feedback" -#: ardour_ui.cc:186 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 msgid "Speaker Configuration" msgstr "Lautsprechereinstellung" -#: ardour_ui.cc:187 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "Thema" -#: ardour_ui.cc:188 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "Tastenkombinationen" -#: ardour_ui.cc:189 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "Globale Einstellungen" -#: ardour_ui.cc:190 ardour_ui.cc:195 +#: ardour_ui.cc:191 ardour_ui.cc:196 msgid "Add Tracks/Busses" msgstr "Spuren/Busse hinzufügen" -#: ardour_ui.cc:191 +#: ardour_ui.cc:192 msgid "About" msgstr "Ãœber..." -#: ardour_ui.cc:192 location_ui.cc:1146 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "Positionen" -#: ardour_ui.cc:193 route_params_ui.cc:58 route_params_ui.cc:606 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 msgid "Tracks and Busses" msgstr "Spuren/Busse" -#: ardour_ui.cc:194 +#: ardour_ui.cc:195 msgid "Properties" msgstr "Projekteinstellungen" -#: ardour_ui.cc:196 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "Bundle Manager" -#: ardour_ui.cc:197 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Große Zeitanzeige" -#: ardour_ui.cc:198 +#: ardour_ui.cc:199 msgid "Audio Connections" msgstr "Audio-Verbindungen" -#: ardour_ui.cc:199 +#: ardour_ui.cc:200 msgid "MIDI Connections" msgstr "MIDI-Verbindungen" -#: ardour_ui.cc:201 +#: ardour_ui.cc:202 msgid "Errors" msgstr "Fehlermeldungen" -#: ardour_ui.cc:303 -msgid "could not initialize %1." -msgstr "Konnte %1 nicht initialisieren." - -#: ardour_ui.cc:398 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "Starte Audio-Engine" -#: ardour_ui.cc:768 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "%1 ist bereit" -#: ardour_ui.cc:816 +#: ardour_ui.cc:806 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" @@ -745,23 +741,23 @@ msgstr "" "Sie können die Speicherbegrenzung mit 'ulimit -l' einsehen und normalerweise " "in %2 verändern." -#: ardour_ui.cc:833 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "Diese Meldung nicht erneut anzeigen" -#: ardour_ui.cc:875 +#: ardour_ui.cc:865 msgid "Don't quit" msgstr "Abbrechen" -#: ardour_ui.cc:876 +#: ardour_ui.cc:866 msgid "Just quit" msgstr "Beenden ohne zu speichern" -#: ardour_ui.cc:877 +#: ardour_ui.cc:867 msgid "Save and quit" msgstr "Speichern und beenden" -#: ardour_ui.cc:887 +#: ardour_ui.cc:877 msgid "" "%1 was unable to save your session.\n" "\n" @@ -775,15 +771,15 @@ msgstr "" "\n" "\"Trotzdem beenden\"." -#: ardour_ui.cc:918 +#: ardour_ui.cc:908 msgid "Please wait while %1 cleans up..." msgstr "Bitte warten Sie, während %1 aufräumt." -#: ardour_ui.cc:935 +#: ardour_ui.cc:925 msgid "Unsaved Session" msgstr "Nicht gespeichertes Projekt" -#: ardour_ui.cc:956 +#: ardour_ui.cc:946 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -801,7 +797,7 @@ msgstr "" "\n" "Wie wollen Sie vorgehen?" -#: ardour_ui.cc:959 +#: ardour_ui.cc:949 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -819,74 +815,74 @@ msgstr "" "\n" "Wie wollen Sie vorgehen?" -#: ardour_ui.cc:973 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "Frage" -#: ardour_ui.cc:1053 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "getrennt" -#: ardour_ui.cc:1060 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "JACK: %.1f kHz / %4.1f ms" -#: ardour_ui.cc:1064 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "JACK: % kHz / %4.1f ms" -#: ardour_ui.cc:1082 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 msgid "File:" msgstr "Datei:" -#: ardour_ui.cc:1086 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "BWF" -#: ardour_ui.cc:1089 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "WAV" -#: ardour_ui.cc:1092 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "WAV64" -#: ardour_ui.cc:1095 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "CAF" -#: ardour_ui.cc:1098 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "AIFF" -#: ardour_ui.cc:1101 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "iXML" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "RF64" -#: ardour_ui.cc:1112 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "32-float" -#: ardour_ui.cc:1115 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "24-int" -#: ardour_ui.cc:1118 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "16-int" -#: ardour_ui.cc:1137 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "DSP: %5.1f%%" -#: ardour_ui.cc:1156 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -897,33 +893,33 @@ msgstr "" "%% c:" "%%%" -#: ardour_ui.cc:1192 +#: ardour_ui.cc:1188 msgid "Disk: Unknown" msgstr "Disk: Unbekannt" -#: ardour_ui.cc:1194 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "Disk: 24h+" -#: ardour_ui.cc:1212 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "Disk: >24 h" -#: ardour_ui.cc:1223 +#: ardour_ui.cc:1219 #, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "Disk: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1249 +#: ardour_ui.cc:1245 #, c-format msgid "Timecode|TC: %s" msgstr "Timecode|TC: %s" -#: ardour_ui.cc:1366 ardour_ui.cc:1375 startup.cc:1054 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "Zuletzt verwendete Projekte" -#: ardour_ui.cc:1455 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" @@ -931,27 +927,27 @@ msgstr "" "%1 ist derzeit nicht mit JACK verbunden.\n" "Dadurch können keine Projekte geöffnet oder geschlossen werden." -#: ardour_ui.cc:1482 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Projekt öffnen" -#: ardour_ui.cc:1507 session_import_dialog.cc:169 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 #: session_metadata_dialog.cc:729 startup.cc:1083 msgid "%1 sessions" msgstr "%1 Projekte" -#: ardour_ui.cc:1544 +#: ardour_ui.cc:1540 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:1552 +#: ardour_ui.cc:1548 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:1558 ardour_ui.cc:1619 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -964,24 +960,24 @@ msgstr "" "%1 und starten Sie JACK mit einer größeren\n" "Anzahl Ports neu." -#: ardour_ui.cc:1593 +#: ardour_ui.cc:1589 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:1602 +#: ardour_ui.cc:1598 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:1611 +#: ardour_ui.cc:1607 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:1728 +#: ardour_ui.cc:1724 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." @@ -990,7 +986,7 @@ msgstr "" "eine oder mehrere Spur hinzu. Die geht über \"Spur/Bus hinzufügen\"\n" "im Menüpunkt Projekt." -#: ardour_ui.cc:2118 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" @@ -1000,7 +996,7 @@ msgstr "" "\n" "%1" -#: ardour_ui.cc:2120 +#: ardour_ui.cc:2116 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -1012,19 +1008,19 @@ msgstr "" "war. Sie sollten versuchen, JACK neu zu starten,\n" "neu zu verbinden, und das Projekt zu speichern." -#: ardour_ui.cc:2146 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Konnte das aktuelle Projekt nicht starten" -#: ardour_ui.cc:2226 +#: ardour_ui.cc:2222 msgid "Take Snapshot" msgstr "Schnappschuss machen" -#: ardour_ui.cc:2227 +#: ardour_ui.cc:2223 msgid "Name of new snapshot" msgstr "Name für neuen Schnappschuss" -#: ardour_ui.cc:2251 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" @@ -1032,29 +1028,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:2263 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "Bestätige das Ãœberschreiben des Schnappschusses" -#: ardour_ui.cc:2264 +#: ardour_ui.cc:2260 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:2267 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "Ãœberschreiben" -#: ardour_ui.cc:2301 +#: ardour_ui.cc:2297 msgid "Rename Session" msgstr "Projekt umbenennen" -#: ardour_ui.cc:2302 +#: ardour_ui.cc:2298 msgid "New session name" msgstr "Neuer Projektname" -#: ardour_ui.cc:2316 ardour_ui.cc:2696 ardour_ui.cc:2741 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" @@ -1062,14 +1058,14 @@ msgstr "" "Um die Kompatibilität mit verschiedenen Systemen sicher zu stellen,\n" "dürfen Projektnamen kein '%1'-Zeichen enthalten" -#: ardour_ui.cc:2324 +#: ardour_ui.cc:2320 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:2333 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" @@ -1077,19 +1073,19 @@ msgstr "" "Das Umbenennen des Projekts ist fehlgeschlagen.\n" "Dies könnte auf schwerwiegende Probleme hinweisen." -#: ardour_ui.cc:2444 +#: ardour_ui.cc:2440 msgid "Save Template" msgstr "Als Vorlage Speichern" -#: ardour_ui.cc:2445 +#: ardour_ui.cc:2441 msgid "Name for template:" msgstr "Name für Vorlage" -#: ardour_ui.cc:2446 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-Vorlage" -#: ardour_ui.cc:2484 +#: ardour_ui.cc:2480 msgid "" "This session\n" "%1\n" @@ -1099,52 +1095,52 @@ msgstr "" "%1\n" "existiert bereits. Wollen Sie sie öffnen?" -#: ardour_ui.cc:2494 +#: ardour_ui.cc:2490 msgid "Open Existing Session" msgstr "Vorhandenes Projekt öffnen" -#: ardour_ui.cc:2732 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "Es gibt kein Projekt in: \"%1\"" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "Bitte warten Sie, während %1 das Projekt lädt" -#: ardour_ui.cc:2834 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "Fehler bei der Registrierung von Ports" -#: ardour_ui.cc:2835 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "Klicken Sie auf Schließen, um es erneut zu versuchen." -#: ardour_ui.cc:2856 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Projekt \"%1 (Schnappschuss %2)\" konnte nicht geladen werden." -#: ardour_ui.cc:2862 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "Fehler beim Laden" -#: ardour_ui.cc:2863 +#: 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:2945 +#: ardour_ui.cc:2941 msgid "Could not create session in \"%1\"" msgstr "Konnte kein Projekt in \"%1\" anlegen" -#: ardour_ui.cc:3045 +#: ardour_ui.cc:3041 msgid "No files were ready for clean-up" msgstr "Keine Audiodateien zum Aufräumen vorhanden" -#: ardour_ui.cc:3049 ardour_ui.cc:3059 ardour_ui.cc:3192 ardour_ui.cc:3199 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "Aufräumen" -#: ardour_ui.cc:3050 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1156,19 +1152,19 @@ msgstr "" "sind sie wahrscheinlich noch in einem\n" "älteren Schnappschuss als Region eingebunden." -#: ardour_ui.cc:3109 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "kilo" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3108 msgid "mega" msgstr "mega" -#: ardour_ui.cc:3115 +#: ardour_ui.cc:3111 msgid "giga" msgstr "giga" -#: ardour_ui.cc:3120 +#: ardour_ui.cc:3116 msgid "" "The following file was deleted from %2,\n" "releasing %3 %4bytes of disk space" @@ -1182,7 +1178,7 @@ msgstr[1] "" "Die folgenden %1 Dateien wurden von %2\n" "gelöscht und gaben %3 %4bytes Speicherplatz frei" -#: ardour_ui.cc:3127 +#: ardour_ui.cc:3123 msgid "" "The following file was not in use and \n" "has been moved to: %2\n" @@ -1220,11 +1216,11 @@ msgstr[1] "" "\n" "%3 %4bytes Speicherplatz freigegeben werden.\n" -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3183 msgid "Are you sure you want to clean-up?" msgstr "Wollen Sie wirklich aufräumen?" -#: ardour_ui.cc:3194 +#: ardour_ui.cc:3190 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" @@ -1236,42 +1232,42 @@ msgstr "" "Nach dem Aufräumen werden alle nicht benötigten Audiodateien in den \"dead " "sounds\" Ordner verschoben." -#: ardour_ui.cc:3202 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "Aufräumdialog" -#: ardour_ui.cc:3232 +#: ardour_ui.cc:3228 msgid "Cleaned Files" msgstr "Aufgeräumte Dateien" -#: ardour_ui.cc:3249 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "gelöschte Datei" -#: ardour_ui.cc:3341 +#: ardour_ui.cc:3337 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:3345 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "Video-Server anhalten" -#: ardour_ui.cc:3346 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "Wollen Sie den Video-Server wirklich anhalten?" -#: ardour_ui.cc:3349 +#: ardour_ui.cc:3345 msgid "Yes, Stop It" msgstr "Ja, anhalten." -#: ardour_ui.cc:3375 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "Der Video-Server läuft bereits" -#: ardour_ui.cc:3377 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." @@ -1279,7 +1275,7 @@ msgstr "" "Ein externer Video-Server wurde konfiguriert, ist aber nicht erreichbar. Es " "wird keine neue Instanz gestartet." -#: ardour_ui.cc:3385 ardour_ui.cc:3475 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." @@ -1288,36 +1284,36 @@ msgstr "" "ihn vorher starten oder die Adresse in Bearbeiten -> Globale Einstellungen " "anpassen" -#: ardour_ui.cc:3409 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "Das eingestellte Dokumentenverzeichnis existiert nicht." -#: ardour_ui.cc:3414 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "Der eingestellte Video-Server ist keine ausführbare Datei." -#: ardour_ui.cc:3447 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "Kann den Videoserver nicht starten " -#: ardour_ui.cc:3456 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "Viideoserver wurde gestartet, reagiert aber nicht auf Anfragen..." -#: ardour_ui.cc:3501 editor_audio_import.cc:632 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "Konnte \"%s\" nicht öffnen." -#: ardour_ui.cc:3505 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "Es wurde keine Video-Datei ausgewählt." -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3673 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:3699 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1331,7 +1327,7 @@ msgstr "" "Die Daten konnten nicht schnell genug geschrieben\n" "werden, um die Aufnahme fortzuführen.\n" -#: ardour_ui.cc:3718 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1345,11 +1341,11 @@ msgstr "" "Die Daten konnten nicht schnell genug gelesen\n" "werden, um die Wiedergabe aufrechtzuerhalten.\n" -#: ardour_ui.cc:3758 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "Absturz-Wiederherstellung" -#: ardour_ui.cc:3759 +#: ardour_ui.cc:3762 msgid "" "This session appears to have been in the\n" "middle of recording when %1 or\n" @@ -1367,19 +1363,19 @@ msgstr "" "für Sie wiederherstellen oder sie verwerfen.\n" "Bitte entscheiden Sie, wie Sie vorgehen möchten.\n" -#: ardour_ui.cc:3771 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "Daten verwerfen" -#: ardour_ui.cc:3772 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "Daten wiederherstellen" -#: ardour_ui.cc:3792 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "Samplerate passt nicht" -#: ardour_ui.cc:3793 +#: ardour_ui.cc:3796 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" @@ -1390,23 +1386,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:3802 +#: ardour_ui.cc:3805 msgid "Do not load session" msgstr "Projekt nicht laden" -#: ardour_ui.cc:3803 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "Projekt trotzdem laden" -#: ardour_ui.cc:3826 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "Konnte Verbindung mit JACK nicht trennen" -#: ardour_ui.cc:3839 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "Konnte nicht erneut zu JACK verbinden" -#: ardour_ui.cc:4113 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1550,27 +1546,32 @@ msgstr "" "Siehe http://ardour.org/a3_features_clocks für " "Einzelheiten." -#: ardour_ui2.cc:178 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "Lautstärkekurve zurücksetzen" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "[FEHLER]:" -#: ardour_ui2.cc:180 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "[WARNUNG]:" -#: ardour_ui2.cc:182 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "[INFO]: " -#: ardour_ui2.cc:246 ardour_ui_ed.cc:377 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "Auto Return" -#: ardour_ui2.cc:248 ardour_ui_ed.cc:380 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "Folge Bearbeitungen" -#: ardour_ui2.cc:626 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1594,19 +1595,19 @@ msgstr "Mixer laden" msgid "Reload Session History" msgstr "Projekt-Aktionsverlauf laden" -#: ardour_ui_dialogs.cc:221 +#: ardour_ui_dialogs.cc:242 msgid "Don't close" msgstr "Abbrechen" -#: ardour_ui_dialogs.cc:222 +#: ardour_ui_dialogs.cc:243 msgid "Just close" msgstr "Ohne speichern schließen" -#: ardour_ui_dialogs.cc:223 +#: ardour_ui_dialogs.cc:244 msgid "Save and close" msgstr "Speichern und schließen" -#: ardour_ui_dialogs.cc:318 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" "Dieser Bildschirm ist nicht hoch genug, um das Mixerfenster darzustellen" @@ -1620,7 +1621,7 @@ msgstr "Projekt" msgid "Sync" msgstr "Sync" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Optionen" @@ -1648,15 +1649,15 @@ msgstr "Dateiformat" msgid "Sample Format" msgstr "Sampleformat" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "Eingabegeräte / Controller" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Plugins" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "Pegelanzeige" @@ -1742,7 +1743,7 @@ msgid "Stem export..." msgstr "Stems exportieren..." #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Exportieren" @@ -1754,7 +1755,7 @@ msgstr "Nicht benutzte Dateien entfernen..." msgid "Flush Wastebasket" msgstr "Müll leeren" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1472 msgid "JACK" msgstr "JACK" @@ -2008,7 +2009,7 @@ msgstr "MMC senden" msgid "Use MMC" msgstr "Benutze MMC" -#: ardour_ui_ed.cc:412 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 msgid "Send MIDI Clock" msgstr "MIDI Clock senden" @@ -2060,11 +2061,11 @@ msgstr "" msgid "Internal" msgstr "Intern" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 msgid "Enable/Disable external positional sync" msgstr "Aktiviere/Deaktiviere externe Positionssynchronisierung" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "Synchronisation ist nicht möglich: Video pull-up/down ist aktiviert" @@ -2686,12 +2687,12 @@ 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 msgid "Editor" msgstr "Editor" @@ -2721,8 +2722,8 @@ msgstr "Symmetrisch" msgid "Slow" msgstr "Langsam" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1634 -#: sfdb_ui.cc:1743 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "Schnell" @@ -3109,7 +3110,7 @@ msgid "Keep Playlist" msgstr "Wiedergabeliste behalten" #: editor.cc:3877 editor_audio_import.cc:581 editor_ops.cc:5856 -#: processor_box.cc:2003 processor_box.cc:2028 +#: sfdb_freesound_mootcher.cc:69 processor_box.cc:2003 processor_box.cc:2028 msgid "Cancel" msgstr "Abbrechen" @@ -3178,7 +3179,7 @@ msgstr "Layering" msgid "Position" msgstr "Position" -#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:788 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Anpassen" @@ -3229,7 +3230,7 @@ msgstr "MIDI Optionen" msgid "Misc Options" msgstr "Sonstiges" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "Monitoring" @@ -3966,7 +3967,7 @@ msgstr "Min:Sek" msgid "Video Monitor" msgstr "Videomonitor" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "Video" @@ -4485,31 +4486,31 @@ msgstr "Tempomarker kopieren" msgid "move tempo mark" msgstr "Tempowechsel bewegen" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "Ändere Fade-In Länge" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "Fade-Out verändern" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "Marker bewegen" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "Beim Ausführen der Timestretch-Operation trat ein Fehler auf" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 msgid "programming_error: %1" msgstr "Programmierfehler: %1" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "Neuer Bereich" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 msgid "rubberband selection" msgstr "Gummiband-Auswahl" @@ -5401,8 +5402,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:756 -#: mixer_strip.cc:1931 meter_strip.cc:312 panner_ui.cc:554 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 #: stereo_panner.cc:237 msgid "M" msgstr "M" @@ -5472,7 +5473,7 @@ msgstr "Spur/Busname" msgid "Track/Bus visible ?" msgstr "Spuren/Busse sichtbar?" -#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:326 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 #: route_time_axis.cc:2407 msgid "A" msgstr "A" @@ -5502,7 +5503,7 @@ msgstr "Aufnahme bereit" msgid "Muted" msgstr "Stumm" -#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:322 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "S" @@ -5514,7 +5515,7 @@ msgstr "Solo ein" msgid "SI" msgstr "SI" -#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 msgid "Solo Isolated" msgstr "Isoliertes Solo" @@ -5798,141 +5799,145 @@ msgid "192000Hz" msgstr "192000 Hz" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Kein" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "dreieckig" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "rechteckig" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "shaped" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: 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:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: 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:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "Nur Wiedergabe" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "Nur Aufnahme" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "seq" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "raw" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "Treiber:" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 msgid "Audio Interface:" msgstr "Audio-Schnittstelle:" -#: engine_dialog.cc:187 sfdb_ui.cc:149 sfdb_ui.cc:262 sfdb_ui.cc:267 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "Samplerate:" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "Puffergröße" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "Pufferanzahl:" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "Latenz (ca.)" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 msgid "Audio mode:" msgstr "Audio-Modus:" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "ignorieren" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "Client Timeout" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "Portanzahl" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "MIDI-Treiber:" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "Dithering:" -#: engine_dialog.cc:315 +#: 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:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "Server:" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "Eingangsgerät:" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "Ausgabegerät:" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "Hardware Eingangslatenz (Samples)" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "Samples" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "Hardware Ausgangslatenz (Samples)" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "Gerät" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "Erweitert" -#: engine_dialog.cc:643 +#: 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:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -5963,32 +5968,32 @@ msgstr "" "können Sie JACK vor dem Starten von %1 aufrufen und das entsprechende Gerät " "auswählen." -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "Keine passenden Audiogeräte." -#: engine_dialog.cc:1007 +#: 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:1077 +#: 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:1094 +#: 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:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "Es fehlen Daten zum AudioSetup-Wert von %1" -#: engine_dialog.cc:1325 +#: 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)" -#: export_channel_selector.cc:45 sfdb_ui.cc:147 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "Kanäle:" @@ -6142,9 +6147,9 @@ msgid "Folder:" msgstr "Ordner:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Durchsuchen" @@ -6305,32 +6310,50 @@ msgstr " bis" msgid "Range" msgstr "Bereiche" -#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:853 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "Programmierfehler: %1 (%2)" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +#, fuzzy +msgid "%1" +msgstr "%" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "-inf" -#: gain_meter.cc:112 gain_meter.cc:910 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "Fader Automationsmodus" -#: gain_meter.cc:113 gain_meter.cc:911 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "Fader-Automationstyp" -#: gain_meter.cc:122 gain_meter.cc:792 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "Abs" -#: gain_meter.cc:759 mixer_strip.cc:1948 meter_strip.cc:329 panner_ui.cc:557 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 #: route_time_axis.cc:2411 msgid "P" msgstr "P" -#: gain_meter.cc:762 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "T" -#: gain_meter.cc:765 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "W" @@ -6606,7 +6629,7 @@ msgstr[1] "%1 Samples" msgid "Reset" msgstr "Zurücksetzen" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1762 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "Programmierfehler: %1 (%2)" @@ -6778,19 +6801,19 @@ msgstr "" "Momentan läßt sich das Projekt nicht speichern, da alle Informationen\n" "über Verbindungen verloren gehen würden.\n" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr " (kompiliert mit Version " -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr " und GCC Version" -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "Copyright (C) 1999-2012 Paul Davis" -#: main.cc:505 +#: main.cc:501 msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" @@ -6798,30 +6821,34 @@ msgstr "" "Einige Teile Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" -#: main.cc:507 +#: main.cc:503 msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "%1 wird Ihnen ohne jegliche Gewährleistung" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" "für allgemeine oder spezielle Gebrauchstauglichkeit zur Verfügung gestellt." -#: main.cc:509 +#: main.cc:505 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:510 +#: main.cc:506 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:519 +#: main.cc:513 +msgid "could not initialize %1." +msgstr "Konnte %1 nicht initialisieren." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "Kann die SIGPIPE Fehlerbehandlung nicht installieren" -#: main.cc:525 +#: main.cc:528 msgid "could not create %1 GUI" msgstr "konnte das %1 GUI nicht erstellen" @@ -6829,7 +6856,7 @@ msgstr "konnte das %1 GUI nicht erstellen" msgid "Display delta to edit cursor" msgstr "Zeige Abstand zu Arbeitspunkt" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "MarkerText" @@ -7310,7 +7337,7 @@ msgstr "Einen weiteren Ordner für die Suche auswählen" msgid "Missing Plugins" msgstr "Fehlende Plugins" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "OK" @@ -7387,7 +7414,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:1873 +#: rc_option_editor.cc:1881 msgid "Comments" msgstr "Kommentare" @@ -7435,11 +7462,11 @@ msgstr "iso" msgid "Mix group" msgstr "Bearbeitungsgruppe" -#: mixer_strip.cc:351 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 msgid "Phase Invert" msgstr "Phaseninvertierung" -#: mixer_strip.cc:352 rc_option_editor.cc:1871 route_ui.cc:1218 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 msgid "Solo Safe" msgstr "Solo sperren" @@ -7447,7 +7474,7 @@ msgstr "Solo sperren" msgid "Group" msgstr "Gruppe" -#: mixer_strip.cc:356 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 msgid "Meter Point" msgstr "Abgreifpunkt der Pegelanzeige" @@ -7596,15 +7623,15 @@ msgstr "Pre-Fader" msgid "Post-fader" msgstr "Post-Fader" -#: mixer_strip.cc:2166 meter_strip.cc:688 +#: mixer_strip.cc:2166 meter_strip.cc:728 msgid "Change all in Group to %1" msgstr "Alle in Gruppe zu %1 ändern" -#: mixer_strip.cc:2168 meter_strip.cc:690 +#: mixer_strip.cc:2168 meter_strip.cc:730 msgid "Change all to %1" msgstr "Alle zu %1 ändern" -#: mixer_strip.cc:2170 meter_strip.cc:692 +#: mixer_strip.cc:2170 meter_strip.cc:732 msgid "Change same track-type to %1" msgstr "Gleichen Spurtyp zu %1 ändern" @@ -7621,6 +7648,28 @@ msgstr "-alle-" msgid "Strips" msgstr "Spur" +#: meter_strip.cc:764 +#, fuzzy +msgid "Variable height" +msgstr "Höhe der Zeitleiste" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "Kurz" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + #: meter_patterns.cc:81 msgid "Peak" msgstr "Spitzenwert" @@ -8434,46 +8483,46 @@ msgstr "Messe..." msgid "Port Insert " msgstr "Port Insert " -#: port_matrix.cc:325 port_matrix.cc:344 +#: port_matrix.cc:331 port_matrix.cc:357 msgid "Sources" msgstr "Quellen" -#: port_matrix.cc:326 port_matrix.cc:345 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "Ziele" -#: port_matrix.cc:421 port_matrix.cc:429 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "Füge %s %s hinzu" -#: port_matrix.cc:437 +#: port_matrix.cc:456 #, c-format msgid "Rename '%s'..." msgstr "Benenne '%s' um..." -#: port_matrix.cc:453 +#: port_matrix.cc:472 msgid "Remove all" msgstr "Alle löschen" -#: port_matrix.cc:473 port_matrix.cc:485 +#: port_matrix.cc:492 port_matrix.cc:504 #, c-format msgid "%s all" msgstr "%s alle" -#: port_matrix.cc:508 +#: port_matrix.cc:527 msgid "Rescan" msgstr "Aktualisieren" -#: port_matrix.cc:510 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "Individuelle Ports anzeigen" -#: port_matrix.cc:516 +#: port_matrix.cc:535 msgid "Flip" msgstr "Drehen" -#: port_matrix.cc:704 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." @@ -8481,33 +8530,35 @@ msgstr "" "Hier kann kein Port hinzugefügt werden, da der erste Prozessor der Spur/des " "Busses die neue Portanzahl nicht unterstützt." -#: port_matrix.cc:707 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "Kann Port nicht hinzufügen" -#: port_matrix.cc:729 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "Entfernen des Ports nicht erlaubt" -#: port_matrix.cc:730 +#: port_matrix.cc:749 +#, fuzzy msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" "Der Port kann nicht entfernt werden, da das erste Plugin der Spur die neue " "Portanzahl nicht unterstützt." -#: port_matrix.cc:947 +#: port_matrix.cc:966 #, c-format msgid "Remove '%s'" msgstr "Lösche '%s'" -#: port_matrix.cc:962 +#: port_matrix.cc:981 #, c-format msgid "%s all from '%s'" msgstr "alle von '%s' %s" -#: port_matrix.cc:1028 +#: port_matrix.cc:1047 msgid "channel" msgstr "Kanal" @@ -8549,7 +8600,7 @@ msgstr "Alle Regler verbergen" msgid "on" msgstr "an" -#: processor_box.cc:465 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "Aus" @@ -9215,92 +9266,96 @@ msgstr "Verschiebe relevante Automationen mit Region" msgid "Show meters on tracks in the editor" msgstr "Aktiviere Pegelanzeigen im Editor" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "Regionen der aktiven Bearbeitungsgruppen werden gemeinsam bearbeitet" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "immer, wenn sie sich auf der Zeitachse überlappen" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "nur bei identischer Länge, Position und Herkunft" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "Gummiband-Auswahl an Raster ausrichten" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 msgid "Show waveforms in regions" msgstr "Zeige Wellenformen in Regionen" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 msgid "Show gain envelopes in audio regions" msgstr "Zeige Lautstärkekurven in Regionen an" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "in allen Modi" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "nur im Region-Gain Modus" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 msgid "Waveform scale" msgstr "Wellenformskalierung" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "Linear" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "Logarithmisch" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 msgid "Waveform shape" msgstr "Wellenform Anzeigeart" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 msgid "traditional" msgstr "Traditionell" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 msgid "rectified" msgstr "Rectified" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "Zeige bei Aufnahmen die Wellenformen des aufgenommenen Audiomaterials" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "Zeige Zoom Toolbar" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "Färbe Regionen in der Spurfarbe ein" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 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:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "Einheitliche Reihenfolge der Spuren im Editor und Mixer" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "Synchronisiere Auswahl der Spuren im Editor und Mixer" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 msgid "Name new markers" msgstr "Neue Marker benennen" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9312,241 +9367,241 @@ msgstr "" "\n" "Marker können jederzeit per Rechtsklick umbenannt werden" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 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:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "Pufferung" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 msgid "Record monitoring handled by" msgstr "Aufnahmemonitoring wird verwaltet von" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 msgid "ardour" msgstr "Ardour" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 msgid "audio hardware" msgstr "Audiohardware" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 msgid "Tape machine mode" msgstr "Bandmaschinen-Modus" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "Verbindung von Spuren und Bussen" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "Master/Monitor-Busse automatisch verbinden" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 msgid "Connect track inputs" msgstr "Verbinde Spureingänge" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 msgid "automatically to physical inputs" msgstr "automatisch mit Audioeingängen" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "manuell" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "Verbinde Spur- und Busausgänge" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 msgid "automatically to physical outputs" msgstr "automatisch mit Audioausgängen" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 msgid "automatically to master bus" msgstr "automatisch mit dem Master-Bus" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 msgid "Denormals" msgstr "Denormals" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "Nutze DC bias als Schutz vor Denormals" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "Umgang des Prozessors mit Denormals" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "nicht behandeln" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "Benutze FlushToZero" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "Benutze DenormalsAreZero" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "Benutze FlushToZero & DenormalsAreZero" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 msgid "Silence plugins when the transport is stopped" msgstr "Deaktiviere Plugins, wenn der Transport gestoppt ist." -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "Neue Plugins sind aktiv" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "Audiodaten automatisch analysieren" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "Fehlende Kanäle von Regionen ersetzen" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "Solo / Mute" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "Solo-in-Place Mute Dämpfung (dB)" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "Solo-Schalter arbeiten als AFL/PFL" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 msgid "Listen Position" msgstr "Abhörpunkt" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 msgid "after-fader (AFL)" msgstr "After-Fader (AFL)" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 msgid "pre-fader (PFL)" msgstr "Pre-Fader (PFL)" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "Abgreifpunkt der PFL Signale" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 msgid "before pre-fader processors" msgstr "Vor den Pre-Fader Prozessoren" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "Pre-Fader, aber nach den Prozessoren" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "Abgreifpunkt der AFL Signale" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 msgid "immediately post-fader" msgstr "Direkt nach dem Fader" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 msgid "after post-fader processors (before pan)" msgstr "Nach den Post-Fader Prozessoren (vor Pan)" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "Exclusives Solo" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "Solo auf anderen Kanälen als Mute anzeigen" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "Solo ist trotz Mute hörbar" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "Standardeinstellungen für Mute von Spuren / Bussen" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "Mute schaltet Pre-Fader Sends stumm" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "Mute schaltet Post-Fader Sends stumm" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 msgid "Mute affects control outputs" msgstr "Mute schaltet Abhörausgänge stumm" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "Mute schaltet Hauptausgänge stumm" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "Sende MIDI Time Code" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 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:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "MIDI Machine Control Commands empfangen" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "MIDI Machine Control Commands senden" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 msgid "Send MIDI control feedback" msgstr "MIDI Control Feedback senden" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "ID des eingehenden MMC-Geräts" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "ID des ausgehenden MMC-Geräts" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "Erstmaliger Programmwechsel" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "Erste(s) MIDI Bank/Programm als 0 anzeigen" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "Periodische MIDI Nachrichten nie anzeigen (MTC, MIDI Clock)" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 msgid "Sound MIDI notes as they are selected" msgstr "MIDI Noten ertönen bei Auswahl" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 msgid "User interaction" msgstr "Benutzerinteraktion" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" @@ -9556,171 +9611,171 @@ msgstr "" " (erfordert Neustart von %1)\n" " (falls für Ihre gewünschte Sprache verfügbar)" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "Tastatur" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 msgid "Control surface remote ID" msgstr "Remote ID des Eingabegeräts" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "vom Benutzer festgelegt" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "folgt Reihenfolge im Mixer" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "folgt Reihenfolge im Editor" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1927 rc_option_editor.cc:1943 -#: rc_option_editor.cc:1959 rc_option_editor.cc:1973 rc_option_editor.cc:1987 -#: rc_option_editor.cc:1989 +#: 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 msgid "Preferences|GUI" msgstr "GUI" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "Mouseover-Effekt über verschiedenen Anzeigen" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "Zeige Tooltips, wenn die Maus über einem Element schwebt" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "GUI" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "Auffrischen der Transport-Zeitanzeige alle 40ms statt 100ms" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 msgid "Mixer Strip" msgstr "Anzeige im Channel strip" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 msgid "Use narrow strips in the mixer by default" msgstr "Standardmäßig schmale Mixer-Kanalzüge verwenden" -#: rc_option_editor.cc:1898 +#: rc_option_editor.cc:1906 msgid "Peak hold time" msgstr "Haltezeit für Spitzenwert" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 msgid "short" msgstr "Kurz" -#: rc_option_editor.cc:1905 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "Mittel" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "Lange" -#: rc_option_editor.cc:1912 +#: rc_option_editor.cc:1920 msgid "DPM fall-off" msgstr "Abfall der digitalen Pegelanzeige" -#: rc_option_editor.cc:1918 +#: rc_option_editor.cc:1926 msgid "slowest [6.6dB/sec]" msgstr "am langsamsten [6.6dB/sec]" -#: rc_option_editor.cc:1919 +#: rc_option_editor.cc:1927 msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" msgstr "langsam [8.6dB/sec] (BBC PPM, EBU PPM)" -#: rc_option_editor.cc:1920 +#: rc_option_editor.cc:1928 msgid "slowish [12.0dB/sec] (DIN)" msgstr "etwas langsam [12.0dB/sec] (DIN)" -#: rc_option_editor.cc:1921 +#: rc_option_editor.cc:1929 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:1922 +#: rc_option_editor.cc:1930 msgid "medium [20dB/sec]" msgstr "mittel [20dB/sec]" -#: rc_option_editor.cc:1923 +#: rc_option_editor.cc:1931 msgid "fast [32dB/sec]" msgstr "schnell [32dB/sec]" -#: rc_option_editor.cc:1924 +#: rc_option_editor.cc:1932 msgid "faster [46dB/sec]" msgstr "schneller [46dB/sec]" -#: rc_option_editor.cc:1925 +#: rc_option_editor.cc:1933 msgid "fastest [70dB/sec]" msgstr "am schnellsten [70dB/sec]" -#: rc_option_editor.cc:1931 +#: rc_option_editor.cc:1939 msgid "Meter line-up level; 0dBu" msgstr "Ausrichtung der Pegelanzeige; 0dBu" -#: rc_option_editor.cc:1936 rc_option_editor.cc:1952 +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" msgstr "-24dBFS (SMPTE US: 4dBu = -20dBFS)" -#: rc_option_editor.cc:1937 rc_option_editor.cc:1953 +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 msgid "-20dBFS (SMPTE RP.0155)" msgstr "-20dBFS (SMPTE RP.0155)" -#: rc_option_editor.cc:1938 rc_option_editor.cc:1954 +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 msgid "-18dBFS (EBU, BBC)" msgstr "-18dBFS (EBU, BBC)" -#: rc_option_editor.cc:1939 rc_option_editor.cc:1955 +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 msgid "-15dBFS (DIN)" msgstr "-15dBFS (DIN)" -#: rc_option_editor.cc:1941 +#: rc_option_editor.cc:1949 msgid "" "Configure meter-marks and color-knee point for dBFS scale DPM, set reference " "level for IEC1/Nordic, IEC2 PPM and VU meter." msgstr "" -"Konfiguriere Skalierung und Farbschwellwert für DPM mit dBFS-Skala, setze" -"Referenzpegel für IEC1/Nordisch, IEC2 PPM und VU Pegelanzeigen." +"Konfiguriere Skalierung und Farbschwellwert für DPM mit dBFS-Skala, " +"setzeReferenzpegel für IEC1/Nordisch, IEC2 PPM und VU Pegelanzeigen." -#: rc_option_editor.cc:1947 +#: rc_option_editor.cc:1955 msgid "IEC1/DIN Meter line-up level; 0dBu" msgstr "Ausrichtung der IEC1/DIN Pegelanzeige; 0dBu" -#: rc_option_editor.cc:1957 +#: rc_option_editor.cc:1965 msgid "Reference level for IEC1/DIN meter." msgstr "Referenzpegel für IEC1/DIN Pegelanzeige." -#: rc_option_editor.cc:1963 +#: rc_option_editor.cc:1971 msgid "VU Meter standard" msgstr "Standard für VU-Pegelanzeige" -#: rc_option_editor.cc:1968 +#: rc_option_editor.cc:1976 msgid "0VU = -2dBu (France)" msgstr "0VU = -2dBu (Frankreich)" -#: rc_option_editor.cc:1969 +#: rc_option_editor.cc:1977 msgid "0VU = 0dBu (North America, Australia)" msgstr "0VU = 0dBu (Nordamerika, Australien)" -#: rc_option_editor.cc:1970 +#: rc_option_editor.cc:1978 msgid "0VU = +4dBu (standard)" msgstr "0VU = +4dBu (Standard)" -#: rc_option_editor.cc:1971 +#: rc_option_editor.cc:1979 msgid "0VU = +8dBu" msgstr "0VU = +8dBu" -#: rc_option_editor.cc:1977 +#: rc_option_editor.cc:1985 msgid "Peak threshold [dBFS]" msgstr "Schwelle für Spitzenwert [dBFS]" -#: rc_option_editor.cc:1985 +#: rc_option_editor.cc:1993 msgid "" "Specify the audio signal level in dbFS at and above which the meter-peak " "indicator will flash red." @@ -9728,7 +9783,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:1992 +#: rc_option_editor.cc:2000 msgid "LED meter style" msgstr "Pegelanzeigen im LED-Stil" @@ -9740,11 +9795,11 @@ msgstr "Diese Region Vorhören" msgid "Position:" msgstr "Position:" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Ende:" -#: region_editor.cc:92 sfdb_ui.cc:141 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "Länge:" @@ -10978,246 +11033,246 @@ msgstr "Namensfelder" msgid "Track Name" msgstr "Spurname" -#: sfdb_ui.cc:88 sfdb_ui.cc:108 sfdb_ui.cc:117 +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 msgid "as new tracks" msgstr "als neue Spuren" -#: sfdb_ui.cc:90 sfdb_ui.cc:110 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 msgid "to selected tracks" msgstr "zu ausgewählten Spuren" -#: sfdb_ui.cc:92 sfdb_ui.cc:112 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to region list" msgstr "zur Liste der Regionen" -#: sfdb_ui.cc:94 sfdb_ui.cc:114 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "as new tape tracks" msgstr "als neue Band-Spuren" -#: sfdb_ui.cc:98 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "Programmierfehler: unbekannter Importmodus %1" -#: sfdb_ui.cc:125 +#: sfdb_ui.cc:123 msgid "Auto-play" msgstr "Auto-Play" -#: sfdb_ui.cc:131 sfdb_ui.cc:238 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 msgid "Sound File Information" msgstr "Eigenschaften der Audiodatei" -#: sfdb_ui.cc:143 +#: sfdb_ui.cc:141 msgid "Timestamp:" msgstr "Zeitstempel:" -#: sfdb_ui.cc:145 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "Format:" -#: sfdb_ui.cc:184 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "Stichworte:" -#: sfdb_ui.cc:321 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "Vorhören von MIDI-Dateien wird noch nicht unterstützt" -#: sfdb_ui.cc:328 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Konnte Datei nicht lesen: %1 (%2)." -#: sfdb_ui.cc:351 +#: sfdb_ui.cc:349 msgid "Could not access soundfile: " msgstr "Konnte auf Audiodatei nicht zugreifen: " -#: sfdb_ui.cc:405 +#: sfdb_ui.cc:403 msgid "SoundFileBox: Could not tokenize string: " msgstr "SoundFileBox: Konnte Zeichenkette nicht zerlegen: " -#: sfdb_ui.cc:425 sfdb_ui.cc:427 +#: sfdb_ui.cc:423 sfdb_ui.cc:425 msgid "Search" msgstr "Suchen" -#: sfdb_ui.cc:451 +#: sfdb_ui.cc:449 msgid "Audio and MIDI files" msgstr "Audio- und MIDIdateien" -#: sfdb_ui.cc:454 +#: sfdb_ui.cc:452 msgid "Audio files" msgstr "Audiodateien" -#: sfdb_ui.cc:457 +#: sfdb_ui.cc:455 msgid "MIDI files" msgstr "MIDI-Dateien" -#: sfdb_ui.cc:460 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "Alle Dateien" -#: sfdb_ui.cc:479 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "Durchsuchen" -#: sfdb_ui.cc:508 +#: sfdb_ui.cc:506 msgid "Paths" msgstr "Pfade" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "Stichwortsuche" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 msgid "Sort:" msgstr "Sortierung:" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 msgid "Longest" msgstr "Längste" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 msgid "Shortest" msgstr "Kürzeste" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 msgid "Newest" msgstr "Neueste" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "Ältestes" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "Am häufigsten heruntergeladen" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 msgid "Least downloaded" msgstr "Am seltensten heruntergeladen" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "Bestbewertetes" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "Am schlechtesten bewertetes" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "Mehr" -#: sfdb_ui.cc:559 +#: sfdb_ui.cc:555 msgid "Similar" msgstr "Ähnlich" -#: sfdb_ui.cc:571 +#: sfdb_ui.cc:567 msgid "ID" msgstr "ID" -#: sfdb_ui.cc:572 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 msgid "Filename" msgstr "Dateiname" -#: sfdb_ui.cc:574 +#: sfdb_ui.cc:570 msgid "Duration" msgstr "Dauer" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:571 msgid "Size" msgstr "Größe" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:572 msgid "Samplerate" msgstr "Samplerate" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:573 msgid "License" msgstr "Lizenz" -#: sfdb_ui.cc:595 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "Freesound durchsuchen" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" "Drücken Sie hier, um die angewählten Dateien zu importieren und dieses " "Fenster zu schließen" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" "Drücken Sie hier, um die angewählten Dateien zu importieren und dieses " "Fenster offen zu lassen" -#: sfdb_ui.cc:618 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "" "Drücken Sie hier, um dieses Fenster zu schließen, ohne Dateien zu importieren" -#: sfdb_ui.cc:814 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "SoundFileBrowser: Konnte Zeichenkete nicht zerlegen:" -#: sfdb_ui.cc:1014 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "%1 weitere Seite von 100 Ergebnissen verfügbar" msgstr[1] "%1 weitere Seiten von 100 Ergebnissen verfügbar" -#: sfdb_ui.cc:1019 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "Keine weiteren Ergebnisse verfügbar" -#: sfdb_ui.cc:1083 +#: sfdb_ui.cc:1078 msgid "B" msgstr "B" -#: sfdb_ui.cc:1085 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "kB" -#: sfdb_ui.cc:1087 sfdb_ui.cc:1089 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "MB" -#: sfdb_ui.cc:1091 +#: sfdb_ui.cc:1086 msgid "GB" msgstr "GB" -#: sfdb_ui.cc:1305 sfdb_ui.cc:1613 sfdb_ui.cc:1663 sfdb_ui.cc:1681 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "eine Spur pro Datei" -#: sfdb_ui.cc:1308 sfdb_ui.cc:1664 sfdb_ui.cc:1682 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "eine Spur pro Kanal" -#: sfdb_ui.cc:1316 sfdb_ui.cc:1666 sfdb_ui.cc:1683 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 msgid "sequence files" msgstr "Dateien aneinanderreihen" -#: sfdb_ui.cc:1319 sfdb_ui.cc:1671 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "Alle Dateien in eine Spur" -#: sfdb_ui.cc:1320 sfdb_ui.cc:1665 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 msgid "merge files" msgstr "Dateien zusammenfügen" -#: sfdb_ui.cc:1326 sfdb_ui.cc:1668 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 msgid "one region per file" msgstr "eine Region pro Datei" -#: sfdb_ui.cc:1329 sfdb_ui.cc:1669 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 msgid "one region per channel" msgstr "eine Region pro Kanal" -#: sfdb_ui.cc:1334 sfdb_ui.cc:1670 sfdb_ui.cc:1684 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 msgid "all files in one region" msgstr "alle Dateien in einer Region" -#: sfdb_ui.cc:1401 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" @@ -11225,55 +11280,55 @@ msgstr "" "Eine oder mehrere der ausgewählten Dateien\n" "können von %1 nicht verwendet werden" -#: sfdb_ui.cc:1541 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "Kopiere Dateien in Projekt" -#: sfdb_ui.cc:1558 sfdb_ui.cc:1721 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 msgid "file timestamp" msgstr "Zeitstempel" -#: sfdb_ui.cc:1559 sfdb_ui.cc:1723 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 msgid "edit point" msgstr "Arbeitspunkt" -#: sfdb_ui.cc:1560 sfdb_ui.cc:1725 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 msgid "playhead" msgstr "Positionszeiger" -#: sfdb_ui.cc:1561 +#: sfdb_ui.cc:1554 msgid "session start" msgstr "Projektanfang" -#: sfdb_ui.cc:1566 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "Füge Dateien hinzu als..." -#: sfdb_ui.cc:1588 +#: sfdb_ui.cc:1581 msgid "Insert at" msgstr "Einfügen bei" -#: sfdb_ui.cc:1601 +#: sfdb_ui.cc:1594 msgid "Mapping" msgstr "Zuordnung" -#: sfdb_ui.cc:1619 +#: sfdb_ui.cc:1612 msgid "Conversion quality" msgstr "Konvertierungsqualität:" -#: sfdb_ui.cc:1631 sfdb_ui.cc:1737 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "bestmöglich" -#: sfdb_ui.cc:1632 sfdb_ui.cc:1739 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "gut" -#: sfdb_ui.cc:1633 sfdb_ui.cc:1741 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "schnell" -#: sfdb_ui.cc:1635 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "Schnellstmöglich" @@ -12338,47 +12393,47 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "Ausführlicher Canvas-Cursor" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 msgid "Set Video Track" msgstr "Videospur-Einstellungen" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 msgid "Launch External Video Monitor" msgstr "Externen Videomonitor starten" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "Projekt-Framerate an Video-Framerate anpassen" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "docroot neu laden" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "VideoServerIndex" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 msgid "Video files" msgstr "Videodateien" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 msgid "Video Information" msgstr "Videoinformationen" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 msgid "Start:" msgstr "Start:" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 msgid "Frame rate:" msgstr "Framerate:" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "Seitenverhältnis:" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr " %1 fps" @@ -12386,7 +12441,7 @@ msgstr " %1 fps" msgid "Export Successful: %1" msgstr "Export erfolgreich: %1" -#: video_timeline.cc:468 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" @@ -12395,7 +12450,7 @@ msgstr "" "den Videoserver lesbar? Ist die docroot passend eingestellt? Ist die Datei " "tatsächlich eine Videodatei?" -#: video_timeline.cc:506 +#: video_timeline.cc:507 msgid "" "Failed to set session-framerate: '%1' does not have a corresponding option " "setting in %2." @@ -12403,7 +12458,7 @@ msgstr "" "Setzen der Projektframerate fehlgeschlagen: '%1' hat keine entsprechende " "Einstellungsoption in %2." -#: video_timeline.cc:514 +#: video_timeline.cc:515 msgid "" "Video file's framerate is not equal to %1 session timecode's framerate: '%2' " "vs '%3'" @@ -12411,7 +12466,7 @@ msgstr "" "Framerate der Videodatei entspricht nicht der Framerate des Timecodes im %1-" "Projekt: '%2' vs. '%3'" -#: video_timeline.cc:587 +#: video_timeline.cc:588 msgid "" "Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " "means that the video server was not started by ardour and uses a different " @@ -12421,7 +12476,7 @@ msgstr "" "Das bedeutet üblicherweise, dass der Videoserver nicht von Ardour gestartet " "wurde und einen anderen Dokumenten-Wurzelpfad verwendet." -#: video_timeline.cc:736 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12438,7 +12493,7 @@ msgstr "" msgid "Video Monitor: File Not Found." msgstr "Videomonitor: Datei nicht gefunden." -#: transcode_ffmpeg.cc:72 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" @@ -12468,45 +12523,46 @@ msgstr "" "wir, symbolische Links von ffmpeg zu ffmpeg_harvid und von ffprobe zu " "ffprobe_harvid anzulegen.\n" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 msgid "Transcode/Import Video File " msgstr "Videodatei transkodieren/importieren" -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 msgid "Output File:" msgstr "Ausgabedatei:" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "Abbruch" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 msgid "Height = " msgstr "Höhe =" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "Manuelle Eingabe" -#: transcode_video_dialog.cc:69 export_video_dialog.cc:88 +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "Debug-Modus: gibt die ffmpeg-Befehlszeile und -Ausgabe an stdout aus." -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 msgid "File Information" msgstr "Dateiinformationen" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 +#, fuzzy msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" "Die Programme ffprobe oder ffmpeg konnten auf diesem System nicht gefunden " "werden. Bis diese Werkzeuge installiert sind, ist Videoimport nicht möglich. " "Sehen Sie im Log-Fenster nach weiteren Informationen." -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." @@ -12515,96 +12571,96 @@ msgstr "" "gültige Videodatei, oder enthält einen nicht unterstützten Videocodec bzw. " "ein nicht unterstütztes Videoformat." -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "FPS:" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 msgid "Duration:" msgstr "Dauer:" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "Codec:" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "Geometrie:" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 msgid "??" msgstr "??" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 msgid "Import Settings" msgstr "Importeinstellungen" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "Video nicht importieren" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "Referenz von momentaner Position" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 msgid "Import/Transcode Video to Session" msgstr "Video ins Projekt transkodieren/importieren" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "Video skalieren: Breite = " -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 msgid "Original Width" msgstr "Originalbreite" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "Bitrate (KBit/s):" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 msgid "Extract Audio:" msgstr "Audio extrahieren:" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 msgid "Extracting Audio.." msgstr "Extrahiere Audio..." -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "Extrahieren des Audio gescheitert." -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "Transkodiere Video.." -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 msgid "Transcoding Failed." msgstr "Transkodieren gescheitert" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 msgid "Save Transcoded Video File" msgstr "Sichere transkodierte Videodatei" -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "Video-Server starten" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "Server-Datei:" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 msgid "Server Docroot:" msgstr "Server Docroot:" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" "Diesen Dialog nicht mehr anzeigen (kann in Einstellungen geändert werden)." -#: video_server_dialog.cc:91 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " "with the %1 releases from ardour.org, alternatively you can download it from " @@ -12615,19 +12671,19 @@ msgstr "" "alternativ auch von http://x42.github.com/harvid/ herunterladen oder über " "das Paketmanagement Ihrer Distribution beziehen." -#: video_server_dialog.cc:119 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "Eingehende Adresse:" -#: video_server_dialog.cc:124 +#: video_server_dialog.cc:125 msgid "Listen Port:" msgstr "Eingehender Port:" -#: video_server_dialog.cc:129 +#: video_server_dialog.cc:130 msgid "Cache Size:" msgstr "Cachegröße" -#: video_server_dialog.cc:135 +#: video_server_dialog.cc:136 msgid "" "%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" @@ -12638,19 +12694,19 @@ msgstr "" "nicht erreichbar.\n" "Möchten Sie, daß Ardour \"harvid\" auf diesem Computer startet?" -#: video_server_dialog.cc:175 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "Setze Video-Serverpfad" -#: video_server_dialog.cc:195 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "Server-docroot" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "Ziel ist ausserhalb der docroot des Videoservers." -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" @@ -12659,150 +12715,151 @@ msgstr "" "Videoservers. Die Datei wird für den Videoserver nicht lesbar sein. Wollen " "Sie wirklich fortfahren?" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "Fortfahren" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 msgid "Confirm Overwrite" msgstr "Bestätige das Ãœberschreiben" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "" "Eine Datei mit diesem Namen existiert bereits. Wollen Sie sie überschreiben?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 msgid "Cannot create video folder \"%1\" (%2)" msgstr "Kann Videoordner \"%1\" nicht erstellen (%2)" -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 msgid "Export Video File " msgstr "Exportiere Videodatei" -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 msgid "Video:" msgstr "Video:" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "Skaliere Video (W x H):" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "Seitenverhältnis:" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 msgid "Normalize Audio" msgstr "Audio normalisieren" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "Enkodiere in 2 Durchgängen" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "Codec-Optimierungen:" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 msgid "Deinterlace" msgstr "Deinterlacing anwenden" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "Verwende [2] B-frames (nur MPEG 2 oder 4)" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "FPS erzwingen (Voreinstellung: FPS der Videodatei wird beibehalten):" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 msgid "Include Session Metadata" msgstr "Projekt-Metadaten verwenden" -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 +#, fuzzy msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" "Die Programme ffprobe oder ffmpeg konnten auf diesem System nicht gefunden " "werden. Bis diese Werkzeuge installiert sind, ist Videoexport nicht möglich. " "Sehen Sie im Log-Fenster nach weiteren Informationen." -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 msgid "Output:" msgstr "Ausgang:" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 msgid "Input:" msgstr "Eingang:" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 msgid "Audio:" msgstr "Audio:" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 msgid "Master Bus" msgstr "Masterbus" -#: export_video_dialog.cc:144 +#: export_video_dialog.cc:145 msgid "from the %1 session's start to the session's end" msgstr "von %1 Projektbeginn bis -ende" -#: export_video_dialog.cc:148 +#: export_video_dialog.cc:149 msgid "from 00:00:00:00 to the video's end" msgstr "von 00:00:00:00 bis Videoende" -#: export_video_dialog.cc:150 +#: export_video_dialog.cc:151 msgid "from the video's start to the video's end" msgstr "von Videostart bis Videoende" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:184 msgid "Settings:" msgstr "Einstellungen:" -#: export_video_dialog.cc:191 +#: export_video_dialog.cc:192 msgid "Range:" msgstr "Bereich:" -#: export_video_dialog.cc:194 +#: export_video_dialog.cc:195 msgid "Preset:" msgstr "Preset:" -#: export_video_dialog.cc:197 +#: export_video_dialog.cc:198 msgid "Video Codec:" msgstr "Videocodec:" -#: export_video_dialog.cc:200 +#: export_video_dialog.cc:201 msgid "Video KBit/s:" msgstr "Video KBit/s:" -#: export_video_dialog.cc:203 +#: export_video_dialog.cc:204 msgid "Audio Codec:" msgstr "Audiocodec:" -#: export_video_dialog.cc:206 +#: export_video_dialog.cc:207 msgid "Audio KBit/s:" msgstr "Audio KBit/s:" -#: export_video_dialog.cc:209 +#: export_video_dialog.cc:210 msgid "Audio Samplerate:" msgstr "Audiosamplerate:" -#: export_video_dialog.cc:386 +#: export_video_dialog.cc:387 msgid "Normalizing audio" msgstr "Audio normalisieren" -#: export_video_dialog.cc:390 +#: export_video_dialog.cc:391 msgid "Exporting audio" msgstr "Exportiere Audio" -#: export_video_dialog.cc:436 +#: export_video_dialog.cc:437 msgid "Exporting Audio..." msgstr "Exportiere Audio..." -#: export_video_dialog.cc:493 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." @@ -12810,33 +12867,33 @@ msgstr "" "Exportiere Video: Kann die Dauer der Videodatei nicht eruieren, verwende " "statt dessen die Dauer aus der Zeitleiste." -#: export_video_dialog.cc:522 +#: export_video_dialog.cc:523 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:561 +#: export_video_dialog.cc:562 msgid "Encoding Video..." msgstr "Enkodiere Video..." -#: export_video_dialog.cc:580 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "Exportiere Video: Die Videoquelldatei kann nicht gelesen werden." -#: export_video_dialog.cc:678 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "Kodiere Video.. Durchgang 1/2" -#: export_video_dialog.cc:690 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "Kodiere Video.. Durchgang 2/2" -#: export_video_dialog.cc:778 +#: export_video_dialog.cc:779 msgid "Transcoding failed." msgstr "Transkodieren fehlgeschlagen." -#: export_video_dialog.cc:947 export_video_dialog.cc:967 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 msgid "Save Exported Video File" msgstr "Sichere exportierte Videodatei" diff --git a/gtk2_ardour/po/el.po b/gtk2_ardour/po/el.po index da60981daf..5320d21b82 100644 --- a/gtk2_ardour/po/el.po +++ b/gtk2_ardour/po/el.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk-ardour 0.347.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2007-04-11 02:27+0200\n" "Last-Translator: Klearchos Gourgourinis \n" "Language-Team: Hellenic\n" @@ -368,7 +368,7 @@ msgstr "" msgid "%1 will not work without a valid ardour.menus file" msgstr "" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 #, fuzzy msgid "Add Track or Bus" msgstr "ΠÏόσθεση καναλιοÏ/διαÏλου" @@ -411,8 +411,8 @@ msgstr "Δίαυλοι" msgid "Add:" msgstr "" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 #, fuzzy msgid "Options" msgstr "Επιλογές" @@ -429,22 +429,22 @@ msgid "Group:" msgstr "ΔιαμόÏφωση Group" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 #, fuzzy msgid "Audio" msgstr "ΑκÏόαση" #: 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "MIDI" @@ -468,7 +468,7 @@ msgid "" msgstr "" #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "Κανονικό" @@ -519,7 +519,7 @@ msgstr "Κανάλια" msgid "12 Channel" msgstr "Κανάλια" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "" @@ -609,7 +609,7 @@ msgid "Track" msgstr "Κανάλι" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 #, fuzzy msgid "Show" msgstr "Ανάδειξη όλων" @@ -618,101 +618,96 @@ msgstr "Ανάδειξη όλων" msgid "Re-analyze data" msgstr "" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 #, fuzzy msgid "audition" msgstr "ΑκÏόαση" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 #, fuzzy msgid "solo" msgstr "σόλο" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 msgid "feedback" msgstr "" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 #, fuzzy msgid "Speaker Configuration" msgstr "Διάταξη" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 #, fuzzy msgid "Theme Manager" msgstr "Απαλοιφή Στίγματος" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 #, fuzzy msgid "Add Tracks/Busses" msgstr "Κανάλια/Δίαυλοι" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "ΠληÏοφοÏίες" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "Τοποθεσίες" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 #, fuzzy msgid "Tracks and Busses" msgstr "Κανάλια/Δίαυλοι" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Μεγάλο ωÏολόγιον" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 #, fuzzy msgid "Audio Connections" msgstr "Συνδέσεις" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "Συνδέσεις" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "" -#: ardour_ui.cc:299 -#, fuzzy -msgid "could not initialize %1." -msgstr "δεν γινόταν να εκκινηθεί ο Ardour." - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 #, fuzzy msgid "Starting audio engine" msgstr "ΕναÏκτήÏιο διάστημα" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "" -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 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" @@ -721,26 +716,26 @@ msgid "" "controlled by %2" msgstr "" -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 #, fuzzy msgid "Don't quit" msgstr "ΟΧΙ %1" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 #, fuzzy msgid "Just quit" msgstr "Μόνο %1" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 #, fuzzy msgid "Save and quit" msgstr "Αποθήκευση και %1" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 #, fuzzy msgid "" "%1 was unable to save your session.\n" @@ -755,16 +750,16 @@ msgstr "" "\n" "επιλογή \"Μόνο Έξοδος\"." -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 msgid "Please wait while %1 cleans up..." msgstr "" -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 #, fuzzy msgid "Unsaved Session" msgstr "Îέα συνεδÏία" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 #, fuzzy msgid "" "The session \"%1\"\n" @@ -783,7 +778,7 @@ msgstr "" "\n" "τί θέλετε να κάνετε;" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 #, fuzzy msgid "" "The snapshot \"%1\"\n" @@ -802,75 +797,75 @@ msgstr "" "\n" "τί θέλετε να κάνετε;" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "Υποβολέας" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "Αποσυνδέθηκε" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 #, fuzzy msgid "File:" msgstr "Μετονομασία" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -878,61 +873,61 @@ msgid "" "\">%%%" msgstr "" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 #, fuzzy msgid "Disk: Unknown" msgstr "χώÏος: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, fuzzy, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "χώÏος: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, fuzzy, c-format msgid "Timecode|TC: %s" msgstr "χώÏος: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "ΠÏόσφατες συνεδÏίες" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" msgstr "" -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Άνοιγμα ΣυνεδÏίας" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 #, fuzzy msgid "%1 sessions" msgstr "ΣυνεδÏία" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "Δεν γίνεται να Ï€Ïοστεθεί κανάλι χωÏίς ήδη φοÏτωμένη συνεδÏία." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 #, fuzzy msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "Δεν γίνεται να δημιουÏγηθεί νέο ηχητικό κανάλι" msgstr[1] "Δεν γίνεται να δημιουÏγηθεί νέο ηχητικό κανάλι" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 #, fuzzy msgid "" "There are insufficient JACK ports available\n" @@ -945,26 +940,26 @@ msgstr "" "ΑποθηκεÏστε τη συνεδÏία, τεÏματίστε το Ardour\n" "και επανεκκινήστε το JACK με πεÏισσότεÏες θÏÏες." -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 #, fuzzy msgid "You cannot add a track or bus without a session already loaded." msgstr "Δεν γίνεται να Ï€Ïοστεθεί κανάλι χωÏίς ήδη φοÏτωμένη συνεδÏία." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 #, fuzzy msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "Δεν γίνεται να δημιουÏγηθεί νέο ηχητικό κανάλι" msgstr[1] "Δεν γίνεται να δημιουÏγηθεί νέο ηχητικό κανάλι" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 #, fuzzy msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "Δεν γίνεται να δημιουÏγηθεί νέο ηχητικό κανάλι" msgstr[1] "Δεν γίνεται να δημιουÏγηθεί νέο ηχητικό κανάλι" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 #, fuzzy msgid "" "Please create one or more tracks before trying to record.\n" @@ -974,14 +969,14 @@ msgstr "" "κανάλια Ï€Ïιν Ï€Ïοσπαθήστε να ηχογÏαφήσετε.\n" "Κοιτάξτε στο Î¼ÎµÎ½Î¿Ï 'ΣυνεδÏία'." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" "%1" msgstr "" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 #, fuzzy msgid "" "JACK has either been shutdown or it\n" @@ -994,82 +989,82 @@ msgstr "" "δεν ήταν αÏκετά γÏήγοÏο. ΜποÏείτε να αποθηκεÏσετε\n" "τη συνεδÏία και/ή να επανακινήσετε το JACK." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Σφάλμα στην έναÏξη της συνεδÏίας" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 #, fuzzy msgid "Take Snapshot" msgstr "Στιγμιότυπο" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 #, fuzzy msgid "Name of new snapshot" msgstr "Όνομα νέου στιγμιοτÏπου" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 #, fuzzy msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Το αÏχείο ήδη υπάÏχει, θέλετε να σώστε από πάνω?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 #, fuzzy msgid "Overwrite" msgstr "awrite" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 #, fuzzy msgid "Rename Session" msgstr "αντιστÏοφή πεÏιοχής" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 #, fuzzy msgid "New session name" msgstr "Îέο Όνομα ΣυνεδÏίας:" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" msgstr "" -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 #, fuzzy msgid "Save Template" msgstr "Αποθήκευση Ï€Ïοσχεδίου..." -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 #, fuzzy msgid "Name for template:" msgstr "Όνομα για Ï€Ïοσχεδίο μίξεως:" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-Ï€Ïοσχέδιο" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 #, fuzzy msgid "" "This session\n" @@ -1077,57 +1072,57 @@ msgid "" "already exists. Do you want to open it?" msgstr "Το αÏχείο ήδη υπάÏχει, θέλετε να σώστε από πάνω?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 #, fuzzy msgid "Open Existing Session" msgstr "Άνοιγμα ΣυνεδÏίας" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "" -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Η ΣυνεδÏία \"%1 (στιγμιότυπο %2)\" δεν φοÏτώθηκε επιτυχώς" -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 #, fuzzy msgid "Loading Error" msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: " -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "" -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 #, fuzzy msgid "Could not create session in \"%1\"" msgstr "δεν γινόταν να φοÏτωθεί η συνεδÏία γÏαμμής εντολών \"%1\"" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 #, fuzzy msgid "No files were ready for clean-up" msgstr "Δεν υπάÏχει αÏχείο ήχου για εκκαθάÏιση" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 #, fuzzy msgid "Clean-up" msgstr "ΕκκαθάÏιση" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1140,19 +1135,19 @@ msgstr "" "χÏειάζονται κάποια αÏχεία που δεν\n" "χÏησιμοποιοÏνται αλλοÏ." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 #, fuzzy msgid "" "The following file was deleted from %2,\n" @@ -1169,7 +1164,7 @@ msgstr[1] "" "%3,\n" "ελευθεÏώνοντας %4 %5bytes χώÏου στο δίσκο" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 #, fuzzy msgid "" "The following file was not in use and \n" @@ -1202,12 +1197,12 @@ msgstr[1] "" "θα ελευθεÏωθοÏν %4 %5bytes\n" "στο δίσκο.\n" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 #, fuzzy msgid "Are you sure you want to clean-up?" msgstr "Στ'αλήθεια θέλετε να κάνετε εκκαθάÏιση?" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 #, fuzzy msgid "" "Clean-up is a destructive operation.\n" @@ -1219,83 +1214,83 @@ msgstr "" "Μετά την εκκαθάÏιση, τα άχÏηστα αÏχεία μεταφέÏονται στην\n" "\"dead sounds\" τοποθεσία." -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 #, fuzzy msgid "CleanupDialog" msgstr "ΕκκαθάÏιση" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 #, fuzzy msgid "Cleaned Files" msgstr "καθαÏισμένα αÏχεία" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "διαγÏαμμένα αÏχεία" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 #, fuzzy msgid "Yes, Stop It" msgstr "Îαι, να καταστÏαφεί." -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "δεν μπόÏεσα να ανοίξω το %1" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "η ΕγγÏαφή διεκόπη διότι το σÏστημά δεν μποÏοÏσε να ανταπεξέλθει." -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 #, fuzzy msgid "" "The disk system on your computer\n" @@ -1310,7 +1305,7 @@ msgstr "" "ΣυγκεκÏιμένα, απέτυχε να γÏάψει δεδομένα\n" "αÏκετά γÏήγοÏα για να Ï€Ïολάβει την ηχογÏάφηση.\n" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 #, fuzzy msgid "" "The disk system on your computer\n" @@ -1325,11 +1320,11 @@ msgstr "" "ΣυγκεκÏιμένα, απέτυχε να διαβάσει δεδομένα\n" "αÏκετά γÏήγοÏα για να Ï€Ïολάβει την αναπαÏαγωγή.\n" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 #, fuzzy msgid "" "This session appears to have been in the\n" @@ -1347,43 +1342,43 @@ msgstr "" "ηχογÏαφημένα αÏχεία, ή να τα αγνοήσει.\n" "ΠαÏακαλώ αποφασίστε τί θέλετε να κάνετε.\n" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "ΔιαγÏαφή τυχόν δεδομένων" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "Ανάκληση από 'κÏασάÏισμα'" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 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" "audio may be played at the wrong sample rate.\n" msgstr "" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 #, fuzzy msgid "Do not load session" msgstr "Zoom στη συνεδÏία" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "ΑποσÏνδεση απ'το JACK είναι αδÏνατη" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "ΕπανασÏνδεση στο JACK αδÏνατη" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1406,75 +1401,80 @@ msgstr "UI: Ο 'editor' δεν μποÏεί να εγεÏθεί" msgid "UI: cannot setup mixer" msgstr "UI: ο μίκτης δεν μποÏεί να εγεÏθεί" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "UI: η γέφυÏα μετÏήσεων δεν μποÏεί να εγεÏθεί" + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "ΑναπαÏ/γή από τον ΑναπαÏαγωγέα" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Διακοπή ΑναπαÏ/γής" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 #, fuzzy msgid "Toggle record" msgstr "ΕγγÏαφή" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "ΑναπαÏ/γή διαστήματος/επιλογής" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "ΑÏχή της συνεδÏίας" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "Τέλος του συνεδÏίας" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "Επαναληπτική αναπαÏ/γή διαστήματος" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" msgstr "" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "ΕπιστÏοφή στην τελευταία θεση μετα απο παÏση" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 #, fuzzy msgid "Playhead follows Range Selections and Edits" msgstr "Playhead στην ΑÏχή Διαστήματος" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "ΠÏοσοχή στο input monitoring" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "ΆÏση/ΠαÏση μετÏονόμου" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" msgstr "" -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" msgstr "" -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "" -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1482,7 +1482,7 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1490,30 +1490,34 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +msgid "Reset Level Meter" +msgstr "" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "" -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "" -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 #, fuzzy msgid "Auto Return" msgstr "" "αυτόματη\n" "επιστÏοφή" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1535,27 +1539,27 @@ msgstr "Θέση ΚέÏσοÏα επεξεÏγασίας" msgid "Setup Mixer" msgstr "Ανάδειξη Μίκτη" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 #, fuzzy msgid "Reload Session History" msgstr "ΔημιουÏγία Directory ΣυνεδÏίας Στο:" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 #, fuzzy msgid "Don't close" msgstr "ΟΧΙ %1" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 #, fuzzy msgid "Just close" msgstr "Κλείσιμο" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 #, fuzzy msgid "Save and close" msgstr "Αποθήκευση και %1" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" @@ -1568,7 +1572,7 @@ msgstr "ΣυνεδÏία" msgid "Sync" msgstr "Sync" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Επιλογές" @@ -1597,15 +1601,15 @@ msgstr "" msgid "Sample Format" msgstr "" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "Επιφάνειες ελέγχου" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Plugins" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "ΜέτÏηση" @@ -1622,7 +1626,7 @@ msgstr "" msgid "Denormal Handling" msgstr "" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "" @@ -1670,8 +1674,8 @@ msgstr "Στιγμιότυπο" msgid "Save As..." msgstr "Αποθήκευση Ï€Ïοσχεδίου..." -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 #, fuzzy msgid "Rename..." msgstr "Μετονομασία" @@ -1704,7 +1708,7 @@ msgid "Stem export..." msgstr "Εξαγωγή" #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Εξαγωγή" @@ -1718,11 +1722,11 @@ msgstr "ΕκκαθάÏιση αχÏήστων πηγών" msgid "Flush Wastebasket" msgstr "Άδειασμα κάδου" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1472 msgid "JACK" msgstr "" -#: ardour_ui_ed.cc:190 route_params_ui.cc:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "" @@ -1730,8 +1734,8 @@ msgstr "" msgid "Reconnect" msgstr "ΕπανασÏνδεση" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "ΑποσÏνδεση" @@ -1748,7 +1752,7 @@ msgstr "Μεγιστοποίηση χώÏου για τον Editor" msgid "Show Toolbars" msgstr "Ανάδειξη Θέσεως" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 #, fuzzy msgid "Window|Mixer" msgstr "ΠαÏάθυÏα" @@ -1758,27 +1762,32 @@ msgstr "ΠαÏάθυÏα" msgid "Toggle Editor+Mixer" msgstr "ΛειτουÏγία Επεξ/σίας" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "ΠαÏάθυÏα" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 msgid "Help|Manual" msgstr "" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Αποθήκευση" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1788,105 +1797,105 @@ msgstr "Αποθήκευση" msgid "Transport" msgstr "" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "ΠαÏση" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 msgid "Start/Continue/Stop" msgstr "" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 #, fuzzy msgid "Stop and Forget Capture" msgstr "Stop + ξέχασε τη λήψη" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 #, fuzzy msgid "Transition To Roll" msgstr "ΠαÏαδοσιακή" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 #, fuzzy msgid "Play Loop Range" msgstr "Επαναληπτική αναπαÏ/γή διαστήματος" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 #, fuzzy msgid "Play Selected Range" msgstr "ΚαθοÏισμός Διαστήματος" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 #, fuzzy msgid "Play Selection w/Preroll" msgstr "ΑναπαÏ/γή επιλογής" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "ΕνεÏγοποίηση ΕγγÏαφής" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 #, fuzzy msgid "Start Recording" msgstr "ΕναÏκτήÏιο διάστημα" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "Πήγαινε στην ΑÏχή" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1895,140 +1904,140 @@ msgstr "" msgid "Timecode" msgstr "" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 #, fuzzy msgid "Bars & Beats" msgstr "ΜπάÏες:ΚτÏποι" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 #, fuzzy msgid "Minutes & Seconds" msgstr "Λεπτά:ΔεÏτεÏα" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 #, fuzzy msgid "Punch In" msgstr "Punch" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 #, fuzzy msgid "Punch Out" msgstr "Punch" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 msgid "In/Out" msgstr "" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "ΜετÏονόμος" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 #, fuzzy msgid "Auto Input" msgstr "Ï€Ïόσθεση Input" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 #, fuzzy msgid "Auto Play" msgstr "" "αυτόματη\n" "αναπαÏ/γή" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 #, fuzzy msgid "Time Master" msgstr "ΑπόκÏυψη Στίγματος" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 #, fuzzy msgid "Toggle Record Enable Track %1" msgstr "Απ/ΕνεÏγοποίηση ÎšÎ±Î½Î±Î»Î¹Î¿Ï 1" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "Ποσοστό" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Ημιτόνια" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "Αποστολή MTC" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "Αποστολή MMC" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 #, fuzzy msgid "Send MIDI Clock" msgstr "Αποστολή MIDI feedback" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 #, fuzzy msgid "Send MIDI Feedback" msgstr "Αποστολή MIDI feedback" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 #, fuzzy msgid "Wall Clock" msgstr "Μεγάλο ωÏολόγιον" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 #, fuzzy msgid "DSP" msgstr "LADSPA" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 msgid "Buffers" msgstr "" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 #, fuzzy msgid "Timecode Format" msgstr "Ηχητικά frames" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 #, fuzzy msgid "File Format" msgstr "Εντόπιο Format" @@ -2043,12 +2052,12 @@ msgstr "" msgid "Internal" msgstr "ΕσωτεÏικό" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 #, fuzzy msgid "Enable/Disable external positional sync" msgstr "ΆÏση/ΠαÏση μετÏονόμου" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "" @@ -2079,7 +2088,7 @@ msgstr "ΧÏόνος" msgid "Meter" msgstr "ΜετÏητής" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2174,33 +2183,33 @@ msgid "hide track" msgstr "απόκÏυψη καναλιοÏ" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 #, fuzzy msgid "Automation|Manual" msgstr "Αυτοματισμός" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "ΑναπαÏ/γή" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "ΓÏάψε" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "Αγγιγμα" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "???" @@ -2209,7 +2218,7 @@ msgid "clear automation" msgstr "εκκαθάÏιση αυτοματισμοÏ" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "ΚÏÏψιμο" @@ -2231,7 +2240,7 @@ msgstr "ΑποσÏνδεση" msgid "Linear" msgstr "ΓÏαμμικό" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "ΛειτουÏγία" @@ -2250,13 +2259,13 @@ msgstr "ΛειτουÏγία Επεξ/σίας" msgid "Direction:" msgstr "ανάλυση" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "" @@ -2266,8 +2275,8 @@ msgid "Edit" msgstr "ΕπεξεÏγασία" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 #, fuzzy msgid "Delete" msgstr "διαγÏαφή" @@ -2446,7 +2455,7 @@ msgstr "" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "" @@ -2714,18 +2723,18 @@ msgid "Ranges & Marks" msgstr "Στίγματα διαστημάτων" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 #, fuzzy msgid "Editor" msgstr "επεξεÏγαστής" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "Loop" @@ -2750,8 +2759,8 @@ msgstr "" msgid "Slow" msgstr "ΑÏγό" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "ΤαχÏ" @@ -2773,7 +2782,7 @@ msgstr "ΕνεÏγοποίηση" msgid "Slowest" msgstr "ΑÏγότατο" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: " @@ -2909,7 +2918,7 @@ msgid "Select All in Track" msgstr "Επιλογή όλων στο κανάλι" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Επιλογή όλων" @@ -2969,15 +2978,15 @@ msgstr "" msgid "Select" msgstr "Επιλογή" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Κοπή" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "ΑντιγÏαφή" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Επικόλληση" @@ -3149,7 +3158,7 @@ msgstr "Redo" msgid "Redo (%1)" msgstr "Redo (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "ΑντιγÏαφή" @@ -3185,8 +3194,8 @@ msgstr "ΔιαγÏαφή λίστας αναπαÏ/γής" msgid "Keep Playlist" msgstr "ΔιατήÏηση λίστας αναπαÏ/γής" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "ΑκÏÏωση" @@ -3206,7 +3215,7 @@ msgstr "εκκαθάÏιση playlists" msgid "Please wait while %1 loads visual data." msgstr "" -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 #, fuzzy msgid "Edit..." msgstr "ΕπεξεÏγασία" @@ -3261,7 +3270,7 @@ msgstr "ΣτÏωματοποίηση" msgid "Position" msgstr "Θέση" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Ισοστάθμιση" @@ -3276,7 +3285,7 @@ msgstr "ΕÏγαλείο Gain" msgid "Ranges" msgstr "Διάστημα" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 #, fuzzy @@ -3319,7 +3328,7 @@ msgstr "Επιλογές" msgid "Misc Options" msgstr "Επιλογές" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "" @@ -3366,8 +3375,8 @@ msgstr "ΔευτεÏέυον ωÏολόγιον" msgid "Separate" msgstr "διαχωÏισμός" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "Σόλο" @@ -3380,7 +3389,7 @@ msgstr "Frames" msgid "Timecode fps" msgstr "" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Ύψος" @@ -3521,7 +3530,7 @@ msgstr "Playhead στην ΑÏχή Διαστήματος" msgid "Playhead to Range End" msgstr "Η playhead στο τέλος του διαστήματος" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "Αποεπιλογή όλων" @@ -3833,9 +3842,9 @@ msgstr "ΠÏοσθήκη πεÏιοχής" msgid "Toggle Active" msgstr "ΕπανενεÏγοποίηση γÏαφήματος" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "Απαλοιφή" @@ -3844,19 +3853,19 @@ msgstr "Απαλοιφή" msgid "Fit Selected Tracks" msgstr "θέση επιλεγμένης οπτικής καναλιοÏ" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "Μέγιστο" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "ΜεγαλÏτεÏο" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "Μεγάλο" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "ΜικÏÏŒ" @@ -3960,7 +3969,7 @@ msgstr "Splice" msgid "Slide" msgstr "Ολίσθηση" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "Κλείδωμα" @@ -4171,7 +4180,7 @@ msgstr "Λεπ:ΔεÏÏ„" msgid "Video Monitor" msgstr "Software Monitoring" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -4181,8 +4190,9 @@ msgid "Always on Top" msgstr "ΑνόÏθωση στο ανώτατο στÏώμα" #: editor_actions.cc:554 -msgid "Framenumber" -msgstr "" +#, fuzzy +msgid "Frame number" +msgstr "μετονομασία στίγματος" #: editor_actions.cc:555 #, fuzzy @@ -4274,7 +4284,7 @@ msgstr "Απαλοιφή" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Εισαγωγή" @@ -4319,328 +4329,328 @@ msgstr "" msgid "Could not find editor.bindings in search path %1" msgstr "" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 #, fuzzy msgid "programming error: %1: %2" msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1" -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 #, fuzzy msgid "Raise to Top" msgstr "ΑνόÏθωση στο ανώτατο στÏώμα" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "ΚατώτεÏο" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 #, fuzzy msgid "Lower to Bottom" msgstr "Υποβίβαση στο κατώτατο στÏώμα" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 #, fuzzy msgid "Move to Original Position" msgstr "ΠÏωταÏχική θέση" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 #, fuzzy msgid "Remove Sync" msgstr "απαλοιφή συγχÏονισμοÏ(sync)" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Σιγή" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 #, fuzzy msgid "Normalize..." msgstr "Εξομάλυνση" -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "ΑντιστÏοφή" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 #, fuzzy msgid "Make Mono Regions" msgstr "ΔημιουÏγία mono πεÏιοχών" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "" -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 #, fuzzy msgid "Transpose..." msgstr "Αναζήτηση" -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 #, fuzzy msgid "Opaque" msgstr "αδιαφανής" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "Fade In" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "Fade Out" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 #, fuzzy msgid "Multi-Duplicate..." msgstr "ΑντιγÏαφή" -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "Γόμωση καναλιοÏ" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "Θέση Loop Διαστήματος" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 #, fuzzy msgid "Set Punch" msgstr "Θέση Punch Διαστήματος" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 #, fuzzy msgid "Add Single Range Marker" msgstr "ΠÏόσθεση Στιγμάτων Διαστήματος" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 #, fuzzy msgid "Add Range Marker Per Region" msgstr "ΠÏόσθεση Στιγμάτων Διαστήματος" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 #, fuzzy msgid "Snap Position To Grid" msgstr "Snap σε μπάÏες" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 #, fuzzy msgid "Close Gaps" msgstr "Κλείσιμο" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "" -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 #, fuzzy msgid "Export..." msgstr "Εξαγωγή" -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 #, fuzzy msgid "Separate Under" msgstr "ΧωÏισμός διαστήματος στο κανάλι" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 #, fuzzy msgid "Set Fade In Length" msgstr "αλλαγή μήκους fade in" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 #, fuzzy msgid "Set Fade Out Length" msgstr "αλλαγή μήκους fade out" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 #, fuzzy msgid "Set Tempo from Region = Bar" msgstr "θέση επιλογής από πεÏιοχή" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 #, fuzzy msgid "Split at Percussion Onsets" msgstr "Κόψιμο στον κέÏσοÏα επεξεÏγασίας" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 #, fuzzy msgid "List Editor..." msgstr "Επεξ/στης Ρυθμίσεων" -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "" -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "" -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 msgid "Reset Envelope" msgstr "" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 msgid "Reset Gain" msgstr "" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 #, fuzzy msgid "Envelope Active" msgstr "ΕπανενεÏγοποίηση γÏαφήματος" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 #, fuzzy msgid "Quantize..." msgstr "Εξομάλυνση" -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "" -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "" -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 #, fuzzy msgid "Set Range Selection" msgstr "ΟÏισμός διαστήματος από επιλογή" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 #, fuzzy msgid "Nudge Later" msgstr "νÏξη εμπÏός" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 #, fuzzy msgid "Nudge Earlier" msgstr "νÏξη εμπÏός" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 #, fuzzy msgid "Nudge Later by Capture Offset" msgstr "ÎÏξη πίσω" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 #, fuzzy msgid "Nudge Earlier by Capture Offset" msgstr "ÎÏξη πίσω" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 #, fuzzy msgid "Trim to Previous" msgstr "ισοστάθμιση Ï€Ïος σÏνταξη" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 #, fuzzy msgid "Trim to Next" msgstr "ισοστάθμιση Ï€Ïος σÏνταξη" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 #, fuzzy msgid "Insert Region From Region List" msgstr "θέση επιλογής από πεÏιοχή" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 #, fuzzy msgid "Set Sync Position" msgstr "Θέση sync της ΠεÏιοχής" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "ΔιαχωÏισμός" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 msgid "Trim Start at Edit Point" msgstr "" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 msgid "Trim End at Edit Point" msgstr "" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 #, fuzzy msgid "Align Start" msgstr "ΕυθυγÏάμμιση αÏχής ΠεÏιοχών" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 #, fuzzy msgid "Align Start Relative" msgstr "ευθυγÏάμμιση αÏχής πεÏιοχών(σχετική)" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 #, fuzzy msgid "Align End" msgstr "ΕυθυγÏάμμιση" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 #, fuzzy msgid "Align End Relative" msgstr "ΕυθυγÏάμμιση σχετικών" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 #, fuzzy msgid "Align Sync" msgstr "ευθυγÏάμμιση του sync των πεÏιοχών" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 #, fuzzy msgid "Align Sync Relative" msgstr "ΕυθυγÏάμμιση σχετικών" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "" @@ -4666,32 +4676,32 @@ msgid "" "%2 as a new source, or skip it?" msgstr "" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "ΑκÏÏωση Εισαγωγής" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Editor: δεν γίνεται να ανοίξει το αÏχείο \"%1\",(%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "ΑκÏÏωση όλης της Εισαγωγής" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "Μη το εμφυτεÏσεις" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 msgid "Sample rate" msgstr "" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4700,7 +4710,7 @@ msgstr "" "Ο Ïυθμός δειγματοληψίας Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείου δεν ταιÏιάζει με αυτόν της " "συνεδÏίας!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "ΕμφÏτευσέ το οÏτως ή άλλως" @@ -4738,32 +4748,32 @@ msgstr "αντιγÏαφή στίγματος tempo" msgid "move tempo mark" msgstr "μετακίνηση στίγματος tempo" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "αλλαγή μήκους fade in" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "αλλαγή μήκους fade out" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "μετακίνηση στίγματος" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 #, fuzzy msgid "programming_error: %1" msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "νέο στίγμα διαστήματος" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 #, fuzzy msgid "rubberband selection" msgstr "επιλογή διαστήματος" @@ -4843,7 +4853,7 @@ msgid "Sharing Solo?" msgstr "" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "" @@ -4924,7 +4934,7 @@ msgid "end" msgstr "ΔευτεÏόλεπτα" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "Ï€Ïόσθεση στίγματος" @@ -4933,7 +4943,7 @@ msgstr "Ï€Ïόσθεση στίγματος" msgid "range" msgstr " διαστήματος" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "απαλοιφή στίγματος" @@ -5021,8 +5031,8 @@ msgstr "Μετονομασία Στίγματος" msgid "Rename Range" msgstr "Μετονομασία Διαστήματος" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "Μετονομασία" @@ -5175,7 +5185,7 @@ msgstr "Υποβίβαση στο κατώτατο στÏώμα" msgid "Rename Region" msgstr "αντιστÏοφή πεÏιοχής" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 #, fuzzy msgid "New name:" msgstr "νέο όνομα: " @@ -5354,7 +5364,7 @@ msgstr "" "(Η Ï€Ïάξη είνα‎ι καταστÏεπτική και δεν γίνεται επαναφοÏά της)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "Όχι, να μην γίνει τίποτα." @@ -5565,11 +5575,11 @@ msgstr "" msgid "close region gaps" msgstr "αυτές τις πεÏιοχές" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "" -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5584,7 +5594,7 @@ msgstr "" msgid "tracks" msgstr "Κανάλια" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 #, fuzzy msgid "track" msgstr "Κανάλι" @@ -5594,7 +5604,7 @@ msgstr "Κανάλι" msgid "busses" msgstr "Δίαυλοι" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 #, fuzzy msgid "bus" msgstr "abs" @@ -5640,7 +5650,7 @@ msgstr "" msgid "Yes, remove them." msgstr "Îαι, απάλοιψε το." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Îαι, απάλοιψε το." @@ -5718,7 +5728,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "L" @@ -5737,8 +5747,9 @@ msgstr "Πήγαινε" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "" @@ -5814,7 +5825,8 @@ msgstr "κανάλια/δίαυλοι" msgid "Track/Bus visible ?" msgstr "Κανάλια/Δίαυλοι" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "" @@ -5823,7 +5835,7 @@ msgstr "" msgid "Track/Bus active ?" msgstr "κανάλια/δίαυλοι" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 msgid "I" msgstr "" @@ -5832,7 +5844,7 @@ msgstr "" msgid "MIDI input enabled" msgstr "MIDI δεσμός" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "" @@ -5847,7 +5859,7 @@ msgstr "ΕγγÏαφή" msgid "Muted" msgstr "Σιγή" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "" @@ -5860,7 +5872,7 @@ msgstr "Σόλο" msgid "SI" msgstr "" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 #, fuzzy msgid "Solo Isolated" msgstr "Σόλο" @@ -6167,147 +6179,151 @@ msgid "192000Hz" msgstr "" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Ουδέν" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "ΤÏίγωνη" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "ΤετÏάγωνη" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 #, fuzzy msgid "Shaped" msgstr "ΜοÏφοποιημένος ΘόÏυβος" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 #, fuzzy msgid "Recording only" msgstr "ΠαÏση εγγÏαφής στα xrun" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 #, fuzzy msgid "raw" msgstr "σχημάτισε" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 #, fuzzy msgid "Audio Interface:" msgstr "ΕσωτεÏικό" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 #, fuzzy msgid "Audio mode:" msgstr "Ηχητικά frames" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "" -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 #, fuzzy msgid "Hardware input latency:" msgstr "Hardware Είσοδοι: χÏήση" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 #, fuzzy msgid "Hardware output latency:" msgstr "Hardware Έξοδοι: χÏήση" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 #, fuzzy msgid "Advanced" msgstr "ΠÏοχωÏημένα..." -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -6324,31 +6340,31 @@ msgid "" "%1 and choose the relevant device then." msgstr "" -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "" -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "" -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 #, fuzzy msgid "Channels:" msgstr "Κανάλια" @@ -6512,9 +6528,9 @@ msgid "Folder:" msgstr "Όνομα φακέλου:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Αναζήτηση" @@ -6651,6 +6667,13 @@ msgstr "Τοποθεσίες" msgid "Broadcast Wave options" msgstr "Broadcast WAVE/μεταβλητής υποδ/λής" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "" +"Στ'αλήθεια θέλετε να απαλοίψετε το κανάλι \"%1\" ?\n" +"(δεν μποÏεί να ανακληθεί)" + #: export_preset_selector.cc:28 msgid "Preset" msgstr "" @@ -6661,6 +6684,13 @@ msgid "" "Perhaps it references a format that has been removed?" msgstr "" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "" +"Στ'αλήθεια θέλετε να απαλοίψετε το κανάλι \"%1\" ?\n" +"(δεν μποÏεί να ανακληθεί)" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "" @@ -6674,38 +6704,50 @@ msgstr "" msgid "Range" msgstr "Διάστημα" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +msgid "%1" +msgstr "" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "-inf" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "ΛειτουÏγία Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Fader" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "ΤÏπος Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Fader" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 #, fuzzy msgid "Abs" msgstr "abs" -#: gain_meter.cc:334 -#, fuzzy -msgid "-Inf" -msgstr "-inf" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "" @@ -6717,7 +6759,7 @@ msgstr "" msgid "Switches" msgstr "" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "Πίνακας Ελέγχου" @@ -6749,72 +6791,72 @@ msgstr "" msgid "MIDI Connection Manager" msgstr "Συνδέσεις Εισόδου" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "θÏÏα" -#: group_tabs.cc:306 +#: group_tabs.cc:308 #, fuzzy msgid "Selection..." msgstr "ΑναπαÏ/γή επιλογής" -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "" -#: group_tabs.cc:308 +#: group_tabs.cc:310 #, fuzzy msgid "Soloed..." msgstr "Σόλο" -#: group_tabs.cc:314 +#: group_tabs.cc:316 #, fuzzy msgid "Create New Group ..." msgstr "ΧωÏίς group" -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "" -#: group_tabs.cc:318 +#: group_tabs.cc:320 #, fuzzy msgid "Edit Group..." msgstr "ΧωÏίς group" -#: group_tabs.cc:319 +#: group_tabs.cc:321 #, fuzzy msgid "Collect Group" msgstr "Επιλογή" -#: group_tabs.cc:320 +#: group_tabs.cc:322 #, fuzzy msgid "Remove Group" msgstr "ΔιαμόÏφωση Group" -#: group_tabs.cc:323 +#: group_tabs.cc:325 #, fuzzy msgid "Remove Subgroup Bus" msgstr "ΠÏόσθεση group" -#: group_tabs.cc:325 +#: group_tabs.cc:327 #, fuzzy msgid "Add New Subgroup Bus" msgstr "ΠÏόσθεση group" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "" -#: group_tabs.cc:328 +#: group_tabs.cc:330 #, fuzzy msgid "Add New Aux Bus (post-fader)" msgstr "ΕκκαθάÏιση μέτÏου" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "" -#: group_tabs.cc:335 +#: group_tabs.cc:337 #, fuzzy msgid "Disable All Groups" msgstr "ΑπενεÏγοποίηση Όλων" @@ -6919,11 +6961,11 @@ msgstr "" msgid "I/O selector" msgstr "ΑντιστÏοφή επιλογής" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "%1 είσοδος" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "%1 έξοδος" @@ -7004,7 +7046,7 @@ msgstr[1] "" msgid "Reset" msgstr "" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 #, fuzzy msgid "programming error: %1 (%2)" msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1" @@ -7033,71 +7075,71 @@ msgstr "" msgid "Pre-Emphasis" msgstr "" -#: location_ui.cc:310 +#: location_ui.cc:314 #, fuzzy msgid "Remove this range" msgstr "θέση punch διαστήματος" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 #, fuzzy msgid "Set range start from playhead location" msgstr "ΟÏισμός Στίγματος Διαστήματος από playhead" -#: location_ui.cc:316 +#: location_ui.cc:320 #, fuzzy msgid "Set range end from playhead location" msgstr "ΟÏισμός διαστήματος από επιλογή" -#: location_ui.cc:320 +#: location_ui.cc:324 #, fuzzy msgid "Remove this marker" msgstr "μετακίνηση στίγματος" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 #, fuzzy msgid "Set marker time from playhead location" msgstr "ΟÏισμός διαστήματος από επιλογή" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "" -#: location_ui.cc:708 +#: location_ui.cc:720 #, fuzzy msgid "New Marker" msgstr "Στίγμα" -#: location_ui.cc:709 +#: location_ui.cc:721 #, fuzzy msgid "New Range" msgstr "ΠÏόσθεση νέου διαστήματος" -#: location_ui.cc:722 +#: location_ui.cc:734 #, fuzzy msgid "Loop/Punch Ranges" msgstr "Διαστήματα Loop/Punch" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "Ï€Ïόσθεση στίγματος διαστήματος" @@ -7174,20 +7216,20 @@ msgid "" "session at this time, because we would lose your connection information.\n" msgstr "" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr "" -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr "" -#: main.cc:504 +#: main.cc:500 #, fuzzy msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "Πνευματικα Δικαιώματα 1999-2004 Paul Davis" -#: main.cc:505 +#: main.cc:501 #, fuzzy msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " @@ -7195,31 +7237,36 @@ msgid "" msgstr "" "ΜεÏικά μέÏη Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel Baker" -#: main.cc:507 +#: main.cc:503 #, fuzzy msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "Ο Ardour έÏχεται με απολÏτως ΚΑΜΙΑ ΕΓΓΥΗΣΗ" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "" "Το παÏόν είναι ελεÏθεÏο λογισμικό, είστε ελεÏθεÏοι να το επαναδιανείμετε " -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "" "υπό οÏισμένους ÏŒÏους, ανατÏέξτε στον κώδικα για τους ÏŒÏους\n" " αντιγÏαφής." -#: main.cc:519 +#: main.cc:513 +#, fuzzy +msgid "could not initialize %1." +msgstr "δεν γινόταν να εκκινηθεί ο Ardour." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "" -#: main.cc:525 +#: main.cc:528 #, fuzzy msgid "could not create %1 GUI" msgstr "δεν γινόταν να δημιουÏγηθεί ARDOUR GUI" @@ -7229,7 +7276,7 @@ msgstr "δεν γινόταν να δημιουÏγηθεί ARDOUR GUI" msgid "Display delta to edit cursor" msgstr "Από αÏχή μέχÏι κέÏσοÏα επεξεÏγασίας" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "ΚείμενοΣτίγματος" @@ -7767,7 +7814,7 @@ msgstr "" msgid "Missing Plugins" msgstr "Plugins" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "OK" @@ -7846,238 +7893,251 @@ msgstr "" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "Ï€Ïο" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 #, fuzzy msgid "Comments" msgstr "Σχόλια" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "" -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 #, fuzzy msgid "Hide this mixer strip" msgstr "ΑπόκÏυψη όλων των ΔιαδÏόμωνΜίξεως των διαÏλων" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 #, fuzzy msgid "Click to select metering point" msgstr "επιλογή ενεÏγειών διαστήματος" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "κλείδωμα" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 #, fuzzy msgid "iso" msgstr "ins" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 #, fuzzy msgid "Mix group" msgstr "ΧωÏίς group" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 #, fuzzy msgid "Phase Invert" msgstr "ΑντιστÏοφή" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 #, fuzzy msgid "Solo Safe" msgstr "Σόλο" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 #, fuzzy msgid "Meter Point" msgstr "ΜέτÏηση" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 #, fuzzy msgid "Enable/Disable MIDI input" msgstr "ΆÏση/ΠαÏση μετÏονόμου" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 #, fuzzy msgid "" "Aux\n" "Sends" msgstr "ΔευτεÏόλεπτα" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 #, fuzzy msgid "Snd" msgstr "ΔευτεÏόλεπτα" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "Μη συνδεδεμένο με τον JACK - I/O αλλαγές αδÏνατες" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 #, fuzzy msgid "Disconnected" msgstr "Αποσυνδέθηκε" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 msgid "*Comments*" msgstr "*Σχόλια*" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 #, fuzzy msgid "Cmt" msgstr "Κοπή" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "Κλίκ για ΠÏόσθεση/ΕπεξεÏγασία Σχολίων" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr ": επεξεÏγαστής σχολίων" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "~G" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 #, fuzzy msgid "Comments..." msgstr "Σχόλια" -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 #, fuzzy msgid "Save As Template..." msgstr "Αποθήκευση Ï€Ïοσχεδίου..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "ΕνεÏγό" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "" -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 #, fuzzy msgid "Remote Control ID..." msgstr "απαλοιφή σημείου ελέγχου" -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 msgid "in" msgstr "in" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 msgid "out" msgstr "out" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 #, fuzzy msgid "pr" msgstr "Ï€Ïο" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 #, fuzzy msgid "po" msgstr "πολ" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 #, fuzzy msgid "o" msgstr "έγινε" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 #, fuzzy msgid "D" msgstr "CD" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 #, fuzzy msgid "i" msgstr "in" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 #, fuzzy msgid "Pre-fader" msgstr "ΠÏο Fader" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 #, fuzzy msgid "Post-fader" msgstr "Μετά Fader" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "Κανάλια" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "Λίστα αναδείξεως καναλιών για μετονομασμένο διάδÏομο δεν ευÏέθη!" @@ -8086,10 +8146,67 @@ msgstr "Λίστα αναδείξεως καναλιών για μετονομα msgid "-all-" msgstr "-όλα-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "ΔιάδÏομοι" +#: meter_strip.cc:764 +#, fuzzy +msgid "Variable height" +msgstr "Το Ïψος" + +#: meter_strip.cc:765 +msgid "Short" +msgstr "" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +msgid "VU" +msgstr "" + #: monitor_section.cc:62 msgid "SiP" msgstr "" @@ -8466,7 +8583,7 @@ msgstr "" msgid "Panner (2D)" msgstr "" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "" @@ -8660,7 +8777,7 @@ msgstr "" msgid "Eh? LADSPA plugins don't have editors!" msgstr "" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " @@ -8676,7 +8793,7 @@ msgstr "" "άγνωστος Ï„Ïπος Ï€Ïομηθευμένου plugin για τον editor(σημείωση: δεν υπάÏχει " "υποστήÏιξη VST στην παÏοÏσα έκδοση του ardour)" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " @@ -8685,77 +8802,89 @@ msgstr "" "άγνωστος Ï„Ïπος Ï€Ïομηθευμένου plugin για τον editor(σημείωση: δεν υπάÏχει " "υποστήÏιξη VST στην παÏοÏσα έκδοση του ardour)" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "ΠÏόσθεση" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 #, fuzzy msgid "Description" msgstr "ανάλυση" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 #, fuzzy msgid "Plugin analysis" msgstr "Plugins" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 #, fuzzy msgid "Save a new preset" msgstr "Όνομα για νέας Ï€ÏοÏÏÏθμισης:" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" msgstr "" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "" msgstr[1] "" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 #, fuzzy msgid "Edit Latency" msgstr "Επεξ/σία ΧÏόνου" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "ΠÏο-ÏÏθμιση plugin %1 δεν ευÏέθη" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "" @@ -8873,79 +9002,80 @@ msgstr "" msgid "Port Insert " msgstr "Îέο ΠÏοσθήκη" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 #, fuzzy msgid "Sources" msgstr "ΠÏοχωÏημένα..." -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, fuzzy, c-format msgid "Rename '%s'..." msgstr "Μετονομασία" -#: port_matrix.cc:451 +#: port_matrix.cc:472 #, fuzzy msgid "Remove all" msgstr "Απαλοιφή Στίγματος" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, fuzzy, c-format msgid "%s all" msgstr "Επιλογή όλων" -#: port_matrix.cc:506 +#: port_matrix.cc:527 #, fuzzy msgid "Rescan" msgstr "Επανα-ανίχνευση" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "" -#: port_matrix.cc:702 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." msgstr "" -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "" -#: port_matrix.cc:728 +#: port_matrix.cc:749 msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, fuzzy, c-format msgid "Remove '%s'" msgstr "Απαλοιφή" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, fuzzy, c-format msgid "%s all from '%s'" msgstr "Επιλογή όλων από loop" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 #, fuzzy msgid "channel" msgstr "κανάλια" @@ -8960,66 +9090,66 @@ msgstr "Δεν υπάÏχουν άλλες διαθέσιμες θÏÏες το msgid "There are no %1 ports to connect." msgstr "Δεν υπάÏχουν άλλες διαθέσιμες θÏÏες του JACK." -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 #, fuzzy msgid "Show All Controls" msgstr "Ανάδειξη Ïυθμίσεων send" -#: processor_box.cc:375 +#: processor_box.cc:376 #, fuzzy msgid "Hide All Controls" msgstr "ΑπόκÏυψη όλων των crossfades" -#: processor_box.cc:464 +#: processor_box.cc:465 #, fuzzy msgid "on" msgstr "έγινε" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "εκτός" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" msgstr "" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" msgstr "" -#: processor_box.cc:1196 +#: processor_box.cc:1209 #, fuzzy msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "%1 είσοδος" msgstr[1] "%1 είσοδος" -#: processor_box.cc:1200 +#: processor_box.cc:1213 #, fuzzy msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" @@ -9030,38 +9160,38 @@ msgstr[1] "" "αυτόματο\n" "input" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" msgstr "" -#: processor_box.cc:1206 +#: processor_box.cc:1219 #, fuzzy msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "κανάλια" msgstr[1] "κανάλια" -#: processor_box.cc:1210 +#: processor_box.cc:1223 #, fuzzy msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "κανάλια" msgstr[1] "κανάλια" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" msgstr "" -#: processor_box.cc:1249 +#: processor_box.cc:1262 #, fuzzy msgid "Cannot set up new send: %1" msgstr "δεν γίνεται να διαμοÏφώθεί η διαχείÏηση σημάτων για %1" -#: processor_box.cc:1581 +#: processor_box.cc:1594 #, fuzzy msgid "" "You cannot reorder these plugins/sends/inserts\n" @@ -9072,20 +9202,20 @@ msgstr "" "με αυτό τον Ï„Ïοπο γιατί οι εισόδοι\n" "κ' εξόδοι δεν λειτουÏγοÏν καλά." -#: processor_box.cc:1765 +#: processor_box.cc:1778 #, fuzzy msgid "Rename Processor" msgstr "Μετονομασία ΚαναλιοÏ" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 #, fuzzy msgid "" "Copying the set of processors on the clipboard failed,\n" @@ -9096,7 +9226,7 @@ msgstr "" "πιθανόν γιατί το I/O configuration των plugins\n" "δεν ταίÏιαζε το configuration Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… καναλιοÏ." -#: processor_box.cc:1987 +#: processor_box.cc:2000 #, fuzzy msgid "" "Do you really want to remove all processors from %1?\n" @@ -9105,16 +9235,16 @@ msgstr "" "Στ'αλήθεια θέλετε να απαλοίψετε όλα τα redirects από το δίαυλο?\n" "(δεν μποÏεί να ανακληθεί)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "Îαι, απάλοιψέ τα όλα" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 #, fuzzy msgid "Remove processors" msgstr "Απαλοιφή Στίγματος" -#: processor_box.cc:2008 +#: processor_box.cc:2021 #, fuzzy msgid "" "Do you really want to remove all pre-fader processors from %1?\n" @@ -9123,7 +9253,7 @@ msgstr "" "Στ'αλήθεια θέλετε να απαλοίψετε όλα τα redirects από το δίαυλο?\n" "(δεν μποÏεί να ανακληθεί)" -#: processor_box.cc:2011 +#: processor_box.cc:2024 #, fuzzy msgid "" "Do you really want to remove all post-fader processors from %1?\n" @@ -9132,59 +9262,59 @@ msgstr "" "Στ'αλήθεια θέλετε να απαλοίψετε όλα τα redirects από το δίαυλο?\n" "(δεν μποÏεί να ανακληθεί)" -#: processor_box.cc:2198 +#: processor_box.cc:2200 #, fuzzy msgid "New Plugin" msgstr "Îέο Plugin ..." -#: processor_box.cc:2201 +#: processor_box.cc:2203 msgid "New Insert" msgstr "Îέο ΠÏοσθήκη" -#: processor_box.cc:2204 +#: processor_box.cc:2206 #, fuzzy msgid "New External Send ..." msgstr "Îέο Send ..." -#: processor_box.cc:2208 +#: processor_box.cc:2210 #, fuzzy msgid "New Aux Send ..." msgstr "Îέο Send ..." -#: processor_box.cc:2212 +#: processor_box.cc:2214 #, fuzzy msgid "Clear (all)" msgstr "ΕκκαθάÏιση όλων των διαστημάτων" -#: processor_box.cc:2214 +#: processor_box.cc:2216 #, fuzzy msgid "Clear (pre-fader)" msgstr "ΕκκαθάÏιση μέτÏου" -#: processor_box.cc:2216 +#: processor_box.cc:2218 #, fuzzy msgid "Clear (post-fader)" msgstr "ΕκκαθάÏιση μέτÏου" -#: processor_box.cc:2242 +#: processor_box.cc:2244 msgid "Activate All" msgstr "ΕνεÏγοποίηση όλων" -#: processor_box.cc:2244 +#: processor_box.cc:2246 #, fuzzy msgid "Deactivate All" msgstr "ΑπενεÏγοποίηση όλων" -#: processor_box.cc:2246 +#: processor_box.cc:2248 #, fuzzy msgid "A/B Plugins" msgstr "Plugins" -#: processor_box.cc:2255 +#: processor_box.cc:2257 msgid "Edit with generic controls..." msgstr "" -#: processor_box.cc:2531 +#: processor_box.cc:2557 #, fuzzy msgid "%1: %2 (by %3)" msgstr "ardour: %1: %2 (by %3)" @@ -9356,7 +9486,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -9451,7 +9581,7 @@ msgstr "" msgid "Click gain level" msgstr "ΑÏχείο ήχου ΜετÏονόμου" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Αυτοματισμός" @@ -9638,98 +9768,102 @@ msgstr "" msgid "Show meters on tracks in the editor" msgstr "" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 #, fuzzy msgid "Show waveforms in regions" msgstr "Ανάδειξη αυτομάτων πεÏιοχών" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 #, fuzzy msgid "Show gain envelopes in audio regions" msgstr "Ανάδειξη αυτομάτων πεÏιοχών" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 #, fuzzy msgid "Waveform scale" msgstr "ΚυματομοÏφή" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "γÏαμμική" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 #, fuzzy msgid "Waveform shape" msgstr "ΚυματομοÏφή" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 #, fuzzy msgid "traditional" msgstr "ΠαÏαδοσιακή" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 #, fuzzy msgid "rectified" msgstr "ΑνοÏθωμένή" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 #, fuzzy msgid "Name new markers" msgstr "μετονομασία στίγματος" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9737,366 +9871,445 @@ msgid "" "You can always rename markers by right-clicking on them" msgstr "" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 #, fuzzy msgid "Record monitoring handled by" msgstr "ΠαÏση εγγÏαφής στα xrun" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 #, fuzzy msgid "ardour" msgstr "ardour: " -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 #, fuzzy msgid "audio hardware" msgstr "Ηχητικά frames" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 #, fuzzy msgid "Tape machine mode" msgstr "ΛειτουÏγία Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Fader" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 #, fuzzy msgid "Connect track inputs" msgstr "ΣÏνδεση νέων inputs ÎºÎ±Î½Î±Î»Î¹Î¿Ï ÏƒÏ„Î¿ hardware" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 #, fuzzy msgid "automatically to physical inputs" msgstr "αυτόματη σÏνδεση Inputs" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 #, fuzzy msgid "Connect track and bus outputs" msgstr "ΣÏνδεση νέων outputs καναλιου στο master" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 #, fuzzy msgid "automatically to physical outputs" msgstr "Αυτόματη σÏνδεση Οutputs" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 #, fuzzy msgid "automatically to master bus" msgstr "αυτόματη σÏνδεση outputs καναλιών σε master outs" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 #, fuzzy msgid "Denormals" msgstr "Κανονικό" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 #, fuzzy msgid "Silence plugins when the transport is stopped" msgstr "Λήξη των plugins με την παÏση" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 #, fuzzy msgid "Replicate missing region channels" msgstr "ΔημιουÏγία μίας πεÏιοχής για κάθε κανάλι" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 #, fuzzy msgid "Solo / mute" msgstr "Solo μέσω διαÏλου" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 #, fuzzy msgid "Listen Position" msgstr "Θέση" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 msgid "after-fader (AFL)" msgstr "" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 #, fuzzy msgid "pre-fader (PFL)" msgstr "ΕκκαθάÏιση μέτÏου" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 #, fuzzy msgid "before pre-fader processors" msgstr "Απαλοιφή Στίγματος" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 #, fuzzy msgid "immediately post-fader" msgstr "ΕκκαθάÏιση μέτÏου" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 #, fuzzy msgid "after post-fader processors (before pan)" msgstr "Απαλοιφή Στίγματος" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 #, fuzzy msgid "Show solo muting" msgstr "Ανάδειξη όλων των αυτοματισμών" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 #, fuzzy msgid "Default track / bus muting options" msgstr "κανάλια/δίαυλοι" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 #, fuzzy msgid "Mute affects control outputs" msgstr "χÏήση των control outs" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 #, fuzzy msgid "Send MIDI Time Code" msgstr "Αποστολή MIDI feedback" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 #, fuzzy msgid "Send MIDI control feedback" msgstr "Αποστολή MIDI feedback" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 #, fuzzy msgid "Sound MIDI notes as they are selected" msgstr "ΠÏοσθήκη επιλεγμένου(ων)" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 #, fuzzy msgid "User interaction" msgstr "ΕνέÏγειες ΠεÏιοχών" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 #, fuzzy msgid "Control surface remote ID" msgstr "Επιφάνειες ελέγχου" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 msgid "Preferences|GUI" msgstr "" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 #, fuzzy msgid "Mixer Strip" msgstr "Ανάδειξη Μίκτη" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 #, fuzzy msgid "Use narrow strips in the mixer by default" msgstr "Στενοί διάδÏομοι μείκτη" -#: rc_option_editor.cc:1898 +#: rc_option_editor.cc:1906 #, fuzzy -msgid "Meter hold time" +msgid "Peak hold time" msgstr "ΠαÏση ΜετÏητή" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 msgid "short" msgstr "" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "" -#: rc_option_editor.cc:1912 -msgid "Meter fall-off" +#: rc_option_editor.cc:1920 +msgid "DPM fall-off" msgstr "" -#: rc_option_editor.cc:1918 -#, fuzzy -msgid "slowest" -msgstr "ΑÏγότατο" +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" msgstr "" -#: rc_option_editor.cc:1921 -#, fuzzy -msgid "fast" -msgstr "ταχÏτατη" +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" -#: rc_option_editor.cc:1922 -#, fuzzy -msgid "faster" -msgstr "ΤαχÏτεÏα" +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" + +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" -#: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "ταχÏτατη" +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" + +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 +msgid "Peak threshold [dBFS]" +msgstr "" + +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" + +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -10107,11 +10320,11 @@ msgstr "ακÏόαση της πεÏιοχής" msgid "Position:" msgstr "Θέση" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Τέλος:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "" @@ -10135,27 +10348,27 @@ msgstr "" msgid "Source:" msgstr "" -#: region_editor.cc:167 +#: region_editor.cc:166 #, fuzzy msgid "Region '%1'" msgstr "ΠεÏιοχές" -#: region_editor.cc:274 +#: region_editor.cc:273 #, fuzzy msgid "change region start position" msgstr "οÏισμός θέσης sync πεÏιοχής" -#: region_editor.cc:290 +#: region_editor.cc:289 #, fuzzy msgid "change region end position" msgstr "οÏισμός θέσης sync πεÏιοχής" -#: region_editor.cc:310 +#: region_editor.cc:309 #, fuzzy msgid "change region length" msgstr "αλλαγή μήκους fade in" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 #, fuzzy msgid "change region sync point" msgstr "οÏισμός θέσης sync πεÏιοχής" @@ -10366,362 +10579,362 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "" -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "Κανάλια/Δίαυλοι" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "Είσοδοι" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "Έξοδοι" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "Η λίστα ανάδειξης διαδÏομών για μετονομασμένη διαδÏομή δεν ευÏέθη!" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "Κανένα κανάλι" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 #, fuzzy msgid "No Track or Bus Selected" msgstr "Δεν επελέχθη διαδÏομή" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "g" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "p" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "a" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "ΕγγÏαφή" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 #, fuzzy msgid "Route Group" msgstr "ΔιαμόÏφωση Group" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 #, fuzzy msgid "MIDI Controllers and Automation" msgstr "MMC ΘÏÏα" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 #, fuzzy msgid "Show All Automation" msgstr "Ανάδειξη όλων των αυτοματισμών" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 #, fuzzy msgid "Show Existing Automation" msgstr "Ανάδειξη υπαÏχόντων αυτοματισμών" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 #, fuzzy msgid "Hide All Automation" msgstr "ΚÏÏψιμο όλων των αυτοματισμών" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 #, fuzzy msgid "Processor automation" msgstr "εκκαθάÏιση αυτοματισμοÏ" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 #, fuzzy msgid "Color..." msgstr "ΧÏώμα" -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 #, fuzzy msgid "Layers" msgstr "ΣτÏώμα" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 #, fuzzy msgid "Automatic (based on I/O connections)" msgstr "Αυτόματη σÏνδεση Οutputs" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 #, fuzzy msgid "(Currently: Existing Material)" msgstr "ΕυθυγÏάμμιση με το υπάÏχον υλικό" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 #, fuzzy msgid "(Currently: Capture Time)" msgstr "ΕυθυγÏάμμιση με το χÏόνο λήψεως" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 #, fuzzy msgid "Align With Existing Material" msgstr "ΕυθυγÏάμμιση με το υπάÏχον υλικό" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 #, fuzzy msgid "Align With Capture Time" msgstr "ΕυθυγÏάμμιση με το χÏόνο λήψεως" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 #, fuzzy msgid "Alignment" msgstr "ΕυθυγÏάμμιση" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 #, fuzzy msgid "Normal Mode" msgstr "Κανονικό" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 #, fuzzy msgid "Tape Mode" msgstr "ΛειτουÏγία Έλξεως" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 #, fuzzy msgid "Non-Layered Mode" msgstr "Τέλη ΠεÏιοχών" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Playlist" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 #, fuzzy msgid "Rename Playlist" msgstr "Όνομα για playlist" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 #, fuzzy msgid "New name for playlist:" msgstr "Όνομα για playlist" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 #, fuzzy msgid "New Copy Playlist" msgstr "Όνομα για playlist" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 #, fuzzy msgid "Name for new playlist:" msgstr "Όνομα για playlist" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 #, fuzzy msgid "New Playlist" msgstr "Playlist" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 #, fuzzy msgid "You cannot create a track with that name as it is reserved for %1" msgstr "Δεν γίνεται να Ï€Ïοστεθεί κανάλι χωÏίς ήδη φοÏτωμένη συνεδÏία." -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 #, fuzzy msgid "New Copy..." msgstr "Îέο αντίγÏαφο" -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 #, fuzzy msgid "New Take" msgstr "Îέος ΧÏόνος" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 #, fuzzy msgid "Copy Take" msgstr "ΑντιγÏαφή" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "ΕκκαθάÏιση Ï„Ïέχοντος" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 #, fuzzy msgid "Select From All..." msgstr "Επιλογή όλων ..." -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 #, fuzzy msgid "Remove \"%1\"" msgstr "Απαλοιφή" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 #, fuzzy msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "" "Σφάλμα Ï€ÏογÏαμματισμοÏ: κανένας \"rect\" δείκτης δεν σχετίζεται με το " "επιλεγμένο αντικείμενο" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 msgid "After-fade listen (AFL)" msgstr "" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 #, fuzzy msgid "Pre-fade listen (PFL)" msgstr "ΕκκαθάÏιση μέτÏου" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "s" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "m" -#: route_ui.cc:114 +#: route_ui.cc:119 #, fuzzy msgid "Mute this track" msgstr "ΑπόκÏυψη παÏόντος καναλιοÏ" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "" -#: route_ui.cc:133 +#: route_ui.cc:138 #, fuzzy msgid "Monitor input" msgstr "ισοστάθμιση Ï€Ïος τα επιλεγμένα" -#: route_ui.cc:139 +#: route_ui.cc:144 #, fuzzy msgid "Monitor playback" msgstr "Διακοπή ΑναπαÏ/γής" -#: route_ui.cc:586 +#: route_ui.cc:591 #, fuzzy msgid "Not connected to JACK - cannot engage record" msgstr "Μη συνδεδεμένο με τον JACK - I/O αλλαγές αδÏνατες" -#: route_ui.cc:781 +#: route_ui.cc:786 #, fuzzy msgid "Step Entry" msgstr "ΕπεξεÏγασία" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "" -#: route_ui.cc:858 +#: route_ui.cc:863 #, fuzzy msgid "Assign all tracks and buses (prefader)" msgstr "θέση επιλεγμένης οπτικής καναλιοÏ" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "" -#: route_ui.cc:866 +#: route_ui.cc:871 #, fuzzy msgid "Assign all tracks and buses (postfader)" msgstr "θέση επιλεγμένης οπτικής καναλιοÏ" -#: route_ui.cc:870 +#: route_ui.cc:875 #, fuzzy msgid "Assign selected tracks (prefader)" msgstr "θέση επιλεγμένης οπτικής καναλιοÏ" -#: route_ui.cc:874 +#: route_ui.cc:879 #, fuzzy msgid "Assign selected tracks and buses (prefader)" msgstr "θέση επιλεγμένης οπτικής καναλιοÏ" -#: route_ui.cc:877 +#: route_ui.cc:882 #, fuzzy msgid "Assign selected tracks (postfader)" msgstr "θέση επιλεγμένης οπτικής καναλιοÏ" -#: route_ui.cc:881 +#: route_ui.cc:886 #, fuzzy msgid "Assign selected tracks and buses (postfader)" msgstr "θέση επιλεγμένης οπτικής καναλιοÏ" -#: route_ui.cc:884 +#: route_ui.cc:889 #, fuzzy msgid "Copy track/bus gains to sends" msgstr "ardour: ΕπιθεωÏητής καναλιών/διαÏλων:" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "" -#: route_ui.cc:1206 +#: route_ui.cc:1211 msgid "Solo Isolate" msgstr "" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "ΠÏο Fader" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "Μετά Fader" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "Control Outs" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "Main Outs" -#: route_ui.cc:1385 +#: route_ui.cc:1390 #, fuzzy msgid "Color Selection" msgstr "ΑναπαÏ/γή επιλογής" -#: route_ui.cc:1472 +#: route_ui.cc:1477 #, fuzzy msgid "" "Do you really want to remove track \"%1\" ?\n" @@ -10735,7 +10948,7 @@ msgstr "" "Πιθανόν να χάσετε και τη λίστα που χÏησιμοποιείται από το κανάλι.\n" "(δεν μποÏεί να ανακληθεί)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 #, fuzzy msgid "" "Do you really want to remove bus \"%1\" ?\n" @@ -10745,68 +10958,68 @@ msgstr "" "Στ'αλήθεια θέλετε να απαλοίψετε το κανάλι \"%1\" ?\n" "(δεν μποÏεί να ανακληθεί)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 #, fuzzy msgid "Remove track" msgstr "Απαλοιφή Στίγματος" -#: route_ui.cc:1484 +#: route_ui.cc:1489 #, fuzzy msgid "Remove bus" msgstr "Απαλοιφή" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" msgstr "" -#: route_ui.cc:1515 +#: route_ui.cc:1520 #, fuzzy msgid "Use the new name" msgstr "νέο όνομα: " -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "Μετονομασία ΚαναλιοÏ" -#: route_ui.cc:1531 +#: route_ui.cc:1536 #, fuzzy msgid "Rename Bus" msgstr "Μετονομασία" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr "" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "" -#: route_ui.cc:1709 +#: route_ui.cc:1714 #, fuzzy msgid "Save As Template" msgstr "Αποθήκευση Ï€Ïοσχεδίου..." -#: route_ui.cc:1710 +#: route_ui.cc:1715 #, fuzzy msgid "Template name:" msgstr "Όνομα Πεδίου:" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "" -#: route_ui.cc:1793 +#: route_ui.cc:1798 #, fuzzy msgid "Remote control ID:" msgstr "απαλοιφή σημείου ελέγχου" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10814,17 +11027,17 @@ msgid "" "The remote control ID of %3 cannot be changed." msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the master bus" msgstr "ΔημιουÏγία Master Bus" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the monitor bus" msgstr "ΔημιουÏγία Master Bus" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10835,25 +11048,25 @@ msgid "" "change this%5" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the mixer" msgstr "" "Μίκτης\n" "ΕπεξεÏγαστή" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the editor" msgstr "επεξεÏγαστής" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." msgstr "" -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "" @@ -11376,62 +11589,118 @@ msgstr "" msgid "Glue new regions to bars and beats" msgstr "" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "ΓέφυÏα μετÏητή" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "Ανάδειξη όλων των Audio Καναλιών" + +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "Δίαυλοι" + +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "ΔημιουÏγία Master Bus" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "αλλαγή rec-enable" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "+ κουμπί" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "Solo μέσω διαÏλου" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "κανάλια/δίαυλοι" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 #, fuzzy msgid "as new tracks" msgstr "...ÏŽÏ‚ νέο κανάλι" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 #, fuzzy msgid "to selected tracks" msgstr "θέση επιλεγμένης οπτικής καναλιοÏ" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 #, fuzzy msgid "to region list" msgstr "Snap στην αÏχή πεÏιοχής" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 #, fuzzy msgid "as new tape tracks" msgstr "...ÏŽÏ‚ νέο κανάλι" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 #, fuzzy msgid "programming error: unknown import mode string %1" msgstr "Σφάλμα Ï€ÏογÏαμματισμοÏ: request για μη-υπάÏχον ηχητικό διάστημα (%1)!" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 #, fuzzy msgid "Auto-play" msgstr "" "αυτόματη\n" "αναπαÏ/γή" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 #, fuzzy msgid "Sound File Information" msgstr "ΠληÏοφοÏίες για το Soundfile" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 #, fuzzy msgid "Timestamp:" msgstr "Με ΧÏονο-στάμπα ΠεÏιοχής" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 #, fuzzy msgid "Format:" msgstr "Κανονικό" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Δεν γινόταν να διαβαστεί το αÏχείο: %1 (%2)." @@ -11462,12 +11731,12 @@ msgstr "Ηχητικά frames" msgid "MIDI files" msgstr "MIDI δεσμός" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 #, fuzzy msgid "All files" msgstr "καθαÏισμένα αÏχεία" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 #, fuzzy msgid "Browse Files" msgstr "Αναζήτηση" @@ -11476,247 +11745,235 @@ msgstr "Αναζήτηση" msgid "Paths" msgstr "Μονοπάτια" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 #, fuzzy msgid "Sort:" msgstr "Ταξινόμηση" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 #, fuzzy msgid "Longest" msgstr "Μέγιστο" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 msgid "Shortest" msgstr "" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 #, fuzzy msgid "Newest" msgstr "ΑÏγότατο" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 #, fuzzy msgid "Least downloaded" msgstr "ΕναÏκτήÏιο διάστημα" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 #, fuzzy msgid "ID" msgstr "MIDI" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 #, fuzzy msgid "Filename" msgstr "Μετονομασία" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 #, fuzzy msgid "Duration" msgstr "ΔιάÏκεια (δευτ)" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 #, fuzzy msgid "Size" msgstr "Μέγ.μέγεθος" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 #, fuzzy msgid "Samplerate" msgstr "Εντόπιο Format" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "" -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 #, fuzzy msgid "GB" msgstr "Πήγαινε" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "" - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 #, fuzzy msgid "one track per channel" msgstr "panner για το κανάλι %u" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 #, fuzzy msgid "sequence files" msgstr "καθαÏισμένα αÏχεία" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 #, fuzzy msgid "merge files" msgstr "καθαÏισμένα αÏχεία" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 #, fuzzy msgid "one region per file" msgstr "γόμωση πεÏιοχής" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 #, fuzzy msgid "one region per channel" msgstr "ΔημιουÏγία μίας πεÏιοχής για κάθε κανάλι" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 #, fuzzy msgid "all files in one region" msgstr "ευθυγÏάμμιση πεÏιοχής" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" msgstr "" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 #, fuzzy msgid "Copy files to session" msgstr "ΑντιγÏαφή αÏχείου στο φάκελο της συνεδÏίας" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 #, fuzzy msgid "file timestamp" msgstr "Με ΧÏονο-στάμπα ΠεÏιοχής" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 #, fuzzy msgid "edit point" msgstr "επεξεÏγαστής" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 #, fuzzy msgid "playhead" msgstr "Θέση playhead" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 #, fuzzy msgid "session start" msgstr "ΑÏχές ΠεÏιοχών" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "" -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 #, fuzzy msgid "Insert at" msgstr "ΑντιστÏοφή" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 #, fuzzy msgid "Mapping" msgstr "ΠÏοχωÏημένα..." -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 #, fuzzy msgid "Conversion quality" msgstr "Ποιότητα ΜετατÏοπής" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "ΤαχÏτατο" @@ -11810,21 +12067,21 @@ msgstr "" #: startup.cc:194 msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11932,10 +12189,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "" - #: startup.cc:729 #, fuzzy msgid "Open" @@ -11951,99 +12204,99 @@ msgstr "Îέο Όνομα ΣυνεδÏίας:" msgid "Create session folder in:" msgstr "ΔημιουÏγία Directory ΣυνεδÏίας Στο:" -#: startup.cc:813 +#: startup.cc:821 #, fuzzy msgid "Select folder for session" msgstr "επιλογή πεÏιοχών" -#: startup.cc:845 +#: startup.cc:853 #, fuzzy msgid "Use this template" msgstr "Επιλογή Ï€Ïοσχεδίου" -#: startup.cc:848 +#: startup.cc:856 #, fuzzy msgid "no template" msgstr "-Ï€Ïοσχέδιο" -#: startup.cc:876 +#: startup.cc:884 #, fuzzy msgid "Use an existing session as a template:" msgstr "ΧÏήση ΠÏοσχεδίου ΣυνεδÏιών" -#: startup.cc:888 +#: startup.cc:896 #, fuzzy msgid "Select template" msgstr "Επιλογή Ï€Ïοσχεδίου" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "Îέα συνεδÏία" -#: startup.cc:1068 +#: startup.cc:1077 #, fuzzy msgid "Select session file" msgstr "επιλογή αÏχείου συνεδÏίας" -#: startup.cc:1084 +#: startup.cc:1093 #, fuzzy msgid "Browse:" msgstr "Αναζήτηση" -#: startup.cc:1093 +#: startup.cc:1102 #, fuzzy msgid "Select a session" msgstr "επιλογή αÏχείου συνεδÏίας" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "κανάλια" -#: startup.cc:1135 +#: startup.cc:1145 #, fuzzy msgid "Busses" msgstr "Δίαυλοι" -#: startup.cc:1136 +#: startup.cc:1146 #, fuzzy msgid "Inputs" msgstr " Inputs καναλιών/διάυλων" -#: startup.cc:1137 +#: startup.cc:1147 #, fuzzy msgid "Outputs" msgstr " Outputs καναλιών/διάυλων" -#: startup.cc:1145 +#: startup.cc:1155 #, fuzzy msgid "Create master bus" msgstr "ΔημιουÏγία Master Bus" -#: startup.cc:1155 +#: startup.cc:1165 #, fuzzy msgid "Automatically connect to physical inputs" msgstr "αυτόματη σÏνδεση Inputs" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "" -#: startup.cc:1215 +#: startup.cc:1225 #, fuzzy msgid "Automatically connect outputs" msgstr "Αυτόματη σÏνδεση Οutputs" -#: startup.cc:1237 +#: startup.cc:1247 #, fuzzy msgid "... to master bus" msgstr "ΣÏνδεση με Master Δίαυλο" -#: startup.cc:1247 +#: startup.cc:1257 #, fuzzy msgid "... to physical outputs" msgstr "Συνδεση με Φυσικές Εξόδους" -#: startup.cc:1297 +#: startup.cc:1307 #, fuzzy msgid "Advanced Session Options" msgstr "Επιπλέον Ρυθμίσεις" @@ -12762,21 +13015,21 @@ msgstr "" msgid "bad XPM header %1" msgstr "εσφαλμένος XPM header %1" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "ελλειπές RGBA στÏλ για \"%1\"" -#: utils.cc:544 +#: utils.cc:591 #, fuzzy msgid "cannot find XPM file for %1" msgstr "δεν ευÏέθησαν εικόνες για το fader rail" -#: utils.cc:570 +#: utils.cc:617 #, fuzzy msgid "cannot find icon image for %1 using %2" msgstr "δεν ευÏέθησαν εικόνες για το fader rail" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "" @@ -12784,84 +13037,86 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 #, fuzzy msgid "Set Video Track" msgstr "ΠÏόσθεση καναλιοÏ" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 #, fuzzy msgid "Launch External Video Monitor" msgstr "Software Monitoring" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 #, fuzzy msgid "Video files" msgstr "Ηχητικά frames" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 #, fuzzy msgid "Video Information" msgstr "ΠληÏοφοÏίες για το Soundfile" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 #, fuzzy msgid "Start:" msgstr "ΑÏχή:" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 #, fuzzy msgid "Frame rate:" msgstr "Εντόπιο Format" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 msgid "Export Successful: %1" msgstr "" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12869,18 +13124,18 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 #, fuzzy msgid "Video Monitor: File Not Found." msgstr "Software Monitoring" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12890,377 +13145,385 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 #, fuzzy msgid "Transcode/Import Video File " msgstr "Εξαγωγή συνεδÏίας σε αÏχείο..." -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 #, fuzzy msgid "Output File:" msgstr "κανάλια" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "Ύψος" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 #, fuzzy msgid "File Information" msgstr "ΠληÏοφοÏίες για το Soundfile" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 #, fuzzy msgid "Duration:" msgstr "ΔιάÏκεια (δευτ)" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 #, fuzzy msgid "??" msgstr "???" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 #, fuzzy msgid "Import Settings" msgstr "Επιλογές" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 #, fuzzy msgid "Import/Transcode Video to Session" msgstr "Εξαγωγή ΣυνεδÏίας" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 msgid "Original Width" msgstr "" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 #, fuzzy msgid "Extract Audio:" msgstr "Εξαγωγή ΣυνεδÏίας" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 #, fuzzy msgid "Extracting Audio.." msgstr "Εξαγωγή ΣυνεδÏίας" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 msgid "Transcoding Failed." msgstr "" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 #, fuzzy msgid "Save Transcoded Video File" msgstr "Εξαγωγή συνεδÏίας σε αÏχείο..." -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 msgid "Server Docroot:" msgstr "" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 #, fuzzy msgid "Listen Port:" msgstr "Θέση" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 #, fuzzy msgid "Cache Size:" msgstr "Μέγ.μέγεθος" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 #, fuzzy msgid "Confirm Overwrite" msgstr "awrite" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 #, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "Το αÏχείο ήδη υπάÏχει, θέλετε να σώστε από πάνω?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 #, fuzzy msgid "Cannot create video folder \"%1\" (%2)" msgstr "δεν γίνεται νέος αÏχηγός process group (%1)" -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 #, fuzzy msgid "Export Video File " msgstr "Εξαγωγή συνεδÏίας σε αÏχείο..." -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 #, fuzzy msgid "Video:" msgstr "ΕυθυγÏάμμιση αÏχής ΠεÏιοχών" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "Εξομάλυνση" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 #, fuzzy msgid "Deinterlace" msgstr "εσωτεÏικό" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 #, fuzzy msgid "Include Session Metadata" msgstr "Εισαγωγή επιλεγμένου(ων)" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 #, fuzzy msgid "Output:" msgstr " Outputs καναλιών/διάυλων" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 #, fuzzy msgid "Input:" msgstr " Inputs καναλιών/διάυλων" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 #, fuzzy msgid "Audio:" msgstr "ΑκÏόαση" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 #, fuzzy msgid "Master Bus" msgstr "ΔημιουÏγία Master Bus" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 #, fuzzy msgid "Settings:" msgstr "ΠÏοχωÏημένα..." -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 #, fuzzy msgid "Range:" msgstr "Διάστημα" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 #, fuzzy msgid "Preset:" msgstr "Îέο ΠÏοσθήκη" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 #, fuzzy msgid "Video Codec:" msgstr "Όνομα φακέλου:" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 #, fuzzy msgid "Video KBit/s:" msgstr "ΕυθυγÏάμμιση αÏχής ΠεÏιοχών" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 #, fuzzy msgid "Audio Codec:" msgstr "Ηχητικά frames" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 #, fuzzy msgid "Audio KBit/s:" msgstr "Ηχητικά frames" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 #, fuzzy msgid "Audio Samplerate:" msgstr "Εντόπιο Format" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "Εξομάλυνση" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 #, fuzzy msgid "Exporting audio" msgstr "Εξαγωγή ΣυνεδÏίας" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:437 #, fuzzy -msgid "Exporting Audio.." +msgid "Exporting Audio..." msgstr "Εξαγωγή ΣυνεδÏίας" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." +#: export_video_dialog.cc:562 +msgid "Encoding Video..." msgstr "" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 msgid "Transcoding failed." msgstr "" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 #, fuzzy msgid "Save Exported Video File" msgstr "Εξαγωγή συνεδÏίας σε αÏχείο..." @@ -13278,33 +13541,34 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" -"\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" -"\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#, fuzzy +#~ msgid "-Inf" +#~ msgstr "-inf" + +#, fuzzy +#~ msgid "slowest" +#~ msgstr "ΑÏγότατο" + +#, fuzzy +#~ msgid "fast" +#~ msgstr "ταχÏτατη" + +#, fuzzy +#~ msgid "faster" +#~ msgstr "ΤαχÏτεÏα" + +#~ msgid "fastest" +#~ msgstr "ταχÏτατη" + #~ msgid "Connect" #~ msgstr "ΣÏνδεση" @@ -14962,9 +15226,6 @@ msgstr "" #~ msgid "solo change" #~ msgstr "αλλαγή σόλο" -#~ msgid "rec-enable change" -#~ msgstr "αλλαγή rec-enable" - #~ msgid "mix group solo change" #~ msgstr "αλλαγή solo του mix group" @@ -14995,13 +15256,6 @@ msgstr "" #~ msgid "Beat" #~ msgstr "ΚτÏπος" -#~ msgid "" -#~ "Do you really want to remove track \"%1\" ?\n" -#~ "(cannot be undone)" -#~ msgstr "" -#~ "Στ'αλήθεια θέλετε να απαλοίψετε το κανάλι \"%1\" ?\n" -#~ "(δεν μποÏεί να ανακληθεί)" - #~ msgid "set selected regionview" #~ msgstr "θέση επιλεγμένης οπτικής πεÏιοχής" @@ -15153,9 +15407,6 @@ msgstr "" #~ msgid "Session %1 already exists at %2" #~ msgstr "Η ΣυνεδÏία %1 υπάÏχει ήδη στο %2" -#~ msgid "UI: cannot setup meter_bridge" -#~ msgstr "UI: η γέφυÏα μετÏήσεων δεν μποÏεί να εγεÏθεί" - #~ msgid "Enable/Disable follow playhead" #~ msgstr "ΆÏση/ΠαÏση ακολουθίας αναπαÏαγωγέα" @@ -15173,9 +15424,6 @@ msgstr "" #~ msgid "Audio Library" #~ msgstr "Ηχητική βιβλιοθήκη" -#~ msgid "Meter Bridge" -#~ msgstr "ΓέφυÏα μετÏητή" - #~ msgid "Output Connections" #~ msgstr "Συνδέσεις Εξόδου" diff --git a/gtk2_ardour/po/en_GB.po b/gtk2_ardour/po/en_GB.po index 5773a4433c..eec6f28ea8 100644 --- a/gtk2_ardour/po/en_GB.po +++ b/gtk2_ardour/po/en_GB.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2011-12-08 15:38+0100\n" "Last-Translator: Colin Fletcher \n" "Language-Team: UK English \n" @@ -370,7 +370,7 @@ msgstr "" msgid "%1 will not work without a valid ardour.menus file" msgstr "" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 msgid "Add Track or Bus" msgstr "" @@ -406,8 +406,8 @@ msgstr "" msgid "Add:" msgstr "" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 msgid "Options" msgstr "" @@ -421,21 +421,21 @@ msgid "Group:" msgstr "" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 msgid "Audio" msgstr "" #: 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "" @@ -457,7 +457,7 @@ msgid "" msgstr "" #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "" @@ -501,7 +501,7 @@ msgstr "" msgid "12 Channel" msgstr "" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "" @@ -584,7 +584,7 @@ msgid "Track" msgstr "" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 msgid "Show" msgstr "" @@ -592,92 +592,88 @@ msgstr "" msgid "Re-analyze data" msgstr "" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 msgid "audition" msgstr "" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 msgid "solo" msgstr "" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 msgid "feedback" msgstr "" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 msgid "Speaker Configuration" msgstr "" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 msgid "Add Tracks/Busses" msgstr "" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 msgid "Tracks and Busses" msgstr "" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 msgid "Audio Connections" msgstr "" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "Channel Colours" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "" -#: ardour_ui.cc:299 -msgid "could not initialize %1." -msgstr "could not initialise %1." - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "" -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 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" @@ -686,23 +682,23 @@ msgid "" "controlled by %2" msgstr "" -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 msgid "Don't quit" msgstr "" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 msgid "Just quit" msgstr "" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 msgid "Save and quit" msgstr "" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 msgid "" "%1 was unable to save your session.\n" "\n" @@ -711,15 +707,15 @@ msgid "" "\"Just quit\" option." msgstr "" -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 msgid "Please wait while %1 cleans up..." msgstr "" -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 msgid "Unsaved Session" msgstr "" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -730,7 +726,7 @@ msgid "" "What do you want to do?" msgstr "" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -741,74 +737,74 @@ msgid "" "What do you want to do?" msgstr "" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 msgid "File:" msgstr "" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -816,58 +812,58 @@ msgid "" "\">%%%" msgstr "" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 msgid "Disk: Unknown" msgstr "" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, c-format msgid "Timecode|TC: %s" msgstr "" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" msgstr "" -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 msgid "%1 sessions" msgstr "" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "" -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "" msgstr[1] "" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -875,36 +871,36 @@ msgid "" "restart JACK with more ports." msgstr "" -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 msgid "You cannot add a track or bus without a session already loaded." msgstr "" -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "" msgstr[1] "" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "" msgstr[1] "" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 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." msgstr "" -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" "%1" msgstr "" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -912,126 +908,126 @@ msgid "" "JACK, reconnect and save the session." msgstr "" -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 msgid "Take Snapshot" msgstr "" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 msgid "Name of new snapshot" msgstr "" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 msgid "Rename Session" msgstr "" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 msgid "New session name" msgstr "" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" msgstr "" -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 msgid "Save Template" msgstr "" -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 msgid "Name for template:" msgstr "" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 msgid "" "This session\n" "%1\n" "already exists. Do you want to open it?" msgstr "" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 msgid "Open Existing Session" msgstr "" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "" -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "" -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "" -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 msgid "Could not create session in \"%1\"" msgstr "" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 msgid "No files were ready for clean-up" msgstr "" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1039,19 +1035,19 @@ msgid "" "require some unused files to continue to exist." msgstr "" -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 msgid "" "The following file was deleted from %2,\n" "releasing %3 %4bytes of disk space" @@ -1061,7 +1057,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 msgid "" "The following file was not in use and \n" "has been moved to: %2\n" @@ -1083,91 +1079,91 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 msgid "Are you sure you want to clean-up?" msgstr "" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" "Clean-up will move all unused files to a \"dead\" location." msgstr "" -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 msgid "Cleaned Files" msgstr "" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 msgid "Yes, Stop It" msgstr "" -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "" -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1176,7 +1172,7 @@ msgid "" "quickly enough to keep up with recording.\n" msgstr "" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1185,11 +1181,11 @@ msgid "" "quickly enough to keep up with playback.\n" msgstr "" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 msgid "" "This session appears to have been in the\n" "middle of recording when %1 or\n" @@ -1200,42 +1196,42 @@ msgid "" "what you would like to do.\n" msgstr "" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 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" "audio may be played at the wrong sample rate.\n" msgstr "" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 msgid "Do not load session" msgstr "" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1258,73 +1254,77 @@ msgstr "" msgid "UI: cannot setup mixer" msgstr "" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +msgid "UI: cannot setup meterbridge" +msgstr "" + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 msgid "Toggle record" msgstr "" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" msgstr "" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 msgid "Playhead follows Range Selections and Edits" msgstr "" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" msgstr "" -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" msgstr "" -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "" -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1332,7 +1332,7 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1340,27 +1340,31 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +msgid "Reset Level Meter" +msgstr "" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "" -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "" -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1380,23 +1384,23 @@ msgstr "" msgid "Setup Mixer" msgstr "" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 msgid "Don't close" msgstr "" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 msgid "Just close" msgstr "" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 msgid "Save and close" msgstr "" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" @@ -1409,7 +1413,7 @@ msgstr "" msgid "Sync" msgstr "" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "" @@ -1437,15 +1441,15 @@ msgstr "" msgid "Sample Format" msgstr "" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "" @@ -1461,7 +1465,7 @@ msgstr "" msgid "Denormal Handling" msgstr "" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "" @@ -1501,8 +1505,8 @@ msgstr "" msgid "Save As..." msgstr "" -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 msgid "Rename..." msgstr "" @@ -1531,7 +1535,7 @@ msgid "Stem export..." msgstr "" #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "" @@ -1543,11 +1547,11 @@ msgstr "" msgid "Flush Wastebasket" msgstr "" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1472 msgid "JACK" msgstr "" -#: ardour_ui_ed.cc:190 route_params_ui.cc:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "" @@ -1555,8 +1559,8 @@ msgstr "" msgid "Reconnect" msgstr "" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "" @@ -1572,7 +1576,7 @@ msgstr "" msgid "Show Toolbars" msgstr "" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 msgid "Window|Mixer" msgstr "" @@ -1580,27 +1584,31 @@ msgstr "" msgid "Toggle Editor+Mixer" msgstr "" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +msgid "Window|Meterbridge" +msgstr "" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 msgid "Help|Manual" msgstr "" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1610,99 +1618,99 @@ msgstr "" msgid "Transport" msgstr "" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 msgid "Start/Continue/Stop" msgstr "" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 msgid "Stop and Forget Capture" msgstr "" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 msgid "Transition To Roll" msgstr "" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 msgid "Play Selected Range" msgstr "" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 msgid "Play Selection w/Preroll" msgstr "" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 msgid "Start Recording" msgstr "" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1711,125 +1719,125 @@ msgstr "" msgid "Timecode" msgstr "" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 msgid "Bars & Beats" msgstr "" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 msgid "Minutes & Seconds" msgstr "" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 msgid "Punch In" msgstr "" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 msgid "Punch Out" msgstr "" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 msgid "In/Out" msgstr "" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 msgid "Auto Input" msgstr "" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 msgid "Auto Play" msgstr "" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 msgid "Time Master" msgstr "" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 msgid "Toggle Record Enable Track %1" msgstr "" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 msgid "Send MIDI Clock" msgstr "" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 msgid "Send MIDI Feedback" msgstr "" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 msgid "Wall Clock" msgstr "" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 msgid "DSP" msgstr "" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 msgid "Buffers" msgstr "" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 msgid "Timecode Format" msgstr "" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 msgid "File Format" msgstr "" @@ -1843,11 +1851,11 @@ msgstr "" msgid "Internal" msgstr "" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 msgid "Enable/Disable external positional sync" msgstr "" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "" @@ -1877,7 +1885,7 @@ msgstr "" msgid "Meter" msgstr "" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -1966,32 +1974,32 @@ msgid "hide track" msgstr "" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 msgid "Automation|Manual" msgstr "" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "" @@ -2000,7 +2008,7 @@ msgid "clear automation" msgstr "" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "" @@ -2021,7 +2029,7 @@ msgstr "" msgid "Linear" msgstr "" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "" @@ -2038,13 +2046,13 @@ msgstr "" msgid "Direction:" msgstr "" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "" @@ -2054,8 +2062,8 @@ msgid "Edit" msgstr "" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "" @@ -2223,7 +2231,7 @@ msgstr "" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "" @@ -2469,17 +2477,17 @@ msgid "Ranges & Marks" msgstr "" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 msgid "Editor" msgstr "" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "" @@ -2504,8 +2512,8 @@ msgstr "" msgid "Slow" msgstr "" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "" @@ -2525,7 +2533,7 @@ msgstr "" msgid "Slowest" msgstr "" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "" @@ -2642,7 +2650,7 @@ msgid "Select All in Track" msgstr "" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "" @@ -2694,15 +2702,15 @@ msgstr "" msgid "Select" msgstr "" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "" @@ -2854,7 +2862,7 @@ msgstr "" msgid "Redo (%1)" msgstr "" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "" @@ -2881,8 +2889,8 @@ msgstr "" msgid "Keep Playlist" msgstr "" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "" @@ -2902,7 +2910,7 @@ msgstr "" msgid "Please wait while %1 loads visual data." msgstr "" -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 msgid "Edit..." msgstr "" @@ -2951,7 +2959,7 @@ msgstr "" msgid "Position" msgstr "" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "" @@ -2964,7 +2972,7 @@ msgstr "" msgid "Ranges" msgstr "" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 msgid "Fades" @@ -3002,7 +3010,7 @@ msgstr "" msgid "Misc Options" msgstr "" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "" @@ -3043,8 +3051,8 @@ msgstr "" msgid "Separate" msgstr "" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "" @@ -3056,7 +3064,7 @@ msgstr "" msgid "Timecode fps" msgstr "" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "" @@ -3180,7 +3188,7 @@ msgstr "" msgid "Playhead to Range End" msgstr "" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "" @@ -3448,9 +3456,9 @@ msgstr "" msgid "Toggle Active" msgstr "" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "" @@ -3458,19 +3466,19 @@ msgstr "" msgid "Fit Selected Tracks" msgstr "" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "" @@ -3566,7 +3574,7 @@ msgstr "" msgid "Slide" msgstr "" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "" @@ -3741,7 +3749,7 @@ msgstr "" msgid "Video Monitor" msgstr "" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -3750,7 +3758,7 @@ msgid "Always on Top" msgstr "" #: editor_actions.cc:554 -msgid "Framenumber" +msgid "Frame number" msgstr "" #: editor_actions.cc:555 @@ -3839,7 +3847,7 @@ msgstr "" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "" @@ -3879,289 +3887,289 @@ msgstr "" msgid "Could not find editor.bindings in search path %1" msgstr "" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "" -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 msgid "Raise to Top" msgstr "" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 msgid "Lower to Bottom" msgstr "" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 msgid "Move to Original Position" msgstr "" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 msgid "Remove Sync" msgstr "" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 msgid "Normalize..." msgstr "Normalise..." -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 msgid "Make Mono Regions" msgstr "" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "" -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 msgid "Transpose..." msgstr "" -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 msgid "Opaque" msgstr "" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 msgid "Multi-Duplicate..." msgstr "" -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 msgid "Set Punch" msgstr "" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 msgid "Add Single Range Marker" msgstr "" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 msgid "Add Range Marker Per Region" msgstr "" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 msgid "Snap Position To Grid" msgstr "" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 msgid "Close Gaps" msgstr "" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "" -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 msgid "Export..." msgstr "" -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 msgid "Separate Under" msgstr "" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 msgid "Set Fade In Length" msgstr "" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 msgid "Set Fade Out Length" msgstr "" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 msgid "Set Tempo from Region = Bar" msgstr "" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 msgid "Split at Percussion Onsets" msgstr "" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 msgid "List Editor..." msgstr "" -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "" -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "" -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 msgid "Reset Envelope" msgstr "" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 msgid "Reset Gain" msgstr "" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 msgid "Envelope Active" msgstr "" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 msgid "Quantize..." msgstr "Quantise..." -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "" -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "" -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 msgid "Set Range Selection" msgstr "" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 msgid "Nudge Later" msgstr "" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 msgid "Nudge Earlier" msgstr "" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 msgid "Nudge Later by Capture Offset" msgstr "" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 msgid "Nudge Earlier by Capture Offset" msgstr "" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 msgid "Trim to Previous" msgstr "" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 msgid "Trim to Next" msgstr "" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 msgid "Insert Region From Region List" msgstr "" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 msgid "Set Sync Position" msgstr "" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 msgid "Trim Start at Edit Point" msgstr "" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 msgid "Trim End at Edit Point" msgstr "" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 msgid "Align Start" msgstr "" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 msgid "Align Start Relative" msgstr "" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 msgid "Align End" msgstr "" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 msgid "Align End Relative" msgstr "" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 msgid "Align Sync" msgstr "" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 msgid "Align Sync Relative" msgstr "" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "" @@ -4185,38 +4193,38 @@ msgid "" "%2 as a new source, or skip it?" msgstr "" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 msgid "Sample rate" msgstr "" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" msgstr "" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "" @@ -4252,31 +4260,31 @@ msgstr "" msgid "move tempo mark" msgstr "" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 msgid "programming_error: %1" msgstr "" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 msgid "rubberband selection" msgstr "" @@ -4345,7 +4353,7 @@ msgid "Sharing Solo?" msgstr "" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "" @@ -4416,7 +4424,7 @@ msgid "end" msgstr "" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "" @@ -4424,7 +4432,7 @@ msgstr "" msgid "range" msgstr "" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "" @@ -4500,8 +4508,8 @@ msgstr "" msgid "Rename Range" msgstr "" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "" @@ -4641,7 +4649,7 @@ msgstr "" msgid "Rename Region" msgstr "" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 msgid "New name:" msgstr "" @@ -4802,7 +4810,7 @@ msgid "" msgstr "" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "" @@ -4985,11 +4993,11 @@ msgstr "" msgid "close region gaps" msgstr "" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "" -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5003,7 +5011,7 @@ msgstr "" msgid "tracks" msgstr "" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 msgid "track" msgstr "" @@ -5011,7 +5019,7 @@ msgstr "" msgid "busses" msgstr "" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "" @@ -5042,7 +5050,7 @@ msgstr "" msgid "Yes, remove them." msgstr "" -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "" @@ -5111,7 +5119,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "" @@ -5128,8 +5136,9 @@ msgstr "" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "" @@ -5196,7 +5205,8 @@ msgstr "" msgid "Track/Bus visible ?" msgstr "" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "" @@ -5204,7 +5214,7 @@ msgstr "" msgid "Track/Bus active ?" msgstr "" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 msgid "I" msgstr "" @@ -5212,7 +5222,7 @@ msgstr "" msgid "MIDI input enabled" msgstr "" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "" @@ -5225,7 +5235,7 @@ msgstr "" msgid "Muted" msgstr "" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "" @@ -5237,7 +5247,7 @@ msgstr "" msgid "SI" msgstr "" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 msgid "Solo Isolated" msgstr "" @@ -5513,139 +5523,143 @@ msgid "192000Hz" msgstr "" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 msgid "Audio Interface:" msgstr "" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 msgid "Audio mode:" msgstr "" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "" -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "" -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -5662,31 +5676,31 @@ msgid "" "%1 and choose the relevant device then." msgstr "" -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "" -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "" -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "" @@ -5834,9 +5848,9 @@ msgid "Folder:" msgstr "" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "" @@ -5960,6 +5974,10 @@ msgstr "" msgid "Broadcast Wave options" msgstr "" +#: export_format_selector.cc:136 +msgid "Do you really want to remove the format?" +msgstr "" + #: export_preset_selector.cc:28 msgid "Preset" msgstr "" @@ -5970,6 +5988,10 @@ msgid "" "Perhaps it references a format that has been removed?" msgstr "" +#: export_preset_selector.cc:156 +msgid "Do you really want to remove this preset?" +msgstr "" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "" @@ -5982,36 +6004,48 @@ msgstr "" msgid "Range" msgstr "" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +msgid "curl error %1 (%2)" +msgstr "" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +msgid "%1" +msgstr "" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "" -#: gain_meter.cc:334 -msgid "-Inf" -msgstr "" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "" @@ -6023,7 +6057,7 @@ msgstr "" msgid "Switches" msgstr "" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "" @@ -6051,63 +6085,63 @@ msgstr "" msgid "MIDI Connection Manager" msgstr "" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "" -#: group_tabs.cc:306 +#: group_tabs.cc:308 msgid "Selection..." msgstr "" -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "" -#: group_tabs.cc:308 +#: group_tabs.cc:310 msgid "Soloed..." msgstr "" -#: group_tabs.cc:314 +#: group_tabs.cc:316 msgid "Create New Group ..." msgstr "" -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "" -#: group_tabs.cc:318 +#: group_tabs.cc:320 msgid "Edit Group..." msgstr "" -#: group_tabs.cc:319 +#: group_tabs.cc:321 msgid "Collect Group" msgstr "" -#: group_tabs.cc:320 +#: group_tabs.cc:322 msgid "Remove Group" msgstr "" -#: group_tabs.cc:323 +#: group_tabs.cc:325 msgid "Remove Subgroup Bus" msgstr "" -#: group_tabs.cc:325 +#: group_tabs.cc:327 msgid "Add New Subgroup Bus" msgstr "" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "" -#: group_tabs.cc:328 +#: group_tabs.cc:330 msgid "Add New Aux Bus (post-fader)" msgstr "" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "" -#: group_tabs.cc:335 +#: group_tabs.cc:337 msgid "Disable All Groups" msgstr "" @@ -6201,11 +6235,11 @@ msgstr "" msgid "I/O selector" msgstr "" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "" @@ -6279,7 +6313,7 @@ msgstr[1] "" msgid "Reset" msgstr "" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "" @@ -6307,63 +6341,63 @@ msgstr "" msgid "Pre-Emphasis" msgstr "" -#: location_ui.cc:310 +#: location_ui.cc:314 msgid "Remove this range" msgstr "" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 msgid "Set range start from playhead location" msgstr "" -#: location_ui.cc:316 +#: location_ui.cc:320 msgid "Set range end from playhead location" msgstr "" -#: location_ui.cc:320 +#: location_ui.cc:324 msgid "Remove this marker" msgstr "" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 msgid "Set marker time from playhead location" msgstr "" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "" -#: location_ui.cc:708 +#: location_ui.cc:720 msgid "New Marker" msgstr "" -#: location_ui.cc:709 +#: location_ui.cc:721 msgid "New Range" msgstr "" -#: location_ui.cc:722 +#: location_ui.cc:734 msgid "Loop/Punch Ranges" msgstr "" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "" @@ -6429,45 +6463,49 @@ msgid "" "session at this time, because we would lose your connection information.\n" msgstr "" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr "" -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr "" -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "" -#: main.cc:505 +#: main.cc:501 msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" msgstr "" -#: main.cc:507 +#: main.cc:503 msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "" -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "" -#: main.cc:519 +#: main.cc:513 +msgid "could not initialize %1." +msgstr "could not initialise %1." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "" -#: main.cc:525 +#: main.cc:528 #, fuzzy msgid "could not create %1 GUI" msgstr "could not initialise %1." @@ -6476,7 +6514,7 @@ msgstr "could not initialise %1." msgid "Display delta to edit cursor" msgstr "" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "" @@ -6955,7 +6993,7 @@ msgstr "" msgid "Missing Plugins" msgstr "" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "" @@ -7027,215 +7065,227 @@ msgstr "" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 msgid "Comments" msgstr "" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "" -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 msgid "Hide this mixer strip" msgstr "" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 msgid "Click to select metering point" msgstr "" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 msgid "iso" msgstr "" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 msgid "Mix group" msgstr "" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 msgid "Phase Invert" msgstr "" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 msgid "Solo Safe" msgstr "" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 msgid "Meter Point" msgstr "" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 msgid "Enable/Disable MIDI input" msgstr "" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 msgid "" "Aux\n" "Sends" msgstr "" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 msgid "Snd" msgstr "" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 msgid "Disconnected" msgstr "" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 msgid "*Comments*" msgstr "" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 msgid "Cmt" msgstr "" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr "" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 msgid "Comments..." msgstr "" -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 msgid "Save As Template..." msgstr "" -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "" -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 msgid "Remote Control ID..." msgstr "" -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 msgid "in" msgstr "" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 msgid "out" msgstr "" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 msgid "pr" msgstr "" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 msgid "po" msgstr "" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 msgid "o" msgstr "" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 msgid "D" msgstr "" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 msgid "i" msgstr "" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 msgid "Pre-fader" msgstr "" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 msgid "Post-fader" msgstr "" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +msgid "Change all to %1" +msgstr "" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "" @@ -7244,10 +7294,66 @@ msgstr "" msgid "-all-" msgstr "" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "" +#: meter_strip.cc:764 +msgid "Variable height" +msgstr "" + +#: meter_strip.cc:765 +msgid "Short" +msgstr "" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +msgid "VU" +msgstr "" + #: monitor_section.cc:62 msgid "SiP" msgstr "" @@ -7589,7 +7695,7 @@ msgstr "" msgid "Panner (2D)" msgstr "" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "" @@ -7762,7 +7868,7 @@ msgstr "" msgid "Eh? LADSPA plugins don't have editors!" msgstr "" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " "version of %1)" @@ -7772,79 +7878,91 @@ msgstr "" msgid "unknown type of editor-supplying plugin" msgstr "" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " "version of %1)" msgstr "" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 msgid "Description" msgstr "" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 msgid "Plugin analysis" msgstr "" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 msgid "Save a new preset" msgstr "" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" msgstr "" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "" msgstr[1] "" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 msgid "Edit Latency" msgstr "" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "" @@ -7948,76 +8066,77 @@ msgstr "" msgid "Port Insert " msgstr "" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 msgid "Sources" msgstr "" -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, c-format msgid "Rename '%s'..." msgstr "" -#: port_matrix.cc:451 +#: port_matrix.cc:472 msgid "Remove all" msgstr "" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, c-format msgid "%s all" msgstr "" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "" -#: port_matrix.cc:702 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." msgstr "" -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "" -#: port_matrix.cc:728 +#: port_matrix.cc:749 msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, c-format msgid "Remove '%s'" msgstr "" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, c-format msgid "%s all from '%s'" msgstr "" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 msgid "channel" msgstr "" @@ -8029,192 +8148,192 @@ msgstr "" msgid "There are no %1 ports to connect." msgstr "" -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 msgid "Show All Controls" msgstr "" -#: processor_box.cc:375 +#: processor_box.cc:376 msgid "Hide All Controls" msgstr "" -#: processor_box.cc:464 +#: processor_box.cc:465 msgid "on" msgstr "" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" msgstr "" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" msgstr "" -#: processor_box.cc:1196 +#: processor_box.cc:1209 msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "" msgstr[1] "" -#: processor_box.cc:1200 +#: processor_box.cc:1213 msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" msgstr[0] "" msgstr[1] "" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" msgstr "" -#: processor_box.cc:1206 +#: processor_box.cc:1219 msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "" msgstr[1] "" -#: processor_box.cc:1210 +#: processor_box.cc:1223 msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "" msgstr[1] "" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" msgstr "" -#: processor_box.cc:1249 +#: processor_box.cc:1262 msgid "Cannot set up new send: %1" msgstr "" -#: processor_box.cc:1581 +#: processor_box.cc:1594 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" "outputs will not work correctly." msgstr "" -#: processor_box.cc:1765 +#: processor_box.cc:1778 msgid "Rename Processor" msgstr "" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" "could not match the configuration of this track." msgstr "" -#: processor_box.cc:1987 +#: processor_box.cc:2000 msgid "" "Do you really want to remove all processors from %1?\n" "(this cannot be undone)" msgstr "" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 msgid "Remove processors" msgstr "" -#: processor_box.cc:2008 +#: processor_box.cc:2021 msgid "" "Do you really want to remove all pre-fader processors from %1?\n" "(this cannot be undone)" msgstr "" -#: processor_box.cc:2011 +#: processor_box.cc:2024 msgid "" "Do you really want to remove all post-fader processors from %1?\n" "(this cannot be undone)" msgstr "" -#: processor_box.cc:2198 +#: processor_box.cc:2200 msgid "New Plugin" msgstr "" -#: processor_box.cc:2201 +#: processor_box.cc:2203 msgid "New Insert" msgstr "" -#: processor_box.cc:2204 +#: processor_box.cc:2206 msgid "New External Send ..." msgstr "" -#: processor_box.cc:2208 +#: processor_box.cc:2210 msgid "New Aux Send ..." msgstr "" -#: processor_box.cc:2212 +#: processor_box.cc:2214 msgid "Clear (all)" msgstr "" -#: processor_box.cc:2214 +#: processor_box.cc:2216 msgid "Clear (pre-fader)" msgstr "" -#: processor_box.cc:2216 +#: processor_box.cc:2218 msgid "Clear (post-fader)" msgstr "" -#: processor_box.cc:2242 +#: processor_box.cc:2244 msgid "Activate All" msgstr "" -#: processor_box.cc:2244 +#: processor_box.cc:2246 msgid "Deactivate All" msgstr "" -#: processor_box.cc:2246 +#: processor_box.cc:2248 msgid "A/B Plugins" msgstr "" -#: processor_box.cc:2255 +#: processor_box.cc:2257 msgid "Edit with generic controls..." msgstr "" -#: processor_box.cc:2531 +#: processor_box.cc:2557 msgid "%1: %2 (by %3)" msgstr "" @@ -8372,7 +8491,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -8460,7 +8579,7 @@ msgstr "" msgid "Click gain level" msgstr "" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "" @@ -8638,91 +8757,95 @@ msgstr "" msgid "Show meters on tracks in the editor" msgstr "" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 msgid "Show waveforms in regions" msgstr "" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 msgid "Show gain envelopes in audio regions" msgstr "" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 msgid "Waveform scale" msgstr "" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 msgid "Waveform shape" msgstr "" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 msgid "traditional" msgstr "" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 msgid "rectified" msgstr "" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "Colour regions using their track's colour" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 msgid "Name new markers" msgstr "" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -8730,333 +8853,415 @@ msgid "" "You can always rename markers by right-clicking on them" msgstr "" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 msgid "Record monitoring handled by" msgstr "" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 msgid "ardour" msgstr "" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 msgid "audio hardware" msgstr "" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 msgid "Tape machine mode" msgstr "" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 msgid "Connect track inputs" msgstr "" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 msgid "automatically to physical inputs" msgstr "" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 msgid "automatically to physical outputs" msgstr "" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 msgid "automatically to master bus" msgstr "" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 msgid "Denormals" msgstr "" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 msgid "Silence plugins when the transport is stopped" msgstr "" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 msgid "Listen Position" msgstr "" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 msgid "after-fader (AFL)" msgstr "" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 msgid "pre-fader (PFL)" msgstr "" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 msgid "before pre-fader processors" msgstr "" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 msgid "immediately post-fader" msgstr "" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 msgid "after post-fader processors (before pan)" msgstr "" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 msgid "Mute affects control outputs" msgstr "" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 msgid "Send MIDI control feedback" msgstr "" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 msgid "Sound MIDI notes as they are selected" msgstr "" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 msgid "User interaction" msgstr "" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 msgid "Control surface remote ID" msgstr "" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 msgid "Preferences|GUI" msgstr "" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 msgid "Mixer Strip" msgstr "" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 msgid "Use narrow strips in the mixer by default" msgstr "" -#: rc_option_editor.cc:1898 -msgid "Meter hold time" +#: rc_option_editor.cc:1906 +msgid "Peak hold time" msgstr "" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 msgid "short" msgstr "" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "" -#: rc_option_editor.cc:1912 -msgid "Meter fall-off" +#: rc_option_editor.cc:1920 +msgid "DPM fall-off" +msgstr "" + +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" +msgstr "" + +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" + +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" + +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" msgstr "" -#: rc_option_editor.cc:1918 -msgid "slowest" +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" msgstr "" -#: rc_option_editor.cc:1921 -msgid "fast" +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" msgstr "" -#: rc_option_editor.cc:1922 -msgid "faster" +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" msgstr "" -#: rc_option_editor.cc:1923 -msgid "fastest" +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" + +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 +msgid "Peak threshold [dBFS]" +msgstr "" + +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" + +#: rc_option_editor.cc:2000 +msgid "LED meter style" msgstr "" #: region_editor.cc:79 @@ -9067,11 +9272,11 @@ msgstr "" msgid "Position:" msgstr "" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "" @@ -9095,23 +9300,23 @@ msgstr "" msgid "Source:" msgstr "" -#: region_editor.cc:167 +#: region_editor.cc:166 msgid "Region '%1'" msgstr "" -#: region_editor.cc:274 +#: region_editor.cc:273 msgid "change region start position" msgstr "" -#: region_editor.cc:290 +#: region_editor.cc:289 msgid "change region end position" msgstr "" -#: region_editor.cc:310 +#: region_editor.cc:309 msgid "change region length" msgstr "" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 msgid "change region sync point" msgstr "" @@ -9300,316 +9505,316 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "" -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 msgid "No Track or Bus Selected" msgstr "" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 msgid "Route Group" msgstr "" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 msgid "MIDI Controllers and Automation" msgstr "" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 msgid "Show All Automation" msgstr "" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 msgid "Show Existing Automation" msgstr "" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 msgid "Hide All Automation" msgstr "" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 msgid "Processor automation" msgstr "" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 msgid "Color..." msgstr "Colour..." -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 msgid "Layers" msgstr "" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 msgid "Automatic (based on I/O connections)" msgstr "" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 msgid "(Currently: Existing Material)" msgstr "" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 msgid "(Currently: Capture Time)" msgstr "" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 msgid "Align With Existing Material" msgstr "" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 msgid "Align With Capture Time" msgstr "" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 msgid "Alignment" msgstr "" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 msgid "Normal Mode" msgstr "" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 msgid "Tape Mode" msgstr "" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 msgid "Non-Layered Mode" msgstr "" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 msgid "Rename Playlist" msgstr "" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 msgid "New name for playlist:" msgstr "" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 msgid "New Copy Playlist" msgstr "" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 msgid "Name for new playlist:" msgstr "" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 msgid "New Playlist" msgstr "" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 msgid "You cannot create a track with that name as it is reserved for %1" msgstr "" -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 msgid "New Copy..." msgstr "" -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 msgid "New Take" msgstr "" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 msgid "Copy Take" msgstr "" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 msgid "Select From All..." msgstr "" -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 msgid "Remove \"%1\"" msgstr "" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 msgid "After-fade listen (AFL)" msgstr "" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 msgid "Pre-fade listen (PFL)" msgstr "" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "" -#: route_ui.cc:114 +#: route_ui.cc:119 msgid "Mute this track" msgstr "" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "" -#: route_ui.cc:133 +#: route_ui.cc:138 msgid "Monitor input" msgstr "" -#: route_ui.cc:139 +#: route_ui.cc:144 msgid "Monitor playback" msgstr "" -#: route_ui.cc:586 +#: route_ui.cc:591 msgid "Not connected to JACK - cannot engage record" msgstr "" -#: route_ui.cc:781 +#: route_ui.cc:786 msgid "Step Entry" msgstr "" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "" -#: route_ui.cc:858 +#: route_ui.cc:863 msgid "Assign all tracks and buses (prefader)" msgstr "" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "" -#: route_ui.cc:866 +#: route_ui.cc:871 msgid "Assign all tracks and buses (postfader)" msgstr "" -#: route_ui.cc:870 +#: route_ui.cc:875 msgid "Assign selected tracks (prefader)" msgstr "" -#: route_ui.cc:874 +#: route_ui.cc:879 msgid "Assign selected tracks and buses (prefader)" msgstr "" -#: route_ui.cc:877 +#: route_ui.cc:882 msgid "Assign selected tracks (postfader)" msgstr "" -#: route_ui.cc:881 +#: route_ui.cc:886 msgid "Assign selected tracks and buses (postfader)" msgstr "" -#: route_ui.cc:884 +#: route_ui.cc:889 msgid "Copy track/bus gains to sends" msgstr "" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "" -#: route_ui.cc:1206 +#: route_ui.cc:1211 msgid "Solo Isolate" msgstr "" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "" -#: route_ui.cc:1385 +#: route_ui.cc:1390 msgid "Color Selection" msgstr "Colour Selection" -#: route_ui.cc:1472 +#: route_ui.cc:1477 msgid "" "Do you really want to remove track \"%1\" ?\n" "\n" @@ -9618,68 +9823,68 @@ msgid "" "(This action cannot be undone, and the session file will be overwritten)" msgstr "" -#: route_ui.cc:1474 +#: route_ui.cc:1479 msgid "" "Do you really want to remove bus \"%1\" ?\n" "\n" "(This action cannot be undone, and the session file will be overwritten)" msgstr "" -#: route_ui.cc:1482 +#: route_ui.cc:1487 msgid "Remove track" msgstr "" -#: route_ui.cc:1484 +#: route_ui.cc:1489 msgid "Remove bus" msgstr "" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" msgstr "" -#: route_ui.cc:1515 +#: route_ui.cc:1520 msgid "Use the new name" msgstr "" -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "" -#: route_ui.cc:1531 +#: route_ui.cc:1536 msgid "Rename Bus" msgstr "" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr "" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "" -#: route_ui.cc:1709 +#: route_ui.cc:1714 msgid "Save As Template" msgstr "" -#: route_ui.cc:1710 +#: route_ui.cc:1715 msgid "Template name:" msgstr "" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "" -#: route_ui.cc:1793 +#: route_ui.cc:1798 msgid "Remote control ID:" msgstr "" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -9687,15 +9892,15 @@ msgid "" "The remote control ID of %3 cannot be changed." msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 msgid "the master bus" msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 msgid "the monitor bus" msgstr "" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -9706,21 +9911,21 @@ msgid "" "change this%5" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 msgid "the mixer" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 msgid "the editor" msgstr "" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." msgstr "" -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "" @@ -10208,51 +10413,99 @@ msgstr "" msgid "Glue new regions to bars and beats" msgstr "" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +msgid "Meterbridge" +msgstr "" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +msgid "Show Midi Tracks" +msgstr "" + +#: session_option_editor.cc:286 +msgid "Show Busses" +msgstr "" + +#: session_option_editor.cc:293 +msgid "Include Master Bus" +msgstr "" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +msgid "Rec-enable Button" +msgstr "" + +#: session_option_editor.cc:309 +msgid "Mute Button" +msgstr "" + +#: session_option_editor.cc:316 +msgid "Solo Button" +msgstr "" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +msgid "Track Name" +msgstr "" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 msgid "as new tracks" msgstr "" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 msgid "to selected tracks" msgstr "" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to region list" msgstr "" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "as new tape tracks" msgstr "" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 msgid "Auto-play" msgstr "" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 msgid "Sound File Information" msgstr "" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 msgid "Timestamp:" msgstr "" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "" @@ -10280,11 +10533,11 @@ msgstr "" msgid "MIDI files" msgstr "" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "" @@ -10292,223 +10545,211 @@ msgstr "" msgid "Paths" msgstr "" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 msgid "Sort:" msgstr "" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 msgid "Longest" msgstr "" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 msgid "Shortest" msgstr "" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 msgid "Newest" msgstr "" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 msgid "Least downloaded" msgstr "" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 msgid "ID" msgstr "" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 msgid "Filename" msgstr "" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 msgid "Duration" msgstr "" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 msgid "Size" msgstr "" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 msgid "Samplerate" msgstr "" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "SoundFileBrowser: Could not tokenise string: " -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 msgid "GB" msgstr "" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "" - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 msgid "sequence files" msgstr "" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 msgid "merge files" msgstr "" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 msgid "one region per file" msgstr "" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 msgid "one region per channel" msgstr "" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 msgid "all files in one region" msgstr "" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" msgstr "" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 msgid "file timestamp" msgstr "" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 msgid "edit point" msgstr "" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 msgid "playhead" msgstr "" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 msgid "session start" msgstr "" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "" -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 msgid "Insert at" msgstr "" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 msgid "Mapping" msgstr "" -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 msgid "Conversion quality" msgstr "" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "" @@ -10594,21 +10835,21 @@ msgstr "" #: startup.cc:194 msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -10715,10 +10956,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "" - #: startup.cc:729 msgid "Open" msgstr "" @@ -10731,83 +10968,83 @@ msgstr "" msgid "Create session folder in:" msgstr "" -#: startup.cc:813 +#: startup.cc:821 msgid "Select folder for session" msgstr "" -#: startup.cc:845 +#: startup.cc:853 msgid "Use this template" msgstr "" -#: startup.cc:848 +#: startup.cc:856 msgid "no template" msgstr "" -#: startup.cc:876 +#: startup.cc:884 msgid "Use an existing session as a template:" msgstr "" -#: startup.cc:888 +#: startup.cc:896 msgid "Select template" msgstr "" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "" -#: startup.cc:1068 +#: startup.cc:1077 msgid "Select session file" msgstr "" -#: startup.cc:1084 +#: startup.cc:1093 msgid "Browse:" msgstr "" -#: startup.cc:1093 +#: startup.cc:1102 msgid "Select a session" msgstr "" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "" -#: startup.cc:1135 +#: startup.cc:1145 msgid "Busses" msgstr "" -#: startup.cc:1136 +#: startup.cc:1146 msgid "Inputs" msgstr "" -#: startup.cc:1137 +#: startup.cc:1147 msgid "Outputs" msgstr "" -#: startup.cc:1145 +#: startup.cc:1155 msgid "Create master bus" msgstr "" -#: startup.cc:1155 +#: startup.cc:1165 msgid "Automatically connect to physical inputs" msgstr "" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "" -#: startup.cc:1215 +#: startup.cc:1225 msgid "Automatically connect outputs" msgstr "" -#: startup.cc:1237 +#: startup.cc:1247 msgid "... to master bus" msgstr "" -#: startup.cc:1247 +#: startup.cc:1257 msgid "... to physical outputs" msgstr "" -#: startup.cc:1297 +#: startup.cc:1307 msgid "Advanced Session Options" msgstr "" @@ -11485,19 +11722,19 @@ msgstr "" msgid "bad XPM header %1" msgstr "" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "" -#: utils.cc:544 +#: utils.cc:591 msgid "cannot find XPM file for %1" msgstr "" -#: utils.cc:570 +#: utils.cc:617 msgid "cannot find icon image for %1 using %2" msgstr "" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "" @@ -11505,78 +11742,80 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 msgid "Set Video Track" msgstr "" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 msgid "Launch External Video Monitor" msgstr "" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 msgid "Video files" msgstr "" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 msgid "Video Information" msgstr "" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 msgid "Start:" msgstr "" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 msgid "Frame rate:" msgstr "" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 msgid "Export Successful: %1" msgstr "" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -11584,17 +11823,17 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 msgid "Video Monitor: File Not Found." msgstr "" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -11604,344 +11843,352 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 msgid "Transcode/Import Video File " msgstr "" -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 msgid "Output File:" msgstr "" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "quaver (8)" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 msgid "File Information" msgstr "" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 msgid "Duration:" msgstr "" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 msgid "??" msgstr "" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 msgid "Import Settings" msgstr "" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 msgid "Import/Transcode Video to Session" msgstr "" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 msgid "Original Width" msgstr "" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 msgid "Extract Audio:" msgstr "" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 msgid "Extracting Audio.." msgstr "" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 msgid "Transcoding Failed." msgstr "" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 msgid "Save Transcoded Video File" msgstr "" -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 msgid "Server Docroot:" msgstr "" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 msgid "Listen Port:" msgstr "" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 msgid "Cache Size:" msgstr "" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 msgid "Confirm Overwrite" msgstr "" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 msgid "Cannot create video folder \"%1\" (%2)" msgstr "" -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 msgid "Export Video File " msgstr "" -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 msgid "Video:" msgstr "" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "Normalise to:" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 msgid "Deinterlace" msgstr "" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 msgid "Include Session Metadata" msgstr "" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 msgid "Output:" msgstr "" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 msgid "Input:" msgstr "" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 msgid "Audio:" msgstr "" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 msgid "Master Bus" msgstr "" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 msgid "Settings:" msgstr "" -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 msgid "Range:" msgstr "" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 msgid "Preset:" msgstr "" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 msgid "Video Codec:" msgstr "" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 msgid "Video KBit/s:" msgstr "" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 msgid "Audio Codec:" msgstr "" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 msgid "Audio KBit/s:" msgstr "" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 msgid "Audio Samplerate:" msgstr "" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "Normalise values" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 msgid "Exporting audio" msgstr "" -#: export_video_dialog.cc:419 -msgid "Exporting Audio.." +#: export_video_dialog.cc:437 +msgid "Exporting Audio..." msgstr "" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." +#: export_video_dialog.cc:562 +msgid "Encoding Video..." msgstr "" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 msgid "Transcoding failed." msgstr "" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 msgid "Save Exported Video File" msgstr "" @@ -11957,31 +12204,13 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" -"\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" -"\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" #~ msgid "Quantize Type" diff --git a/gtk2_ardour/po/es.po b/gtk2_ardour/po/es.po index 58e3931a65..7e61355dc2 100644 --- a/gtk2_ardour/po/es.po +++ b/gtk2_ardour/po/es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk2_ardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: \n" "Last-Translator: Pablo Fernández \n" "Language-Team: Grupo de Traducción al Español \n" @@ -404,7 +404,7 @@ msgstr "%1 archivo de definición de menú no encontrado" msgid "%1 will not work without a valid ardour.menus file" msgstr "%1 no funcionará sin un archivo ardour.menus válido" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 msgid "Add Track or Bus" msgstr "Añadir pista o bus" @@ -441,8 +441,8 @@ msgstr "Buses" msgid "Add:" msgstr "Añadir:" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 msgid "Options" msgstr "Opciones" @@ -456,21 +456,21 @@ msgid "Group:" msgstr "Grupo:" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "MIDI" @@ -496,7 +496,7 @@ msgstr "" "Si no vas a usar un plugin de este tipo, usa una pista normal audio o MIDI." #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "Normal" @@ -540,7 +540,7 @@ msgstr "8 Canales" msgid "12 Channel" msgstr "12 Canales" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "Personalizado" @@ -629,7 +629,7 @@ msgid "Track" msgstr "Pista" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 msgid "Show" msgstr "Mostrar" @@ -637,95 +637,91 @@ msgstr "Mostrar" msgid "Re-analyze data" msgstr "Re-analizar datos" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "el botón no puede observar el estado de un controlable no existente\n" # en realidad no existe este término en el español... -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 msgid "audition" msgstr "escucha" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 msgid "solo" msgstr "solo" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 msgid "feedback" msgstr "feedback" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 msgid "Speaker Configuration" msgstr "Configuración de altavoces" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "Gestor de temas" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "Combinaciones de teclas" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "Preferencias" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 #, fuzzy msgid "Add Tracks/Busses" msgstr "Pistas/Buses" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "Acerca de" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "Posiciones" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 msgid "Tracks and Busses" msgstr "Pistas y buses" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "Propiedades" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "Gestor de conjuntos de conexiones" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Reloj grande" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 #, fuzzy msgid "Audio Connections" msgstr "Gestor de conexiones de audio" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "Gestor de conexiones MIDI" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "Errores" -#: ardour_ui.cc:299 -msgid "could not initialize %1." -msgstr "no se pudo inicializar %1." - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "Arrancando motor de audio" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "%1 está preparado para su uso" -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 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" @@ -738,23 +734,23 @@ msgstr "" "\n" "Puedes comprobar este límite con 'ulimit -l' y normalmente se establece en %2" -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "No volver a mostrar esta ventana" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 msgid "Don't quit" msgstr "No salir" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 msgid "Just quit" msgstr "Salir sin guardar" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 msgid "Save and quit" msgstr "Guardar y salir" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 msgid "" "%1 was unable to save your session.\n" "\n" @@ -768,15 +764,15 @@ msgstr "" "\n" "\"Salir sin guardar\"." -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 msgid "Please wait while %1 cleans up..." msgstr "Por favor, espera mientras %1 organiza todo..." -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 msgid "Unsaved Session" msgstr "Sesión no guardada" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -794,7 +790,7 @@ msgstr "" "\n" "¿Qué deseas hacer?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -812,74 +808,74 @@ msgstr "" "\n" "¿Qué deseas hacer?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "Prompter" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "desconectado" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "JACK: %.1f kHz / %4.1f ms" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "JACK: % kHz / %4.1f ms" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 msgid "File:" msgstr "Archivo:" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "BWF" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "WAV" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "WAV64" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "CAF" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "AIFF" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "iXML" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "RF64" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "32-float" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "24-int" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "16-int" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "DSP: %5.1f%%" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -890,33 +886,33 @@ msgstr "" "%%% c:%%%" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 msgid "Disk: Unknown" msgstr "Disco: Desconocido" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "Disco: 24hrs+" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "Disco: >24 hrs" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "Disco: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, c-format msgid "Timecode|TC: %s" msgstr "TC: %s" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "Sesiones recientes" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" @@ -924,26 +920,26 @@ msgstr "" "%1 no está conectado a JACK.\n" "No se pueden abrir ni cerrar archivos en esta condición." -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Abrir sesión" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 msgid "%1 sessions" msgstr "sesiones %1" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "No puedes añadir pistas ni buses sin una sesión cargada." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "no se pudo crear %1 nueva pista mezclada" msgstr[1] "no se pudieron crear %1 nuevas pistas mezcladas" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -955,23 +951,23 @@ msgstr "" "Deberás guardar %1, salir y\n" "reiniciar JACK con más puertos." -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 msgid "You cannot add a track or bus without a session already loaded." msgstr "No puedes añadir pistas ni buses sin una sesión cargada." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "no se pudo crear %1 nueva pista de audio" msgstr[1] "no se pudieron crear %1 nuevas pistas de audio" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "no se pudo crear %1 nuevo bus de audio" msgstr[1] "no se pudieron crear %1 nuevos buses de audio" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 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." @@ -979,7 +975,7 @@ msgstr "" "Por favor, añade al menos 1 pista antes de intentar grabar\n" "Lo puedes hacer con la opción \"Añadir pista o bus\" en el menú de Sesión." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" @@ -989,7 +985,7 @@ msgstr "" "\n" "%1" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -1001,19 +997,19 @@ msgstr "" "no fue lo bastante rápido. Intenta reiniciar\n" "JACK, reconectar y guardar la sesión." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Incapaz de iniciar la sesión actual" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 msgid "Take Snapshot" msgstr "Guardar captura de sesión" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 msgid "Name of new snapshot" msgstr "Nombre de captura de sesión" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" @@ -1021,27 +1017,27 @@ msgstr "" "Para asegurar la compatibilidad entre varios sistemas, los\n" "nombres de captura de sesión no pueden contener el carácter '%1'" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "Confirmar reescritura de captura de sesión" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Ya existe una captura de sesión con ese nombre. ¿Quieres reescribirla?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "Reescribir" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 msgid "Rename Session" msgstr "Renombrar sesión" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 msgid "New session name" msgstr "Nuevo nombre de sesión" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" @@ -1049,14 +1045,14 @@ msgstr "" "Para asegurar la compatibilidad entre varios sistemas,\n" "los nombres de sesión no pueden contener el carácter '%1'" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" "Ese nombre ya está en uso por otro directorio o carpeta. Por favor, " "inténtalo otra vez." -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" @@ -1064,20 +1060,20 @@ msgstr "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 msgid "Save Template" msgstr "Guardar plantilla" # se refiere a la sesión, no al Mezclador -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 msgid "Name for template:" msgstr "Nombre de plantilla:" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-plantilla" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 msgid "" "This session\n" "%1\n" @@ -1087,52 +1083,52 @@ msgstr "" "%1\n" "ya existe. ¿Quieres abrirla?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 msgid "Open Existing Session" msgstr "Abrir sesión existente" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "No hay ninguna sesión existente en \"%1\"" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "Por favor, espera a que %1 cargue tu sesión" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "Error de Registro de Puertos" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "Pulsa el botón Cerrar para volver a intentarlo" -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "No se pudo cargar la sesión \"%1 (captura %2)\" " -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "Error al cargar" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "Pulsa el botón Actualizar para volver a intentarlo" -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 msgid "Could not create session in \"%1\"" msgstr "No se pudo crear la sesión en \"%1\"" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 msgid "No files were ready for clean-up" msgstr "No había ningún archivo preparado para purgar" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "Purgar" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1143,21 +1139,21 @@ msgstr "" "Éstas todavía pueden incluir regiones que hacen que algunos\n" "archivos no utilizados continúen existiendo." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "kilo" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "mega" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "giga" # debí adaptar para que al completarse con los parámetros el mensaje tuviera sentido en español # (quedaba mal por los plurales y la ambigüedad was=fue/estuvo) -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 msgid "" "The following file was deleted from %2,\n" "releasing %3 %4bytes of disk space" @@ -1173,7 +1169,7 @@ msgstr[1] "" # debí adaptar para que al completarse con los parámetros el mensaje tuviera sentido en español # (quedaba mal por los plurales y la ambigüedad was=fue/estuvo) -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 msgid "" "The following file was not in use and \n" "has been moved to: %2\n" @@ -1211,11 +1207,11 @@ msgstr[1] "" "\n" "liberará %3 %4bytes de espacio en disco.\n" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 msgid "Are you sure you want to clean-up?" msgstr "¿Estás seguro de que quieres purgar?" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" @@ -1225,81 +1221,81 @@ msgstr "" "TODA la información del historial deshacer/rehacer se perderá.\n" "Purgar moverá todos los archivos no usados a la carpeta \"dead\"." -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "Purgar" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 msgid "Cleaned Files" msgstr "Archivos purgados" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "archivo eliminado" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 #, fuzzy msgid "Yes, Stop It" msgstr "Sí, eliminar" -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "no se pudo abrir %1" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "Se detuvo la grabación porque el sistema se sobrecargó." -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1313,7 +1309,7 @@ msgstr "" "En concreto, la velocidad de escritura de datos en el disco\n" "no fue lo bastante alta como para permitir la grabación.\n" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1327,11 +1323,11 @@ msgstr "" "En concreto, la velocidad de lectura de datos desde el disco\n" "no fue lo bastante alta como para permitir la reproducción.\n" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "Recuperación del crash" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 msgid "" "This session appears to have been in the\n" "middle of recording when %1 or\n" @@ -1349,19 +1345,19 @@ msgstr "" "o puede ignorarlo. Por favor, decide qué\n" "deseas hacer.\n" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "Ignorar información del crash" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "Recuperar del crash" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "Discrepancia de frecuencia de muestreo" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 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" @@ -1371,23 +1367,23 @@ msgstr "" "pero %2 está ejecutándose actualmente a %3 Hz. Si cargas la sesión\n" "puede que el audio se reproduzca a una frecuencia de muestreo incorrecta.\n" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 msgid "Do not load session" msgstr "No cargar sesión" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "Cargar sesión de todas formas" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "No se pudo desconectar de JACK" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "No se pudo reconectar a JACK" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1410,35 +1406,40 @@ msgstr "interfaz de usuario: no se pudo configurar el editor" msgid "UI: cannot setup mixer" msgstr "interfaz de usuario: no se pudo configurar el mezclador" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "interfaz de usuario: no se pudo configurar el mezclador" + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "Reproducir desde cursor" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Detener reproducción" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 msgid "Toggle record" msgstr "Activar/Desactivar grabación" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "Reproducir rango/selección" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "Ir a inicio de sesión" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "Ir a fin de sesión" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "Reproducir rango de bucle" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" @@ -1446,23 +1447,23 @@ msgstr "" "Pánico MIDI\n" "Enviar nota off y resetear mensajes de control en todos los canales MIDI" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "Al detenerse, volver al último inicio de reproducción" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 msgid "Playhead follows Range Selections and Edits" msgstr "El cursor sigue a las selecciones de rango y edición" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "Monitorización sensible de entradas" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "Activar/Desactivar claqueta" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" @@ -1470,7 +1471,7 @@ msgstr "" "Si está activado, algo está en solo.\n" "Pulsa para desactivar todos los solos" -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" @@ -1478,11 +1479,11 @@ msgstr "" "Si está activado, se está produciendo escucha\n" "Pulsa para detener la escucha" -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "Cuando está activo, existe un bucle de realimentación." -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 #, fuzzy msgid "" "Primary Clock right-click to set display mode. Click to edit, click" @@ -1497,7 +1498,7 @@ msgstr "" "para introducir diferencias. Ver http://ardour.org/" "a3_features_clocks para detalles." -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 #, fuzzy msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" @@ -1512,28 +1513,33 @@ msgstr "" "para introducir diferencias. Ver http://ardour.org/" "a3_features_clocks para detalles." -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "Restablecer envolvente" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "[ERROR]: " -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "[AVISO]: " -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "[INFO]: " # he cambiado desde Auto Volver. Qudaba un poco raro y auto return se entiende mejor -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "Auto Return" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "Seguir Edits" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1553,23 +1559,23 @@ msgstr "Configurar Editor" msgid "Setup Mixer" msgstr "Configurar Mezclador" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "Recargar historial de sesión" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 msgid "Don't close" msgstr "No cerrar" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 msgid "Just close" msgstr "Cerrar" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 msgid "Save and close" msgstr "Guardar y cerrar" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" "Esta pantalla no es lo bastante alta para mostrar la ventana del mezclador" @@ -1583,7 +1589,7 @@ msgstr "Sesión" msgid "Sync" msgstr "Sinc" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Opciones" @@ -1611,15 +1617,15 @@ msgstr "Tipo de archivo" msgid "Sample Format" msgstr "Formato de muestra" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "Superficies de control" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Plugins" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "Medidores" @@ -1635,7 +1641,7 @@ msgstr "Tiempo de persistencia" msgid "Denormal Handling" msgstr "Manejo de denormals" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "Nueva..." @@ -1678,8 +1684,8 @@ msgstr "Captura de sesión..." msgid "Save As..." msgstr "Guardar como..." -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 msgid "Rename..." msgstr "Renombrar..." @@ -1708,7 +1714,7 @@ msgid "Stem export..." msgstr "Stem export..." #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Exportar" @@ -1720,11 +1726,11 @@ msgstr "Purgar archivos no usados..." msgid "Flush Wastebasket" msgstr "Vaciar papelera" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: 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:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "Latencia" @@ -1732,8 +1738,8 @@ msgstr "Latencia" msgid "Reconnect" msgstr "Reconectar" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "Desconectar" @@ -1749,7 +1755,7 @@ msgstr "Maximizar Editor" msgid "Show Toolbars" msgstr "Mostrar barras de herramientas" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 msgid "Window|Mixer" msgstr "Mezclador" @@ -1758,27 +1764,32 @@ msgstr "Mezclador" msgid "Toggle Editor+Mixer" msgstr "Cambiar modo de edición" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "Mezclador" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "Rastreador MIDI" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "Chat" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 msgid "Help|Manual" msgstr "Manual" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "Referencia" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Guardar" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1788,102 +1799,102 @@ msgstr "Guardar" msgid "Transport" msgstr "Transporte" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "Stop" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "Roll" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "Comenzar/Detener" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 msgid "Start/Continue/Stop" msgstr "Comenzar/Continuar/Detener" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 msgid "Stop and Forget Capture" msgstr "Detener y destruir captura" # it's not literal, but it's what it does # translating to "rollo" or "rodar" doesn't make much sense in spanish # am I missing something? -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 msgid "Transition To Roll" msgstr "Transición hacia delante" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "Transición hacia atrás" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "Reproducir rango de bucle" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 msgid "Play Selected Range" msgstr "Reproducir rango seleccionado" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 msgid "Play Selection w/Preroll" msgstr "Reproducir selección con Preroll" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "Activar grabación" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 msgid "Start Recording" msgstr "Iniciar grabación" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "Rebobinar" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "Rebobinar (Lento)" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "Rebobinar (Rápido)" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "Adelante" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "Adelante (Lento)" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "Adelante (Rápido)" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "Ir a cero" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "Ir a inicio" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "Ir a fin" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "Ir a hora actual" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "Enfocar en reloj" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1892,126 +1903,126 @@ msgstr "Enfocar en reloj" msgid "Timecode" msgstr "Timecode" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 msgid "Bars & Beats" msgstr "Compases y pulsos" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 msgid "Minutes & Seconds" msgstr "Minutos y segundos" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "Muestras" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 msgid "Punch In" msgstr "Pinchar" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "Entrada" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 msgid "Punch Out" msgstr "Despinchar" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "Salida" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "Pinchazo" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 msgid "In/Out" msgstr "In/Out" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "Claqueta" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 msgid "Auto Input" msgstr "Auto Entrada" # Reproducir Auto is too big -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 msgid "Auto Play" msgstr "Auto Play" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "Sincronizar inicio a video" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 msgid "Time Master" msgstr "Maestro" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 msgid "Toggle Record Enable Track %1" msgstr "Activar/Desactivar grabación en pista %1" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "Porcentaje" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Semitonos" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "Enviar MTC" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "Enviar MMC" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "Usar MMC" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 msgid "Send MIDI Clock" msgstr "Enviar MIDI Clock" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 msgid "Send MIDI Feedback" msgstr "Enviar MIDI feedback" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "Pánico" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 msgid "Wall Clock" msgstr "Hora actual" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "Espacio en disco" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 msgid "DSP" msgstr "DSP" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 msgid "Buffers" msgstr "Buffers" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "Frecuencia de muestreo y latencia de JACK" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 msgid "Timecode Format" msgstr "Formato de timecode" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 msgid "File Format" msgstr "Formato archivo" @@ -2027,11 +2038,11 @@ msgstr "" msgid "Internal" msgstr "Interno" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 msgid "Enable/Disable external positional sync" msgstr "Activar/Desactivar sincronización de posición externa" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "No es posible sincronizar a JACK: video pull up/down está establecido" @@ -2061,7 +2072,7 @@ msgstr "Tempo" msgid "Meter" msgstr "Métrica" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2152,32 +2163,32 @@ msgid "hide track" msgstr "ocultar pista" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 msgid "Automation|Manual" msgstr "Manual" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "Reproducir" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "Escribir" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "Tocar" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "???" @@ -2186,7 +2197,7 @@ msgid "clear automation" msgstr "limpiar automatización" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "Ocultar" @@ -2207,7 +2218,7 @@ msgstr "Discreto" msgid "Linear" msgstr "Lineal" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "Modo" @@ -2224,13 +2235,13 @@ msgstr "Editar conjunto" msgid "Direction:" msgstr "Dirección:" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "Entrada" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "Salida" @@ -2240,8 +2251,8 @@ msgid "Edit" msgstr "Editar" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "Eliminar" @@ -2409,7 +2420,7 @@ msgstr "Tiempo" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "Duración" @@ -2656,17 +2667,17 @@ msgid "Ranges & Marks" msgstr "Rangos y marcas" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 msgid "Editor" msgstr "Editor" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "Bucle" @@ -2691,8 +2702,8 @@ msgstr "Symmetric" msgid "Slow" msgstr "Lenta" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "Rápida" @@ -2712,7 +2723,7 @@ msgstr "Activar" msgid "Slowest" msgstr "Lentísima" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "programming error: " @@ -2829,7 +2840,7 @@ msgid "Select All in Track" msgstr "Seleccionar todo en la pista" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Seleccionar todo" @@ -2884,15 +2895,15 @@ msgstr "Seleccionar rango entre cursor y punto de edición" msgid "Select" msgstr "Seleccionar" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Cortar" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "Copiar" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Pegar" @@ -3049,7 +3060,7 @@ msgstr "Rehacer" msgid "Redo (%1)" msgstr "Rehacer (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "Duplicar" @@ -3079,8 +3090,8 @@ msgstr "Eliminar lista de reproducción" msgid "Keep Playlist" msgstr "Conservar lista de reproducción" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "Cancelar" @@ -3100,7 +3111,7 @@ msgstr "limpiar listas de reproducción" msgid "Please wait while %1 loads visual data." msgstr "Por favor, espera a que %1 cargue datos visuales." -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 msgid "Edit..." msgstr "Editar..." @@ -3152,7 +3163,7 @@ msgstr "Superposición" msgid "Position" msgstr "Posición" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Recortar" @@ -3165,7 +3176,7 @@ msgstr "Ganancia" msgid "Ranges" msgstr "Rangos" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 msgid "Fades" @@ -3204,7 +3215,7 @@ msgstr "Opciones MIDI" msgid "Misc Options" msgstr "Opciones misceláneas" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "Monitorización" @@ -3246,8 +3257,8 @@ msgstr "Reloj secundario" msgid "Separate" msgstr "Separar" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "Solo" @@ -3259,7 +3270,7 @@ msgstr "Subcuadros" msgid "Timecode fps" msgstr "Timecode fps" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Altura" @@ -3383,7 +3394,7 @@ msgstr "Cursor a inicio de rango" msgid "Playhead to Range End" msgstr "Cursor a final de rango" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "Deseleccionar todo" @@ -3653,9 +3664,9 @@ msgstr "Insertar tiempo" msgid "Toggle Active" msgstr "Activar/Desactivar pista" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "Eliminar" @@ -3663,20 +3674,20 @@ msgstr "Eliminar" msgid "Fit Selected Tracks" msgstr "Encajar las pistas seleccionadas en la ventana" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "Máxima" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "Muy grande" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "Grande" # aquí creo que el original debería decir "smallest" por coherencia (son las alturas de pista). me tomo la libertad de corregir -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "Mínima" @@ -3773,7 +3784,7 @@ msgstr "Reunir" msgid "Slide" msgstr "Deslizar" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "Bloquear" @@ -3947,7 +3958,7 @@ msgstr "Mins:Segs" msgid "Video Monitor" msgstr "Monitorizar" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -3958,7 +3969,7 @@ msgstr "Levantar a capa superior" #: editor_actions.cc:554 #, fuzzy -msgid "Framenumber" +msgid "Frame number" msgstr "Número de pista" #: editor_actions.cc:555 @@ -4049,7 +4060,7 @@ msgstr "Eliminar no usados" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Importar" @@ -4091,289 +4102,289 @@ msgstr "Cargando editor de combinaciones de teclas desde %1" msgid "Could not find editor.bindings in search path %1" msgstr "Could not find editor.bindings in search path %1" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "programming error: %1: %2" -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "Levantar" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 msgid "Raise to Top" msgstr "Levantar a capa superior" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "Bajar" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 msgid "Lower to Bottom" msgstr "Bajar a capa inferior" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 msgid "Move to Original Position" msgstr "Mover a posición original" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "Adherir a compases y pulsos" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 msgid "Remove Sync" msgstr "Eliminar sincronía" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Mudo" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 msgid "Normalize..." msgstr "Normalizar..." -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "Al revés" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 msgid "Make Mono Regions" msgstr "Crear regiones mono" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "Amplificar ganancia" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "Reducir ganancia" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "Cambiar tono..." -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 msgid "Transpose..." msgstr "Transponer..." -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 msgid "Opaque" msgstr "Opaca" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "Fundido de entrada" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "Fundido de salida" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 msgid "Multi-Duplicate..." msgstr "Duplicado múltiple..." -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "Llenar pista" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "Crear rango de bucle" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 msgid "Set Punch" msgstr "Establecer pinchazo" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 msgid "Add Single Range Marker" msgstr "Añadir marca de rango simple" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 msgid "Add Range Marker Per Region" msgstr "Añadir marca de rango por región" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 msgid "Snap Position To Grid" msgstr "Ajustar posición a rejilla" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 msgid "Close Gaps" msgstr "Cerrar huecos" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "Rhythm Ferret..." -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 msgid "Export..." msgstr "Exportar..." -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 msgid "Separate Under" msgstr "Separar debajo" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 msgid "Set Fade In Length" msgstr "Definir duración de fundido de entrada" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 msgid "Set Fade Out Length" msgstr "Definir duración de fundido de salida" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 msgid "Set Tempo from Region = Bar" msgstr "Definir tempo según \"región = compás\"" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 msgid "Split at Percussion Onsets" msgstr "Separar en inicios de percusión" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 msgid "List Editor..." msgstr "Editor de lista de eventos..." -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "Propiedades..." -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "Rebotar (con procesado)" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "Rebotar (sin procesado)" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "Combinar" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "Descombinar" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "Análisis espectral..." -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 msgid "Reset Envelope" msgstr "Restablecer envolvente" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 msgid "Reset Gain" msgstr "Restablecer ganancia" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 msgid "Envelope Active" msgstr "Envolvente activa" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 msgid "Quantize..." msgstr "Cuantificar..." -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "Insertar cambio de patch..." -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "Desligar de otras copias" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "Quitar silencio..." -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 msgid "Set Range Selection" msgstr "Establecer selección de rango" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 msgid "Nudge Later" msgstr "Atrasar" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 msgid "Nudge Earlier" msgstr "Adelantar" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 msgid "Nudge Later by Capture Offset" msgstr "Atrasar por compensación de captura" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 msgid "Nudge Earlier by Capture Offset" msgstr "Adelantar por compensación de captura" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "Recortar a bucle" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "Recortar a pinchazo" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 msgid "Trim to Previous" msgstr "Recortar a anterior" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 msgid "Trim to Next" msgstr "Recortar a siguiente" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 msgid "Insert Region From Region List" msgstr "Insertar región desde lista de regiones" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 msgid "Set Sync Position" msgstr "Establecer posición de sincronía" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "Colocar transitorio" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "Separar" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 msgid "Trim Start at Edit Point" msgstr "Recortar inicio en punto de edición" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 msgid "Trim End at Edit Point" msgstr "Recortar final en punto de edición" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 msgid "Align Start" msgstr "Alinear inicio" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 msgid "Align Start Relative" msgstr "Alinear inicio relativo" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 msgid "Align End" msgstr "Alinear final" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 msgid "Align End Relative" msgstr "Alinear final relativo" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 msgid "Align Sync" msgstr "Alinear sincronía" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 msgid "Align Sync Relative" msgstr "Alinear sincronía relativo" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "Elegir superior..." @@ -4402,32 +4413,32 @@ msgstr "" "La sesión ya contiene un archivo llamado %1. ¿Deseas importar %2 como un " "nuevo archivo u omitirlo?" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "Cancelar Importación" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Editor: no se pudo abrir el archivo \"%1\", (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "Cancelar importación completa" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "No embeber" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "Embeber todos sin preguntas" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 msgid "Sample rate" msgstr "Frec. de muestreo" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4435,7 +4446,7 @@ msgstr "" "%1\n" "¡La frecuencia de muestreo de este archivo es diferente a la de la sesión!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "Embeber de todas formas" @@ -4473,31 +4484,31 @@ msgstr "copiar marca de tempo" msgid "move tempo mark" msgstr "mover marca de tempo" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "cambiar duración del fundido de entrada" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "cambiar duración del fundido de salida" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "mover marca" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "Ocurrió un error al ejecutar la operación de cambio de tempo" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 msgid "programming_error: %1" msgstr "programming_error: %1" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "nueva marca de rango" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 msgid "rubberband selection" msgstr "selección elástica" @@ -4566,7 +4577,7 @@ msgid "Sharing Solo?" msgstr "Comparte solo?" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "Grb" @@ -4639,7 +4650,7 @@ msgid "end" msgstr "fin" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "añadir marca" @@ -4647,7 +4658,7 @@ msgstr "añadir marca" msgid "range" msgstr "rango" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "eliminar marca" @@ -4726,8 +4737,8 @@ msgstr "Renombrar marca" msgid "Rename Range" msgstr "Renombrar rango" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "Renombrar" @@ -4865,7 +4876,7 @@ msgstr "bajar regiones a capa inferior" msgid "Rename Region" msgstr "Renombrar región" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 msgid "New name:" msgstr "Nuevo nombre: " @@ -5046,7 +5057,7 @@ msgstr "" "(Es una acción destructiva que no podrás deshacer)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "No, no hagas nada" @@ -5237,11 +5248,11 @@ msgstr "Ok" msgid "close region gaps" msgstr "cerrar huecos de regiones" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "That would be bad news ...." -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5261,7 +5272,7 @@ msgstr "" msgid "tracks" msgstr "pistas" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 msgid "track" msgstr "pista" @@ -5270,7 +5281,7 @@ msgstr "pista" msgid "busses" msgstr "buses" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "bus" @@ -5313,7 +5324,7 @@ msgstr "" msgid "Yes, remove them." msgstr "Sí, elimínalas." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Sí, elimínala" @@ -5382,7 +5393,7 @@ msgstr "Length of region fade-in (units: secondary clock), () if disabled" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "Length of region fade-out (units: secondary clock), () if dsisabled" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "L" @@ -5399,8 +5410,9 @@ msgstr "G" msgid "Region position glued to Bars|Beats time?" msgstr "Region position glued to Bars|Beats time?" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "M" @@ -5469,7 +5481,8 @@ msgstr "Nombre de Pista/Bus" msgid "Track/Bus visible ?" msgstr "¿Pista/Bus visible?" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "A" @@ -5477,7 +5490,7 @@ msgstr "A" msgid "Track/Bus active ?" msgstr "¿Pista/Bus activa/o?" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 msgid "I" msgstr "I" @@ -5485,7 +5498,7 @@ msgstr "I" msgid "MIDI input enabled" msgstr "Entrada MIDI habilitada" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "R" @@ -5498,7 +5511,7 @@ msgstr "Grabación habilitada" msgid "Muted" msgstr "En mudo" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "S" @@ -5510,7 +5523,7 @@ msgstr "En solo" msgid "SI" msgstr "SI" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 msgid "Solo Isolated" msgstr "Solo aislado" @@ -5793,143 +5806,147 @@ msgid "192000Hz" msgstr "192000Hz" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Ninguno" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "Triangular" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "Rectangular" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "Shaped" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "Reproducción/grabación en 1 dispositivo" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "Reproducción/grabación en 2 dispositivos" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "Sólo reproducción" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "Sólo grabación" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "seq" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "raw" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "Driver:" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 msgid "Audio Interface:" msgstr "Interfaz de audio:" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "Frec. de muestreo:" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "Tamaño del buffer:" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "Cantidad de buffers:" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "Latencia aproximada:" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 msgid "Audio mode:" msgstr "Modo de audio:" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "Ignorar" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "Timeout de clientes" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "Cantidad de puertos:" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "Driver MIDI:" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "Dither:" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "" "No se encuentra el servidor JACK en el sistema. Por favor, instala JACK y " "reinicia" -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "Servidor:" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "Dispositivo de entrada:" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "Dispositivo de salida:" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "Latencia de entrada del hardware:" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "muestras" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "Latencia de salida del hardware:" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "Dispositivo" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "Avanzado" -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "" "no se pudo leer el archivo de inicialización de JACK %1 para almacenar " "parámetros" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -5958,33 +5975,33 @@ msgstr "" "o sólo capturar, pero no ambas cosas a la vez, arranca\n" "JACK antes de ejecutar %1 y elige el dispositivo adecuado." -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "No hay dispositivos de audio adecuados" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "JACK appears to be missing from the %1 bundle" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "Es necesario que antes elijas un dispositivo de audio." -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "Dispositivo de audio \"%1\" desconocido en este ordenador." -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "AudioSetup value for %1 is missing data" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" "los archivos de configuración contienen una ruta al servidor JACK que no " "existe (%1)" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "Canales:" @@ -6139,9 +6156,9 @@ msgid "Folder:" msgstr "Carpeta:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Explorar" @@ -6267,6 +6284,13 @@ msgstr "Opciones FLAC" msgid "Broadcast Wave options" msgstr "Opciones de Broadcast Wave" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "" +"¿De verdad deseas eliminar la captura \"%1\" ?\n" +"(no podrás deshacer esta acción)" + #: export_preset_selector.cc:28 msgid "Preset" msgstr "Preset" @@ -6279,6 +6303,13 @@ msgstr "" "¡El preset seleccionado no se cargó correctamente!\n" "¿Quizás se refiere a un formato que ha sido eliminado?" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "" +"¿De verdad deseas eliminar la captura \"%1\" ?\n" +"(no podrás deshacer esta acción)" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "Mostrar los tiempos como:" @@ -6291,36 +6322,49 @@ msgstr " a " msgid "Range" msgstr "Rango" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "programming error: %1 (%2)" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +msgid "%1" +msgstr "" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "-inf" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "Modo de automatización de fader" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "Tipo de automatización de fader" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "Abs" -#: gain_meter.cc:334 -msgid "-Inf" -msgstr "-Inf" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "P" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "T" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "W" @@ -6332,7 +6376,7 @@ msgstr "Presets" msgid "Switches" msgstr "Conmutadores" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "Controles" @@ -6361,63 +6405,63 @@ msgstr "Gestor de conexiones de audio" msgid "MIDI Connection Manager" msgstr "Gestor de conexiones MIDI" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "puerto" -#: group_tabs.cc:306 +#: group_tabs.cc:308 msgid "Selection..." msgstr "Selección..." -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "Habilitado para grabación..." -#: group_tabs.cc:308 +#: group_tabs.cc:310 msgid "Soloed..." msgstr "En solo..." -#: group_tabs.cc:314 +#: group_tabs.cc:316 msgid "Create New Group ..." msgstr "Crear nuevo grupo..." -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "" -#: group_tabs.cc:318 +#: group_tabs.cc:320 msgid "Edit Group..." msgstr "Editar grupo..." -#: group_tabs.cc:319 +#: group_tabs.cc:321 msgid "Collect Group" msgstr "" -#: group_tabs.cc:320 +#: group_tabs.cc:322 msgid "Remove Group" msgstr "Eiminar grupo" -#: group_tabs.cc:323 +#: group_tabs.cc:325 msgid "Remove Subgroup Bus" msgstr "Eliminar bus de subgrupo" -#: group_tabs.cc:325 +#: group_tabs.cc:327 msgid "Add New Subgroup Bus" msgstr "Añadir nuebo bus de subgrupo" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "Añadir nuevo bus auxiliar (pre-fader)" -#: group_tabs.cc:328 +#: group_tabs.cc:330 msgid "Add New Aux Bus (post-fader)" msgstr "Añadir nuevo bus auxiliar (post-fader)" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "" -#: group_tabs.cc:335 +#: group_tabs.cc:337 msgid "Disable All Groups" msgstr "Desactivar todos los grupos" @@ -6513,11 +6557,11 @@ msgstr "Importando fichero: %1 de %2" msgid "I/O selector" msgstr "Selector de E/S" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "%1 entrada" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "%1 salida" @@ -6595,7 +6639,7 @@ msgstr[1] "%1 muestras" msgid "Reset" msgstr "Restablecer" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "programming error: %1 (%2)" @@ -6623,63 +6667,63 @@ msgstr "Compositor:" msgid "Pre-Emphasis" msgstr "Pre-énfasis" -#: location_ui.cc:310 +#: location_ui.cc:314 msgid "Remove this range" msgstr "Eliminar este rango" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 msgid "Set range start from playhead location" msgstr "Establecer inicio de rango en posición de cursor" -#: location_ui.cc:316 +#: location_ui.cc:320 msgid "Set range end from playhead location" msgstr "Establecer fin de rango en posición de cursor" -#: location_ui.cc:320 +#: location_ui.cc:324 msgid "Remove this marker" msgstr "Eliminar esta marca" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 msgid "Set marker time from playhead location" msgstr "Establecer tiempo de marca en posición de cursor" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "No puedes colocar una marca de CD al inicio de la sesión" -#: location_ui.cc:708 +#: location_ui.cc:720 msgid "New Marker" msgstr "Nueva marca" -#: location_ui.cc:709 +#: location_ui.cc:721 msgid "New Range" msgstr "Nuevo rango" -#: location_ui.cc:722 +#: location_ui.cc:734 msgid "Loop/Punch Ranges" msgstr "Rangos de bucle/pinchazo" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "Marcas (incluyendo índice de CD)" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "Rangos (incluyendo rangos de pistas de CD)" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "añadir marca de rango" @@ -6764,19 +6808,19 @@ msgstr "" "guardar tu sesión en este momento pues perderíamos la información\n" "de las conexiones.\n" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr " (compilado usando " -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr " y versión de GCC " -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "Copyright (C) 1999-2012 Paul Davis" -#: main.cc:505 +#: main.cc:501 msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" @@ -6784,30 +6828,34 @@ msgstr "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" -#: main.cc:507 +#: main.cc:503 msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "%1 viene SIN GARANTÃA DE NINGUNA CLASE" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" "incluidas de comerciabilidad o adecuación para un propósito determinado" -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "Esto es software libre. Puedes distribuirlo " -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "" "bajo ciertas condiciones; lee el código para conocer las condiciones de " "copia." -#: main.cc:519 +#: main.cc:513 +msgid "could not initialize %1." +msgstr "no se pudo inicializar %1." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "Cannot xinstall SIGPIPE error handler" -#: main.cc:525 +#: main.cc:528 msgid "could not create %1 GUI" msgstr "could not create %1 GUI" @@ -6815,7 +6863,7 @@ msgstr "could not create %1 GUI" msgid "Display delta to edit cursor" msgstr "Mostrar diferencia al punto de edición" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "MarkerText" @@ -7308,7 +7356,7 @@ msgstr "Pulsa para elegir una carpeta adicional" msgid "Missing Plugins" msgstr "Plugins ausentes" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "OK" @@ -7382,20 +7430,20 @@ msgstr "" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "pre" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 msgid "Comments" msgstr "Comentarios" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "Conmutar anchura de este canal de mezcla." -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." @@ -7403,60 +7451,60 @@ msgstr "" "\n" "%1-%2-clic para conmutar la anchura de todos los canales." -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 msgid "Hide this mixer strip" msgstr "Ocultar este canal del mezclador" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 msgid "Click to select metering point" msgstr "Selección de punto de medición" # it's just a meaningless string -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "tupni" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "Solo aislado" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "Bloquear estado de solo" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "bloquear" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 msgid "iso" msgstr "iso" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 msgid "Mix group" msgstr "Grupo de mezcla" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 msgid "Phase Invert" msgstr "Inversión de fase" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 msgid "Solo Safe" msgstr "Solo seguro" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "Grupo" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 msgid "Meter Point" msgstr "Punto de medición" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 msgid "Enable/Disable MIDI input" msgstr "Activar/Desactivar entrada MIDI" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 msgid "" "Aux\n" "Sends" @@ -7464,138 +7512,151 @@ msgstr "" "Aux\n" "Envíos" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 msgid "Snd" msgstr "Snd" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "No está conectado a JACK - No es posible realizar cambios de E/S" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "ENTRADA a %1" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "SALIDA desde %1" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 msgid "Disconnected" msgstr "Desconectado" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 msgid "*Comments*" msgstr "*Comentarios*" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 msgid "Cmt" msgstr "Cmt" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "Clicar para añadir o editar comentarios" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr ": editor de notas" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "Grp" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "~G" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 msgid "Comments..." msgstr "Notas..." -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 msgid "Save As Template..." msgstr "Guardar como plantilla..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "Activo" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "Ajustar latencia..." -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "Proteger contra denormals" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 msgid "Remote Control ID..." msgstr "ID de control remoto..." -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 msgid "in" msgstr "in" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "post" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 msgid "out" msgstr "out" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "custom" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 msgid "pr" msgstr "pr" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 msgid "po" msgstr "po" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 msgid "o" msgstr "o" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "Disco" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "AFL" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "PFL" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 msgid "D" msgstr "D" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 msgid "i" msgstr "i" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 msgid "Pre-fader" msgstr "Pre-fader" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 msgid "Post-fader" msgstr "Post-fader" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "Canal %1" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "" @@ -7604,10 +7665,68 @@ msgstr "" msgid "-all-" msgstr "-todos-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "Canales" +#: meter_strip.cc:764 +msgid "Variable height" +msgstr "" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "corto" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +#, fuzzy +msgid "VU" +msgstr "V" + #: monitor_section.cc:62 msgid "SiP" msgstr "SiP" @@ -7994,7 +8113,7 @@ msgstr "" msgid "Panner (2D)" msgstr "Paner (2D)" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "Puentear" @@ -8171,7 +8290,7 @@ msgstr "Por categoría" msgid "Eh? LADSPA plugins don't have editors!" msgstr "¿Cómo? ¡Los plugins LADSPA no tienen editores!" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " "version of %1)" @@ -8183,7 +8302,7 @@ msgstr "" msgid "unknown type of editor-supplying plugin" msgstr "Tipo desconocido de plugin con editor propio " -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " "version of %1)" @@ -8191,45 +8310,45 @@ msgstr "" "Tipo desconocido de plugin con editor propio (nota: no hay soporte linuxVST " "en esta versión de %1)" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "Añadir" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 msgid "Description" msgstr "Descripción" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 msgid "Plugin analysis" msgstr "Análisis de plugin" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 msgid "Save a new preset" msgstr "Guadar un preset nuevo" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" @@ -8237,29 +8356,41 @@ msgstr "" "Pulsa para permitir que el plugin reciba eventos de teclado que %1 usaría " "normalmente como atajos de teclado" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "Pulsa para activar/desactivar este plugin" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "latencia (%1 muestra)" msgstr[1] "latencia (%1 muestras)" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "latencia (%1 ms)" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 msgid "Edit Latency" msgstr "Editar latencia" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "No se encontró el preset %1" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "Pulsa para permitir el uso normal de los atajos de teclado de %1" @@ -8363,46 +8494,46 @@ msgstr "Detectando..." msgid "Port Insert " msgstr "Inserción puerto" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 msgid "Sources" msgstr "Orígenes" -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "Destinos" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "Añadir %s %s" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, c-format msgid "Rename '%s'..." msgstr "Renombrar '%s'..." -#: port_matrix.cc:451 +#: port_matrix.cc:472 msgid "Remove all" msgstr "Eliminar todo" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, c-format msgid "%s all" msgstr "%s todos" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "Buscar otra vez" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "Mostrar puertos individuales" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "" -#: port_matrix.cc:702 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." @@ -8410,33 +8541,35 @@ msgstr "" "No es posible añadir un puerto aquí, pues el primer procesador de la pista o " "bus no puede soportar la nueva configuración." -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "Eliminación de puertos no permitida" -#: port_matrix.cc:728 +#: port_matrix.cc:749 +#, fuzzy msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" "Este puerto no se puede eliminar, pues el primer plugin de la pista o bus no " "puede admitir el nuevo número de entradas." -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, c-format msgid "Remove '%s'" msgstr "Eliminar '%s'" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, c-format msgid "%s all from '%s'" msgstr "%s todo desde '%s'" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 msgid "channel" msgstr "canal" @@ -8448,36 +8581,36 @@ msgstr "No hay puertos para conectar." msgid "There are no %1 ports to connect." msgstr "No hay %1 puertos para conectar." -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 msgid "Show All Controls" msgstr "Mostrar todos los controles" -#: processor_box.cc:375 +#: processor_box.cc:376 msgid "Hide All Controls" msgstr "Ocultar todos los controles" -#: processor_box.cc:464 +#: processor_box.cc:465 msgid "on" msgstr "on" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "apagado" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" @@ -8485,15 +8618,15 @@ msgstr "" "Botón derecho para añadir/eliminar/editar\n" "plugins, inserciones, envíos y más" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "Incompatiblidad de plugin" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "Intentaste añadir el plugin \"%1\" en el slot %2.\n" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" @@ -8501,19 +8634,19 @@ msgstr "" "\n" "Este plugin tiene:\n" -#: processor_box.cc:1196 +#: processor_box.cc:1209 msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "\t%1 entrada MIDI\n" msgstr[1] "\t%1 entradas MIDI\n" -#: processor_box.cc:1200 +#: processor_box.cc:1213 msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" msgstr[0] "\t%1 entrada audio\n" msgstr[1] "\t%1 entradas audio\n" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" @@ -8521,19 +8654,19 @@ msgstr "" "\n" "Pero en el punto de inserción hay:\n" -#: processor_box.cc:1206 +#: processor_box.cc:1219 msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "\t%1 canal MIDI\n" msgstr[1] "\t%1 canales MIDI\n" -#: processor_box.cc:1210 +#: processor_box.cc:1223 msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "\t%1 canal audio\n" msgstr[1] "\t%1 canales audio\n" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" @@ -8541,11 +8674,11 @@ msgstr "" "\n" "%1 es incapaz de insertar este plugin aquí.\n" -#: processor_box.cc:1249 +#: processor_box.cc:1262 msgid "Cannot set up new send: %1" msgstr "No se pudo configurar el nuevo envío: %1" -#: processor_box.cc:1581 +#: processor_box.cc:1594 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" @@ -8555,19 +8688,19 @@ msgstr "" "de ese modo porque las entradas y salidas no\n" "funcionarán correctamente." -#: processor_box.cc:1765 +#: processor_box.cc:1778 msgid "Rename Processor" msgstr "Renombrar procesador" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" @@ -8578,7 +8711,7 @@ msgstr "" "configuración de E/S de los plugins no concuerda\n" "con la configuración de esta pista." -#: processor_box.cc:1987 +#: processor_box.cc:2000 msgid "" "Do you really want to remove all processors from %1?\n" "(this cannot be undone)" @@ -8586,15 +8719,15 @@ msgstr "" "¿De verdad deseas eliminar todos los procesadores de %1? \n" "(esto no se puede deshacer)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "Sí, eliminar todos" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 msgid "Remove processors" msgstr "Eliminar procesadores" -#: processor_box.cc:2008 +#: processor_box.cc:2021 msgid "" "Do you really want to remove all pre-fader processors from %1?\n" "(this cannot be undone)" @@ -8602,7 +8735,7 @@ msgstr "" "¿De verdad deseas eliminar todos los procesadores pre-fader de %1?\n" "(esto no se puede deshacer)" -#: processor_box.cc:2011 +#: processor_box.cc:2024 msgid "" "Do you really want to remove all post-fader processors from %1?\n" "(this cannot be undone)" @@ -8610,54 +8743,54 @@ msgstr "" "¿De verdad deseas eliminar todos los procesadores post-fader de %1?\n" "(esto no se puede deshacer)" -#: processor_box.cc:2198 +#: processor_box.cc:2200 msgid "New Plugin" msgstr "Nuevo plugin" -#: processor_box.cc:2201 +#: processor_box.cc:2203 msgid "New Insert" msgstr "Nueva inserción" -#: processor_box.cc:2204 +#: processor_box.cc:2206 msgid "New External Send ..." msgstr "Nuevo envío externo..." -#: processor_box.cc:2208 +#: processor_box.cc:2210 msgid "New Aux Send ..." msgstr "Nuevo envío auxiliar..." -#: processor_box.cc:2212 +#: processor_box.cc:2214 msgid "Clear (all)" msgstr "Limpiar (todos)" # es correcto el término 'resetear'? # He cambiado tipo de compás y compás, cuando tiene este significado, por métrica -#: processor_box.cc:2214 +#: processor_box.cc:2216 msgid "Clear (pre-fader)" msgstr "Limpiar (pre-fader)" -#: processor_box.cc:2216 +#: processor_box.cc:2218 msgid "Clear (post-fader)" msgstr "Limpiar (post-fader)" -#: processor_box.cc:2242 +#: processor_box.cc:2244 msgid "Activate All" msgstr "Activar todos" -#: processor_box.cc:2244 +#: processor_box.cc:2246 msgid "Deactivate All" msgstr "Desactivar todos" -#: processor_box.cc:2246 +#: processor_box.cc:2248 msgid "A/B Plugins" msgstr "Plugins A/B" -#: processor_box.cc:2255 +#: processor_box.cc:2257 #, fuzzy msgid "Edit with generic controls..." msgstr "Editar con controles básicos..." -#: processor_box.cc:2531 +#: processor_box.cc:2557 msgid "%1: %2 (by %3)" msgstr "%1: %2 (a %3)" @@ -8819,7 +8952,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -8908,7 +9041,7 @@ msgstr "Número máximo de sesiones recientes" msgid "Click gain level" msgstr "Nivel de ganancia de claqueta" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Automatización" @@ -9104,92 +9237,96 @@ msgstr "Mover automatización relevante al desplazar regiones de audio" msgid "Show meters on tracks in the editor" msgstr "Mostrar medidores en pistas en Editor" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "Las regiones en los grupos de edición activos se editan juntas" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "cuando se solapan en el tiempo" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "sólo si tienen la misma duración, posición y origen" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "Hacer que el rectángulo de selección elástica se ajuste a rejilla" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 msgid "Show waveforms in regions" msgstr "Mostrar formas de onda en regiones" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 msgid "Show gain envelopes in audio regions" msgstr "Mostrar envolventes de ganancia en regiones de audio" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "en todos los modos" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "sólo en el modo de ganancia de región" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 msgid "Waveform scale" msgstr "Escala de forma de onda" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "lineal" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "logarítmica" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 msgid "Waveform shape" msgstr "Forma de onda" # en realidad no existe este término en el español... -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 msgid "traditional" msgstr "tradicional" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 msgid "rectified" msgstr "rectificada" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "Mostrar formas de onda al grabar audio" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "Mostrar barra de herramientas de zoom" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "Colorear regiones con el color de su pista" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "Actualizar la ventana del editor durante arrastres del resumen" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "Sincronizar orden de pistas en Editor y Mezclador" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "Sincronizar selección en Editor y Mezclador" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 msgid "Name new markers" msgstr "Nombrar marcas nuevas" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9202,339 +9339,424 @@ msgstr "" "(Las marcas se pueden renombrar en cualquier momento, por medio del clic " "derecho)" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" "Auto-scroll en la ventana del editor cuando se arrastra hacia cerca de sus " "bordes" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "Buffering" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 msgid "Record monitoring handled by" msgstr "Monitorización de la grabación manejado por" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 msgid "ardour" msgstr "ardour" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 msgid "audio hardware" msgstr "hardware de audio" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 msgid "Tape machine mode" msgstr "Modo magnetófono" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "Conexión de pistas y buses" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "Autoconectar buses master/monitor" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 msgid "Connect track inputs" msgstr "Conectar a entradas de pista" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 msgid "automatically to physical inputs" msgstr "automáticamente a entradas físicas" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "manualmente" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "Conectar salidas de pista y bus" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 msgid "automatically to physical outputs" msgstr "automáticamente a salidas físicas" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 msgid "automatically to master bus" msgstr "automáticamente al bus master" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 msgid "Denormals" msgstr "Denormals" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "Usar DC bias para proteger contra denormals" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "Manejo de procesador" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "ningún manejo de procesador" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "usar FlushToZero" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "usar DenormalsAreZero" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "usar FlushToZero y DenormalsAreZero" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 msgid "Silence plugins when the transport is stopped" msgstr "Silenciar plugins cuando el transporte esté parado" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "Nuevos plugins inician activados" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "Activar análisis automático de audio" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "Duplicar canales de región ausentes" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "Solo / mudo" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "Corte de solo / mudo (dB)" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "Los controles de solo son controles de escucha" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 msgid "Listen Position" msgstr "Posición de escucha" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 msgid "after-fader (AFL)" msgstr "Post-fader (AFL) " -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 msgid "pre-fader (PFL)" msgstr "pre-fader (PFL)" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "Las señales PFL vienen desde" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 msgid "before pre-fader processors" msgstr "antes de procesadores pre-fader" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "pre-fader pero después de procesadores pre-fader" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "Las señales AFL vienen desde" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 msgid "immediately post-fader" msgstr "inmediatamente post-fader" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 msgid "after post-fader processors (before pan)" msgstr "después de procesadores post-fader (antes de pan)" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "Solo exclusivo" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "Mostrar mudos de solo" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "Solo invalida mudo" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "Opciones por defecto para mudo de pista / bus" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "Mudo afecta envíos pre-fader" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "Mudo afecta envíos post-fader" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 msgid "Mute affects control outputs" msgstr "Mudo afecta a salidas de control" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "Mudo afecta a salidas principales" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "Enviar MIDI Time Code" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" "Pocentaje a cada lado de la velocidad normal de transporte para transmitir " "MTC" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "Obedecer comandos de MIDI Machine Control" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "Enviar comandos de MIDI Machine Control" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 msgid "Send MIDI control feedback" msgstr "Enviar feedback de control MIDI" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "ID del dispositivo MMC de entrada" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "ID del dispositivo MMC de salida" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "Cambio de programa inicial" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "Mostrar el primer banco o programa MIDi como 0" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "No mostrar mensajes MIDI periódicos (MTC, MIDI Clock)" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 msgid "Sound MIDI notes as they are selected" msgstr "Las notas MIDI suenan al ser seleccionadas" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 msgid "User interaction" msgstr "Interacción con el usuario" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "Teclado" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 msgid "Control surface remote ID" msgstr "ID remota de superficies de control" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "asignado por usuario" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "según orden de Mezclador" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "según orden del Editor" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 #, fuzzy msgid "Preferences|GUI" msgstr "Preferencias" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "Resaltar controles al pasar sobre éstos el puntero del ratón" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "Mostrar descripciones emergentes al colocar el ratón sobre un control" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 msgid "Mixer Strip" msgstr "Canal de Mezclador" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 msgid "Use narrow strips in the mixer by default" msgstr "Usar canales de mezcla estrechos por defecto" -#: rc_option_editor.cc:1898 -msgid "Meter hold time" +#: rc_option_editor.cc:1906 +#, fuzzy +msgid "Peak hold time" msgstr "Tiempo de retención del medidor" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 msgid "short" msgstr "corto" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "medio" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "largo" -#: rc_option_editor.cc:1912 -msgid "Meter fall-off" +#: rc_option_editor.cc:1920 +#, fuzzy +msgid "DPM fall-off" msgstr "Decaimiento del medidor" -#: rc_option_editor.cc:1918 -msgid "slowest" -msgstr "lentísimo" +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" +msgstr "" + +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" + +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" + +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" -msgstr "lento" +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" -#: rc_option_editor.cc:1921 -msgid "fast" -msgstr "rápido" +#: rc_option_editor.cc:1985 +#, fuzzy +msgid "Peak threshold [dBFS]" +msgstr "Umbral de pico" -#: rc_option_editor.cc:1922 -msgid "faster" -msgstr "más rápido" +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" -#: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "rapidísimo" +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -9544,11 +9766,11 @@ msgstr "Escuchar esta región" msgid "Position:" msgstr "Posición:" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Fin:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "Duración:" @@ -9572,23 +9794,23 @@ msgstr "Orígenes:" msgid "Source:" msgstr "Origen:" -#: region_editor.cc:167 +#: region_editor.cc:166 msgid "Region '%1'" msgstr "Región '%1'" -#: region_editor.cc:274 +#: region_editor.cc:273 msgid "change region start position" msgstr "cambiar posición del inicio de región" -#: region_editor.cc:290 +#: region_editor.cc:289 msgid "change region end position" msgstr "cambiar posición del final de región" -#: region_editor.cc:310 +#: region_editor.cc:309 msgid "change region length" msgstr "cambiar duración de región " -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 msgid "change region sync point" msgstr "cambiar punto de sincronía de región" @@ -9780,317 +10002,317 @@ msgid "" msgstr "" "Ya existe un grupo de ruteado con este nombre. Por favor, elige otro nombre." -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "Pistas/Buses" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "Entradas" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "Salidas" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "Plugins, inserciones y envíos" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "Retardo de reproducción: % muestras" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "NINGUNA PISTA" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 msgid "No Track or Bus Selected" msgstr "No hay pista o bus seleccionado" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "g" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "p" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "a" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "Grabar" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 msgid "Route Group" msgstr "Grupo de ruteado" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 msgid "MIDI Controllers and Automation" msgstr "Controladores y automatización MIDI" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 msgid "Show All Automation" msgstr "Mostrar toda automatización" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 msgid "Show Existing Automation" msgstr "Mostrar automatización existente" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 msgid "Hide All Automation" msgstr "Ocultar toda automatización" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 #, fuzzy msgid "Processor automation" msgstr "limpiar automatización" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 msgid "Color..." msgstr "Color..." -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "Superpuestas" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "Apiladas" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 msgid "Layers" msgstr "Capas" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 msgid "Automatic (based on I/O connections)" msgstr "Automática (basada en conexiones de E/S)" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 msgid "(Currently: Existing Material)" msgstr "(Actualmente: Material existente)" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 msgid "(Currently: Capture Time)" msgstr "(Actualmente: Tiempo de captura)" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 msgid "Align With Existing Material" msgstr "Alinear con material existente" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 msgid "Align With Capture Time" msgstr "Alinear con tiempo de captura" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 msgid "Alignment" msgstr "Alineación" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 msgid "Normal Mode" msgstr "Modo normal" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 msgid "Tape Mode" msgstr "Modo cinta" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 msgid "Non-Layered Mode" msgstr "Modo sin capas" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Lista de Reproducción" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 msgid "Rename Playlist" msgstr "Renombrar lista de reproducción" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 msgid "New name for playlist:" msgstr "Nuevo nombre para lista de reproducción" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 msgid "New Copy Playlist" msgstr "Nueva copia de lista de reproducción" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 msgid "Name for new playlist:" msgstr "Nombre para nueva lista de reproducción:" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 msgid "New Playlist" msgstr "Nueva lista de reproducción" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 msgid "You cannot create a track with that name as it is reserved for %1" msgstr "No puedes crear una pista con ese nombre pues está reservado para %1" -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 msgid "New Copy..." msgstr "Nueva copia..." -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 msgid "New Take" msgstr "Nueva toma" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 msgid "Copy Take" msgstr "Copiar toma" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "Borrar actual" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 msgid "Select From All..." msgstr "Selecciona de todos...." -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "Underlays" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 msgid "Remove \"%1\"" msgstr "Eliminar \"%1\"" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "programming error: underlay reference pointer pairs are inconsistent!" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 msgid "After-fade listen (AFL)" msgstr "Escucha Post-fader (AFL) " -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 msgid "Pre-fade listen (PFL)" msgstr "Escucha pre-fader (PFL)" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "s" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "m" -#: route_ui.cc:114 +#: route_ui.cc:119 msgid "Mute this track" msgstr "Enmudecer esta pista" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "Enmudecer resto de pistas (que no estén en solo)" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "Activar la grabación en esta pista" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "hacer que los canales del mezclador muestren envíos a este bus" -#: route_ui.cc:133 +#: route_ui.cc:138 msgid "Monitor input" msgstr "Monitorizar entrada" -#: route_ui.cc:139 +#: route_ui.cc:144 msgid "Monitor playback" msgstr "Monitorizar reproducción" -#: route_ui.cc:586 +#: route_ui.cc:591 msgid "Not connected to JACK - cannot engage record" msgstr "No está conectado a JACK - no se puede activar la grabación" -#: route_ui.cc:781 +#: route_ui.cc:786 msgid "Step Entry" msgstr "" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "Asignar todas las pistas (prefader)" -#: route_ui.cc:858 +#: route_ui.cc:863 msgid "Assign all tracks and buses (prefader)" msgstr "Asignar todas las pistas y buses (prefader)" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "Asignar todas las pistas (postfader)" -#: route_ui.cc:866 +#: route_ui.cc:871 msgid "Assign all tracks and buses (postfader)" msgstr "Asignar todas las pistas y buses (postfader)" -#: route_ui.cc:870 +#: route_ui.cc:875 msgid "Assign selected tracks (prefader)" msgstr "Assignar pistas seleccionadas (prefader)" -#: route_ui.cc:874 +#: route_ui.cc:879 msgid "Assign selected tracks and buses (prefader)" msgstr "Assignar pistas y buses seleccionados (prefader)" -#: route_ui.cc:877 +#: route_ui.cc:882 msgid "Assign selected tracks (postfader)" msgstr "Assignar pistas seleccionadas (postfader)" -#: route_ui.cc:881 +#: route_ui.cc:886 msgid "Assign selected tracks and buses (postfader)" msgstr "Assignar pistas y buses seleccionados (postfader)" -#: route_ui.cc:884 +#: route_ui.cc:889 msgid "Copy track/bus gains to sends" msgstr "Copiar ganancias de pista/bus a envíos" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "Establecer ganancia de envíos a -inf" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "Establecer ganancia de envíos a 0dB" -#: route_ui.cc:1206 +#: route_ui.cc:1211 msgid "Solo Isolate" msgstr "Aislar solo" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "Pre-Fader" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "Post-Fader" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "Salidas de control" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "Salidas principales" -#: route_ui.cc:1385 +#: route_ui.cc:1390 msgid "Color Selection" msgstr "Selección de color" -#: route_ui.cc:1472 +#: route_ui.cc:1477 msgid "" "Do you really want to remove track \"%1\" ?\n" "\n" @@ -10104,7 +10326,7 @@ msgstr "" "\n" "(Esta acción no se puede deshacer y sobrescribirá el archivo de sesión)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 msgid "" "Do you really want to remove bus \"%1\" ?\n" "\n" @@ -10113,15 +10335,15 @@ msgstr "" "¿De verdad deseas eliminar el bus \"%1\" ?\n" "(Esta acción no se puede deshacer y el archivo de sesión se reescribirá)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 msgid "Remove track" msgstr "Eliminar pista" -#: route_ui.cc:1484 +#: route_ui.cc:1489 msgid "Remove bus" msgstr "Eliminar bus" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" @@ -10130,47 +10352,47 @@ msgstr "" "buses.\n" "¿Quieres usar este nombre?" -#: route_ui.cc:1515 +#: route_ui.cc:1520 msgid "Use the new name" msgstr "Usar el nuevo nombre" -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "Renombrar pista" -#: route_ui.cc:1531 +#: route_ui.cc:1536 msgid "Rename Bus" msgstr "Renombrar bus" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr "latencia" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "Cannot create route template directory %1" -#: route_ui.cc:1709 +#: route_ui.cc:1714 msgid "Save As Template" msgstr "Guardar como plantilla" -#: route_ui.cc:1710 +#: route_ui.cc:1715 msgid "Template name:" msgstr "Nombre de plantilla :" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "ID de control remoto" -#: route_ui.cc:1793 +#: route_ui.cc:1798 msgid "Remote control ID:" msgstr "ID de control remoto:" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10178,15 +10400,15 @@ msgid "" "The remote control ID of %3 cannot be changed." msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 msgid "the master bus" msgstr "el bus master" -#: route_ui.cc:1811 +#: route_ui.cc:1816 msgid "the monitor bus" msgstr "el bus de monitorización" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10197,15 +10419,15 @@ msgid "" "change this%5" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 msgid "the mixer" msgstr "el mezclador" -#: route_ui.cc:1816 +#: route_ui.cc:1821 msgid "the editor" msgstr "el editor" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." @@ -10213,7 +10435,7 @@ msgstr "" "Clic izquierdo para invertir (inversión de fase) canal %1 de esta pista. " "Clic derecho para mostrar menú." -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "" @@ -10709,51 +10931,108 @@ msgstr "Adherir marcadores nuevos a compases y pulsos" msgid "Glue new regions to bars and beats" msgstr "Adherir regiones nuevas a compases y pulsos" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "Medidores" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "Mostrar todas las pistas MIDI" + +# es correcto utilizar 'buses' en español? -> al parecer sí, desde hace poc. Chequear: http://buscon.rae.es/draeI/SrvltObtenerHtml?IDLEMA=12558&NEDIC=Si +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "Buses" + +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "el bus master" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "Activar grabación" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "+ botón" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "Solo / mudo" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "Nombre de Pista/Bus" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 msgid "as new tracks" msgstr "como nuevas pistas" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 msgid "to selected tracks" msgstr "a pistas seleccionadas" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to region list" msgstr "a lista de regiones" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "as new tape tracks" msgstr "como pistas de cinta" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "programming error: unknown import mode string %1" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 msgid "Auto-play" msgstr "Auto-play" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 msgid "Sound File Information" msgstr "Información del archivo de sonido" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 msgid "Timestamp:" msgstr "Timestamp:" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "Formato:" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "Etiquetas:" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "La escucha de archovos MID aún no está soportada" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "No se pudo leer el archivo %1 (%2)." @@ -10781,11 +11060,11 @@ msgstr "Archivos de audio" msgid "MIDI files" msgstr "Archivos MIDI" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "Todos los archivos" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "Explorar archivos" @@ -10793,169 +11072,157 @@ msgstr "Explorar archivos" msgid "Paths" msgstr "Rutas" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "Buscar etiquetas" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 msgid "Sort:" msgstr "Corto:" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 msgid "Longest" msgstr "El más largo" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 msgid "Shortest" msgstr "El más corto" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 msgid "Newest" msgstr "El más nuevo" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "El más antiguo" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "El más descargado" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 msgid "Least downloaded" msgstr "El menos descargado" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "El puntuado más alto" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "El puntuado más bajo" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 msgid "ID" msgstr "ID" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 msgid "Filename" msgstr "Nombre de archivo" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 msgid "Duration" msgstr "Duración" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 msgid "Size" msgstr "Tamaño" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 msgid "Samplerate" msgstr "Frec. de muestreo" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "Licencia" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "Buscar en Freesound" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "SoundFileBrowser: Could not tokenize string: " -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "B" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "kB" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "MB" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 msgid "GB" msgstr "GB" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "" - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "1 pista por archivo" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "1 pista por canal" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 msgid "sequence files" msgstr "secuenciar archivos" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "todos los archivos en una pista" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 msgid "merge files" msgstr "fusionar archivos" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 msgid "one region per file" msgstr "una región por archivo" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 msgid "one region per channel" msgstr "una región por canal" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 msgid "all files in one region" msgstr "todos los archivos en una región" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" @@ -10963,60 +11230,60 @@ msgstr "" "Uno o más de los archivos seleccionados\n" "no puede ser usado por %1" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "" "Copiar archivos\n" "a la sesión" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 msgid "file timestamp" msgstr "timestamp de archivo" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 msgid "edit point" msgstr "punto de edición" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 msgid "playhead" msgstr "cursor" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 msgid "session start" msgstr "inicio de sesión" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "Añadir archivos como..." -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 msgid "Insert at" msgstr "Insertar en" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 msgid "Mapping" msgstr "Mapeado" -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 msgid "Conversion quality" msgstr "Calidad de conversión" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "La mejor" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "Buena" # Quick=Veloz # Fast=Rápida # if not, you get two "rápida" entries in the combo -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "Veloz" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "Rapidísima" @@ -11103,22 +11370,23 @@ msgid "I'd like more options for this session" msgstr "Quiero más opciones para esta sesión" #: startup.cc:194 +#, fuzzy msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11284,10 +11552,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "¿Qué te gustaría hacer?" - #: startup.cc:729 msgid "Open" msgstr "Abrir" @@ -11300,83 +11564,83 @@ msgstr "Nombre de sesión:" msgid "Create session folder in:" msgstr "Crear carpeta de sesión en :" -#: startup.cc:813 +#: startup.cc:821 msgid "Select folder for session" msgstr "Seleccionar carpeta para sesión" -#: startup.cc:845 +#: startup.cc:853 msgid "Use this template" msgstr "Usar esta plantilla" -#: startup.cc:848 +#: startup.cc:856 msgid "no template" msgstr "sin plantilla" -#: startup.cc:876 +#: startup.cc:884 msgid "Use an existing session as a template:" msgstr "Usar una sesión existente como plantilla: " -#: startup.cc:888 +#: startup.cc:896 msgid "Select template" msgstr "Seleccionar plantilla" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "Nueva sesión" -#: startup.cc:1068 +#: startup.cc:1077 msgid "Select session file" msgstr "Seleccionar archivo de sesión" -#: startup.cc:1084 +#: startup.cc:1093 msgid "Browse:" msgstr "Explorar:" -#: startup.cc:1093 +#: startup.cc:1102 msgid "Select a session" msgstr "Seleccionar una sesión" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "canales" -#: startup.cc:1135 +#: startup.cc:1145 msgid "Busses" msgstr "Buses" -#: startup.cc:1136 +#: startup.cc:1146 msgid "Inputs" msgstr "Entradas" -#: startup.cc:1137 +#: startup.cc:1147 msgid "Outputs" msgstr "Salidas" -#: startup.cc:1145 +#: startup.cc:1155 msgid "Create master bus" msgstr "Crear bus master" -#: startup.cc:1155 +#: startup.cc:1165 msgid "Automatically connect to physical inputs" msgstr "Conectar a entradas físicas automáticamente" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "Usar sólo" -#: startup.cc:1215 +#: startup.cc:1225 msgid "Automatically connect outputs" msgstr "Conectar salidas automáticamente" -#: startup.cc:1237 +#: startup.cc:1247 msgid "... to master bus" msgstr "...al bus master" -#: startup.cc:1247 +#: startup.cc:1257 msgid "... to physical outputs" msgstr "...a salidas físicas" -#: startup.cc:1297 +#: startup.cc:1307 msgid "Advanced Session Options" msgstr "Opciones avanzadas de sesión" @@ -12061,19 +12325,19 @@ msgstr "No se guardó el archivo de configuración %1." msgid "bad XPM header %1" msgstr "Encabezado XPM erróneo %1." -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "No se encuentra el estilo RGBA para \"%1\"." -#: utils.cc:544 +#: utils.cc:591 msgid "cannot find XPM file for %1" msgstr "No se pudo encontrar el archivo XPM para %1." -#: utils.cc:570 +#: utils.cc:617 msgid "cannot find icon image for %1 using %2" msgstr "No se pudo encontrar la imagen del icono para %1 usando %2" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "Caught exception while loading icon named %1" @@ -12081,84 +12345,86 @@ msgstr "Caught exception while loading icon named %1" msgid "VerboseCanvasCursor" msgstr "VerboseCanvasCursor" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 #, fuzzy msgid "Set Video Track" msgstr "Añadir pista de audio" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 #, fuzzy msgid "Launch External Video Monitor" msgstr "Monitorizar" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 #, fuzzy msgid "Video files" msgstr "Archivos de audio" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 #, fuzzy msgid "Video Information" msgstr "Información del archivo de sonido" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 #, fuzzy msgid "Start:" msgstr "Inicio" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 #, fuzzy msgid "Frame rate:" msgstr "Frec. de muestreo:" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 msgid "Export Successful: %1" msgstr "" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12166,18 +12432,18 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 #, fuzzy msgid "Video Monitor: File Not Found." msgstr "Monitorizar" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12187,380 +12453,389 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 #, fuzzy msgid "Transcode/Import Video File " msgstr "Exportar a archivo(s) de audio..." -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 #, fuzzy msgid "Output File:" msgstr "Dispositivo de salida:" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "Altura" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 #, fuzzy msgid "File Information" msgstr "Información del archivo de sonido" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 #, fuzzy msgid "Duration:" msgstr "Duración" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 #, fuzzy msgid "??" msgstr "???" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 #, fuzzy msgid "Import Settings" msgstr "Opciones" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 #, fuzzy msgid "Import/Transcode Video to Session" msgstr "Exportar desde sesión" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 msgid "Original Width" msgstr "" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 #, fuzzy msgid "Extract Audio:" msgstr "Exportar audio" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 #, fuzzy msgid "Extracting Audio.." msgstr "Exportar audio" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 #, fuzzy msgid "Transcoding Failed." msgstr "Traducciones deshabilitadas" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 #, fuzzy msgid "Save Transcoded Video File" msgstr "Exportar a archivo(s) de audio..." -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 #, fuzzy msgid "Server Docroot:" msgstr "Servidor:" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 #, fuzzy msgid "Listen Port:" msgstr "Posición de escucha" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 #, fuzzy msgid "Cache Size:" msgstr "Tamaño máx." -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 #, fuzzy msgid "Confirm Overwrite" msgstr "Confirmar reescritura de captura de sesión" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 #, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "Ya existe una captura de sesión con ese nombre. ¿Quieres reescribirla?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 #, fuzzy msgid "Cannot create video folder \"%1\" (%2)" msgstr "No se pudo leer el archivo %1 (%2)." -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 #, fuzzy msgid "Export Video File " msgstr "Exportar a archivo(s) de audio..." -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 #, fuzzy msgid "Video:" msgstr "Mike Start" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "Normalizar a:" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 #, fuzzy msgid "Deinterlace" msgstr "Centrar cursor" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 #, fuzzy msgid "Include Session Metadata" msgstr "Editar metadatos de sesión" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 #, fuzzy msgid "Output:" msgstr "Salidas" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 #, fuzzy msgid "Input:" msgstr "Entradas" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 #, fuzzy msgid "Audio:" msgstr "Audio" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 #, fuzzy msgid "Master Bus" msgstr "el bus master" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 #, fuzzy msgid "Settings:" msgstr "Destinos" -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 #, fuzzy msgid "Range:" msgstr "Rango" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 #, fuzzy msgid "Preset:" msgstr "Preset" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 #, fuzzy msgid "Video Codec:" msgstr "Carpeta:" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 #, fuzzy msgid "Video KBit/s:" msgstr "Mike Start" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 #, fuzzy msgid "Audio Codec:" msgstr "Modo de audio:" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 #, fuzzy msgid "Audio KBit/s:" msgstr "Archivos de audio" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 #, fuzzy msgid "Audio Samplerate:" msgstr "Frec. de muestreo:" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "Normalizar valores" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 #, fuzzy msgid "Exporting audio" msgstr "Exportar audio" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:437 #, fuzzy -msgid "Exporting Audio.." +msgid "Exporting Audio..." msgstr "Exportar audio" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." -msgstr "" +#: export_video_dialog.cc:562 +#, fuzzy +msgid "Encoding Video..." +msgstr "Traducciones deshabilitadas" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 #, fuzzy msgid "Transcoding failed." msgstr "Traducciones deshabilitadas" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 #, fuzzy msgid "Save Exported Video File" msgstr "Exportar a archivo(s) de audio..." @@ -12578,33 +12853,36 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" -"\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" -"\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#~ msgid "-Inf" +#~ msgstr "-Inf" + +#~ msgid "slowest" +#~ msgstr "lentísimo" + +#~ msgid "slow" +#~ msgstr "lento" + +#~ msgid "fast" +#~ msgstr "rápido" + +#~ msgid "faster" +#~ msgstr "más rápido" + +#~ msgid "fastest" +#~ msgstr "rapidísimo" + +#~ msgid "What would you like to do ?" +#~ msgstr "¿Qué te gustaría hacer?" + #~ msgid "Connect" #~ msgstr "Conectar" diff --git a/gtk2_ardour/po/fr.po b/gtk2_ardour/po/fr.po index 052ded798d..f9e857303d 100644 --- a/gtk2_ardour/po/fr.po +++ b/gtk2_ardour/po/fr.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 2.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-05-20 01:04+0200\n" "Last-Translator: \n" "Language-Team: American English \n" @@ -411,7 +411,7 @@ msgstr "fichier de définition de menu introuvable: %1" msgid "%1 will not work without a valid ardour.menus file" msgstr "%1 ne fonctionnera pas sans un fichier ardour.menus valide" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 msgid "Add Track or Bus" msgstr "Ajouter une piste ou un bus" @@ -447,8 +447,8 @@ msgstr "Bus" msgid "Add:" msgstr "Ajouter:" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 msgid "Options" msgstr "Options" @@ -462,21 +462,21 @@ msgid "Group:" msgstr "Groupe:" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "MIDI" @@ -501,7 +501,7 @@ msgstr "" "Si le plugin n'utilise qu'un type d'entrée, utilisez une piste audio ou MIDI." #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "Normal" @@ -545,7 +545,7 @@ msgstr "8 canaux" msgid "12 Channel" msgstr "12 canaux" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "Personalisée" @@ -638,7 +638,7 @@ msgid "Track" msgstr "Piste" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 msgid "Show" msgstr "Afficher" @@ -647,94 +647,90 @@ msgstr "Afficher" msgid "Re-analyze data" msgstr "Analyser les données" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "Le bouton ne peut pas surveiller un élement Controllable inexistant\n" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 msgid "audition" msgstr "écoute" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 msgid "solo" msgstr "solo" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 msgid "feedback" msgstr "larsen" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 msgid "Speaker Configuration" msgstr "Positionnement des haut-parleurs" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "Apparence..." -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "Raccourcis clavier" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "Préférences" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 #, fuzzy msgid "Add Tracks/Busses" msgstr "Pistes / Bus" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "À propos..." -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "Repères et intervalles..." -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 msgid "Tracks and Busses" msgstr "Pistes/Bus" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "Propriétés" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "Gestionnaire de paquets" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Grande horloge" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 #, fuzzy msgid "Audio Connections" msgstr "Gestionnaire de connexion audio" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "Connexions en entrée" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "Erreurs" -#: ardour_ui.cc:299 -msgid "could not initialize %1." -msgstr "impossible d'initialiser %1." - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "Démarrage du moteur audio" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "%1 est prêt à être utilisé." -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 #, fuzzy msgid "" "WARNING: Your system has a limit for maximum amount of locked memory. This " @@ -750,23 +746,23 @@ msgstr "" "Vous pouvez connaître la limite actuelle avec la commande \"ulimit -l\". " "Celle-ci est habituellement contrôlée par le fichier %2." -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "Ne plus afficher cette fenêtre" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 msgid "Don't quit" msgstr "Ne pas quitter" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 msgid "Just quit" msgstr "Quitter sans enregistrer" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 msgid "Save and quit" msgstr "Enregistrer et quitter" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 msgid "" "%1 was unable to save your session.\n" "\n" @@ -780,15 +776,15 @@ msgstr "" "\n" "cliquez sur le bouton « Quitter sans enregistrer »." -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 msgid "Please wait while %1 cleans up..." msgstr "Veuillez patienter pendant que %1 nettoie ses données..." -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 msgid "Unsaved Session" msgstr "Session non sauvegardée" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -806,7 +802,7 @@ msgstr "" "\n" "Que voulez-vous faire ?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -823,74 +819,74 @@ msgstr "" "\n" "Que voulez-vous faire ?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "Question" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "déconnecté" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "JACK: %.1f kHz / %4.1f ms" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "JACK: % kHz / %4.1f ms" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 msgid "File:" msgstr "Fichiers:" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "BWF" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "WAV" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "WAV64" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "CAF" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "AIFF" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "iXML" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "RF64" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "32-float" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "24-int" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "16-int" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "DSP: %5.1f%%" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -901,33 +897,33 @@ msgstr "" "%%% c:%%%" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 msgid "Disk: Unknown" msgstr "Disque: Unknown" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "Disque: 24hrs+" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "Disque: >24 hrs" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "Disque: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, c-format msgid "Timecode|TC: %s" msgstr "TC: %s" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "Sessions récentes" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" @@ -935,27 +931,27 @@ msgstr "" "%1 n'est pas connecté à JACK\n" "Aucune session ne peut être ouverte ou fermée" -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Ouvrir une session" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 msgid "%1 sessions" msgstr "Sessions %1" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "Vous ne pouvez pas ajouter une piste sans avoir ouvert une session." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 #, fuzzy msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "ne peut créer %1 nouvelle piste mixée (mixte)" msgstr[1] "ne peut créer %1 nouvelles pistes mixées" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -967,24 +963,24 @@ msgstr "" "Vous devriez enregistrer %1, quitter, puis\n" "redémarrer JACK avec plus de ports." -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 msgid "You cannot add a track or bus without a session already loaded." msgstr "" "Vous ne pouvez pas ajouter une piste ou un bus sans avoir ouvert une session." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "impossible de créer %1 nouvelle piste audio" msgstr[1] "impossible de créer %1 nouvelles pistes audios" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "impossible de créer %1 nouveau bus" msgstr[1] "impossible de créer %1 nouveaux bus" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 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." @@ -992,7 +988,7 @@ msgstr "" "Créez au moins une piste avant d'enregistrer.\n" "Allez dans le menu de Session, et choisissez \"Ajouter une piste ou un bus\"." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" @@ -1002,7 +998,7 @@ msgstr "" "\n" "%1" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -1014,19 +1010,19 @@ msgstr "" "Essayer de redémarrer JACK, de reconnecter\n" "%1 à JACK, et d'enregistrer la session." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Impossible de lancer la session" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 msgid "Take Snapshot" msgstr "Prendre un cliché..." -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 msgid "Name of new snapshot" msgstr "Nom du nouveau cliché" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" @@ -1035,27 +1031,27 @@ msgstr "" "systèmes, les noms de cliché ne peuvent pas\n" "utiliser le caractère '%1' " -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "Confirmer l'écrasement du cliché" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Un cliché de ce nom existe déjà. Voulez-vous l'écraser ?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "Écraser" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 msgid "Rename Session" msgstr "Renommer la session" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 msgid "New session name" msgstr "Nouveau nom de la session:" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" @@ -1063,12 +1059,12 @@ msgstr "" "Afin d'assurer la compatibilité sur différents systèmes\n" "les noms de sessions ne peuvent pas comporter le caractère '%1'" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "Un fichier ou un répertoire utilise déjà ce nom. Essayez autre chose." -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" @@ -1076,19 +1072,19 @@ msgstr "" "Le renommage de la session a échoué.\n" "Il est possible que les données soient à présent corrompues." -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 msgid "Save Template" msgstr "Enregistrer comme modèle" -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 msgid "Name for template:" msgstr "Nom du modèle:" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-modèle" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 msgid "" "This session\n" "%1\n" @@ -1098,52 +1094,52 @@ msgstr "" "%1\n" "existe déjà. Voulez-vous l'ouvrir ?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 msgid "Open Existing Session" msgstr "Ouvrir une session" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "Aucune session n'existe dans \"%1\"" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "Veuillez patienter pendant que %1 ouvre la session" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "Erreur d'enregistrement du port" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "Cliquez sur le bouton \"Fermer\" pour réessayer." -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "La session \"%1 (cliché %2)\" ne s'est pas chargée correctement" -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "Erreur de chargement" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "Cliquez sur le bouton \"Rafraîchir\" pour réessayer." -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 msgid "Could not create session in \"%1\"" msgstr "Impossible de créer une session dans \"%1\"" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 msgid "No files were ready for clean-up" msgstr "Aucun fichier à nettoyer" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "Nettoyer" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1154,19 +1150,19 @@ msgstr "" "Ceux-ci peuvent contenir des régions ayant besoin de certains\n" "fichiers audio inutilisés pour exister." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "kilo" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "mega" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "giga" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 msgid "" "The following file was deleted from %2,\n" "releasing %3 %4bytes of disk space" @@ -1180,7 +1176,7 @@ msgstr[1] "" "Les %1 fichiers suivants ont été éffacés de %2,\n" "libérant %3 %4octets d'espace disque." -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 msgid "" "The following file was not in use and \n" "has been moved to: %2\n" @@ -1216,11 +1212,11 @@ msgstr[1] "" "Session -> Nettoyer -> Vider la corbeille\n" "libérera %3 %4octets supplémentaires sur le disque.\n" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 msgid "Are you sure you want to clean-up?" msgstr "Voulez-vous vraiment lancer le nettoyage ?" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" @@ -1230,43 +1226,43 @@ msgstr "" "TOUTES les opérations d'annulation seront perdues.\n" "Les fichiers audio inutilisés seront déplacés dans un dossier \"dead\"." -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "Fenêtre de nettoyage" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 msgid "Cleaned Files" msgstr "Fichiers nettoyés" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 #, fuzzy msgid "deleted file" msgstr "Fichier effacé" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" "Le Seveur-Video n'a pas été lancé par Ardour. La demande d'arrêt est ignorée." -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "Arrêter le Serveur-Vidéo" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "Voulez-vous vraiment arreter le Serveur-Vidéo?" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 #, fuzzy msgid "Yes, Stop It" msgstr "Oui, la détruire" -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "Le Serveur-Vidéo est déjà démarré" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." @@ -1274,42 +1270,42 @@ msgstr "" "Un Serveur-Vidéo est configuré et peut être accessible. Une nouvelle " "instance ne sera pas démarrée." -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "impossible d'ouvrir %1" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "" "L'enregistrement s'est arrêté car votre système n'était pas assez rapide." -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1323,7 +1319,7 @@ msgstr "" "L'enregistrement a généré un débit de\n" "données trop important pour le disque.\n" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1337,11 +1333,11 @@ msgstr "" "La lecture a généré un débit de données\n" "trop important pour le disque.\n" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "Récupération après un crash" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 msgid "" "This session appears to have been in the\n" "middle of recording when %1 or\n" @@ -1358,19 +1354,19 @@ msgstr "" "%1 peut récupérer ou ignorer les données\n" "de l'enregistrement. Que voulez-vous faire?\n" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "Ignorer les données" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "Récupérer les données" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "Mauvais taux d'échantillonnage" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 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" @@ -1380,23 +1376,23 @@ msgstr "" "mais %2 tourne actuellement à %3 Hz. Si vous chargez cette session,\n" "l'audio pourra être joué avec un mauvais taux d'echantillonnage.\n" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 msgid "Do not load session" msgstr "Ne pas charger la session" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "Charger quand-même la session" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "Impossible de se déconnecter de JACK" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "Impossible de se reconnecter à JACK" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1421,39 +1417,44 @@ msgstr "IHM: impossible d'initialiser l'éditeur" msgid "UI: cannot setup mixer" msgstr "IHM: impossible d'initialiser la console de mixage" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "IHM: impossible d'initialiser la console de mixage" + +#: ardour_ui2.cc:130 #, fuzzy msgid "Play from playhead" msgstr "Démarrer la lecture" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Stopper la lecture" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 msgid "Toggle record" msgstr "Activer/désactiver l'enregistrement" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 #, fuzzy msgid "Play range/selection" msgstr "Lire la sélection" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 #, fuzzy msgid "Go to start of session" msgstr "Début de la session" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 #, fuzzy msgid "Go to end of session" msgstr "Fin de la session" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "Lire la boucle" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 #, fuzzy msgid "" "MIDI Panic\n" @@ -1463,25 +1464,25 @@ msgstr "" "Envoyer la commande \"fin de toutes les notes\" et réinitialiser les " "messages de contrôle sur tous les canaux MIDI" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "Revenir en début de lecture lors de l'arrêt" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 msgid "Playhead follows Range Selections and Edits" msgstr "" "La tête de lecture suit les selections d'intervalles et les modifications " "effectuées" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "Monitoring d'entrée automatique" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "Activer/désactiver le métronome" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" @@ -1489,7 +1490,7 @@ msgstr "" "Actif lorsque quelque chose est en solo\n" "Cliquez pour désactiver tous les solos." -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" @@ -1497,11 +1498,11 @@ msgstr "" "Actif lorsqu'une écoute est en cours\n" "Cliquez pour stopper l'écoute." -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "Actif lorsqu'une boucle de larsen est détécté" -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1514,7 +1515,7 @@ msgstr "" "Esc annule; Entrée: confirme; Ajouter '+' ou '-' pourque " "la valeur s'ajoute (ou s'enlève) de la valeur originelle.\n" -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1527,27 +1528,32 @@ msgstr "" "Esc annule; Entrée: confirme; Ajouter '+' ou '-' pourque " "la valeur s'ajoute (ou s'enlève) de la valeur originelle.\n" -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "Réinitialiser l'enveloppe" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "[ERREUR]: " -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "[AVERTISSEMENT]: " -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "[INFO]: " -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "Retour auto" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "Suivre modif." -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1567,23 +1573,23 @@ msgstr "Éditeur de configuration" msgid "Setup Mixer" msgstr "Console de mixage" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "Recharger l'historique de la session" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 msgid "Don't close" msgstr "Ne pas fermer" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 msgid "Just close" msgstr "Fermer" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 msgid "Save and close" msgstr "Enregistrer et fermer" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" @@ -1596,7 +1602,7 @@ msgstr "Session" msgid "Sync" msgstr "Synchro" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Options" @@ -1624,15 +1630,15 @@ msgstr "fichier" msgid "Sample Format" msgstr "Échantillon" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "Surfaces de contrôle" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Plugins" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "VU-mètre" @@ -1649,7 +1655,7 @@ msgstr "Temps de maintien" msgid "Denormal Handling" msgstr "échantillons dénormalisés" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "Nouvelle session..." @@ -1691,8 +1697,8 @@ msgstr "Prendre un cliché..." msgid "Save As..." msgstr "Enregistrer sous..." -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 msgid "Rename..." msgstr "Renommer.." @@ -1722,7 +1728,7 @@ msgid "Stem export..." msgstr "Exporter" #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Exporter" @@ -1734,11 +1740,11 @@ msgstr "Nettoyer les fichiers audio inutilisés..." msgid "Flush Wastebasket" msgstr "Vider la corbeille" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: 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:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "Latence (trames/période)" @@ -1746,8 +1752,8 @@ msgstr "Latence (trames/période)" msgid "Reconnect" msgstr "Reconnecter" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "Déconnecter" @@ -1763,7 +1769,7 @@ msgstr "Plein écran" msgid "Show Toolbars" msgstr "Afficher les barres d'outils" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 msgid "Window|Mixer" msgstr "Console de mixage" @@ -1772,27 +1778,32 @@ msgstr "Console de mixage" msgid "Toggle Editor+Mixer" msgstr "Commuter le mode d'édition" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "Console de mixage" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "Activité MIDI" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "Salon de discussion (anglais)" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 msgid "Help|Manual" msgstr "Manuel" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "Référence" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Enregistrer" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1802,99 +1813,99 @@ msgstr "Enregistrer" msgid "Transport" msgstr "Commandes" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "Arrêter" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "Roll" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "Lecture/Arrêt" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 msgid "Start/Continue/Stop" msgstr "Lecture/Arrêt" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 msgid "Stop and Forget Capture" msgstr "Arrêt avec destruction" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 msgid "Transition To Roll" msgstr "Lecture avant" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "Lecture arrière" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "Lire la boucle" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 msgid "Play Selected Range" msgstr "Lecture de l'intervalle" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 msgid "Play Selection w/Preroll" msgstr "Lire la zone de sélection avec compte à rebours" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "Activer l'enregistrement" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 msgid "Start Recording" msgstr "Démarrer l'enregistrement" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "Rembobiner" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "Rembobiner (lent)" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "Rembobiner (rapide)" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "Avance rapide" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "Avancer (lent)" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "Avancer (rapide)" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "Premier temps" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "début" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "fin" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "Mettre le focus sur l'horloge" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1903,127 +1914,127 @@ msgstr "Mettre le focus sur l'horloge" msgid "Timecode" msgstr "Timecode" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 msgid "Bars & Beats" msgstr "Mesures:Temps" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 msgid "Minutes & Seconds" msgstr "Minutes:Secondes" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "Échantillons" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 msgid "Punch In" msgstr "Punch In" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "Entrée" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 msgid "Punch Out" msgstr "Punch Out" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "descente" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "Punch in/out" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 msgid "In/Out" msgstr "In/Out" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "Métronome" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 msgid "Auto Input" msgstr "Monitoring automatique" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 msgid "Auto Play" msgstr "Lecture auto" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "Sync début avec vidéo" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 msgid "Time Master" msgstr "Horloge maître" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 msgid "Toggle Record Enable Track %1" msgstr "Armer la piste %1" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "pourcentage" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Demi-tons" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "Envoi MTC (Midi Time Code)" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "Envoi MMC (Midi Machine Control)" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "Réception MMC (Midi Machine Control)" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 msgid "Send MIDI Clock" msgstr "Envoyer l'horloge MIDI" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 msgid "Send MIDI Feedback" msgstr "Envoyer les réponses MIDI" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "Panique" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 msgid "Wall Clock" msgstr "Grande horloge" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "Espace disque" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 msgid "DSP" msgstr "DSP" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 #, fuzzy msgid "Buffers" msgstr "taille du tampon" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "Taux d'échantillonnage et latence de JACK" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 #, fuzzy msgid "Timecode Format" msgstr "Trames Timecode" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 #, fuzzy msgid "File Format" msgstr "Format de fichier" @@ -2040,11 +2051,11 @@ msgstr "" msgid "Internal" msgstr "Interne" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 msgid "Enable/Disable external positional sync" msgstr "Activer/désactiver la synchronisation positionnelle externe" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "Impossible de synchroniser avec JACK: le pullup / pulldown est réglé" @@ -2074,7 +2085,7 @@ msgstr "Tempo" msgid "Meter" msgstr "Signature rythmique" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2164,32 +2175,32 @@ msgid "hide track" msgstr "cacher la piste" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 msgid "Automation|Manual" msgstr "Manuel" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "Lire" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "Écrire" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "Reprise" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "???" @@ -2198,7 +2209,7 @@ msgid "clear automation" msgstr "effacer l'automation" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "Cacher" @@ -2220,7 +2231,7 @@ msgstr "Déconnecter" msgid "Linear" msgstr "Linéaire" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "Mode" @@ -2238,13 +2249,13 @@ msgstr "Raccourci pour l'édition: utiliser la touche" msgid "Direction:" msgstr "Sélection" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "Entrée" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "Sortie" @@ -2254,8 +2265,8 @@ msgid "Edit" msgstr "Édition" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "Supprimer" @@ -2428,7 +2439,7 @@ msgstr "Timecode" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "Durée:" @@ -2675,17 +2686,17 @@ msgid "Ranges & Marks" msgstr "Intervalles et repères" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 msgid "Editor" msgstr "Éditeur" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "Boucle" @@ -2710,8 +2721,8 @@ msgstr "" msgid "Slow" msgstr "Lent" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "Rapide" @@ -2731,7 +2742,7 @@ msgstr "Activer" msgid "Slowest" msgstr "Très lent" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "programming error: " @@ -2851,7 +2862,7 @@ msgid "Select All in Track" msgstr "Sélectionner tout dans la piste" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Sélectionner tout" @@ -2906,15 +2917,15 @@ msgstr "Selectionner de la tête de lecture jusqu'au point d'édition" msgid "Select" msgstr "Sélectionner" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Couper" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "Copier" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Coller" @@ -3072,7 +3083,7 @@ msgstr "Refaire" msgid "Redo (%1)" msgstr "Refaire (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "Dupliquer" @@ -3102,8 +3113,8 @@ msgstr "Supprimer la liste de lecture" msgid "Keep Playlist" msgstr "Garder la liste de lecture" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "Annuler" @@ -3123,7 +3134,7 @@ msgstr "effacer les listes de lecture" msgid "Please wait while %1 loads visual data." msgstr "Veuillez patienter pendant que %1 charge les données graphiques." -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 msgid "Edit..." msgstr "Éditer..." @@ -3172,7 +3183,7 @@ msgstr "Empilement des régions" msgid "Position" msgstr "Position" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Rogner" @@ -3185,7 +3196,7 @@ msgstr "Gain" msgid "Ranges" msgstr "Intervalles" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 msgid "Fades" @@ -3223,7 +3234,7 @@ msgstr "Options MIDI" msgid "Misc Options" msgstr "Autres options" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "Monitoring" @@ -3264,8 +3275,8 @@ msgstr "Horloge secondaire" msgid "Separate" msgstr "Séparer" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "Solo" @@ -3277,7 +3288,7 @@ msgstr "Sous-trames" msgid "Timecode fps" msgstr "Timecode (trames/s)" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Hauteur" @@ -3417,7 +3428,7 @@ msgstr "début de la région" msgid "Playhead to Range End" msgstr "fin de la région" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "Désélectionner tout" @@ -3700,9 +3711,9 @@ msgstr "Insérer une région" msgid "Toggle Active" msgstr "Activer/Désactiver" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "Supprimer" @@ -3710,19 +3721,19 @@ msgstr "Supprimer" msgid "Fit Selected Tracks" msgstr "Ajuster à la fenêtre" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "Énorme" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "Grand" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "Très grand" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "Très petit" @@ -3823,7 +3834,7 @@ msgstr "Collant" msgid "Slide" msgstr "Glissant" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "Verrouillé" @@ -3999,7 +4010,7 @@ msgstr "Minutes:Secondes" msgid "Video Monitor" msgstr "Afficher le monitoring vidéo" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -4010,7 +4021,7 @@ msgstr "Envoyer à l'avant" #: editor_actions.cc:554 #, fuzzy -msgid "Framenumber" +msgid "Frame number" msgstr "Numéro de la piste" #: editor_actions.cc:555 @@ -4101,7 +4112,7 @@ msgstr "Supprimer les régions inutilisées" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Importer" @@ -4142,311 +4153,311 @@ msgstr "Chargement des menus depuis %1" msgid "Could not find editor.bindings in search path %1" msgstr "" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "programming error: %1: %2" -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "Envoyer vers l'avant" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 msgid "Raise to Top" msgstr "Envoyer à l'avant" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "Envoyer vers l'arrière" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 msgid "Lower to Bottom" msgstr "Envoyer à l'arrière" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 msgid "Move to Original Position" msgstr "Remettre à sa position d'origine" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "Coller aux mesures/temps" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 msgid "Remove Sync" msgstr "Supprimer le point de synchro" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Muet" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 msgid "Normalize..." msgstr "Normaliser..." -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "Inverser" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 msgid "Make Mono Regions" msgstr "Créer des régions mono" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "Augmenter le gain" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "Couper le gain" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "Pitch shift..." -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 msgid "Transpose..." msgstr "Transposer..." -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 msgid "Opaque" msgstr "Opaque" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "Type de montée" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "Type de descente" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 msgid "Multi-Duplicate..." msgstr "Multi-dupliquer..." -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "Remplir la piste" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "Boucle" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 #, fuzzy msgid "Set Punch" msgstr "Punch in→out" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 #, fuzzy msgid "Add Single Range Marker" msgstr "Ajoute 1 repère d'intervalle" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 #, fuzzy msgid "Add Range Marker Per Region" msgstr "Ajoute des repères d'intervalle par région" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 #, fuzzy msgid "Snap Position To Grid" msgstr "Aligner sur la grille" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 #, fuzzy msgid "Close Gaps" msgstr "Fermer" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "Fureteur de rythme..." -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 msgid "Export..." msgstr "Exporter..." -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 msgid "Separate Under" msgstr "Séparer dessous" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 msgid "Set Fade In Length" msgstr "Définir la durée de montée" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 msgid "Set Fade Out Length" msgstr "Définir la durée de descente" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 #, fuzzy msgid "Set Tempo from Region = Bar" msgstr "Définir le tempo = région" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 #, fuzzy msgid "Split at Percussion Onsets" msgstr "Découper les régions au début des percussions" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 #, fuzzy msgid "List Editor..." msgstr "Options..." -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "Propriétés..." -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "Joindre les régions" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "Défaire jointure des régions" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "Analyze du spectre..." -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 msgid "Reset Envelope" msgstr "Réinitialiser l'enveloppe" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 msgid "Reset Gain" msgstr "Réinitialiser le gain" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 msgid "Envelope Active" msgstr "Enveloppe Active" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 #, fuzzy msgid "Quantize..." msgstr "Quantiser" -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "" -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "Supprimer le silence..." -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 msgid "Set Range Selection" msgstr "Choisir intervalle depuis la région" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 #, fuzzy msgid "Nudge Later" msgstr "Décaler vers la droite" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 msgid "Nudge Earlier" msgstr "Décaler vers la gauche" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 #, fuzzy msgid "Nudge Later by Capture Offset" msgstr "Décaler de l'offset de capture vers la droite" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 msgid "Nudge Earlier by Capture Offset" msgstr "Décaler de l'offset de capture vers la gauche" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "Rogner aux repères de boucle" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "Rogner aux points de punch-in/out" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 msgid "Trim to Previous" msgstr "Rogner aux précédent" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 #, fuzzy msgid "Trim to Next" msgstr "Rogner à la région suivante" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 #, fuzzy msgid "Insert Region From Region List" msgstr "Convertir en région (vers la liste des régions)" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 #, fuzzy msgid "Set Sync Position" msgstr "Placer la synchro de région" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "Scinder" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 #, fuzzy msgid "Trim Start at Edit Point" msgstr "Rogner le début jusqu'au point d'édition" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 #, fuzzy msgid "Trim End at Edit Point" msgstr "Rogner la fin jusqu'au point d'édition" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 #, fuzzy msgid "Align Start" msgstr "aligner le début des régions" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 #, fuzzy msgid "Align Start Relative" msgstr "aligner relativement le début des régions" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 #, fuzzy msgid "Align End" msgstr "Aligner" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 #, fuzzy msgid "Align End Relative" msgstr "Aligner relativement" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 #, fuzzy msgid "Align Sync" msgstr "aligner les synchro des régions" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 #, fuzzy msgid "Align Sync Relative" msgstr "Aligner relativement" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "" @@ -4476,32 +4487,32 @@ msgstr "" "La session contient déjà le fichier source %1. Voulez-vous importer %2 comme " "un nouveau fichier source, ou l'ignorer?" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "Annuler l'importation" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Éditeur: impossible d'ouvrir le fichier « %1 » (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "Annuler toute l'importation" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "Ne pas le lier" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "Lier tout sans poser de question" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 msgid "Sample rate" msgstr "Échantillonnage" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4510,7 +4521,7 @@ msgstr "" "La fréquence d'échantillonnage de ce fichier audio ne correspond pas à celle " "de la session !" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "Lier quand même" @@ -4547,32 +4558,32 @@ msgstr "copier le changement tempo" msgid "move tempo mark" msgstr "déplacer le changement tempo" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "modifier la durée de montée" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "modifier la durée de descente" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "déplacer le repère" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 #, fuzzy msgid "programming_error: %1" msgstr "programming error: %1" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "nouvel intervalle" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 msgid "rubberband selection" msgstr "sélection élastique" @@ -4648,7 +4659,7 @@ msgid "Sharing Solo?" msgstr "Partager solo?" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "Enreg." @@ -4722,7 +4733,7 @@ msgid "end" msgstr "fin" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "ajouter un repère" @@ -4731,7 +4742,7 @@ msgstr "ajouter un repère" msgid "range" msgstr " intervalle" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "Supprimer le repère" @@ -4811,8 +4822,8 @@ msgstr "renommer le repère" msgid "Rename Range" msgstr "renommer" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "Renommer" @@ -4956,7 +4967,7 @@ msgstr "Envoyer à l'arrière" msgid "Rename Region" msgstr "renommer la région" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 msgid "New name:" msgstr "Nouveau nom:" @@ -5131,7 +5142,7 @@ msgstr "" "(cette opération est destructive et ne pourra pas être annulée)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "Non, ne rien faire" @@ -5326,11 +5337,11 @@ msgstr "Ok" msgid "close region gaps" msgstr "réinitialiser le gain" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "Mauvaise nouvelle..." -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5349,7 +5360,7 @@ msgstr "" msgid "tracks" msgstr "pistes" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 msgid "track" msgstr "piste" @@ -5357,7 +5368,7 @@ msgstr "piste" msgid "busses" msgstr "bus" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "bus" @@ -5399,7 +5410,7 @@ msgstr "" msgid "Yes, remove them." msgstr "Oui, supprimer" -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Oui, supprimer" @@ -5472,7 +5483,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "L" @@ -5490,8 +5501,9 @@ msgstr "G" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "M" @@ -5561,7 +5573,8 @@ msgstr "Nom de piste/bus" msgid "Track/Bus visible ?" msgstr "Piste/bus visible?" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "A" @@ -5569,7 +5582,7 @@ msgstr "A" msgid "Track/Bus active ?" msgstr "Piste/bus actif?" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 msgid "I" msgstr "I" @@ -5577,7 +5590,7 @@ msgstr "I" msgid "MIDI input enabled" msgstr "Entrée MIDI activée" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "R" @@ -5592,7 +5605,7 @@ msgstr "Armement" msgid "Muted" msgstr "Muet" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "S" @@ -5604,7 +5617,7 @@ msgstr "Solo" msgid "SI" msgstr "SI" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 msgid "Solo Isolated" msgstr "Solo isolé" @@ -5889,143 +5902,147 @@ msgid "192000Hz" msgstr "192000Hz" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "(aucun)" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "Triangulaire" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "Rectangulaire" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "Remodelé" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "Lecture/Enregistrement sur 1 appareil" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "Lecture/Enregistrement sur 2 appareils" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "Lecture seulement" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "Enregistrement seulement" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "brut" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "Pilote:" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 msgid "Audio Interface:" msgstr "Interface audio:" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "Échantillonnage:" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "Taille du tampon:" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "Nombre de tampons:" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "Latence approximative:" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 msgid "Audio mode:" msgstr "Mode audio:" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "Ignorer" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "Délai d'expiration client" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "Nombre de ports:" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "Pilote MIDI:" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "Interpolation:" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "" "Aucun serveur JACK n'a été trouvé sur le système. Veuillez installer JACK et " "recommencez" -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "Serveur:" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "Interface d'entrée:" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "Interface de sortie:" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "Latence matérielle en entrée:" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "échantillons" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "Latence matérielle en sortie:" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "Interface audio" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "Avancé" -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "" "Impossible d'ouvrir le fichier de configuration de JACK %1 pour y " "enregistrer les paramètres" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -6055,33 +6072,33 @@ msgstr "" "les deux à la fois, démarrez JACK avant %1 et sélectionnez le\n" "périphérique correspondant." -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "Aucun périphérique audio approprié" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "Il semble que JACK soit absent du pack %1" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "Vous devez d'abord choisir un périphérique audio." -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "Le périphérique audio \"%1\" est inconnu." -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "La valeur « %1 » de la Config Audio est incomplète" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" "Les fichiers de configuration contiennent un chemin vers JACK qui n'existe " "pas (%1)" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "Canaux:" @@ -6242,9 +6259,9 @@ msgid "Folder:" msgstr "Dossier:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Parcourir" @@ -6369,6 +6386,11 @@ msgstr "Options FLAC" msgid "Broadcast Wave options" msgstr "Option Broadcast Wave" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "Voulez-vous vraiment arreter le Serveur-Vidéo?" + #: export_preset_selector.cc:28 msgid "Preset" msgstr "Préréglage" @@ -6381,6 +6403,11 @@ msgstr "" "Le préréglage n'a pas pu être chargé!\n" "Peut-être qu'il référence un format qui a été supprimé?" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "Voulez-vous vraiment arreter le Serveur-Vidéo?" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "Temps exprimé en:" @@ -6393,36 +6420,50 @@ msgstr " à " msgid "Range" msgstr "Intervalle" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "programming error: %1 (%2)" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +#, fuzzy +msgid "%1" +msgstr "%" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "-inf" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "Mode d'automation du gain" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "Type d'automation du gain" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "abs" -#: gain_meter.cc:334 -msgid "-Inf" -msgstr "-inf" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "P" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "T" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "W" @@ -6435,7 +6476,7 @@ msgstr "réglages préféfinis" msgid "Switches" msgstr "Pitch shift" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "Contrôles" @@ -6466,68 +6507,68 @@ msgstr "Gestionnaire de connexion audio" msgid "MIDI Connection Manager" msgstr "Gestion des connexions MIDI" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "port" -#: group_tabs.cc:306 +#: group_tabs.cc:308 msgid "Selection..." msgstr "Sélectionnées..." -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "Armées..." -#: group_tabs.cc:308 +#: group_tabs.cc:310 msgid "Soloed..." msgstr "Solo..." -#: group_tabs.cc:314 +#: group_tabs.cc:316 #, fuzzy msgid "Create New Group ..." msgstr "Nouveau groupe..." -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "" -#: group_tabs.cc:318 +#: group_tabs.cc:320 #, fuzzy msgid "Edit Group..." msgstr "Nouveau groupe..." -#: group_tabs.cc:319 +#: group_tabs.cc:321 #, fuzzy msgid "Collect Group" msgstr "Sélectionner" -#: group_tabs.cc:320 +#: group_tabs.cc:322 #, fuzzy msgid "Remove Group" msgstr "Groupe" -#: group_tabs.cc:323 +#: group_tabs.cc:325 #, fuzzy msgid "Remove Subgroup Bus" msgstr "Ajouter un sous-groupe de bus" -#: group_tabs.cc:325 +#: group_tabs.cc:327 msgid "Add New Subgroup Bus" msgstr "Ajouter un sous-groupe de bus" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "Ajouter un nouveau bus auxiliaire (pre-fader)" -#: group_tabs.cc:328 +#: group_tabs.cc:330 msgid "Add New Aux Bus (post-fader)" msgstr "Ajouter un nouveau bus auxiliaire (post-fader)" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "" -#: group_tabs.cc:335 +#: group_tabs.cc:337 #, fuzzy msgid "Disable All Groups" msgstr "Désactiver tous les groupes" @@ -6626,11 +6667,11 @@ msgstr "Import du fichier: %1 sur %2" msgid "I/O selector" msgstr "Sélecteur I/O" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "Entrée %1" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "sortie %1" @@ -6712,7 +6753,7 @@ msgstr[1] "%1 échantillons" msgid "Reset" msgstr "Réinitialiser" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "programming error: %1 (%2)" @@ -6741,68 +6782,68 @@ msgstr "Compositeur:" msgid "Pre-Emphasis" msgstr "Pré-accentuation" -#: location_ui.cc:310 +#: location_ui.cc:314 #, fuzzy msgid "Remove this range" msgstr "définir l'intervalle de punch in/out" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 #, fuzzy msgid "Set range start from playhead location" msgstr "placer sur la tête de lecture" -#: location_ui.cc:316 +#: location_ui.cc:320 #, fuzzy msgid "Set range end from playhead location" msgstr "aligner sur la zone de sélection" -#: location_ui.cc:320 +#: location_ui.cc:324 #, fuzzy msgid "Remove this marker" msgstr "déplacer le repère" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 #, fuzzy msgid "Set marker time from playhead location" msgstr "aligner sur la zone de sélection" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "Vous ne pouvez pas poser un marqueur de CD au début de la session" -#: location_ui.cc:708 +#: location_ui.cc:720 msgid "New Marker" msgstr "Nouveau repère" -#: location_ui.cc:709 +#: location_ui.cc:721 msgid "New Range" msgstr "Nouvel intervalle" -#: location_ui.cc:722 +#: location_ui.cc:734 msgid "Loop/Punch Ranges" msgstr "boucle et punch-in/out" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "Repères (Indexes de CD inclus)" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "Intervalles (intervalles de piste CD inclus)" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "ajouter un repère d'intervalle" @@ -6890,19 +6931,19 @@ msgstr "" "Il n'est pas possible de sauvegarder la session\n" "car les informations de connection seraient perdues.\n" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr " (construit avec " -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr " et GCC version " -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "Copyright © 1999-2012 Paul Davis" -#: main.cc:505 +#: main.cc:501 msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" @@ -6910,29 +6951,33 @@ msgstr "" "Pour certaines parties, Copyright © Steve Harris, Ari Johnson, Brett Viren, " "Joel Baker, Robin Gareus" -#: main.cc:507 +#: main.cc:503 msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "%1 est distribué sans AUCUNE GARANTIE" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "pas même de COMMERCIALISATION ou d'ADÉQUATION À UN BUT PARTICULIER." -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "Ceci est un logiciel libre, et vous êtes encouragé à le distribuer " -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "" "sous certaines conditions ; voir le fichier source pour les conditions de " "distribution." -#: main.cc:519 +#: main.cc:513 +msgid "could not initialize %1." +msgstr "impossible d'initialiser %1." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "" -#: main.cc:525 +#: main.cc:528 #, fuzzy msgid "could not create %1 GUI" msgstr "impossible de créer l'interface utilisateur d'Ardour" @@ -6942,7 +6987,7 @@ msgstr "impossible de créer l'interface utilisateur d'Ardour" msgid "Display delta to edit cursor" msgstr "delta d'Horloge Primaire au point d'édition" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "MarkerText" @@ -7457,7 +7502,7 @@ msgstr "Cliquez pour choisir un dossier supplémentaire" msgid "Missing Plugins" msgstr "Plugins manquants" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "OK" @@ -7537,83 +7582,83 @@ msgstr "Chargement des menus depuis %1" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "pré" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 #, fuzzy msgid "Comments" msgstr "Commentaire" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "" -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 msgid "Hide this mixer strip" msgstr "Cacher ce tranche de mixage" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 #, fuzzy msgid "Click to select metering point" msgstr "Sélectionner tout après le point d'édition" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "tupni" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "Isoler le Solo" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "Verrouiller le status Solo" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "verrou" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 msgid "iso" msgstr "iso" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 #, fuzzy msgid "Mix group" msgstr "Aucun groupe" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 #, fuzzy msgid "Phase Invert" msgstr "Inverser" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 msgid "Solo Safe" msgstr "Bloquer le solo" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "Groupe" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 #, fuzzy msgid "Meter Point" msgstr "VU-mètre" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 msgid "Enable/Disable MIDI input" msgstr "Activer/désactiver l'entrée du MIDI" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 msgid "" "Aux\n" "Sends" @@ -7621,147 +7666,160 @@ msgstr "" "Arrivées\n" "Aux" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 #, fuzzy msgid "Snd" msgstr "secondes" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "Non connecté à JACK – aucun changement d'entrée/sortie n'est possible" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "ENTRÉE vers %1" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "SORTIE depuis %1" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 msgid "Disconnected" msgstr "Déconnecté" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 msgid "*Comments*" msgstr "*commentaires*" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 msgid "Cmt" msgstr "Cmt" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "*Cmt*" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "ajouter ou modifier des commentaires" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr ": éditeur de commentaires" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "Grp" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "~G" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 msgid "Comments..." msgstr "Commentaires..." -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 msgid "Save As Template..." msgstr "Enregistrer comme modèle..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "Activé" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "Régler la latence..." -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "Protèger contre les dénormalisations" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 #, fuzzy msgid "Remote Control ID..." msgstr "Identifiant de contrôleur" -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 msgid "in" msgstr "entrée" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "post" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 msgid "out" msgstr "sortie" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 #, fuzzy msgid "pr" msgstr "pré" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 #, fuzzy msgid "po" msgstr "p" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 #, fuzzy msgid "o" msgstr "Mono" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "Disque" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "AFL" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "PFL" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 #, fuzzy msgid "D" msgstr "CD" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 #, fuzzy msgid "i" msgstr "entrée" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 #, fuzzy msgid "Pre-fader" msgstr "Pré-atténuation" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 #, fuzzy msgid "Post-fader" msgstr "Post-atténuation" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "Canal %1" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "" @@ -7771,10 +7829,69 @@ msgstr "" msgid "-all-" msgstr "-(tout)-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "Tranches" +#: meter_strip.cc:764 +#, fuzzy +msgid "Variable height" +msgstr "la hauteur" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "Court" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +#, fuzzy +msgid "VU" +msgstr "V" + #: monitor_section.cc:62 msgid "SiP" msgstr "SiP" @@ -8186,7 +8303,7 @@ msgstr "" msgid "Panner (2D)" msgstr "" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "Court-circuiter" @@ -8364,7 +8481,7 @@ msgstr "Par catégorie" msgid "Eh? LADSPA plugins don't have editors!" msgstr "Hein ? Les plugins LADSPA n'ont pas d'éditeur !" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " @@ -8377,7 +8494,7 @@ msgstr "" msgid "unknown type of editor-supplying plugin" msgstr "type inconnu pour le plugin fournissant un éditeur" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " @@ -8386,48 +8503,48 @@ msgstr "" "type de plugin à éditeur inconnu (note: VST n'est pas pris en charge dans " "cette version d'ardour)" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "create_lv2_editor est appelé sur un plugin non LV2" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "Ajouter" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 #, fuzzy msgid "Description" msgstr "Sélection" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 #, fuzzy msgid "Plugin analysis" msgstr "Plugins" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 #, fuzzy msgid "Save a new preset" msgstr "Nom du nouveau préréglage :" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" @@ -8435,30 +8552,42 @@ msgstr "" "Cliquez pour authoriser le plugin à recevoir des évenements que %1 considère " "habituellement comme des raccourcis" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "Cliquez pour activer/désactiver ce plugin" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 #, fuzzy msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "latence (%1 échantillons)" msgstr[1] "latence (%1 échantillons)" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "Latence (%1 ms)" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 msgid "Edit Latency" msgstr "Editer la latence" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "Réglage de plugin « %1 » non trouvé" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "Cliquez pour utiliser les raccourcis claviers de %1" @@ -8564,46 +8693,46 @@ msgstr "Recherche..." msgid "Port Insert " msgstr "Nom du port" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 msgid "Sources" msgstr "Sources :" -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "Destinations" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "Ajouter %s %s" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, c-format msgid "Rename '%s'..." msgstr "Renommer '%s'..." -#: port_matrix.cc:451 +#: port_matrix.cc:472 msgid "Remove all" msgstr "Tout supprimer" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, c-format msgid "%s all" msgstr "%s tout" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "Rafraîchir" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "" -#: port_matrix.cc:702 +#: port_matrix.cc:723 #, fuzzy msgid "" "It is not possible to add a port here, as the first processor in the track " @@ -8612,33 +8741,35 @@ msgstr "" "Ce port ne peut pas être supprimé, car le premier plugin n'accepte pas le " "nouveau nombre d'entrées." -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "Suppression de ports non authorisée" -#: port_matrix.cc:728 +#: port_matrix.cc:749 +#, fuzzy msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" "Ce port ne peut pas être supprimé, car le premier plugin n'accepte pas le " "nouveau nombre d'entrées." -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, c-format msgid "Remove '%s'" msgstr "Supprimer '%s'" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, c-format msgid "%s all from '%s'" msgstr "%s tout depuis '%s'" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 msgid "channel" msgstr "canal" @@ -8650,37 +8781,37 @@ msgstr "Il n'y a pas de port à connecter." msgid "There are no %1 ports to connect." msgstr "Il n'y a pas de port %1 à connecter." -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 msgid "Show All Controls" msgstr "Afficher les contrôles" -#: processor_box.cc:375 +#: processor_box.cc:376 msgid "Hide All Controls" msgstr "Cacher tous les contrôles" -#: processor_box.cc:464 +#: processor_box.cc:465 #, fuzzy msgid "on" msgstr "Mono" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "Off" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" @@ -8688,15 +8819,15 @@ msgstr "" "Clic-droit pour ajouter/enlever/modifier\n" "plugins/départs/insertions etc." -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "Incompatibilité du plugin" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "Vous avez essayé d'ajouter le plugin \"%1\" dans la case %2.\n" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" @@ -8704,19 +8835,19 @@ msgstr "" "\n" "Ce plugin possède:\n" -#: processor_box.cc:1196 +#: processor_box.cc:1209 msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "\t%1 entrée MIDI\n" msgstr[1] "\t%1 entrées MIDI\n" -#: processor_box.cc:1200 +#: processor_box.cc:1213 msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" msgstr[0] "\t%1 entrée audio\n" msgstr[1] "\t%1 entrées audio\n" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" @@ -8724,19 +8855,19 @@ msgstr "" "\n" "mais au point d'insertion, il y a:\n" -#: processor_box.cc:1206 +#: processor_box.cc:1219 msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "\t%1 canal MIDI\n" msgstr[1] "\t%1 canaux MIDI\n" -#: processor_box.cc:1210 +#: processor_box.cc:1223 msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "\t%1 canal audio\n" msgstr[1] "\t%1 canaux audio\n" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" @@ -8744,11 +8875,11 @@ msgstr "" "\n" "%1 est incapable d'insérer ce plugin ici.\n" -#: processor_box.cc:1249 +#: processor_box.cc:1262 msgid "Cannot set up new send: %1" msgstr "Impossible e configuer le nouveau départ: %1" -#: processor_box.cc:1581 +#: processor_box.cc:1594 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" @@ -8758,19 +8889,19 @@ msgstr "" "de cette façon car les entrées et les sorties\n" "ne fonctionneront pas correctement." -#: processor_box.cc:1765 +#: processor_box.cc:1778 msgid "Rename Processor" msgstr "Renommer le traitement" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "Au moins 100 objects IO avec un nom du style %1 - Le nom est inchangé" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" @@ -8780,7 +8911,7 @@ msgstr "" "probablement car la configuration d'entrées/sorties des plugins\n" "ne correspond pas à la configuration de cette piste." -#: processor_box.cc:1987 +#: processor_box.cc:2000 msgid "" "Do you really want to remove all processors from %1?\n" "(this cannot be undone)" @@ -8788,15 +8919,15 @@ msgstr "" "Voulez-vous vraiment supprimer toutes les redirections de %1 ?\n" "Cette action ne pourra pas être annulé!" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "Oui, les supprimer" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 msgid "Remove processors" msgstr "Supprimer les traitements" -#: processor_box.cc:2008 +#: processor_box.cc:2021 msgid "" "Do you really want to remove all pre-fader processors from %1?\n" "(this cannot be undone)" @@ -8804,7 +8935,7 @@ msgstr "" "Voulez-vous vraiment supprimer toutes les pré-redirections de %1 ?\n" "Cette action ne pourra pas être annulé!" -#: processor_box.cc:2011 +#: processor_box.cc:2024 #, fuzzy msgid "" "Do you really want to remove all post-fader processors from %1?\n" @@ -8813,52 +8944,52 @@ msgstr "" "Voulez-vous vraiment supprimer toutes les post-redirections de %1 ?\n" "Cette action ne pourra pas être annulé!" -#: processor_box.cc:2198 +#: processor_box.cc:2200 msgid "New Plugin" msgstr "Nouveau plugin" -#: processor_box.cc:2201 +#: processor_box.cc:2203 msgid "New Insert" msgstr "Nouvelle insertion" -#: processor_box.cc:2204 +#: processor_box.cc:2206 msgid "New External Send ..." msgstr "Nouveau départ externe..." -#: processor_box.cc:2208 +#: processor_box.cc:2210 msgid "New Aux Send ..." msgstr "Nouveau départ auxilliaire..." -#: processor_box.cc:2212 +#: processor_box.cc:2214 msgid "Clear (all)" msgstr "Supprimer tout" -#: processor_box.cc:2214 +#: processor_box.cc:2216 msgid "Clear (pre-fader)" msgstr "Supprimer (pré-fader)" -#: processor_box.cc:2216 +#: processor_box.cc:2218 msgid "Clear (post-fader)" msgstr "Supprimer (post-fader)" -#: processor_box.cc:2242 +#: processor_box.cc:2244 msgid "Activate All" msgstr "Activer tous les groupes" -#: processor_box.cc:2244 +#: processor_box.cc:2246 #, fuzzy msgid "Deactivate All" msgstr "Désactiver tout" -#: processor_box.cc:2246 +#: processor_box.cc:2248 msgid "A/B Plugins" msgstr "A/B Plugins" -#: processor_box.cc:2255 +#: processor_box.cc:2257 msgid "Edit with generic controls..." msgstr "" -#: processor_box.cc:2531 +#: processor_box.cc:2557 msgid "%1: %2 (by %3)" msgstr "%1: %2 (par %3)" @@ -9022,7 +9153,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -9115,7 +9246,7 @@ msgstr "Nombre maximum de sessions récentes" msgid "Click gain level" msgstr "Son du clic:" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Automation" @@ -9302,96 +9433,100 @@ msgstr "" msgid "Show meters on tracks in the editor" msgstr "Afficher les VU-mètres sur les pistes" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "Les régions en groupes d'édition actives sont modifiées ensembles" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "si elles se chevauchent dans le temps" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "seulement si elles partagent longueur, position et origine" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 #, fuzzy msgid "Make rubberband selection rectangle snap to the grid" msgstr "La sélection élastique colle à la grille" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 msgid "Show waveforms in regions" msgstr "Afficher le signal dans les régions" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 #, fuzzy msgid "Show gain envelopes in audio regions" msgstr "Afficher le signal dans les régions" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "dans toutes les modes" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "seulement en mode d'édition du gain des régions" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 msgid "Waveform scale" msgstr "Échelle du signal" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "linéaire" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "logarithmique" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 msgid "Waveform shape" msgstr "Forme du signal" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 msgid "traditional" msgstr "Traditionnel" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 msgid "rectified" msgstr "Redressé" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "Afficher le signal audio pendant l'enregistrement" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "Afficher la barre d'outils du zoom" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "Appliquer la couleur de la piste aux régions" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 #, fuzzy msgid "Update editor window during drags of the summary" msgstr "" "Mettre à jour la fenêtre de l'éditeur quand la sommaire subit un cliquer-" "glisser" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "Ordre des pistes identique entre éditeur et mixage" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "Sélection des pistes identique entre éditeur et mixage" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 msgid "Name new markers" msgstr "Nommer les nouveaux repères" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9401,350 +9536,435 @@ msgstr "" "Si actif, demander un nom à la création de toute repère nouvelle.\n" "Vous pouvez toujours renommer les repères par clic-droit" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" "Défilement automatique de l'éditeur pendant un cliquer-glisser près de ses " "bords" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "Taille du tampon" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 msgid "Record monitoring handled by" msgstr "Monitoring de l'enregistrement géré par" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 msgid "ardour" msgstr "Ardour" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 msgid "audio hardware" msgstr "le matériel audio" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 msgid "Tape machine mode" msgstr "Mode bande" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "Connection des pistes et des bus" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "Connection automatique du bus général et des bus de monitoring" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 msgid "Connect track inputs" msgstr "Connecter les entrées des pistes" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 msgid "automatically to physical inputs" msgstr "automatiquement aux entrées matérielles" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "Manuellement" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "Connecter les sorties des pistes et des bus" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 msgid "automatically to physical outputs" msgstr "automatiquement aux sorties matérielles" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 msgid "automatically to master bus" msgstr "Automatiquement au bus géneral" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 #, fuzzy msgid "Denormals" msgstr "Dénormaliser" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 #, fuzzy msgid "Use DC bias to protect against denormals" msgstr "Protège contre les dénormalisations" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "Gestion du traitement" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "Aucune gestion" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 #, fuzzy msgid "use FlushToZero" msgstr "Utiliser FlushToZero" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "Utiliser DenormalsAreZero" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 #, fuzzy msgid "use FlushToZero and DenormalsAreZero" msgstr "Utiliser FlushToZero et DenormalsAreZero" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 #, fuzzy msgid "Silence plugins when the transport is stopped" msgstr "Arrêt des plugins lors des déplacements" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "Activer les nouveaux plugins" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "Activer l'analyse automatique de l'audio" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "Dupliquer les canaux manquants dans la région" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "Solo/muet" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 #, fuzzy msgid "Solo-in-place mute cut (dB)" msgstr "Diminution du volume en mode solo (dB)" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 #, fuzzy msgid "Listen Position" msgstr "position" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 #, fuzzy msgid "after-fader (AFL)" msgstr "Écoute post-fader" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 #, fuzzy msgid "pre-fader (PFL)" msgstr "Écoute pré-fader" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "Les signaux PFL sont récupérés" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 msgid "before pre-fader processors" msgstr "avant les traitements pré-fader" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "après les traitements pré-fader" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "Les signaux AFL sont récupérés" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 msgid "immediately post-fader" msgstr "immédiatement post-fader" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 msgid "after post-fader processors (before pan)" msgstr "après les traitements post-fader (avant panoramique)" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "Solo exclusif" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "Le solo montre les sourdines" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "\"Solo\" annule \"Muet\"" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "Options de mutisation par défaut des pistes/bus" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "\"Muet\" agit sur les départs pré-fader" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "\"Muet\" agit sur les départs post-fader" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 msgid "Mute affects control outputs" msgstr "\"Muet\" agit sur les sorties de contrôle" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "\"Muet\" agit sur les sorties principales" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "Envoyer MTC (Midi Time Code)" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "Obeir aux MMC MIDI (MIDI Machine Controls)" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "Envoyer les MMC MIDI" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 #, fuzzy msgid "Send MIDI control feedback" msgstr "Envoi des réponses MIDI" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "identifiant de l'appareil MMC en entrée" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "identifiant de l'appareil MMC en sortie" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "Afficher le premier programme/banque MIDI comme 0." -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "Ne jamais afficher des messages MIDI périodiques (MTC, MIDI Clock)" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 msgid "Sound MIDI notes as they are selected" msgstr "" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 msgid "User interaction" msgstr "Intération utilisateur" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "Clavier" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 msgid "Control surface remote ID" msgstr "Identifiant distant de la surface de contrôle" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "assigné manuellement" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "suivre l'ordre de la console de mixage" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "suivre l'ordre de l'Éditeur" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 #, fuzzy msgid "Preferences|GUI" msgstr "Préférences" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "Montrer des infobulles quand la souris survole une contrôle" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "IHM" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" "Mettre à jour l'horloge du transport tous les 40ms au lieu de tous les 100ms" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 #, fuzzy msgid "Mixer Strip" msgstr "Mixage" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 msgid "Use narrow strips in the mixer by default" msgstr "Utiliser des tranches de mixage étroites par défaut" -#: rc_option_editor.cc:1898 -msgid "Meter hold time" +#: rc_option_editor.cc:1906 +#, fuzzy +msgid "Peak hold time" msgstr "Maintien de la crête de VU-mètre" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 msgid "short" msgstr "Court" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 #, fuzzy msgid "medium" msgstr "Moyen" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "Long" -#: rc_option_editor.cc:1912 -msgid "Meter fall-off" +#: rc_option_editor.cc:1920 +#, fuzzy +msgid "DPM fall-off" msgstr "Taux de chute du VU-mètre" -#: rc_option_editor.cc:1918 -msgid "slowest" -msgstr "Très lent" +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" -msgstr "Lent" +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" +msgstr "" -#: rc_option_editor.cc:1921 -msgid "fast" -msgstr "Rapide" +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" -#: rc_option_editor.cc:1922 -msgid "faster" -msgstr "Très rapide" +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" -#: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "Ultra rapide" +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" + +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 +#, fuzzy +msgid "Peak threshold [dBFS]" +msgstr "Seuil de pic" + +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" + +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -9754,11 +9974,11 @@ msgstr "écouter cette région" msgid "Position:" msgstr "Position:" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Fin:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "Longueur:" @@ -9783,23 +10003,23 @@ msgstr "Sources:" msgid "Source:" msgstr "Source:" -#: region_editor.cc:167 +#: region_editor.cc:166 msgid "Region '%1'" msgstr "Région '%1'" -#: region_editor.cc:274 +#: region_editor.cc:273 msgid "change region start position" msgstr "changer le début de la région" -#: region_editor.cc:290 +#: region_editor.cc:289 msgid "change region end position" msgstr "changer la fin de la région" -#: region_editor.cc:310 +#: region_editor.cc:309 msgid "change region length" msgstr "changer la longueur de la région" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 #, fuzzy msgid "change region sync point" msgstr "changer la fin de la région" @@ -9993,332 +10213,332 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "Ce nom a déjà été donné à un groupe. Choisissez-en un nouveau." -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "Pistes / Bus" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "Entrées" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "Sorties" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "Plugins, inserts et retours" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "" "élément de liste d'affichage de route pour la route renommée introuvable !" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "Délai de lecture: % échantillons" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "PAS DE PISTE" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 msgid "No Track or Bus Selected" msgstr "Aucune piste ou bus sélectionné" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "g" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "p" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "a" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "Enregistrement" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 msgid "Route Group" msgstr "Groupe" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 #, fuzzy msgid "MIDI Controllers and Automation" msgstr "pour dessiner la courbe de gain" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 msgid "Show All Automation" msgstr "Afficher toute l'automation" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 msgid "Show Existing Automation" msgstr "Afficher l'automation existante" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 msgid "Hide All Automation" msgstr "Cacher toute l'automation" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 msgid "Processor automation" msgstr "Afficher automation du ..." -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 msgid "Color..." msgstr "Couleur..." -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "Empilés" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 #, fuzzy msgid "Layers" msgstr "Couche n°" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 msgid "Automatic (based on I/O connections)" msgstr "Automatique (à partir des connections I/O)" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 msgid "(Currently: Existing Material)" msgstr "" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 msgid "(Currently: Capture Time)" msgstr "" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 #, fuzzy msgid "Align With Existing Material" msgstr "aligner avec le contenu actuel" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 #, fuzzy msgid "Align With Capture Time" msgstr "aligner avec l'enregistrement" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 msgid "Alignment" msgstr "Alignement" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 msgid "Normal Mode" msgstr "Mode normal" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 msgid "Tape Mode" msgstr "Mode bande" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 msgid "Non-Layered Mode" msgstr "Mode sans chevauchement" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Liste de lecture" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 msgid "Rename Playlist" msgstr "Renommer la liste de lecture" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 msgid "New name for playlist:" msgstr "Nouveau nom de la liste de lecture:" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 msgid "New Copy Playlist" msgstr "Nouvelle copie de la liste de lecture" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 msgid "Name for new playlist:" msgstr "Nom de la nouvelle liste de lecture:" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 msgid "New Playlist" msgstr "Nouvelle liste de lecture" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 msgid "You cannot create a track with that name as it is reserved for %1" msgstr "Vous ne pouvez pas créer une piste avec ce nom, il est réservé pour %1" -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 msgid "New Copy..." msgstr "Nouvelle copie..." -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 msgid "New Take" msgstr "Nouvelle prise" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 msgid "Copy Take" msgstr "Copier la prise" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "Effacer actuelle" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 #, fuzzy msgid "Select From All..." msgstr "Choisir..." -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "Prise: %1.%2" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 msgid "Remove \"%1\"" msgstr "Supprimer \"%1\"" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "programming error: underlay reference pointer pairs are inconsistent!" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 #, fuzzy msgid "After-fade listen (AFL)" msgstr "Écoute post-fader" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 #, fuzzy msgid "Pre-fade listen (PFL)" msgstr "Écoute pré-fader" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "s" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "m" -#: route_ui.cc:114 +#: route_ui.cc:119 msgid "Mute this track" msgstr "Rendre la piste muette" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "Rendre les autres pistes (non-solo) muettes" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "Activer l'enregistrement sur cette piste" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "" -#: route_ui.cc:133 +#: route_ui.cc:138 msgid "Monitor input" msgstr "Monitoring du son qui entre" -#: route_ui.cc:139 +#: route_ui.cc:144 msgid "Monitor playback" msgstr "Monitoring du son enregistré" -#: route_ui.cc:586 +#: route_ui.cc:591 msgid "Not connected to JACK - cannot engage record" msgstr "Non connecté à JACK – impossible d'enclencher l'enregistrement" -#: route_ui.cc:781 +#: route_ui.cc:786 #, fuzzy msgid "Step Entry" msgstr "vers le point d'édition" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "" -#: route_ui.cc:858 +#: route_ui.cc:863 #, fuzzy msgid "Assign all tracks and buses (prefader)" msgstr "ajouter aux pistes sélectionnées (pré-fader)" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "" -#: route_ui.cc:866 +#: route_ui.cc:871 #, fuzzy msgid "Assign all tracks and buses (postfader)" msgstr "ajouter aux pistes sélectionnées (post-fader)" -#: route_ui.cc:870 +#: route_ui.cc:875 #, fuzzy msgid "Assign selected tracks (prefader)" msgstr "ajouter aux pistes sélectionnées (pré-fader)" -#: route_ui.cc:874 +#: route_ui.cc:879 #, fuzzy msgid "Assign selected tracks and buses (prefader)" msgstr "ajouter aux pistes sélectionnées (pré-fader)" -#: route_ui.cc:877 +#: route_ui.cc:882 #, fuzzy msgid "Assign selected tracks (postfader)" msgstr "ajouter aux pistes sélectionnées (post-fader)" -#: route_ui.cc:881 +#: route_ui.cc:886 #, fuzzy msgid "Assign selected tracks and buses (postfader)" msgstr "ajouter aux pistes sélectionnées (post-fader)" -#: route_ui.cc:884 +#: route_ui.cc:889 #, fuzzy msgid "Copy track/bus gains to sends" msgstr "Copier gains de piste/bus vers les départs" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "Régler gain des départs à -inf" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "Régler gain des départs à 0dB" -#: route_ui.cc:1206 +#: route_ui.cc:1211 msgid "Solo Isolate" msgstr "Isoler le solo" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "Pré-atténuation" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "Post-atténuation" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "Sorties de contrôle" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "Sorties principales" -#: route_ui.cc:1385 +#: route_ui.cc:1390 msgid "Color Selection" msgstr "Couleur de la sélection" -#: route_ui.cc:1472 +#: route_ui.cc:1477 msgid "" "Do you really want to remove track \"%1\" ?\n" "\n" @@ -10333,7 +10553,7 @@ msgstr "" "(Cette action ne pourra pas être annulée, et le fichier de session sera " "écrasé)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 msgid "" "Do you really want to remove bus \"%1\" ?\n" "\n" @@ -10343,15 +10563,15 @@ msgstr "" "\n" "(Cette action ne pourra pas être annulé!)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 msgid "Remove track" msgstr "Supprimer la piste" -#: route_ui.cc:1484 +#: route_ui.cc:1489 msgid "Remove bus" msgstr "Supprimer le bus" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" @@ -10359,48 +10579,48 @@ msgstr "" "Il est déconseillé d'utiliser le caractère ':' pour les pistes et les bus.\n" "Voulez-vous tout de même utiliser ce nom?" -#: route_ui.cc:1515 +#: route_ui.cc:1520 #, fuzzy msgid "Use the new name" msgstr "nouveau nom :" -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "Renommer la piste" -#: route_ui.cc:1531 +#: route_ui.cc:1536 msgid "Rename Bus" msgstr "Renommer le bus" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr " latence" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "" -#: route_ui.cc:1709 +#: route_ui.cc:1714 msgid "Save As Template" msgstr "Enregistrer comme modèle" -#: route_ui.cc:1710 +#: route_ui.cc:1715 msgid "Template name:" msgstr "Nom du modèle de session :" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "Identifiant de contrôleur" -#: route_ui.cc:1793 +#: route_ui.cc:1798 msgid "Remote control ID:" msgstr "Identifiant de contrôleur" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10408,17 +10628,17 @@ msgid "" "The remote control ID of %3 cannot be changed." msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the master bus" msgstr "Bus de sortie à" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the monitor bus" msgstr "Bus de sortie à" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10429,17 +10649,17 @@ msgid "" "change this%5" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the mixer" msgstr "Remixeur" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the editor" msgstr "éditeur" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." @@ -10447,7 +10667,7 @@ msgstr "" "Clic gauche pour inverser la phase du canal %1 de cette piste. Clic droit " "pour afficher le menu." -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "" @@ -10951,51 +11171,107 @@ msgstr "Coller les nouveaux marqueurs aux mesures/temps" msgid "Glue new regions to bars and beats" msgstr "Coller les nouvelles régions aux mesures/temps" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "VU-mètre" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "Afficher toutes les pistes MIDI" + +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "Bus" + +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "Bus de sortie à" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "(dés)activation d'enregistrement" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "avec le bouton de la souris n°" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "Gain Solo" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "Nom de piste/bus" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 msgid "as new tracks" msgstr "comme nouvelles pistes" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 msgid "to selected tracks" msgstr "aux pistes sélectionnées" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to region list" msgstr "à la liste des régions" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "as new tape tracks" msgstr "comme nouvelles pistes bandes" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "programming error: unknown import mode string %1" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 msgid "Auto-play" msgstr "Lecture auto" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 msgid "Sound File Information" msgstr "Informations sur le fichier audio" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 msgid "Timestamp:" msgstr "Horodatage:" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "Format:" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "Tags:" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "L'écoute des fichiers MIDI n'est pas encore disponible" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Impossible de lire le fichier « %1 » (%2)." @@ -11023,11 +11299,11 @@ msgstr "Audio" msgid "MIDI files" msgstr "Fichiers MIDI" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "Tout" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "Parcours des fichiers" @@ -11035,171 +11311,159 @@ msgstr "Parcours des fichiers" msgid "Paths" msgstr "Chemins" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "Recherche de tags" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 msgid "Sort:" msgstr "Trier:" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 msgid "Longest" msgstr "Les plus longs" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 msgid "Shortest" msgstr "Les plus cours" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 msgid "Newest" msgstr "Les plus récents" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "Les plus vieux" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "Les plus téléchargés" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 msgid "Least downloaded" msgstr "Les moins téléchargés" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "Les mieux notés" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "Les moins bien notés" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 msgid "ID" msgstr "ID" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 msgid "Filename" msgstr "Nom du fichier " -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 #, fuzzy msgid "Duration" msgstr "durée (s)" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 #, fuzzy msgid "Size" msgstr "taille max" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 msgid "Samplerate" msgstr "Taux d'échantillonnage" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "Rechercher sur Freesound" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "Cliquez pour fermer cette fenêtre sans importer de fichiers" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "SoundFileBrowser: Could not tokenize string: " -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "B" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "kB" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "MB" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 msgid "GB" msgstr "GB" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "La recherche n'a pas retourné de résultats." - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "une piste par fichier" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "une piste par canal" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 msgid "sequence files" msgstr "régions alignées" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "tous les fichiers dans une piste" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 msgid "merge files" msgstr "fusionner les fichiers" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 msgid "one region per file" msgstr "une région par fichier" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 msgid "one region per channel" msgstr "une région par voie" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 msgid "all files in one region" msgstr "tout dans une région" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" @@ -11207,56 +11471,56 @@ msgstr "" "Un des fichiers sélectionnés\n" "ne peut pas être utilisé par %1" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "Copier les fichiers vers le dossier de session" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 msgid "file timestamp" msgstr "utiliser l'horodatage du fichier" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 msgid "edit point" msgstr "Point d'édition" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 msgid "playhead" msgstr "tête de lecture" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 #, fuzzy msgid "session start" msgstr "sur le début de la session" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "" -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 msgid "Insert at" msgstr "Insérer" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 msgid "Mapping" msgstr "" -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 msgid "Conversion quality" msgstr "Qualité de la conversion" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "Excellente" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "Bonne" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "Rapide" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "Très rapide" @@ -11344,22 +11608,23 @@ msgid "I'd like more options for this session" msgstr "Je souhaite avoir accès à plus d'options" #: startup.cc:194 +#, fuzzy msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11517,10 +11782,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "Que voulez-vous faire?" - #: startup.cc:729 msgid "Open" msgstr "Ouvrir" @@ -11533,83 +11794,83 @@ msgstr "Nom de la session:" msgid "Create session folder in:" msgstr "Créer le dossier dans:" -#: startup.cc:813 +#: startup.cc:821 msgid "Select folder for session" msgstr "Choisir le dossier de session" -#: startup.cc:845 +#: startup.cc:853 msgid "Use this template" msgstr "Choix du modèle" -#: startup.cc:848 +#: startup.cc:856 msgid "no template" msgstr "Pas de modèle" -#: startup.cc:876 +#: startup.cc:884 msgid "Use an existing session as a template:" msgstr "Utiliser une session existante comme modèle" -#: startup.cc:888 +#: startup.cc:896 msgid "Select template" msgstr "Choisir le modèle" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "Créer une session" -#: startup.cc:1068 +#: startup.cc:1077 msgid "Select session file" msgstr "Sélection de la session" -#: startup.cc:1084 +#: startup.cc:1093 msgid "Browse:" msgstr "Autre session:" -#: startup.cc:1093 +#: startup.cc:1102 msgid "Select a session" msgstr "Sélectionner une session" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "canaux" -#: startup.cc:1135 +#: startup.cc:1145 msgid "Busses" msgstr "Bus:" -#: startup.cc:1136 +#: startup.cc:1146 msgid "Inputs" msgstr "Entrées:" -#: startup.cc:1137 +#: startup.cc:1147 msgid "Outputs" msgstr "Sorties:" -#: startup.cc:1145 +#: startup.cc:1155 msgid "Create master bus" msgstr "Bus de sortie à" -#: startup.cc:1155 +#: startup.cc:1165 msgid "Automatically connect to physical inputs" msgstr "Se connecter aux entrées matérielles automatiquement" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "Utiliser seulement" -#: startup.cc:1215 +#: startup.cc:1225 msgid "Automatically connect outputs" msgstr "Se connecter aux sorties automatiquement" -#: startup.cc:1237 +#: startup.cc:1247 msgid "... to master bus" msgstr "...au bus général" -#: startup.cc:1247 +#: startup.cc:1257 msgid "... to physical outputs" msgstr "... aux sorties matérielles" -#: startup.cc:1297 +#: startup.cc:1307 msgid "Advanced Session Options" msgstr "Options avancées de session" @@ -12302,19 +12563,19 @@ msgstr "Fichier de configuration \"%1\" non enregistré" msgid "bad XPM header %1" msgstr "mauvais entête XPM %1" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "style RGBA manquant pour « %1 »" -#: utils.cc:544 +#: utils.cc:591 msgid "cannot find XPM file for %1" msgstr "impossible de trouver le fichier XMP pour %1" -#: utils.cc:570 +#: utils.cc:617 msgid "cannot find icon image for %1 using %2" msgstr "Impossible de trouver l'icône pour %1 avec %2" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "" @@ -12322,85 +12583,87 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "VerboseCanvasCursor" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 #, fuzzy msgid "Set Video Track" msgstr "Ajouter une piste audio" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 #, fuzzy msgid "Launch External Video Monitor" msgstr "Afficher le monitoring vidéo" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 #, fuzzy msgid "Video files" msgstr "Audio" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 #, fuzzy msgid "Video Information" msgstr "Informations sur le fichier audio" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 #, fuzzy msgid "Start:" msgstr "Démarrer" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 #, fuzzy msgid "Frame rate:" msgstr "Échantillonnage:" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 #, fuzzy msgid "Export Successful: %1" msgstr "Export MIDI: %1" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12408,17 +12671,17 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 msgid "Video Monitor: File Not Found." msgstr "" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12428,379 +12691,388 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 #, fuzzy msgid "Transcode/Import Video File " msgstr "Exporter vers un fichier video..." -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 #, fuzzy msgid "Output File:" msgstr "Interface de sortie:" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "Hauteur" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 #, fuzzy msgid "File Information" msgstr "Informations sur le fichier audio" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 #, fuzzy msgid "Duration:" msgstr "durée (s)" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 #, fuzzy msgid "??" msgstr "???" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 #, fuzzy msgid "Import Settings" msgstr "Options" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 #, fuzzy msgid "Import/Transcode Video to Session" msgstr "Importer depuis une session" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 msgid "Original Width" msgstr "" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 #, fuzzy msgid "Extract Audio:" msgstr "Exporter la région" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 #, fuzzy msgid "Extracting Audio.." msgstr "Exporter la région" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 #, fuzzy msgid "Transcoding Failed." msgstr "Traduction activés" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 #, fuzzy msgid "Save Transcoded Video File" msgstr "Exporter vers un fichier video..." -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 #, fuzzy msgid "Server Docroot:" msgstr "Serveur:" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 #, fuzzy msgid "Listen Port:" msgstr "position" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 #, fuzzy msgid "Cache Size:" msgstr "taille max" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 #, fuzzy msgid "Confirm Overwrite" msgstr "Confirmer l'écrasement du cliché" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 #, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "Un cliché de ce nom existe déjà. Voulez-vous l'écraser ?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 #, fuzzy msgid "Cannot create video folder \"%1\" (%2)" msgstr "impossible de créer le fichier ardour de l'utilisateur %1 (%2)" -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 #, fuzzy msgid "Export Video File " msgstr "Exporter vers un fichier video..." -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 #, fuzzy msgid "Video:" msgstr "Mike Start" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "Normaliser à:" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 #, fuzzy msgid "Deinterlace" msgstr "Centrer sur la tête de lecture" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 #, fuzzy msgid "Include Session Metadata" msgstr "Éditer les méta-données de la session" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 #, fuzzy msgid "Output:" msgstr "Sorties:" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 #, fuzzy msgid "Input:" msgstr "Entrées:" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 #, fuzzy msgid "Audio:" msgstr "Audio" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 #, fuzzy msgid "Master Bus" msgstr "Bus de sortie à" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 #, fuzzy msgid "Settings:" msgstr "Destinations" -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 #, fuzzy msgid "Range:" msgstr "Intervalle" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 #, fuzzy msgid "Preset:" msgstr "Préréglage" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 msgid "Video Codec:" msgstr "" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 #, fuzzy msgid "Video KBit/s:" msgstr "Mike Start" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 #, fuzzy msgid "Audio Codec:" msgstr "Mode audio:" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 #, fuzzy msgid "Audio KBit/s:" msgstr "Audio" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 #, fuzzy msgid "Audio Samplerate:" msgstr "Échantillonnage:" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "Normaliser" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 #, fuzzy msgid "Exporting audio" msgstr "Exporter la région" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:437 #, fuzzy -msgid "Exporting Audio.." +msgid "Exporting Audio..." msgstr "Exporter la région" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." -msgstr "" +#: export_video_dialog.cc:562 +#, fuzzy +msgid "Encoding Video..." +msgstr "Traduction activés" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 #, fuzzy msgid "Transcoding failed." msgstr "Traduction activés" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 #, fuzzy msgid "Save Exported Video File" msgstr "Exporter vers un fichier video..." @@ -12817,33 +13089,39 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" -"\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" -"\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#~ msgid "-Inf" +#~ msgstr "-inf" + +#~ msgid "slowest" +#~ msgstr "Très lent" + +#~ msgid "slow" +#~ msgstr "Lent" + +#~ msgid "fast" +#~ msgstr "Rapide" + +#~ msgid "faster" +#~ msgstr "Très rapide" + +#~ msgid "fastest" +#~ msgstr "Ultra rapide" + +#~ msgid "Search returned no results." +#~ msgstr "La recherche n'a pas retourné de résultats." + +#~ msgid "What would you like to do ?" +#~ msgstr "Que voulez-vous faire?" + #~ msgid "Control surfaces" #~ msgstr "Surfaces de contrôle" @@ -14575,9 +14853,6 @@ msgstr "" #~ msgid "solo change" #~ msgstr "modification du solo" -#~ msgid "rec-enable change" -#~ msgstr "(dés)activation d'enregistrement" - #~ msgid "mix group solo change" #~ msgstr "changt solo de groupe" diff --git a/gtk2_ardour/po/it.po b/gtk2_ardour/po/it.po index d728e7b210..0c55d99290 100644 --- a/gtk2_ardour/po/it.po +++ b/gtk2_ardour/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ardour 0.354.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2011-11-05 12:43+0100\n" "Last-Translator: \n" "Language-Team: American English \n" @@ -369,7 +369,7 @@ msgstr "%1 file di definizione del menù mancante" msgid "%1 will not work without a valid ardour.menus file" msgstr "%1 non può essere avviato senza un file ardour.menù valido" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 msgid "Add Track or Bus" msgstr "Aggiungi Traccia/Bus" @@ -409,8 +409,8 @@ msgstr "Bus" msgid "Add:" msgstr "Aggiungi:" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 msgid "Options" msgstr "Opzioni" @@ -424,21 +424,21 @@ msgid "Group:" msgstr "Gruppo:" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "MIDI" @@ -461,7 +461,7 @@ msgid "" msgstr "" #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "Normale" @@ -505,7 +505,7 @@ msgstr "8 canali" msgid "12 Channel" msgstr "12 canli" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "Personalizzato" @@ -594,7 +594,7 @@ msgid "Track" msgstr "Traccia" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 msgid "Show" msgstr "Mostra" @@ -602,96 +602,92 @@ msgstr "Mostra" msgid "Re-analyze data" msgstr "Esegui di nuovo l'analisi" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 #, fuzzy msgid "audition" msgstr "Ascolto" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 #, fuzzy msgid "solo" msgstr "Intervallo di loop" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 msgid "feedback" msgstr "" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 msgid "Speaker Configuration" msgstr "Configurazione altoparlanti" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "Gestore dei temi" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "Scorciatoie da tastiera" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "Preferenze" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 #, fuzzy msgid "Add Tracks/Busses" msgstr "Tracce/Bus" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "Circa" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "Posizioni" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 msgid "Tracks and Busses" msgstr "Tracce e Bus" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "Proprietà" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "Gestore dei raggruppamenti" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Orologio grande" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 #, fuzzy msgid "Audio Connections" msgstr "Connessioni" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "Connessioni" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "Errori" -#: ardour_ui.cc:299 -msgid "could not initialize %1." -msgstr "Impossibile inizializzare %1." - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "Avvio del motore audio" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "%1 è pronto." -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 #, fuzzy msgid "" "WARNING: Your system has a limit for maximum amount of locked memory. This " @@ -707,23 +703,23 @@ msgstr "" "Potete visualizzare questo limite massimo con il comando 'ulimit -l', di " "solito è controllato dal file /etc/security/limits.conf" -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "Non mostrare di nuovo" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 msgid "Don't quit" msgstr "Non uscire" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 msgid "Just quit" msgstr "Esci e basta" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 msgid "Save and quit" msgstr "Salva ed esci" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 #, fuzzy msgid "" "%1 was unable to save your session.\n" @@ -736,16 +732,16 @@ msgstr "" "\n" "Se ancora vuoi chiudere usa la voce \"Esci e basta\"." -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 #, fuzzy msgid "Please wait while %1 cleans up..." msgstr "Prego attendere mentre %1 carica i dati per la visualizzazione" -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 msgid "Unsaved Session" msgstr "Sessione non salvata" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -763,7 +759,7 @@ msgstr "" "\n" "Cosa vuoi fare?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -781,75 +777,75 @@ msgstr "" "\n" "Cosa vuoi fare?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "Suggeritore" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "Disconesso" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 #, fuzzy msgid "File:" msgstr "Inizio file:" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -857,34 +853,34 @@ msgid "" "\">%%%" msgstr "" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 #, fuzzy msgid "Disk: Unknown" msgstr "Spazio su disco: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, fuzzy, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "Spazio su disco: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, fuzzy, c-format msgid "Timecode|TC: %s" msgstr "Spazio su disco: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "Sessioni recenti" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" @@ -892,28 +888,28 @@ msgstr "" "%1 non è connesso a JACK\n" "Non si possono aprire o chiudere sessioni in questo stato." -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Apri sessione" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 msgid "%1 sessions" msgstr "sessioni %1" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "" "Non si può aggiungere una traccia senza prima aver caricato una sessione." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 #, fuzzy msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "Impossibile creare nuove tracce MIDI in %1" msgstr[1] "Impossibile creare nuove tracce MIDI in %1" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -925,27 +921,27 @@ msgstr "" "Dovresti salvare %1, uscire e \n" "avviare di nuovo JACK con più porte." -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 msgid "You cannot add a track or bus without a session already loaded." msgstr "" "Non si può aggiungere una traccia o un bus senza prima aver caricato una " "sessione." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 #, fuzzy msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "Impossibile creare una nuova traccia audio" msgstr[1] "Impossibile creare una nuova traccia audio" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 #, fuzzy msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "Impossibile creare una nuova traccia audio %1" msgstr[1] "Impossibile creare una nuova traccia audio %1" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 #, fuzzy msgid "" "Please create one or more tracks before trying to record.\n" @@ -955,7 +951,7 @@ msgstr "" "prima di avviare una registrazione.\n" "Controllare il menù di sessione." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" @@ -965,7 +961,7 @@ msgstr "" "\n" "%1" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -977,19 +973,19 @@ msgstr "" "E' consigliato salvare la sessione e riavviare\n" "sia JACK che Ardour." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Impossibilitato ad avviare la sessione" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 msgid "Take Snapshot" msgstr "Crea istantanea" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 msgid "Name of new snapshot" msgstr "Nome della nuova istantanea" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 #, fuzzy msgid "" "To ensure compatibility with various systems\n" @@ -999,29 +995,29 @@ msgstr "" "i nomi di instantanee non dovrebbero contenere\n" " il carattere '/'" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "Conferma sovrascrittura istantanea" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Esiste già un'istantanea con questo nome. Vuoi sovrascriverla?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "Sovrascrivi" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 #, fuzzy msgid "Rename Session" msgstr "Rinomina regione" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 #, fuzzy msgid "New session name" msgstr "Nome della sessione:" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 #, fuzzy msgid "" "To ensure compatibility with various systems\n" @@ -1031,30 +1027,30 @@ msgstr "" "i nomi di sessione non dovrebbero contenere\n" " il carattere '/'" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" msgstr "" -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 msgid "Save Template" msgstr "Salva Modello" -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 msgid "Name for template:" msgstr "Nome per il modello:" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-modello" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 msgid "" "This session\n" "%1\n" @@ -1064,52 +1060,52 @@ msgstr "" "%1\n" "esiste già. Vuoi aprirla?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 msgid "Open Existing Session" msgstr "Apri una sessione" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "Sessione inesistente in %1" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "Attendi mentre %1 carca la sessione" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "Errore nella registrazione di porta" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "Clicca su 'Chiudi' per provare di nuovo" -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "La sessione \"%1 (istantanea %2)\" non è stata caricata correttamente" -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "Errore di caricamento" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "Clicca su 'Aggiorna' per provare di nuovo." -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 msgid "Could not create session in \"%1\"" msgstr "Impossibile caricare la sessione \"%1\"" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 msgid "No files were ready for clean-up" msgstr "Nessun file da pulire" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "Pulisci" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1121,19 +1117,19 @@ msgstr "" "Ci possono essere ancora istantanee con regioni\n" "che necessitano di questi file." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 #, fuzzy msgid "" "The following file was deleted from %2,\n" @@ -1150,7 +1146,7 @@ msgstr[1] "" "%2, \n" "verranno liberati %3 %4bytes di spazio su disco" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 #, fuzzy msgid "" "The following file was not in use and \n" @@ -1191,11 +1187,11 @@ msgstr[1] "" "\n" "libererà %3 %4bytes di spazio su disco\n" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 msgid "Are you sure you want to clean-up?" msgstr "Siete sicuri di voler ripulire?" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" @@ -1207,81 +1203,81 @@ msgstr "" "La pulizia sposterà tutti i file inutilizzati \n" "in una posizione \"morta\"." -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "DialogoRipulitura" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 msgid "Cleaned Files" msgstr "File ripuliti" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "File eliminato" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 #, fuzzy msgid "Yes, Stop It" msgstr "Si, rimuovi." -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "impossibile aprire %1" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "La registazione è stata interrotta perche' il sistema non ha retto" -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1293,7 +1289,7 @@ msgstr "" "Nello specifico, non riesce a scrivere i dati \n" "con la velocità necessaria per le registrazioni.\n" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1305,11 +1301,11 @@ msgstr "" "Nello specifico, non riesce a scrivere i dati \n" "con la velocità necessaria per le registrazioni.\n" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "Recupero dal crash" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 #, fuzzy msgid "" "This session appears to have been in the\n" @@ -1327,19 +1323,19 @@ msgstr "" "oppure ignorarlo.\n" "Cosa preferite?\n" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "Ignora i dati del crash" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "Recupero dai dati di crash" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "Frequenza di campionamento discrepante" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 #, fuzzy msgid "" "This session was created with a sample rate of %1 Hz, but\n" @@ -1351,23 +1347,23 @@ msgstr "" "\n" "Il motore audio attualmente è avviato a %2 Hz\n" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 msgid "Do not load session" msgstr "Non caricare la sessione" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "Apri comunque la sessione" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "Non posso disconnettermi da JACK" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "Non posso riconnettermi a JACK" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1390,58 +1386,63 @@ msgstr "UI: impossibile avviare l'editor" msgid "UI: cannot setup mixer" msgstr "IU: impossibile avviare il mixer" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "IU: impossibile avviare il meter_bridge" + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "Suona dalla testina" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Interrompi la riproduzione" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 msgid "Toggle record" msgstr "Registra" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "Suona intervallo/selezione" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "Vai all'inizio della sessione" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "Vai alla fine della sessione" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "Suona l'intervallo di ciclo" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" msgstr "" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "Ritorna al punto d'inizio una volta fermato" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 #, fuzzy msgid "Playhead follows Range Selections and Edits" msgstr "Sposta la testina all'inizio dell'intervallo" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "Controlla accuratamente le entrate" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "Abilita/Disabilita il click audio" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" @@ -1449,7 +1450,7 @@ msgstr "" "Quando è attivo, qualcosa è in solo.\n" "Clicca per ripristinare tutto." -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" @@ -1457,11 +1458,11 @@ msgstr "" "Quando è attivo, qualcosa è in ascolto\n" "Clicca per ripristinare." -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "" -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1469,7 +1470,7 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1477,27 +1478,32 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "Azzera inviluppo" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "[ERRORE]:" -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "[ATTENZIONE]:" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "[INFO]" -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1517,23 +1523,23 @@ msgstr "Prepara l'editor" msgid "Setup Mixer" msgstr "Prepara il mixer" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "Ricarica lo storico di sessione" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 msgid "Don't close" msgstr "Non uscire" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 msgid "Just close" msgstr "Chiudi e basta" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 msgid "Save and close" msgstr "Salva ed esci" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" @@ -1546,7 +1552,7 @@ msgstr "Sessione" msgid "Sync" msgstr "Sincronizza" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Opzioni" @@ -1574,15 +1580,15 @@ msgstr "Tipo file" msgid "Sample Format" msgstr "Formato di campionamento" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "Piattaforme di comando" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Plugins" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "Misurazione" @@ -1598,7 +1604,7 @@ msgstr "Tempo di tenuta" msgid "Denormal Handling" msgstr "" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "Nuovo..." @@ -1641,8 +1647,8 @@ msgstr "Istantanea..." msgid "Save As..." msgstr "Salva con nome..." -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 msgid "Rename..." msgstr "Rinomina..." @@ -1671,7 +1677,7 @@ msgid "Stem export..." msgstr "Esportazione Stem" #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Esporta" @@ -1683,11 +1689,11 @@ msgstr "Pulisci sorgenti inutilizzate..." msgid "Flush Wastebasket" msgstr "Svuota il cestino" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: 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:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "Latenza" @@ -1695,8 +1701,8 @@ msgstr "Latenza" msgid "Reconnect" msgstr "Riconnetti" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "Disconnetti" @@ -1713,7 +1719,7 @@ msgstr "Massimizza l'area dell'editor" msgid "Show Toolbars" msgstr "Mostra la barra dello zoom" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 #, fuzzy msgid "Window|Mixer" msgstr "Finestra" @@ -1723,28 +1729,33 @@ msgstr "Finestra" msgid "Toggle Editor+Mixer" msgstr "Modalità di modifica" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "Finestra" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 #, fuzzy msgid "Help|Manual" msgstr "Manuale" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "Riferimenti" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Salva" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1754,100 +1765,100 @@ msgstr "Salva" msgid "Transport" msgstr "Trasporto" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "Ferma" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "Lancia" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "Avvia/Ferma" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 msgid "Start/Continue/Stop" msgstr "Avvia/Continua/Ferma" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 msgid "Stop and Forget Capture" msgstr "Ferma e interrompi la registrazione" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 msgid "Transition To Roll" msgstr "" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "Riproduci l'intervallo di ciclo" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 msgid "Play Selected Range" msgstr "Suona l'intervallo selezionato" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 #, fuzzy msgid "Play Selection w/Preroll" msgstr "Suona la regione selezionata" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "Abilita la registrazione" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 msgid "Start Recording" msgstr "Inizia la registrazione" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "Indietro" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "Indietro (lento)" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "Indietro (veloce)" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "Avanti" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "Avanti (lento)" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "Avanti (veloce)" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "Vai allo zero" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "Vai all'inizio" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "Vai alla fine" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1856,129 +1867,129 @@ msgstr "" msgid "Timecode" msgstr "" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 msgid "Bars & Beats" msgstr "Battute e battiti" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 msgid "Minutes & Seconds" msgstr "Minuti e secondi" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "Campioni" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 msgid "Punch In" msgstr "Punch in" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "Ingresso" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 msgid "Punch Out" msgstr "Punch out" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "Uscita" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 msgid "In/Out" msgstr "Ingresso/Uscita" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "Metronomo" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 msgid "Auto Input" msgstr "" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 msgid "Auto Play" msgstr "Riproduci automaticamente" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 msgid "Time Master" msgstr "" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 msgid "Toggle Record Enable Track %1" msgstr "Abilita la registrazione sulla traccia %1" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "Percentuale" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Semitoni" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "Invia MTC" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "Invia MMC" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "Usa MMC" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 msgid "Send MIDI Clock" msgstr "Invia il clock MIDI" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 msgid "Send MIDI Feedback" msgstr "" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "Panico" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 #, fuzzy msgid "Wall Clock" msgstr "Orologio grande" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 #, fuzzy msgid "DSP" msgstr "SiP" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 #, fuzzy msgid "Buffers" msgstr "Dimenzione buffer:" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 #, fuzzy msgid "Timecode Format" msgstr "Rimuovi Campo" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 #, fuzzy msgid "File Format" msgstr "Formato del file" @@ -1995,11 +2006,11 @@ msgstr "" msgid "Internal" msgstr "Interno" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 msgid "Enable/Disable external positional sync" msgstr "" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "" "Impossibile sincronizzazione con JACK: è impostato video \"pull up/down\"" @@ -2031,7 +2042,7 @@ msgstr "Tempo" msgid "Meter" msgstr "Suddivisione" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2121,33 +2132,33 @@ msgid "hide track" msgstr "Nascondi traccia" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 #, fuzzy msgid "Automation|Manual" msgstr "Automazione" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "Suona" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "Scrivi" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "Tocco" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "???" @@ -2156,7 +2167,7 @@ msgid "clear automation" msgstr "pulisci l'automazione" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "Nascondi" @@ -2177,7 +2188,7 @@ msgstr "Discreto" msgid "Linear" msgstr "Lineare" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "Modo" @@ -2194,13 +2205,13 @@ msgstr "Modifica il raggruppamento" msgid "Direction:" msgstr "Direzione:" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "Ingresso" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "Uscita" @@ -2210,8 +2221,8 @@ msgid "Edit" msgstr "Modifica" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "Elimina" @@ -2384,7 +2395,7 @@ msgstr "Tempo" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "Durata" @@ -2631,17 +2642,17 @@ msgid "Ranges & Marks" msgstr "Intervalli & marcatori" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 msgid "Editor" msgstr "Editor" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "Ciclo" @@ -2666,8 +2677,8 @@ msgstr "" msgid "Slow" msgstr "Lento" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "Veloce" @@ -2687,7 +2698,7 @@ msgstr "Attiva" msgid "Slowest" msgstr "Piu' Lento" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "errore di programmazione: " @@ -2806,7 +2817,7 @@ msgid "Select All in Track" msgstr "Seleziona tutto nella traccia" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Seleziona tutto" @@ -2858,15 +2869,15 @@ msgstr "Seleziona l'intervallo tra la testina ed il punto di modifica" msgid "Select" msgstr "Seleziona" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Taglia" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "Copia" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Incolla" @@ -3030,7 +3041,7 @@ msgstr "Ripristina" msgid "Redo (%1)" msgstr "Ripristina (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "Duplica" @@ -3060,8 +3071,8 @@ msgstr "Elimina la playlist" msgid "Keep Playlist" msgstr "Mantieni la playlist" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "Cancella" @@ -3082,7 +3093,7 @@ msgstr "cancella le playlist" msgid "Please wait while %1 loads visual data." msgstr "Prego attendere mentre %1 carica i dati per la visualizzazione" -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 msgid "Edit..." msgstr "Modifica..." @@ -3131,7 +3142,7 @@ msgstr "Strato" msgid "Position" msgstr "Posizione" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Spunta" @@ -3144,7 +3155,7 @@ msgstr "Guadagno" msgid "Ranges" msgstr "Intervalli" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 msgid "Fades" @@ -3184,7 +3195,7 @@ msgstr "Opzioni varie" msgid "Misc Options" msgstr "Opzioni varie" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "Controllo" @@ -3225,8 +3236,8 @@ msgstr "Orologio secondario" msgid "Separate" msgstr "Separa" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "Solo" @@ -3238,7 +3249,7 @@ msgstr "" msgid "Timecode fps" msgstr "" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Altezza" @@ -3369,7 +3380,7 @@ msgstr "Sposta la testina all'inizio dell'intervallo" msgid "Playhead to Range End" msgstr "Sposta la testina alla fine dell'intervallo" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "Deseleziona tutto" @@ -3646,9 +3657,9 @@ msgstr "Inserisci tempo" msgid "Toggle Active" msgstr "Attiva" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "Rimuovi" @@ -3656,19 +3667,19 @@ msgstr "Rimuovi" msgid "Fit Selected Tracks" msgstr "Adatta le tracce selezionate" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "Ampissimo" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "Ampio" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "Più ampio" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "Piccolo" @@ -3768,7 +3779,7 @@ msgstr "Giuntura" msgid "Slide" msgstr "" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "Blocca" @@ -3952,7 +3963,7 @@ msgstr "Min:Sec" msgid "Video Monitor" msgstr "Controllo" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -3963,7 +3974,7 @@ msgstr "Porta in cima" #: editor_actions.cc:554 #, fuzzy -msgid "Framenumber" +msgid "Frame number" msgstr "Numero traccia" #: editor_actions.cc:555 @@ -4055,7 +4066,7 @@ msgstr "Rimuovi bus" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Importa" @@ -4096,311 +4107,311 @@ msgstr "Inizializzazione menù da %1" msgid "Could not find editor.bindings in search path %1" msgstr "" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "Errore di programmazione: %1: %2" -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 msgid "Raise to Top" msgstr "Porta in cima" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "Abbassa" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 msgid "Lower to Bottom" msgstr "Porta in fondo" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 msgid "Move to Original Position" msgstr "Spostati alla posizione iniziale" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "Aggancia a battute e battiti" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 #, fuzzy msgid "Remove Sync" msgstr "Rimuovi il punto di sincronizzazione" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Muto" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 msgid "Normalize..." msgstr "Normalizza..." -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 #, fuzzy msgid "Make Mono Regions" msgstr "Crea regioni mono" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "Aumenta guadagno" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "Riduci guadagno" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "Cambia tono..." -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 msgid "Transpose..." msgstr "Trasponi..." -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 msgid "Opaque" msgstr "Opaco" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "Dissolvenza in entrata" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "Dissolvenza in uscita" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 msgid "Multi-Duplicate..." msgstr "Multi-Duplica" -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "Riempi Traccia" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "Imposta l'intervallo di loop" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 msgid "Set Punch" msgstr "Imposta Punch" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 #, fuzzy msgid "Add Single Range Marker" msgstr "Aggiungi 1 marcatore di intervallo" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 #, fuzzy msgid "Add Range Marker Per Region" msgstr "Aggiungi marcatori di intervallo" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 #, fuzzy msgid "Snap Position To Grid" msgstr "Allinea alla griglia" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 #, fuzzy msgid "Close Gaps" msgstr "Chiudi" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "" -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 msgid "Export..." msgstr "Esporta..." -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 msgid "Separate Under" msgstr "Separa sotto" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 msgid "Set Fade In Length" msgstr "Imposta la durata della dissolvenza in entrata" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 msgid "Set Fade Out Length" msgstr "Durata della dissolvenza in uscita" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 #, fuzzy msgid "Set Tempo from Region = Bar" msgstr "Nuova Regione dall'intervallo" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 #, fuzzy msgid "Split at Percussion Onsets" msgstr "Inizio al cursore di modifica" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 #, fuzzy msgid "List Editor..." msgstr "Editor delle Opzioni" -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "Proprietà..." -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "Fissa (elaborando)" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "Fissa (senza elaborare)" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "Unisci" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "Separa" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "Analisi spettrale" -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 msgid "Reset Envelope" msgstr "Azzera inviluppo" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 msgid "Reset Gain" msgstr "Azzera guadagno" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 msgid "Envelope Active" msgstr "Inviluppo attivo/passiv" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 #, fuzzy msgid "Quantize..." msgstr "Quantizza" -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "" -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "Rimuovi silenzio" -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 msgid "Set Range Selection" msgstr "Imposta intervallo di selezione" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 #, fuzzy msgid "Nudge Later" msgstr "Sposta avanti" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 #, fuzzy msgid "Nudge Earlier" msgstr "Sposta avanti" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 #, fuzzy msgid "Nudge Later by Capture Offset" msgstr "Sposta" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 #, fuzzy msgid "Nudge Earlier by Capture Offset" msgstr "Sposta" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "Ritaglia in base al ciclo" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "Ritaglia in base al punch" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 #, fuzzy msgid "Trim to Previous" msgstr "Inizio al cursore di modifica" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 #, fuzzy msgid "Trim to Next" msgstr "Inizio al cursore di modifica" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 #, fuzzy msgid "Insert Region From Region List" msgstr "Nuova Regione dall'intervallo" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 #, fuzzy msgid "Set Sync Position" msgstr "Per Posizione della Regione" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "Dividi" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 msgid "Trim Start at Edit Point" msgstr "" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 msgid "Trim End at Edit Point" msgstr "" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 msgid "Align Start" msgstr "" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 msgid "Align Start Relative" msgstr "" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 #, fuzzy msgid "Align End" msgstr "Allinea" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 #, fuzzy msgid "Align End Relative" msgstr "Allinea Realtivo" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 #, fuzzy msgid "Align Sync" msgstr "Sposta Regione/i" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 #, fuzzy msgid "Align Sync Relative" msgstr "Allinea Realtivo" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "" @@ -4429,34 +4440,34 @@ msgstr "" "La sessione contiene già un file chiamato %1. Vuoi importare %2 come nuova " "sorgente o passare oltre?" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "Annullare l'importazione" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 #, fuzzy msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Editor: impossibile aprire il file \"%1\" (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 #, fuzzy msgid "Cancel entire import" msgstr "Annullare l'importazione" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "Non inludere" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "Includi tutto senza domande" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 msgid "Sample rate" msgstr "Frequenza di campionamento" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4464,7 +4475,7 @@ msgstr "" "%1\n" "Il sample rate del file audio non corrisponde a quello della sessione!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "Includi comunque" @@ -4501,32 +4512,32 @@ msgstr "Copia il marcatore di tempo" msgid "move tempo mark" msgstr "Muovi il marcatore di tempo" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "cambia la durata della dissolvenza in entrata" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "cambia la durata della dissolvenza in uscita" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "Muovi marcatore" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "C'è stato un errore durante l'esecuzione di 'time stretch'" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 #, fuzzy msgid "programming_error: %1" msgstr "Errore di programmazione: %1" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "nuovo marcatore di intervallo" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 #, fuzzy msgid "rubberband selection" msgstr "Suona intervallo/selezione" @@ -4606,7 +4617,7 @@ msgid "Sharing Solo?" msgstr "" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "Reg" @@ -4684,7 +4695,7 @@ msgid "end" msgstr "fine" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "aggiungi marcatore" @@ -4693,7 +4704,7 @@ msgstr "aggiungi marcatore" msgid "range" msgstr " intervallo" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "rimuovi marcatore" @@ -4776,8 +4787,8 @@ msgstr "Rinomina marcatore" msgid "Rename Range" msgstr "Rinomina intervallo" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "Rinomina" @@ -4922,7 +4933,7 @@ msgstr "Porta in fondo" msgid "Rename Region" msgstr "Rinomina regione" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 msgid "New name:" msgstr "Nuovo nome: " @@ -5095,7 +5106,7 @@ msgstr "" "(questa azione non potrà essere annullata)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "No, non fare niente." @@ -5294,11 +5305,11 @@ msgstr "Ok" msgid "close region gaps" msgstr "Riempi gli intervalli della regione" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "Ci sarebbero cattive notizie..." -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5318,7 +5329,7 @@ msgstr "" msgid "tracks" msgstr "Tracce" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 msgid "track" msgstr "traccia" @@ -5326,7 +5337,7 @@ msgstr "traccia" msgid "busses" msgstr "Bus" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "bus" @@ -5371,7 +5382,7 @@ msgstr "" msgid "Yes, remove them." msgstr "Si, rimuovi." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Si, rimuovi." @@ -5444,7 +5455,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "" @@ -5462,8 +5473,9 @@ msgstr "" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "" @@ -5535,7 +5547,8 @@ msgstr "Tracce/Bus" msgid "Track/Bus visible ?" msgstr "Tracce/Bus" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "A" @@ -5544,7 +5557,7 @@ msgstr "A" msgid "Track/Bus active ?" msgstr "Tracce/Bus" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 #, fuzzy msgid "I" msgstr "Ingresso" @@ -5554,7 +5567,7 @@ msgstr "Ingresso" msgid "MIDI input enabled" msgstr "Tieni traccia delle Entrate MIDI" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "" @@ -5569,7 +5582,7 @@ msgstr "Attiva registrazione" msgid "Muted" msgstr "Muto" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "" @@ -5583,7 +5596,7 @@ msgstr "In solo..." msgid "SI" msgstr "Ingresso" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 #, fuzzy msgid "Solo Isolated" msgstr "isolato" @@ -5872,140 +5885,144 @@ msgid "192000Hz" msgstr "" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Nessuno" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "Triangolare" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "Rettangolare" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "Riproduzione/Registrazione su un dispositivo" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "Riproduzione/Registrazione su due dispositivi" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "Solo riproduzione" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "Solo registrazione" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "Driver:" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 #, fuzzy msgid "Audio Interface:" msgstr "Interfaccia:" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "Frequenza di campionamento" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "Dimenzione buffer:" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "Numero di buffer:" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "Latenza:" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 msgid "Audio mode:" msgstr "Modalità audio:" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "Ignora" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "Numero di porte:" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "Driver MIDI:" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "Dither:" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "Nessun server JACK trovato su questo sistema. Installa JACK e riavvia." -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "Server:" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "Dispositivo di ingresso:" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "Dispositivo di uscita" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "Latenza in ingresso:" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "campioni" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "Latenza in uscita:" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "Dispositivo" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "Avanzate" -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "Non posso aprire il file rc di JACK per memorizzare i parametri" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 #, fuzzy msgid "" "You do not have any audio devices capable of\n" @@ -6036,33 +6053,33 @@ msgstr "" "ma non in simultanea, avviate JACK prima di Ardour e scegliete\n" "il dispositivo appropriato." -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "Non ci sono dispositivi audio adatti " -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "Sembra che JACK sia assente dal raggruppamento %1" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "Devi prima scegliere un dispositivo audio." -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "Impossibile riconoscere il dispositivo audio \"%1\" " -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "Manca il valore di configurazione audio per %1" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" "il file di configurazione contengono un percorso al server JACK inesistente " "(%1)" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "Canali" @@ -6224,9 +6241,9 @@ msgid "Folder:" msgstr "Cartella:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Sfoglia" @@ -6351,6 +6368,13 @@ msgstr "Opzioni FLAC" msgid "Broadcast Wave options" msgstr "" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "" +"Si vuole realmente rimuovere la traccia \"%1\" ?\n" +"(questa azione non potrà essere annullata)" + #: export_preset_selector.cc:28 msgid "Preset" msgstr "Preimpostazione" @@ -6363,6 +6387,13 @@ msgstr "" "Il preset selezionato non è stato caricato correttamente!\n" "Forse fa riferimento ad un formato che è stato rimosso?" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "" +"Si vuole realmente rimuovere la traccia \"%1\" ?\n" +"(questa azione non potrà essere annullata)" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "Mostra tempo come:" @@ -6375,36 +6406,49 @@ msgstr "a" msgid "Range" msgstr "Intervallo" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "Errore di programmazione: %1 (%2)" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +msgid "%1" +msgstr "" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "-inf" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "Modalità di automazione fader" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "Tipo di automazione fader" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "" -#: gain_meter.cc:334 -msgid "-Inf" -msgstr "" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "" @@ -6417,7 +6461,7 @@ msgstr "Presets" msgid "Switches" msgstr "Intonazione" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "Controlli" @@ -6447,68 +6491,68 @@ msgstr "Gestore delle connessioni audio" msgid "MIDI Connection Manager" msgstr "Gestore delle connessionio MIDI" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "entrata" -#: group_tabs.cc:306 +#: group_tabs.cc:308 msgid "Selection..." msgstr "Selezione..." -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "Registrazione abilitata" -#: group_tabs.cc:308 +#: group_tabs.cc:310 msgid "Soloed..." msgstr "In solo..." -#: group_tabs.cc:314 +#: group_tabs.cc:316 #, fuzzy msgid "Create New Group ..." msgstr "Nuovo Gruppo" -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "" -#: group_tabs.cc:318 +#: group_tabs.cc:320 #, fuzzy msgid "Edit Group..." msgstr "Nuovo Gruppo" -#: group_tabs.cc:319 +#: group_tabs.cc:321 #, fuzzy msgid "Collect Group" msgstr "Colleziona" -#: group_tabs.cc:320 +#: group_tabs.cc:322 #, fuzzy msgid "Remove Group" msgstr "Modifica Gruppo" -#: group_tabs.cc:323 +#: group_tabs.cc:325 #, fuzzy msgid "Remove Subgroup Bus" msgstr "Aggiungi un nuovo bus sottogruppo" -#: group_tabs.cc:325 +#: group_tabs.cc:327 msgid "Add New Subgroup Bus" msgstr "Aggiungi un nuovo bus sottogruppo" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "Aggiungi un nuovo bus ausiliario (pre-fader)" -#: group_tabs.cc:328 +#: group_tabs.cc:330 msgid "Add New Aux Bus (post-fader)" msgstr "Aggiungi un bus ausiliario (post-fader)" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "" -#: group_tabs.cc:335 +#: group_tabs.cc:337 #, fuzzy msgid "Disable All Groups" msgstr "Disabilita tutto" @@ -6607,11 +6651,11 @@ msgstr "Importazione file: %1 di %2" msgid "I/O selector" msgstr "Esegui la regione selezionata come loop" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "entrata %1" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "uscita %1" @@ -6695,7 +6739,7 @@ msgstr[1] "campione" msgid "Reset" msgstr "Azzera" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "Errore di programmazione: %1 (%2)" @@ -6725,68 +6769,68 @@ msgstr "Compositore" msgid "Pre-Emphasis" msgstr "" -#: location_ui.cc:310 +#: location_ui.cc:314 #, fuzzy msgid "Remove this range" msgstr "Dimentica questo intervallo" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 #, fuzzy msgid "Set range start from playhead location" msgstr "Imposta dall'inizio" -#: location_ui.cc:316 +#: location_ui.cc:320 #, fuzzy msgid "Set range end from playhead location" msgstr "Imposta intervallo dalla selezione intervallo" -#: location_ui.cc:320 +#: location_ui.cc:324 #, fuzzy msgid "Remove this marker" msgstr "Dimentica questo marcatore" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 #, fuzzy msgid "Set marker time from playhead location" msgstr "Imposta intervallo dalla selezione intervallo" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "Impossibile inserire un marcatore CD all'inizio della sessione" -#: location_ui.cc:708 +#: location_ui.cc:720 msgid "New Marker" msgstr "Nuovo marcatore" -#: location_ui.cc:709 +#: location_ui.cc:721 msgid "New Range" msgstr "Nuovo Intervallo" -#: location_ui.cc:722 +#: location_ui.cc:734 msgid "Loop/Punch Ranges" msgstr "Intervalli di Ciclo/Punch" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "Marcatori (inclusi gli indici CD)" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "Intervalli (inclusi gli intervalli traccia CD)" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "agggiungi marcatore di intervallo" @@ -6871,20 +6915,20 @@ msgstr "" "e riconnettere %1, oppure uscire da %1 adesso. Non è possibile salvare\n" "la sessione adesso perché perderemmo le tue impostazioni di connessione.\n" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr "" -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr "" -#: main.cc:504 +#: main.cc:500 #, fuzzy msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "Diritti (C) 1999-2011 Paul Davis" -#: main.cc:505 +#: main.cc:501 #, fuzzy msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " @@ -6893,29 +6937,33 @@ msgstr "" "Per alcune parti Diritti (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker" -#: main.cc:507 +#: main.cc:503 msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "%1 è fornito SENZA ALCUNA GARANZIA" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "neanche per la COMMERCIALIZZAZIONE o PER SCOPI PARTICOLARI." -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "Questo è software libero e siete i benvenuti se volete redistribuirlo " -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "" "sotto determinate condizioni; leggere i sorgenti per le condizioni relative " "alla copia." -#: main.cc:519 +#: main.cc:513 +msgid "could not initialize %1." +msgstr "Impossibile inizializzare %1." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "" -#: main.cc:525 +#: main.cc:528 #, fuzzy msgid "could not create %1 GUI" msgstr "Impossibile creare l'interfaccia di Ardour" @@ -6925,7 +6973,7 @@ msgstr "Impossibile creare l'interfaccia di Ardour" msgid "Display delta to edit cursor" msgstr "Inizio al cursore di modifica" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 #, fuzzy msgid "MarkerText" msgstr "Marcatori" @@ -7461,7 +7509,7 @@ msgstr "Clicca per scegliere un'altra cartella" msgid "Missing Plugins" msgstr "Plugin mancanti" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "Ok" @@ -7541,239 +7589,252 @@ msgstr "Inizializzazione menù da %1" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 #, fuzzy msgid "Comments" msgstr "Commento" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "" -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 #, fuzzy msgid "Hide this mixer strip" msgstr "Nascondi tutti i Bus del Mixer" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 #, fuzzy msgid "Click to select metering point" msgstr "Esegui la regione selezionata come loop" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "Solo isolato" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "Blocca lo stato di solo" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "blocca" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 msgid "iso" msgstr "" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 #, fuzzy msgid "Mix group" msgstr "nessun gruppo" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 #, fuzzy msgid "Phase Invert" msgstr "Inverti" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 #, fuzzy msgid "Solo Safe" msgstr "Intervallo di loop" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "Gruppo" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 #, fuzzy msgid "Meter Point" msgstr "Misurazione" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 #, fuzzy msgid "Enable/Disable MIDI input" msgstr "Abilita/Disabilita il click audio" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 #, fuzzy msgid "" "Aux\n" "Sends" msgstr "Mandate" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 #, fuzzy msgid "Snd" msgstr "Secondi" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "Nessuna connessione a JACK - nessuna modifica I/O consentita" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 msgid "Disconnected" msgstr "Disconnesso" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 #, fuzzy msgid "*Comments*" msgstr "Commento" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 #, fuzzy msgid "Cmt" msgstr "taglia" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 #, fuzzy msgid ": comment editor" msgstr "IU: impossibile avviare l'editor" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 msgid "Comments..." msgstr "Commenti..." -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 msgid "Save As Template..." msgstr "Salva come modello..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "Attivo" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "Regola la latenza..." -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "Protezione dalla denormalizzazione" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 #, fuzzy msgid "Remote Control ID..." msgstr "Rimuovi il punto di sincronizzazione" -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 #, fuzzy msgid "in" msgstr "vuoto" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 #, fuzzy msgid "post" msgstr "entrata" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 #, fuzzy msgid "out" msgstr "Circa" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "personalizzato" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 #, fuzzy msgid "pr" msgstr "entrata" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 #, fuzzy msgid "po" msgstr "entrata" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 #, fuzzy msgid "o" msgstr "Mono" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "AFL" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "PFL" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 #, fuzzy msgid "D" msgstr "CD" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 #, fuzzy msgid "i" msgstr "vuoto" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 #, fuzzy msgid "Pre-fader" msgstr "Pre Fader" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 #, fuzzy msgid "Post-fader" msgstr "Post Fader" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "Canale %1" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "" @@ -7782,10 +7843,67 @@ msgstr "" msgid "-all-" msgstr "-tutto-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "Strisce" +#: meter_strip.cc:764 +msgid "Variable height" +msgstr "" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "breve" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +msgid "VU" +msgstr "" + #: monitor_section.cc:62 msgid "SiP" msgstr "SiP" @@ -8189,7 +8307,7 @@ msgstr "" msgid "Panner (2D)" msgstr "" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 #, fuzzy msgid "Bypass" msgstr "Battute" @@ -8373,7 +8491,7 @@ msgstr "Per categoria" msgid "Eh? LADSPA plugins don't have editors!" msgstr "Cosa? I plugin LADSPA non hanno editor?" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " @@ -8389,7 +8507,7 @@ msgstr "" "tipo di plugin fornito sconosciuto (nota: nessun supporto a VST in questa " "versione di ardour)" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " @@ -8398,76 +8516,88 @@ msgstr "" "tipo di plugin fornito sconosciuto (nota: nessun supporto a VST in questa " "versione di ardour)" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "Aggiungi" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 #, fuzzy msgid "Description" msgstr "Direzione:" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 msgid "Plugin analysis" msgstr "Analisi plugin" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 #, fuzzy msgid "Save a new preset" msgstr "Nome del nuovo preset" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" msgstr "" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 #, fuzzy msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "latenza (%1 campioni)" msgstr[1] "latenza (%1 campioni)" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "latenza (%1 ms)" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 msgid "Edit Latency" msgstr "Modifica latenza" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "Preset per plugin %1 non trovato" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "Clicca per consentire il normale utilizzo delle scorciatoie di %1" @@ -8576,47 +8706,47 @@ msgstr "Rilevamento..." msgid "Port Insert " msgstr "Nuova entrata" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 #, fuzzy msgid "Sources" msgstr "Avanzate..." -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "Destinazioni" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "Aggiungi %s %s" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, c-format msgid "Rename '%s'..." msgstr "Rinomina '%s'..." -#: port_matrix.cc:451 +#: port_matrix.cc:472 msgid "Remove all" msgstr "Rimuovi tutto" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, fuzzy, c-format msgid "%s all" msgstr "azzera" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "Aggiorna" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "Mostra porte individuali" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "" -#: port_matrix.cc:702 +#: port_matrix.cc:723 #, fuzzy msgid "" "It is not possible to add a port here, as the first processor in the track " @@ -8625,33 +8755,35 @@ msgstr "" "Questa porta non può essere rimossa visto che il plugin nella traccia/bus " "non può accettare il nuovo numero di ingressi" -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "La rimozione delle porte non è consentita" -#: port_matrix.cc:728 +#: port_matrix.cc:749 +#, fuzzy msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" "Questa porta non può essere rimossa visto che il plugin nella traccia/bus " "non può accettare il nuovo numero di ingressi" -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, c-format msgid "Remove '%s'" msgstr "Rimuovi '%s'" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, fuzzy, c-format msgid "%s all from '%s'" msgstr "Seleziona tutto" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 msgid "channel" msgstr "canali" @@ -8663,53 +8795,53 @@ msgstr "Non ci sono porte cui connettersi." msgid "There are no %1 ports to connect." msgstr "Non ci sono porte %1 cui connettersi." -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 #, fuzzy msgid "Show All Controls" msgstr "Mostra le mandate" -#: processor_box.cc:375 +#: processor_box.cc:376 #, fuzzy msgid "Hide All Controls" msgstr "Nascondi tutte le dissolvenze" -#: processor_box.cc:464 +#: processor_box.cc:465 #, fuzzy msgid "on" msgstr "Mono" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "spento" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" msgstr "" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "Hai tentato di aggiungere il plugin \"%1\" nella posizione %2.\n" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" @@ -8717,21 +8849,21 @@ msgstr "" "\n" "Questo plugin ha:\n" -#: processor_box.cc:1196 +#: processor_box.cc:1209 #, fuzzy msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "\t%1 ingresso MIDI \n" msgstr[1] "entrata %1" -#: processor_box.cc:1200 +#: processor_box.cc:1213 #, fuzzy msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" msgstr[0] "\t%1 ingresso audio\n" msgstr[1] "entrata %1" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" @@ -8739,21 +8871,21 @@ msgstr "" "\n" "ma in corrispondenza del punto di inserimento ci sono:\n" -#: processor_box.cc:1206 +#: processor_box.cc:1219 #, fuzzy msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "cancella" msgstr[1] "cancella" -#: processor_box.cc:1210 +#: processor_box.cc:1223 #, fuzzy msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "cancella" msgstr[1] "cancella" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" @@ -8761,11 +8893,11 @@ msgstr "" "\n" "%1 non può inserire qui questo plugin.\n" -#: processor_box.cc:1249 +#: processor_box.cc:1262 msgid "Cannot set up new send: %1" msgstr "Impossibile prepare la nuova mandata: %1" -#: processor_box.cc:1581 +#: processor_box.cc:1594 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" @@ -8775,27 +8907,27 @@ msgstr "" "in questa maniera perché gli ingressi e le uscite\n" "non funzionerebbero correttamente." -#: processor_box.cc:1765 +#: processor_box.cc:1778 msgid "Rename Processor" msgstr "Rinomina processore" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" "Esistono almeno 100 oggetti I/O con un nome simile a %1 - nome non cambiato" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" "could not match the configuration of this track." msgstr "" -#: processor_box.cc:1987 +#: processor_box.cc:2000 #, fuzzy msgid "" "Do you really want to remove all processors from %1?\n" @@ -8804,15 +8936,15 @@ msgstr "" "Si vuole realmente rimuovere la traccia %1 ?\n" "(questa azione non potrà essere annullata)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "Si, rimuovi tutto" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 msgid "Remove processors" msgstr "Rimuovi processori" -#: processor_box.cc:2008 +#: processor_box.cc:2021 #, fuzzy msgid "" "Do you really want to remove all pre-fader processors from %1?\n" @@ -8821,7 +8953,7 @@ msgstr "" "Si vuole realmente rimuovere la traccia \"%1\" ?\n" "(questa azione non potrà essere annullata)" -#: processor_box.cc:2011 +#: processor_box.cc:2024 #, fuzzy msgid "" "Do you really want to remove all post-fader processors from %1?\n" @@ -8830,53 +8962,53 @@ msgstr "" "Si vuole realmente rimuovere la traccia \"%1\" ?\n" "(questa azione non potrà essere annullata)" -#: processor_box.cc:2198 +#: processor_box.cc:2200 msgid "New Plugin" msgstr "Nuovo plugin" -#: processor_box.cc:2201 +#: processor_box.cc:2203 msgid "New Insert" msgstr "Nuovo insert" -#: processor_box.cc:2204 +#: processor_box.cc:2206 #, fuzzy msgid "New External Send ..." msgstr "Nuova mandata ausiliaria..." -#: processor_box.cc:2208 +#: processor_box.cc:2210 msgid "New Aux Send ..." msgstr "Nuova mandata ausiliaria..." -#: processor_box.cc:2212 +#: processor_box.cc:2214 msgid "Clear (all)" msgstr "Pulisci (tutto)" -#: processor_box.cc:2214 +#: processor_box.cc:2216 msgid "Clear (pre-fader)" msgstr "Pulisci (pre-fader)" -#: processor_box.cc:2216 +#: processor_box.cc:2218 msgid "Clear (post-fader)" msgstr "Pulisci (post-fader)" -#: processor_box.cc:2242 +#: processor_box.cc:2244 msgid "Activate All" msgstr "Attiva tutto" -#: processor_box.cc:2244 +#: processor_box.cc:2246 #, fuzzy msgid "Deactivate All" msgstr "Disattiva tutto" -#: processor_box.cc:2246 +#: processor_box.cc:2248 msgid "A/B Plugins" msgstr "Plugin A/B" -#: processor_box.cc:2255 +#: processor_box.cc:2257 msgid "Edit with generic controls..." msgstr "" -#: processor_box.cc:2531 +#: processor_box.cc:2557 msgid "%1: %2 (by %3)" msgstr "%1: %2 (per %3)" @@ -9043,7 +9175,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -9137,7 +9269,7 @@ msgstr "" msgid "Click gain level" msgstr "File audio (click):" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Automazione" @@ -9322,97 +9454,101 @@ msgstr "" msgid "Show meters on tracks in the editor" msgstr "Mostra i meter sulle tracce nell'editor" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 msgid "Show waveforms in regions" msgstr "Mostra le onde nelle regioni" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 #, fuzzy msgid "Show gain envelopes in audio regions" msgstr "Mostra le onde nelle regioni" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 #, fuzzy msgid "Waveform scale" msgstr "Forme wave" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "lineare" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "logaritmico" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 #, fuzzy msgid "Waveform shape" msgstr "Forme wave" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 #, fuzzy msgid "traditional" msgstr "Tradizionale" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 #, fuzzy msgid "rectified" msgstr "Rettificato" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "Mostra le onde durante la registrazione audio" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "Mostra la barra dello zoom" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "Colora le regioni utilizzando il colore della traccia di appartenenza" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "Sincronizza l'ordine delle tracce tra editor e mixer" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 #, fuzzy msgid "Synchronise editor and mixer selection" msgstr "Sincronizza l'ordine delle tracce tra editor e mixer" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 msgid "Name new markers" msgstr "Assegna un nome ai nuovi marcatori" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9420,349 +9556,434 @@ msgid "" "You can always rename markers by right-clicking on them" msgstr "" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 msgid "Record monitoring handled by" msgstr "Controllo della registrazione da parte di" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 #, fuzzy msgid "ardour" msgstr "ardour: orologio" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 msgid "audio hardware" msgstr "hardware audio" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 msgid "Tape machine mode" msgstr "Modalità nastro" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "Connessione di tracce e bus" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "Connetti automaticamente i bus master/monitor" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 msgid "Connect track inputs" msgstr "Connetti ingressi della traccia" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 msgid "automatically to physical inputs" msgstr "automaticamente agli ingressi fisici" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "manualmente" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "Connetti le uscite della traccia e del bus" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 msgid "automatically to physical outputs" msgstr "automaticamente alle uscite fisiche" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 msgid "automatically to master bus" msgstr "automaticamente al bus master" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 #, fuzzy msgid "Denormals" msgstr "Normale" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "Gestione processore" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "nessuna gestione processore" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 #, fuzzy msgid "Silence plugins when the transport is stopped" msgstr "Ferma i plugin insieme alla riproduzione" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "Attiva i nuovi plugin" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "Abilita l'analisi automatica dell'audio" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "Solo / mute" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "I controlli di solo sono controlli di ascolto" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 #, fuzzy msgid "Listen Position" msgstr "Posizione" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 #, fuzzy msgid "after-fader (AFL)" msgstr "ascolto after-fader" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 #, fuzzy msgid "pre-fader (PFL)" msgstr "ascolto pre-fader" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "i segnali PFL provengono da" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 #, fuzzy msgid "before pre-fader processors" msgstr "rimuovi marcatore" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "I segnali AFL provengono da" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 #, fuzzy msgid "immediately post-fader" msgstr "Pulisci (post-fader)" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 #, fuzzy msgid "after post-fader processors (before pan)" msgstr "rimuovi marcatore" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "Solo esclusivo" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "Opzioni di mute base per Tracce/Bus" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "Mute agisce sulle mandate pre-fader" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "Mute agisce sulle mandate post-fader" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 msgid "Mute affects control outputs" msgstr "Mute agisce sulle uscite" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "Mute agisce sulle uscite principali" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 #, fuzzy msgid "Send MIDI control feedback" msgstr "Porta MMC" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 #, fuzzy msgid "Sound MIDI notes as they are selected" msgstr "Inserisci selezione" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 #, fuzzy msgid "User interaction" msgstr "Operazioni sulle regioni" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "Tastiera" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 msgid "Control surface remote ID" msgstr "ID della piattaforma di controllo" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "assegnato dall'utente" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "segue l'ordine del mixer" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "segue l'ordine dell'editor" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 #, fuzzy msgid "Preferences|GUI" msgstr "Preferenze" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 #, fuzzy msgid "Mixer Strip" msgstr "Mixer" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 #, fuzzy msgid "Use narrow strips in the mixer by default" msgstr "Strisce del Mixer strette" -#: rc_option_editor.cc:1898 -msgid "Meter hold time" -msgstr "" +#: rc_option_editor.cc:1906 +#, fuzzy +msgid "Peak hold time" +msgstr "Soglia di picco" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 msgid "short" msgstr "breve" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "medio" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "lungo" -#: rc_option_editor.cc:1912 -msgid "Meter fall-off" +#: rc_option_editor.cc:1920 +#, fuzzy +msgid "DPM fall-off" +msgstr "Caduta del misuratore" + +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" +msgstr "" + +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" msgstr "" -#: rc_option_editor.cc:1918 -msgid "slowest" -msgstr "più Lento" +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" + +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" -msgstr "lento" +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" -#: rc_option_editor.cc:1921 -msgid "fast" -msgstr "veloce" +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" -#: rc_option_editor.cc:1922 -msgid "faster" -msgstr "più veloce" +#: rc_option_editor.cc:1985 +#, fuzzy +msgid "Peak threshold [dBFS]" +msgstr "Soglia di picco" -#: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "velocissimo" +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" + +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -9772,11 +9993,11 @@ msgstr "fai l'audition di questa regione" msgid "Position:" msgstr "Posizione:" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Fine:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "Durata:" @@ -9800,25 +10021,25 @@ msgstr "Sorgenti:" msgid "Source:" msgstr "Sorgente:" -#: region_editor.cc:167 +#: region_editor.cc:166 msgid "Region '%1'" msgstr "Regione '%1'" -#: region_editor.cc:274 +#: region_editor.cc:273 #, fuzzy msgid "change region start position" msgstr "Regioni/posizione" -#: region_editor.cc:290 +#: region_editor.cc:289 #, fuzzy msgid "change region end position" msgstr "Regioni/posizione" -#: region_editor.cc:310 +#: region_editor.cc:309 msgid "change region length" msgstr "cambia la durata della regione" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 #, fuzzy msgid "change region sync point" msgstr "Regioni/posizione" @@ -10016,340 +10237,340 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "" -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "Tracce/Bus" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "Entrate" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "Uscite" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "Plugin, inserts & mandate" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "Ritardo di riproduzione: % campioni" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "NESSUNA TRACCIA" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 msgid "No Track or Bus Selected" msgstr "Nessuna traccia o bus selezionati" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "Registrazione (clicca col destro per la modifica passo passo)" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "Registra" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 #, fuzzy msgid "Route Group" msgstr "Modifica Gruppo" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 #, fuzzy msgid "MIDI Controllers and Automation" msgstr "Porta MMC" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 msgid "Show All Automation" msgstr "Mostra tutte le automazioni" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 msgid "Show Existing Automation" msgstr "Mostra le automazioni esistenti" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 msgid "Hide All Automation" msgstr "Nascondi tutte le automazioni" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 #, fuzzy msgid "Processor automation" msgstr "pulisci l'automazione" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 msgid "Color..." msgstr "Colore..." -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 msgid "Layers" msgstr "Livelli" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 msgid "Automatic (based on I/O connections)" msgstr "Automatico (basato sulle connessioni I/O)" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 #, fuzzy msgid "(Currently: Existing Material)" msgstr "Materiale esistente" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 #, fuzzy msgid "(Currently: Capture Time)" msgstr "Tempo di registrazione" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 #, fuzzy msgid "Align With Existing Material" msgstr "Materiale esistente" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 #, fuzzy msgid "Align With Capture Time" msgstr "Tempo di registrazione" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 #, fuzzy msgid "Alignment" msgstr "Allinea" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 msgid "Normal Mode" msgstr "Normale" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 msgid "Tape Mode" msgstr "Nastro" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 #, fuzzy msgid "Non-Layered Mode" msgstr "Regioni/fine" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Scaletta" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 msgid "Rename Playlist" msgstr "Rinomina playlist" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 msgid "New name for playlist:" msgstr "Nuovo nome per la playlist:" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 msgid "New Copy Playlist" msgstr "Copia playlist" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 msgid "Name for new playlist:" msgstr "Nome per la nuova playlist:" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 msgid "New Playlist" msgstr "Nuova playlist" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 msgid "You cannot create a track with that name as it is reserved for %1" msgstr "" "Non si può creare una traccia con questo nome perché è riservato per %1" -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 msgid "New Copy..." msgstr "Nuova copia..." -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 #, fuzzy msgid "New Take" msgstr "Nuovo tempo" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 #, fuzzy msgid "Copy Take" msgstr "Copia" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "Pulisci Corrente" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 msgid "Select From All..." msgstr "Seleziona tutto da..." -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 msgid "Remove \"%1\"" msgstr "Rimuovi \"%1\"" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 #, fuzzy msgid "After-fade listen (AFL)" msgstr "ascolto after-fader" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 #, fuzzy msgid "Pre-fade listen (PFL)" msgstr "ascolto pre-fader" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "" -#: route_ui.cc:114 +#: route_ui.cc:119 msgid "Mute this track" msgstr "Muta questa traccia" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "Abilita la registrazione" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "" -#: route_ui.cc:133 +#: route_ui.cc:138 #, fuzzy msgid "Monitor input" msgstr "Controllo" -#: route_ui.cc:139 +#: route_ui.cc:144 #, fuzzy msgid "Monitor playback" msgstr "Interrompi la riproduzione" -#: route_ui.cc:586 +#: route_ui.cc:591 msgid "Not connected to JACK - cannot engage record" msgstr "" -#: route_ui.cc:781 +#: route_ui.cc:786 #, fuzzy msgid "Step Entry" msgstr "Modifica" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "" -#: route_ui.cc:858 +#: route_ui.cc:863 #, fuzzy msgid "Assign all tracks and buses (prefader)" msgstr "Inserisci selezione" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "" -#: route_ui.cc:866 +#: route_ui.cc:871 #, fuzzy msgid "Assign all tracks and buses (postfader)" msgstr "Inserisci selezione" -#: route_ui.cc:870 +#: route_ui.cc:875 #, fuzzy msgid "Assign selected tracks (prefader)" msgstr "Inserisci selezione" -#: route_ui.cc:874 +#: route_ui.cc:879 #, fuzzy msgid "Assign selected tracks and buses (prefader)" msgstr "Inserisci selezione" -#: route_ui.cc:877 +#: route_ui.cc:882 #, fuzzy msgid "Assign selected tracks (postfader)" msgstr "Inserisci selezione" -#: route_ui.cc:881 +#: route_ui.cc:886 #, fuzzy msgid "Assign selected tracks and buses (postfader)" msgstr "Inserisci selezione" -#: route_ui.cc:884 +#: route_ui.cc:889 #, fuzzy msgid "Copy track/bus gains to sends" msgstr "ardour: aggiungi traccia/bus" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "Imposta il volume delle manda su -inf" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "Imposta il volume delle mandate a 0dB" -#: route_ui.cc:1206 +#: route_ui.cc:1211 msgid "Solo Isolate" msgstr "" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "Pre Fader" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "Post Fader" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "Uscite di Controllo" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "Uscite Principali" -#: route_ui.cc:1385 +#: route_ui.cc:1390 msgid "Color Selection" msgstr "Scelta colore" -#: route_ui.cc:1472 +#: route_ui.cc:1477 msgid "" "Do you really want to remove track \"%1\" ?\n" "\n" @@ -10364,7 +10585,7 @@ msgstr "" "(questa azione non potrà essere annullata ed il file di sessione verrà " "sovrascritto)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 msgid "" "Do you really want to remove bus \"%1\" ?\n" "\n" @@ -10375,64 +10596,64 @@ msgstr "" "(questa azione non potrà essere annullata ed il file di sessione verrà " "sovrascritto)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 msgid "Remove track" msgstr "Rimuovi traccia" -#: route_ui.cc:1484 +#: route_ui.cc:1489 msgid "Remove bus" msgstr "Rimuovi bus" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" msgstr "" -#: route_ui.cc:1515 +#: route_ui.cc:1520 #, fuzzy msgid "Use the new name" msgstr "nuovo nome: " -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "Rinomina traccia" -#: route_ui.cc:1531 +#: route_ui.cc:1536 msgid "Rename Bus" msgstr "Rinomina bus" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr " latenza" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "" -#: route_ui.cc:1709 +#: route_ui.cc:1714 msgid "Save As Template" msgstr "Salva come modello" -#: route_ui.cc:1710 +#: route_ui.cc:1715 msgid "Template name:" msgstr "Nome del modello:" -#: route_ui.cc:1783 +#: route_ui.cc:1788 #, fuzzy msgid "Remote Control ID" msgstr "Rimuovi il punto di sincronizzazione" -#: route_ui.cc:1793 +#: route_ui.cc:1798 #, fuzzy msgid "Remote control ID:" msgstr "Rimuovi il punto di sincronizzazione" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10440,17 +10661,17 @@ msgid "" "The remote control ID of %3 cannot be changed." msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the master bus" msgstr "Crea un master bus" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the monitor bus" msgstr "Crea un master bus" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10461,23 +10682,23 @@ msgid "" "change this%5" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the mixer" msgstr "Prepara il mixer" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the editor" msgstr "Altezza" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." msgstr "" -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "" @@ -10991,54 +11212,110 @@ msgstr "Aggancia a battute e battiti" msgid "Glue new regions to bars and beats" msgstr "Aggancia a battute e battiti" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "Misurazione" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "Mostra tutte le tracce MIDI" + +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "Bus" + +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "Crea un master bus" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "Attiva registrazione" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "+ pulsante" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "Solo / mute" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "Tracce/Bus" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 #, fuzzy msgid "as new tracks" msgstr "Tracce" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 msgid "to selected tracks" msgstr "nelle tracce selezionate" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to region list" msgstr "nella lista regioni" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "as new tape tracks" msgstr "come nuove tracce nastro" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "Errore di programmazione: modalità di importazione %1 sconosciuta" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 #, fuzzy msgid "Auto-play" msgstr "suona" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 msgid "Sound File Information" msgstr "Info sul file audio" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 #, fuzzy msgid "Timestamp:" msgstr "Per Data di Regione" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "Formato:" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Editor: impossibile aprire il file %1 (%2)." @@ -11067,11 +11344,11 @@ msgstr "File audio" msgid "MIDI files" msgstr "" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "Tutti i file" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "Cerca nei file" @@ -11079,180 +11356,168 @@ msgstr "Cerca nei file" msgid "Paths" msgstr "Percorsi" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 #, fuzzy msgid "Sort:" msgstr "Ordina" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 #, fuzzy msgid "Longest" msgstr "Ampissimo" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 #, fuzzy msgid "Shortest" msgstr "Scorciatoia" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 #, fuzzy msgid "Newest" msgstr "Piu' Lento" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 #, fuzzy msgid "Least downloaded" msgstr "Inizia il download" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 #, fuzzy msgid "ID" msgstr "MIDI" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 #, fuzzy msgid "Filename" msgstr "Rinomina" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 #, fuzzy msgid "Duration" msgstr "Sposta Regione/i" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 #, fuzzy msgid "Size" msgstr "Dimensione massima" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 #, fuzzy msgid "Samplerate" msgstr "Frequenza di campionamento" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "" -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 msgid "GB" msgstr "" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "" - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "una traccia per file" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "una traccia per canale" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 #, fuzzy msgid "sequence files" msgstr "files ripuliti" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "tutti i file in una traccia" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 msgid "merge files" msgstr "Unisci i file" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 msgid "one region per file" msgstr "una regione per file" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 msgid "one region per channel" msgstr "una regione per canale" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 msgid "all files in one region" msgstr "tutti i file in una regione" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" @@ -11260,60 +11525,60 @@ msgstr "" "Uno o alcuni dei file selezionati\n" "non possono essere utilizzati da %1" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "Copia i file nella sessione" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 #, fuzzy msgid "file timestamp" msgstr "Per Data di Regione" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 #, fuzzy msgid "edit point" msgstr "Modifica usando" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 msgid "playhead" msgstr "testina" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 msgid "session start" msgstr "inizio sessione" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "" -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 #, fuzzy msgid "Insert at" msgstr "Inserisci a:" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 #, fuzzy msgid "Mapping" msgstr "Avanzate..." -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 #, fuzzy msgid "Conversion quality" msgstr "Qualità di conversione:" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "Migliore" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "Buona" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "Veloce" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "Velocissimo" @@ -11407,21 +11672,21 @@ msgstr "Vorrei più opzioni per questa sessione" #: startup.cc:194 #, fuzzy msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11587,10 +11852,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "Cosa vuoi fare?" - #: startup.cc:729 #, fuzzy msgid "Open" @@ -11605,84 +11866,84 @@ msgstr "Nome della sessione:" msgid "Create session folder in:" msgstr "Esegui la regione selezionata come loop" -#: startup.cc:813 +#: startup.cc:821 msgid "Select folder for session" msgstr "Seleziona una cartella per la sessione" -#: startup.cc:845 +#: startup.cc:853 msgid "Use this template" msgstr "Usa questo modello" -#: startup.cc:848 +#: startup.cc:856 msgid "no template" msgstr "nessun modello" -#: startup.cc:876 +#: startup.cc:884 msgid "Use an existing session as a template:" msgstr "Usa una sessione salvata come modello" -#: startup.cc:888 +#: startup.cc:896 msgid "Select template" msgstr "Seleziona modello" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "Nuova sessione" -#: startup.cc:1068 +#: startup.cc:1077 msgid "Select session file" msgstr "Seleziona un file sessione" -#: startup.cc:1084 +#: startup.cc:1093 msgid "Browse:" msgstr "Sfoglia:" -#: startup.cc:1093 +#: startup.cc:1102 msgid "Select a session" msgstr "Scegli una sessione" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "canali" -#: startup.cc:1135 +#: startup.cc:1145 msgid "Busses" msgstr "Bus" -#: startup.cc:1136 +#: startup.cc:1146 msgid "Inputs" msgstr "Ingressi" -#: startup.cc:1137 +#: startup.cc:1147 msgid "Outputs" msgstr "Uscite" -#: startup.cc:1145 +#: startup.cc:1155 msgid "Create master bus" msgstr "Crea un master bus" -#: startup.cc:1155 +#: startup.cc:1165 #, fuzzy msgid "Automatically connect to physical inputs" msgstr "Connetti automaticamente alle entrate fisiche" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "Usa soltanto" -#: startup.cc:1215 +#: startup.cc:1225 msgid "Automatically connect outputs" msgstr "Connetti automaticamente le uscite" -#: startup.cc:1237 +#: startup.cc:1247 msgid "... to master bus" msgstr "... al bus Master" -#: startup.cc:1247 +#: startup.cc:1257 msgid "... to physical outputs" msgstr "... alle uscite fisiche." -#: startup.cc:1297 +#: startup.cc:1307 msgid "Advanced Session Options" msgstr "Opzioni avanzate della sessione" @@ -12391,20 +12652,20 @@ msgstr "Il file di configurazione %1 non è stato salvato." msgid "bad XPM header %1" msgstr "" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "stile RGBA mancante per \"%1\"" -#: utils.cc:544 +#: utils.cc:591 msgid "cannot find XPM file for %1" msgstr "non riesco a trovare un file XPM per %1" -#: utils.cc:570 +#: utils.cc:617 #, fuzzy msgid "cannot find icon image for %1 using %2" msgstr "non riesco a trovare una icona per %1" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "" @@ -12412,84 +12673,86 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 #, fuzzy msgid "Set Video Track" msgstr "Aggiungi traccia audio" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 #, fuzzy msgid "Launch External Video Monitor" msgstr "Controllo" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 #, fuzzy msgid "Video files" msgstr "File audio" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 #, fuzzy msgid "Video Information" msgstr "Info sul file audio" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 #, fuzzy msgid "Start:" msgstr "Inizio" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 #, fuzzy msgid "Frame rate:" msgstr "Frequenza di campionamento" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 msgid "Export Successful: %1" msgstr "" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12497,18 +12760,18 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 #, fuzzy msgid "Video Monitor: File Not Found." msgstr "Controllo" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12518,380 +12781,389 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 #, fuzzy msgid "Transcode/Import Video File " msgstr "Esporta la sessione come file audio..." -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 #, fuzzy msgid "Output File:" msgstr "Dispositivo di uscita" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "Altezza" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 #, fuzzy msgid "File Information" msgstr "Info sul file audio" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 #, fuzzy msgid "Duration:" msgstr "Sposta Regione/i" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 #, fuzzy msgid "??" msgstr "???" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 #, fuzzy msgid "Import Settings" msgstr "Opzioni" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 #, fuzzy msgid "Import/Transcode Video to Session" msgstr "Importa da una sessione" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 msgid "Original Width" msgstr "" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 #, fuzzy msgid "Extract Audio:" msgstr "Esporta l'audio" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 #, fuzzy msgid "Extracting Audio.." msgstr "Esporta l'audio" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 #, fuzzy msgid "Transcoding Failed." msgstr "Traduzione abilitata" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 #, fuzzy msgid "Save Transcoded Video File" msgstr "Esporta la sessione come file audio..." -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 #, fuzzy msgid "Server Docroot:" msgstr "Server:" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 #, fuzzy msgid "Listen Port:" msgstr "Posizione" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 #, fuzzy msgid "Cache Size:" msgstr "Dimensione massima" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 #, fuzzy msgid "Confirm Overwrite" msgstr "Conferma sovrascrittura istantanea" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 #, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "Esiste già un'istantanea con questo nome. Vuoi sovrascriverla?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 #, fuzzy msgid "Cannot create video folder \"%1\" (%2)" msgstr "impossibile creare la cartella utente ardour %1 (%2)" -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 #, fuzzy msgid "Export Video File " msgstr "Esporta la sessione come file audio..." -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 #, fuzzy msgid "Video:" msgstr "Inizio" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "Normalizza a:" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 #, fuzzy msgid "Deinterlace" msgstr "interno" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 #, fuzzy msgid "Include Session Metadata" msgstr "Modifica i metadati della sessione" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 #, fuzzy msgid "Output:" msgstr "Uscite" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 #, fuzzy msgid "Input:" msgstr "Ingressi" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 #, fuzzy msgid "Audio:" msgstr "Audio" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 #, fuzzy msgid "Master Bus" msgstr "Crea un master bus" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 #, fuzzy msgid "Settings:" msgstr "Destinazioni" -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 #, fuzzy msgid "Range:" msgstr "Intervallo" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 #, fuzzy msgid "Preset:" msgstr "Preimpostazione" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 #, fuzzy msgid "Video Codec:" msgstr "Cartella:" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 #, fuzzy msgid "Video KBit/s:" msgstr "Inizio" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 #, fuzzy msgid "Audio Codec:" msgstr "Modalità audio:" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 #, fuzzy msgid "Audio KBit/s:" msgstr "File audio" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 #, fuzzy msgid "Audio Samplerate:" msgstr "Frequenza di campionamento" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "Normalizza i valori" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 #, fuzzy msgid "Exporting audio" msgstr "Esporta l'audio" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:437 #, fuzzy -msgid "Exporting Audio.." +msgid "Exporting Audio..." msgstr "Esporta l'audio" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." -msgstr "" +#: export_video_dialog.cc:562 +#, fuzzy +msgid "Encoding Video..." +msgstr "Traduzione abilitata" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 #, fuzzy msgid "Transcoding failed." msgstr "Traduzione abilitata" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 #, fuzzy msgid "Save Exported Video File" msgstr "Esporta la sessione come file audio..." @@ -12909,33 +13181,33 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" -"\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" -"\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#~ msgid "slowest" +#~ msgstr "più Lento" + +#~ msgid "slow" +#~ msgstr "lento" + +#~ msgid "fast" +#~ msgstr "veloce" + +#~ msgid "faster" +#~ msgstr "più veloce" + +#~ msgid "fastest" +#~ msgstr "velocissimo" + +#~ msgid "What would you like to do ?" +#~ msgstr "Cosa vuoi fare?" + #~ msgid "Connect" #~ msgstr "Connetti" @@ -14191,13 +14463,6 @@ msgstr "" #~ msgid "Beat" #~ msgstr "Battito" -#~ msgid "" -#~ "Do you really want to remove track \"%1\" ?\n" -#~ "(cannot be undone)" -#~ msgstr "" -#~ "Si vuole realmente rimuovere la traccia \"%1\" ?\n" -#~ "(questa azione non potrà essere annullata)" - #, fuzzy #~ msgid "set selected regionview" #~ msgstr "Esegui la regione selezionata come loop" @@ -14298,9 +14563,6 @@ msgstr "" #~ msgid "rescan" #~ msgstr "Aggiorna" -#~ msgid "UI: cannot setup meter_bridge" -#~ msgstr "IU: impossibile avviare il meter_bridge" - #, fuzzy #~ msgid "Enable/Disable follow playhead" #~ msgstr "Abilita/Disabilita il click audio" diff --git a/gtk2_ardour/po/nn.po b/gtk2_ardour/po/nn.po index 832c5d05b7..d83e138a19 100644 --- a/gtk2_ardour/po/nn.po +++ b/gtk2_ardour/po/nn.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk2_ardour 3.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-01-05 14:48+0100\n" "Last-Translator: Eivind ØdegÃ¥rd \n" "Language-Team: \n" @@ -407,7 +407,7 @@ msgstr "Fann ikkje menydefinisjonsfila til %1" msgid "%1 will not work without a valid ardour.menus file" msgstr "%1 verkar ikkje utan ei gyldig ardour.menus-fil" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 msgid "Add Track or Bus" msgstr "Legg til spor eller buss" @@ -443,8 +443,8 @@ msgstr "Bussar" msgid "Add:" msgstr "Legg til:" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 msgid "Options" msgstr "Val" @@ -458,21 +458,21 @@ msgid "Group:" msgstr "Gruppe:" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 msgid "Audio" msgstr "Lyd" #: 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "MIDI" @@ -499,7 +499,7 @@ msgstr "" "lyd- eller MIDI-spor i staden." #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "Normal" @@ -543,7 +543,7 @@ msgstr "8 kanalar" msgid "12 Channel" msgstr "12 kanalar" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "Eigen" @@ -632,7 +632,7 @@ msgid "Track" msgstr "Spor" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 msgid "Show" msgstr "Vis" @@ -640,94 +640,90 @@ msgstr "Vis" msgid "Re-analyze data" msgstr "Analyser data pÃ¥ nytt" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "knappen kan ikkje overvaka status for ikkje-eksisterande kontroll\n" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 msgid "audition" msgstr "lytting" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 msgid "solo" msgstr "solo" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 msgid "feedback" msgstr "feedback" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 msgid "Speaker Configuration" msgstr "Høgtalaroppsett" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "Temabehandlar" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "Snøggtastar" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "Innstillingar" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 #, fuzzy msgid "Add Tracks/Busses" msgstr "Spor/bussar" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "Om" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "Stader" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 msgid "Tracks and Busses" msgstr "Spor og bussar" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "Eigenskapar" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "Bundelordnar" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Stor klokke" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 #, fuzzy msgid "Audio Connections" msgstr "Lydtilkoplingar" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "Inngangstilkoplingar" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "Feil" -#: ardour_ui.cc:299 -msgid "could not initialize %1." -msgstr "greidde ikkje starta %1." - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "Startar lydmaskin" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "%1 er klar til bruk" -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 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 +737,23 @@ msgstr "" "Du kan finna ut kva minnegrensa er med 'ulimit -l'. Minnegrensa er vanlegvis " "kontrollert av %2" -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "Ikkje vis denne ruta att" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 msgid "Don't quit" msgstr "Ikkje avslutt" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 msgid "Just quit" msgstr "Berre avslutt" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 msgid "Save and quit" msgstr "Lagra og avslutt" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 msgid "" "%1 was unable to save your session.\n" "\n" @@ -771,15 +767,15 @@ msgstr "" "\n" "\"Berre avslutt\"-alternativet." -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 msgid "Please wait while %1 cleans up..." msgstr "Vent medan %1 ryddar opp..." -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 msgid "Unsaved Session" msgstr "Ulagra økt" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -797,7 +793,7 @@ msgstr "" "\n" "Kva vil du gjera?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -815,74 +811,74 @@ msgstr "" "\n" "Kva vil du gjera?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "SpørsmÃ¥l" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "frÃ¥kopla" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "JACK: %.1f kHz / %4.1f ms" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "JACK: % kHz / %4.1f ms" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 msgid "File:" msgstr "Fil:" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "BWF" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "WAV" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "WAV64" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "CAF" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "AIFF" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "iXML" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "RF64" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "32-flyt" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "24-heiltal" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "16-heiltal" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "DSP: %5.1f%%" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -893,33 +889,33 @@ msgstr "" "%% c:" "%%%" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 msgid "Disk: Unknown" msgstr "Disk: Ukjent" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "Disk: 24t+" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "Disk: >24t" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "Disk: %02dt:%02dm:%02ds" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, c-format msgid "Timecode|TC: %s" msgstr "Tidskode|TC: %s" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "Siste øktene" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" @@ -927,28 +923,28 @@ msgstr "" "%1 er ikkje kopla til JACK.\n" "Du kan ikkje opna eller lukka økter nÃ¥r det stÃ¥r slik til." -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Opna økt" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 msgid "%1 sessions" msgstr "%1 økter" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "" "Du kan ikkje leggja til eit spor eller ein buss nÃ¥r du ikkje har ei økt " "innlasta." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "greidde ikkje laga %1 nye miksa spor" msgstr[1] "ugreidde ikkje laga %1 nye miksa spor" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -960,25 +956,25 @@ msgstr "" "Du bør lagra %1, avslutta og starta\n" "omatt JACK med fleire portar." -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 msgid "You cannot add a track or bus without a session already loaded." msgstr "" "Du kan ikkje leggja til eit spor eller ein buss nÃ¥r du ikkje har ei økt " "innlasta." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "greidde ikkje laga nytt lydspor" msgstr[1] "greidde ikkje laga %1 nye lydspor" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "greidde ikkje laga ny lydbuss" msgstr[1] "greidde ikkje laga %1 nye lydbussar" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 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,7 +982,7 @@ msgstr "" "Lag eitt eller fleire spor før du prøver Ã¥ ta opp.\n" "Du kan gjera det med «Legg til spor eller buss» i økt-menyen." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" @@ -996,7 +992,7 @@ msgstr "" "\n" "%1" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -1008,19 +1004,19 @@ msgstr "" "ikkje var rask nok. Du kan lagra økta\n" "og/eller prøva Ã¥ kopla til JACK att ." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Greidde ikkje starta økta" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 msgid "Take Snapshot" msgstr "Ta snøggbilete" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 msgid "Name of new snapshot" msgstr "Namn pÃ¥ det nye snøggbiletet" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" @@ -1028,27 +1024,27 @@ msgstr "" "For Ã¥ tryggja kompatibiliteten med ymse system,\n" "kan ikkje namn pÃ¥ snøggbilete innehalda teiknet '%1'" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "Stadfest at du vil skriva over snøggbilete" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Dette snøggbiletet finst frÃ¥ før. Vil du skriva over det?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "Skriv over" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 msgid "Rename Session" msgstr "Døyp om økt" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 msgid "New session name" msgstr "Nytt øktnamn" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" @@ -1056,12 +1052,12 @@ msgstr "" "For Ã¥ tryggja kompatibiliteten med ymse system,\n" "kan ikkje namn pÃ¥ økter innehalda teiknet '%1'" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "Dette namnet er alt i bruk pÃ¥ ei anna mappe. Prøv pÃ¥ nytt." -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" @@ -1069,19 +1065,19 @@ msgstr "" "Fekk ikkje til Ã¥ døypa om denne økta.\n" "Her kan det vera noko skikkeleg rot." -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 msgid "Save Template" msgstr "Lagra mal" -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 msgid "Name for template:" msgstr "Namn pÃ¥ malen:" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-mal" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 msgid "" "This session\n" "%1\n" @@ -1091,52 +1087,52 @@ msgstr "" "%1,\n" "finst frÃ¥ før. Vil du opna henne?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 msgid "Open Existing Session" msgstr "Opna økt" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "Det finst inga økt i \"%1\"" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "Vent medan %1 lastar økta di" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "Feil ved portregistrering" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "Klikk pÃ¥ Lukk for Ã¥ prøva att." -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Økta \"%1 (snøggbilete %2)\" vart ikkje lasta" -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "Feil ved lasting" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "Klikk pÃ¥ Last omatt for Ã¥ prøva att." -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 msgid "Could not create session in \"%1\"" msgstr "Greidde ikkje laga økt i \"%1\"" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 msgid "No files were ready for clean-up" msgstr "Ingen filer var klare for rydding" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "Opprydding" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1148,19 +1144,19 @@ msgstr "" "Det kan hende dei inneheld bolkar\n" "som treng ubrukte lydfiler for Ã¥ eksistera." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "kilo" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "mega" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "giga" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 #, fuzzy msgid "" "The following file was deleted from %2,\n" @@ -1175,7 +1171,7 @@ msgstr[1] "" "Denne fila vart sletta frÃ¥%2,\n" "og frigjorde %3 %4byte lagringsplass" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 #, fuzzy msgid "" "The following file was not in use and \n" @@ -1214,11 +1210,11 @@ msgstr[1] "" "\n" "frigjer du %3 %4byte lagringsplass.\n" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 msgid "Are you sure you want to clean-up?" msgstr "Er du sikker pÃ¥ at du vil rydda opp?" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" @@ -1228,82 +1224,82 @@ msgstr "" "ALL angra- og gjer om-informasjon blir sletta om du ryddar.\n" "Etter opprydding blir alle ubrukte lydfiler flytte til ei \"daudlyd\"-mappe." -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "Ryddedialog" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 msgid "Cleaned Files" msgstr "Rydda filer" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "sletta fil" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 #, fuzzy msgid "Do you really want to stop the Video Server?" msgstr "Vil du verkeleg fjerna %1? %2?" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 #, fuzzy msgid "Yes, Stop It" msgstr "Ja, øydelegg det." -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "greidde ikkje opna %1" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "Opptaket stoppa fordi datamaskina di ikkje greidde Ã¥ henga med." -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1317,7 +1313,7 @@ msgstr "" "Det tyder at harddisksystemet ditt ikkje\n" "greidde lagra raskt nok til Ã¥ ta opp.\n" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1331,11 +1327,11 @@ msgstr "" "Det tyder at harddisksystemet ditt ikkje\n" "greidde lesa raskt nok til Ã¥ spela av.\n" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "Gjenoppretting etter krasj" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 #, fuzzy msgid "" "This session appears to have been in the\n" @@ -1354,19 +1350,19 @@ msgstr "" "deg, eller sjÃ¥ bort frÃ¥ sist opptak.\n" "Vel kva du vil gjera. \n" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "SjÃ¥ bort frÃ¥ krasjdata" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "Hent fram att etter krasj" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "Punktfrekvensen passar ikkje" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 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" @@ -1376,23 +1372,23 @@ msgstr "" "%2 køyrer pÃ¥ %3 Hz nett no. Viss du lastar denne økta,\n" "kan det henda lyden blir spelt med feil punktfrekvens.\n" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 msgid "Do not load session" msgstr "Ikkje last økta" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "Last økta likevel" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "Greidde ikkje kopla frÃ¥ JACK" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "Greidde ikkje kopla til JACK att" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1415,58 +1411,63 @@ msgstr "Grensesnitt: Greier ikkje setja opp redigeringa" msgid "UI: cannot setup mixer" msgstr "Grensesnitt: Greier ikkje setja opp miksaren" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "Grensesnitt: Greier ikkje setja opp miksaren" + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "Spel frÃ¥ spelehovudet" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Stopp avspelinga" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 msgid "Toggle record" msgstr "Skru pÃ¥/av opptak" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "Spel omrÃ¥de/utval" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "GÃ¥ til starten av økta" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "GÃ¥ til slutten av økta" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "Spel lykkje-omrÃ¥det" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" msgstr "" "MIDI-panikknSend note av og nullstill kontrollmeldingar pÃ¥ alle MIDI-kanalar" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "GÃ¥ til der du sist byrja avspeling" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 msgid "Playhead follows Range Selections and Edits" msgstr "Spelehovudet fylgjer omrÃ¥deval og redigeringar" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "Fornuftig inngangslytting" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "SlÃ¥ pÃ¥/av lydklikk" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" @@ -1474,7 +1475,7 @@ msgstr "" "NÃ¥r knappen er trykt inn, er noko i solo.\n" "Klikk for Ã¥ slÃ¥ av solo pÃ¥ alt." -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" @@ -1482,11 +1483,11 @@ msgstr "" "NÃ¥r knappen er trykt inn, blir noko lytta pÃ¥.\n" "Klikk for Ã¥ slÃ¥ av lyttinga." -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "NÃ¥r denne er pÃ¥, er det ei rundgangssløyfe." -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 #, fuzzy msgid "" "Primary Clock right-click to set display mode. Click to edit, click" @@ -1502,7 +1503,7 @@ msgstr "" "SjÃ¥ http://ardour.org/a3_features_clocks for " "fleire opplysingar." -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 #, fuzzy msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" @@ -1518,27 +1519,32 @@ msgstr "" "SjÃ¥ http://ardour.org/a3_features_clocks for " "fleire opplysingar." -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "Nullstill omhylling" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "[FEIL]:" -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "[Ã…TVARING]:" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "[INFO]:" -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "Autoretur" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "Fylg endringar" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1558,23 +1564,23 @@ msgstr "Set opp redigeringa" msgid "Setup Mixer" msgstr "Set opp miksaren" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "Oppdater øktliste" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 msgid "Don't close" msgstr "Ikkje lukk" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 msgid "Just close" msgstr "Berre lukk" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 msgid "Save and close" msgstr "Lagra og lukk" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "Denne skjermen er ikkje høg nok til Ã¥ visa miksarvindauga" @@ -1587,7 +1593,7 @@ msgstr "Økt" msgid "Sync" msgstr "Synk" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Val" @@ -1615,15 +1621,15 @@ msgstr "Filtype" msgid "Sample Format" msgstr "Punktformat" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "Kontrollflater" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Utvidingar" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "NivÃ¥mÃ¥ling" @@ -1639,7 +1645,7 @@ msgstr "Haldetid" msgid "Denormal Handling" msgstr "Handtering av unormale hendingar" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "Ny..." @@ -1682,8 +1688,8 @@ msgstr "Snøggbilete..." msgid "Save As..." msgstr "Lagra som..." -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 msgid "Rename..." msgstr "Døyp om..." @@ -1712,7 +1718,7 @@ msgid "Stem export..." msgstr "Staveksport..." #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Eksporter" @@ -1724,11 +1730,11 @@ msgstr "Rydd bort ubrukte kjelder..." msgid "Flush Wastebasket" msgstr "Tøm søppelkorga" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: 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:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "Treigskap" @@ -1736,8 +1742,8 @@ msgstr "Treigskap" msgid "Reconnect" msgstr "Kopla til att" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "Kopla frÃ¥" @@ -1753,7 +1759,7 @@ msgstr "Gje redigeringa mest plass" msgid "Show Toolbars" msgstr "Vis verktylinene" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 msgid "Window|Mixer" msgstr "Vindauga|miksar" @@ -1762,27 +1768,32 @@ msgstr "Vindauga|miksar" msgid "Toggle Editor+Mixer" msgstr "Legg redigeringsmiksaren pÃ¥ topp" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "Vindauga|miksar" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "MIDI-sporar" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "Prat" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 msgid "Help|Manual" msgstr "Hjelp|Rettleiing" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "Referanse" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Lagre" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1792,99 +1803,99 @@ msgstr "Lagre" msgid "Transport" msgstr "Speling" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "Stopp" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "Rull" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "Start/stopp" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 msgid "Start/Continue/Stop" msgstr "Start/hald fram/stopp" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 msgid "Stop and Forget Capture" msgstr "Stopp og gløym opptaket" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 msgid "Transition To Roll" msgstr "Overgang til rulling" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "Overgang til baklengs" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "Spel lykkje-omrÃ¥det" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 msgid "Play Selected Range" msgstr "Spel det valte omrÃ¥det" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 msgid "Play Selection w/Preroll" msgstr "Spel utvalet m/førrull" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "Skru pÃ¥ opptak" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 msgid "Start Recording" msgstr "Start opptak" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "Spol bakover" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "Spol sakte bakover" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "Spol fort bakover" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "Framover" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "Spol sakte framover" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "Spol fort framover" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "GÃ¥ til null" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "GÃ¥ til starten" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "GÃ¥ til slutten" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "GÃ¥ til Veggur" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "Fokuser pÃ¥ klokka" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1893,125 +1904,125 @@ msgstr "Fokuser pÃ¥ klokka" msgid "Timecode" msgstr "Tidskode" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 msgid "Bars & Beats" msgstr "Takter og taktslag" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 msgid "Minutes & Seconds" msgstr "Minutt og sekund" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "Punktprøver" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 msgid "Punch In" msgstr "SlÃ¥ inn" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "Inn" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 msgid "Punch Out" msgstr "SlÃ¥ ut" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "Ut" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "SlÃ¥ inn og ut" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 msgid "In/Out" msgstr "Inn/ut" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "Klikk" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 msgid "Auto Input" msgstr "Autoinngang" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 msgid "Auto Play" msgstr "Autospel" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "Synk oppstart til video" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 msgid "Time Master" msgstr "Hovudklokke" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 msgid "Toggle Record Enable Track %1" msgstr "Skru pÃ¥/av opptak for spor %1" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "Prosent" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Halvtonar" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "Send MTC (Midi Time Code)" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "Send MMC (Midi Machine Control)" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "Bruk MMC (Midi Machine Control)" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 msgid "Send MIDI Clock" msgstr "Send MIDI-klokke" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 msgid "Send MIDI Feedback" msgstr "Send MIDI-svar" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "Panikk" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 msgid "Wall Clock" msgstr "Veggur" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "Diskplass" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 msgid "DSP" msgstr "DSP" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 msgid "Buffers" msgstr "Bufrar" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "JACK-punktrate og -treigskap" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 msgid "Timecode Format" msgstr "Tidskodeformat" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 msgid "File Format" msgstr "Filformat" @@ -2027,11 +2038,11 @@ msgstr "" msgid "Internal" msgstr "Intern" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 msgid "Enable/Disable external positional sync" msgstr "Skru pÃ¥/av ekstern posisjonssynk" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "Ikkje mogleg Ã¥ synka til JACK: opp- og nedtrekk for video er fastsett" @@ -2061,7 +2072,7 @@ msgstr "Tempo" msgid "Meter" msgstr "Taktart" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2150,32 +2161,32 @@ msgid "hide track" msgstr "gøym spor" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 msgid "Automation|Manual" msgstr "Automasjon|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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "Spel" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "Skriv" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "Rør" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "???" @@ -2184,7 +2195,7 @@ msgid "clear automation" msgstr "tøm automasjon" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "Gøym" @@ -2205,7 +2216,7 @@ msgstr "Diskret" msgid "Linear" msgstr "Rettlinja" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "Modus" @@ -2222,13 +2233,13 @@ msgstr "Endra bundelen" msgid "Direction:" msgstr "Retning:" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "Inngang" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "Utgang" @@ -2238,8 +2249,8 @@ msgid "Edit" msgstr "Rediger" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "Slett" @@ -2407,7 +2418,7 @@ msgstr "Tid" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "Lengd" @@ -2653,17 +2664,17 @@ msgid "Ranges & Marks" msgstr "OmrÃ¥de og merke" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 msgid "Editor" msgstr "Redigering" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "Spel i lykkje" @@ -2689,8 +2700,8 @@ msgstr "Symmetrisk" msgid "Slow" msgstr "Sakte" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "Fort" @@ -2711,7 +2722,7 @@ msgstr "SlÃ¥ pÃ¥" msgid "Slowest" msgstr "Saktast" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "programmeringsfeil: " @@ -2828,7 +2839,7 @@ msgid "Select All in Track" msgstr "Vel heile sporet" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Vel alt" @@ -2880,15 +2891,15 @@ msgstr "Vel omrÃ¥de mellom spelehovudet og redigeringspunktet" msgid "Select" msgstr "Vel" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Klypp ut" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "Kopier" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Lim inn" @@ -3044,7 +3055,7 @@ msgstr "Gjer omatt" msgid "Redo (%1)" msgstr "Gjer omatt (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "Klon" @@ -3074,8 +3085,8 @@ msgstr "Slett speleliste" msgid "Keep Playlist" msgstr "Ha speleliste" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "Avbryt" @@ -3095,7 +3106,7 @@ msgstr "tøm spelelister" msgid "Please wait while %1 loads visual data." msgstr "Vent medan %1 lastar visuelle data" -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 msgid "Edit..." msgstr "Endra..." @@ -3144,7 +3155,7 @@ msgstr "Lag" msgid "Position" msgstr "Posisjon" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Skjer til" @@ -3157,7 +3168,7 @@ msgstr "Innvolum" msgid "Ranges" msgstr "OmrÃ¥de" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 msgid "Fades" @@ -3195,7 +3206,7 @@ msgstr "MIDI-oppsett" msgid "Misc Options" msgstr "Ymse val" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "Lytting" @@ -3236,8 +3247,8 @@ msgstr "Sekundærklokke" msgid "Separate" msgstr "Skil" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "Solo" @@ -3249,7 +3260,7 @@ msgstr "Underruter" msgid "Timecode fps" msgstr "Tidskode-RPS" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Høgd" @@ -3373,7 +3384,7 @@ msgstr "Spelehovudet til starten pÃ¥ omrÃ¥det" msgid "Playhead to Range End" msgstr "Spelehovudet til slutten av omrÃ¥det" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "Fjern markering" @@ -3641,9 +3652,9 @@ msgstr "Set inn tid" msgid "Toggle Active" msgstr "SlÃ¥ av/pÃ¥" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "Fjern" @@ -3651,19 +3662,19 @@ msgstr "Fjern" msgid "Fit Selected Tracks" msgstr "Tilpass dei valde spora" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "Størst" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "Større" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "Stor" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "Liten" @@ -3759,7 +3770,7 @@ msgstr "Spleis" msgid "Slide" msgstr "Gli" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "LÃ¥s" @@ -3933,7 +3944,7 @@ msgstr "Min:sek" msgid "Video Monitor" msgstr "Lytting" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -3944,7 +3955,7 @@ msgstr "Hev til toppen" #: editor_actions.cc:554 #, fuzzy -msgid "Framenumber" +msgid "Frame number" msgstr "Spor nummer" #: editor_actions.cc:555 @@ -4036,7 +4047,7 @@ msgstr "Fjern ubrukte" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Importer" @@ -4076,289 +4087,289 @@ msgstr "Lastar redigerinsbindingar frÃ¥ %1" msgid "Could not find editor.bindings in search path %1" msgstr "Fann ikkje editor.bindings i søkjestigen %1" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "Programmeringsfeil: %1: %2" -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "Hev" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 msgid "Raise to Top" msgstr "Hev til toppen" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "Lægste" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 msgid "Lower to Bottom" msgstr "Senk til botnen" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 msgid "Move to Original Position" msgstr "Flytt til opphavleg plass" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "Lim til takter og taktslag" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 msgid "Remove Sync" msgstr "Fjern synk" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Demp" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 msgid "Normalize..." msgstr "Normaliser..." -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "Baklengs" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 msgid "Make Mono Regions" msgstr "Lag mono-bolkar" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "Auk volumet" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "Mink volumet" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "Endra tonehøgd..." -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 msgid "Transpose..." msgstr "Transponer..." -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 msgid "Opaque" msgstr "Heildekkjande" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "Ton inn" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "Ton ut" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 msgid "Multi-Duplicate..." msgstr "Multi-kopier..." -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "Fyll sporet" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "Set lykkje-omrÃ¥de" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 msgid "Set Punch" msgstr "Set innslag" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 msgid "Add Single Range Marker" msgstr "Legg til einskild omrÃ¥demarkør" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 msgid "Add Range Marker Per Region" msgstr "Legg til omrÃ¥demarkør per bolk" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 msgid "Snap Position To Grid" msgstr "Fest posisjonen til gitteret" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 msgid "Close Gaps" msgstr "Steng gap" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "Rytmefinnar..." -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 msgid "Export..." msgstr "Eksporter..." -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 msgid "Separate Under" msgstr "Skil under" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 msgid "Set Fade In Length" msgstr "Endre inntoningslengd" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 msgid "Set Fade Out Length" msgstr "Endre uttoningslengd" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 msgid "Set Tempo from Region = Bar" msgstr "Set tempoet ut frÃ¥ at bolken = ei takt" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 msgid "Split at Percussion Onsets" msgstr "Del opp bolkane der perkusjonen kjem inn" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 msgid "List Editor..." msgstr "Listeredigering..." -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "Eigenskapar..." -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "Miks ned omrÃ¥det (med signalhandsaming)" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "Nedmiks (utan signalhandsaming)" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "Kombiner" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "Løys opp" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "Spektrumanalyse..." -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 msgid "Reset Envelope" msgstr "Nullstill omhylling" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 msgid "Reset Gain" msgstr "Nullstill volum" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 msgid "Envelope Active" msgstr "Omhylling pÃ¥" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 msgid "Quantize..." msgstr "Gitterfordel..." -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "Set inn koplingsendring..." -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "Fjern lenkjer frÃ¥ andre kopiar" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "Skjer bort stille..." -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 msgid "Set Range Selection" msgstr "Definer omrÃ¥deval" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 msgid "Nudge Later" msgstr "Skubb seinare" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 msgid "Nudge Earlier" msgstr "Skubb tidlegare" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 msgid "Nudge Later by Capture Offset" msgstr "Skubb seinare etter innspelingsforskuvinga" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 msgid "Nudge Earlier by Capture Offset" msgstr "Skubb tidlegare etter innspelingsforskuvinga" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "Skjer til lykkja" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "Skjer til innslaget" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 msgid "Trim to Previous" msgstr "Skjer til førre" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 msgid "Trim to Next" msgstr "Skjer til neste" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 msgid "Insert Region From Region List" msgstr "Set inn bolk frÃ¥ lista" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 msgid "Set Sync Position" msgstr "Set synkposisjon" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "Plasser signaltopp" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "Del opp" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 msgid "Trim Start at Edit Point" msgstr "Skjer til starten ved redigeringspunktet" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 msgid "Trim End at Edit Point" msgstr "Skjer til slutten ved redigeringspunktet" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 msgid "Align Start" msgstr "Juster starten" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 msgid "Align Start Relative" msgstr "Juster starten relativt" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 msgid "Align End" msgstr "Juster slutten" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 msgid "Align End Relative" msgstr "Juster slutten relativt" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 msgid "Align Sync" msgstr "Juster synk" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 msgid "Align Sync Relative" msgstr "Juster synken relativt" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "Vel topp..." @@ -4387,32 +4398,32 @@ msgstr "" "Denne økta bruker alt ei kjeldefil som heiter %1. Vil du importera %2 som ny " "fil, eller hoppa over ho?" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "Avbryt import" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Redigering: Kan ikkje opna fila \"%1\" (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "Avbryt heile importen" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "Ikkje set inn" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "Set inn alle utan Ã¥ spørja" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 msgid "Sample rate" msgstr "Punktfrekvens" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4420,7 +4431,7 @@ msgstr "" "%1\n" "Denne lydfila har ikkje same punktfrekvens som økta du arbeider med!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "Set inn likevel" @@ -4457,31 +4468,31 @@ msgstr "kopier tempomerke" msgid "move tempo mark" msgstr "flytt tempomerke" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "endra inntoningslengd" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "endra uttoningslengd" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "flytt markør" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "Feil med tidsstrekkinga" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 msgid "programming_error: %1" msgstr "programming_error: %1" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "nytt omrÃ¥demerke" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 msgid "rubberband selection" msgstr "gummistrikkval" @@ -4550,7 +4561,7 @@ msgid "Sharing Solo?" msgstr "Deler solo?" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "Ta opp" @@ -4621,7 +4632,7 @@ msgid "end" msgstr "slutt" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "legg til merke" @@ -4629,7 +4640,7 @@ msgstr "legg til merke" msgid "range" msgstr "omrÃ¥de" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "fjern markør" @@ -4709,8 +4720,8 @@ msgstr "Døyp om merke" msgid "Rename Range" msgstr "Døyp om omrÃ¥det" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "Døyp om" @@ -4846,7 +4857,7 @@ msgstr "senk bolkane til botnlaget" msgid "Rename Region" msgstr "Døyp om bolken" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 msgid "New name:" msgstr "Nytt namn:" @@ -5024,7 +5035,7 @@ msgstr "" "(Dette er endeleg og kan ikkje angrast)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "Nei, ikkje gjer noko." @@ -5216,11 +5227,11 @@ msgstr "Ok" msgid "close region gaps" msgstr "steng gap mellom bolkane" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "Det ville vore dÃ¥rleg nytt..." -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5240,7 +5251,7 @@ msgstr "" msgid "tracks" msgstr "spor" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 msgid "track" msgstr "spor" @@ -5248,7 +5259,7 @@ msgstr "spor" msgid "busses" msgstr "bussar" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "buss" @@ -5290,7 +5301,7 @@ msgstr "" msgid "Yes, remove them." msgstr "Ja, slett dei." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Ja, slett det." @@ -5361,7 +5372,7 @@ msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" "Lengd pÃ¥ uttoninga pÃ¥ bolken (eining: sekundærklokke), () viss avskrudd" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "V" @@ -5378,8 +5389,9 @@ msgstr "G" msgid "Region position glued to Bars|Beats time?" msgstr "Er bolkplasseringa limt til takter|taktslag-tida?" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "M" @@ -5448,7 +5460,8 @@ msgstr "Namn pÃ¥ spor/buss" msgid "Track/Bus visible ?" msgstr "Er sporet/bussen synleg?" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "A" @@ -5456,7 +5469,7 @@ msgstr "A" msgid "Track/Bus active ?" msgstr "Er sporet/bussen aktiv?" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 msgid "I" msgstr "I" @@ -5464,7 +5477,7 @@ msgstr "I" msgid "MIDI input enabled" msgstr "MIDI-inngang skrudd pÃ¥" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "R" @@ -5477,7 +5490,7 @@ msgstr "Opptak skrudd pÃ¥" msgid "Muted" msgstr "Dempa" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "S" @@ -5489,7 +5502,7 @@ msgstr "Solo" msgid "SI" msgstr "SI" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 msgid "Solo Isolated" msgstr "Isolert solo" @@ -5774,140 +5787,144 @@ msgid "192000Hz" msgstr "192000Hz" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Ingen" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "Trekantbølgje" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "Firkantbølgje" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "Forma" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "Avspeling/opptak pÃ¥ 1 eining" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "Avspeling/opptak pÃ¥ 2 einingar" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "Berre avspeling" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "Berre opptak" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "sekv" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "rÃ¥" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "Drivar:" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 msgid "Audio Interface:" msgstr "Lydkort:" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "Punktfrekvens:" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "Bufferstorleik:" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "Kor mange bufrar:" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "Omrentleg treigskap:" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 msgid "Audio mode:" msgstr "Lydmodus:" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "OversjÃ¥" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "Klienttidsgrense" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "Kor mange portar:" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "MIDI-drivar" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "Utjamning:" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "" "Fann ingen JACK-tenar pÃ¥ denne maskina. Installer JACK og start pÃ¥ nytt." -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "Tenar:" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "Inneining:" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "Uteining:" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "Treigskap for maskinvare-inngangar:" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "punkt" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "Treigskap for maskinvare-utgangar:" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "Eining" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "Avansert" -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "greier ikkje opna JACK-rc-fila %1 for Ã¥ lagra val." -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 #, fuzzy msgid "" "You do not have any audio devices capable of\n" @@ -5938,32 +5955,32 @@ msgstr "" "eller opptak, men ikkje bÃ¥e deler, kan du starte JACK\n" "før du startar Ardour, og sÃ¥ velja rett lydeining." -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "Ingen brukande lydeiningar" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "Det ser ut som JACK ikkje er med i %1-bundelen" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "Du mÃ¥ velja ei lydeining fyrst." -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "Lydeininga \"%1\" er ukjend for denne datamaskina." -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "Lydoppsett-verdien for %1 manglar data" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" "oppsettsfilene inneheld ein ikkje-eksisterande stig til JACK-tenaren (%1)" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "Kanalar:" @@ -6119,9 +6136,9 @@ msgid "Folder:" msgstr "Mappe:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Bla gjennom" @@ -6248,6 +6265,11 @@ msgstr "Val for FLAC" msgid "Broadcast Wave options" msgstr "Val for kringkastingsformat" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "Vil du verkeleg fjerna %1? %2?" + #: export_preset_selector.cc:28 msgid "Preset" msgstr "Ferdigoppsett" @@ -6260,6 +6282,11 @@ msgstr "" "Greidde ikkje lasta dei valde ferdigoppsetta!\n" "Kan henda dei viser til eit format som har vorte fjerna?" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "Vil du verkeleg fjerna %1? %2?" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "Vis tider som:" @@ -6272,36 +6299,50 @@ msgstr "til" msgid "Range" msgstr "OmrÃ¥de" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "Programmeringsfeil: %1 (%2)" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +#, fuzzy +msgid "%1" +msgstr "%" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "-ê" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "Volumautomasjonsmodus" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "Automasjonstype for volum" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "Abs" -#: gain_meter.cc:334 -msgid "-Inf" -msgstr "-ê" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "S" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "T" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "W" @@ -6313,7 +6354,7 @@ msgstr "Ferdiginnstillingar" msgid "Switches" msgstr "Brytarar" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "Kontrollar" @@ -6341,63 +6382,63 @@ msgstr "Lydtilkoplingar" msgid "MIDI Connection Manager" msgstr "MIDI-tilkoplingar" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "port" -#: group_tabs.cc:306 +#: group_tabs.cc:308 msgid "Selection..." msgstr "Utval..." -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "Opptak pÃ¥..." -#: group_tabs.cc:308 +#: group_tabs.cc:310 msgid "Soloed..." msgstr "Solo..." -#: group_tabs.cc:314 +#: group_tabs.cc:316 msgid "Create New Group ..." msgstr "Lag ny gruppe..." -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "Lag ny gruppe frÃ¥" -#: group_tabs.cc:318 +#: group_tabs.cc:320 msgid "Edit Group..." msgstr "Rediger gruppe..." -#: group_tabs.cc:319 +#: group_tabs.cc:321 msgid "Collect Group" msgstr "Samla gruppa" -#: group_tabs.cc:320 +#: group_tabs.cc:322 msgid "Remove Group" msgstr "Fjern gruppa" -#: group_tabs.cc:323 +#: group_tabs.cc:325 msgid "Remove Subgroup Bus" msgstr "Fjern subgruppe-buss" -#: group_tabs.cc:325 +#: group_tabs.cc:327 msgid "Add New Subgroup Bus" msgstr "Legg til subgruppe-buss" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "Legg til ny aux-buss (før volum)" -#: group_tabs.cc:328 +#: group_tabs.cc:330 msgid "Add New Aux Bus (post-fader)" msgstr "Legg til aux-buss (etter volum)" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "Skru pÃ¥ alle grupper" -#: group_tabs.cc:335 +#: group_tabs.cc:337 msgid "Disable All Groups" msgstr "SlÃ¥ av alle gruppene" @@ -6493,11 +6534,11 @@ msgstr "Importerer fil: %1 av %2" msgid "I/O selector" msgstr "I/U-veljar" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "%1-inngang" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "%1-utgang" @@ -6572,7 +6613,7 @@ msgstr[1] "%1 punkt" msgid "Reset" msgstr "Nullstill" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "Programmeringsfeil: %1 (%2)" @@ -6600,63 +6641,63 @@ msgstr "Komponist:" msgid "Pre-Emphasis" msgstr "Før-framheving for CD" -#: location_ui.cc:310 +#: location_ui.cc:314 msgid "Remove this range" msgstr "Fjern dette omrÃ¥det" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "Starttid - midtklikk for Ã¥ gÃ¥ hit" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "Sluttid - midtklikk for Ã¥ gÃ¥ hit" -#: location_ui.cc:315 +#: location_ui.cc:319 msgid "Set range start from playhead location" msgstr "Set omrÃ¥destart ved spelehovudet" -#: location_ui.cc:316 +#: location_ui.cc:320 msgid "Set range end from playhead location" msgstr "Set omrÃ¥deslutt ved spelehovudet" -#: location_ui.cc:320 +#: location_ui.cc:324 msgid "Remove this marker" msgstr "Fjern denne markøren" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "Posisjon - midtklikk for Ã¥ gÃ¥ hit" -#: location_ui.cc:323 +#: location_ui.cc:327 msgid "Set marker time from playhead location" msgstr "Set markørtid ved spelehovudet" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "Du kan ikkje leggja ein CD-markør pÃ¥ starten av økta" -#: location_ui.cc:708 +#: location_ui.cc:720 msgid "New Marker" msgstr "Nytt merke" -#: location_ui.cc:709 +#: location_ui.cc:721 msgid "New Range" msgstr "Nytt omrÃ¥de" -#: location_ui.cc:722 +#: location_ui.cc:734 msgid "Loop/Punch Ranges" msgstr "Lykkje-/innslagsomrÃ¥de" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "Markørar (inkl. CD-indeks)" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "Bolkar (inkl. CD-sporbolkar)" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "legg til omrÃ¥demarkørar" @@ -6741,19 +6782,19 @@ msgstr "" "og kopla til %1 pÃ¥ nytt, eller avslutta %1 no. Du kan ikkje lagra økta\n" "di no, fordi dÃ¥ mistar me all informasjon om tilkoplingar.\n" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr " (bygd med " -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr " og GCC-version " -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "Copyright (C) 1999-2012 Paul Davis" -#: main.cc:505 +#: main.cc:501 msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" @@ -6761,30 +6802,34 @@ msgstr "" "Nokre deler (C) Steve Harris, Ari Johnson, Brett Viren, Joel Baker, Robin " "Gareus" -#: main.cc:507 +#: main.cc:503 msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "%1 har ABSOLUTT INGEN GARANTI" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" "mogleik for sal eller bruk til eit spesielt føremÃ¥l er heller ikkje " "garantert." -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "Dette er gratis programvare, og du mÃ¥ gjerne gje henne vidare" -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "" "pÃ¥ visse vilkÃ¥r, sjÃ¥ kjeldekoden for kopierings- og vidareformidlingsvilkÃ¥r. " -#: main.cc:519 +#: main.cc:513 +msgid "could not initialize %1." +msgstr "greidde ikkje starta %1." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "Kan ikkje xinstallera SIGPIPE-feilhandterar" -#: main.cc:525 +#: main.cc:528 #, fuzzy msgid "could not create %1 GUI" msgstr "greidde ikkje laga Ardour-brukarflate" @@ -6793,7 +6838,7 @@ msgstr "greidde ikkje laga Ardour-brukarflate" msgid "Display delta to edit cursor" msgstr "Vis delta til redigeringspunktet" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "MarkørTekst" @@ -7289,7 +7334,7 @@ msgstr "Klikk for Ã¥ velja ei mappe til" msgid "Missing Plugins" msgstr "Manglande utvidingar" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "OK" @@ -7361,20 +7406,20 @@ msgstr "Lasta miksarbindingar frÃ¥ %1" msgid "Could not find mixer.bindings in search path %1" msgstr "Fann ikkje mixer.bindings i søkjestigen %1" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "før" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 msgid "Comments" msgstr "Kommentarar" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "Klikk for Ã¥ endra breidd pÃ¥ denne miksarstripa." -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." @@ -7382,59 +7427,59 @@ msgstr "" "\n" "%1-%2-klikk for Ã¥ endra breidda pÃ¥ alle stripene." -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 msgid "Hide this mixer strip" msgstr "Gøym denne miksarstripa" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 msgid "Click to select metering point" msgstr "Klikk for Ã¥ velja mælepunkt" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "gnagnni" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "Isoler solo" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "LÃ¥s solostatus" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "lÃ¥s" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 msgid "iso" msgstr "iso" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 msgid "Mix group" msgstr "Miksgruppe" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 msgid "Phase Invert" msgstr "Polaritetsvending" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 msgid "Solo Safe" msgstr "Solo-sikker" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "Gruppe" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 msgid "Meter Point" msgstr "Mælepunkt" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 msgid "Enable/Disable MIDI input" msgstr "SlÃ¥ pÃ¥/av MIDI-inngang" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 msgid "" "Aux\n" "Sends" @@ -7442,139 +7487,152 @@ msgstr "" "Aux\n" "send" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 msgid "Snd" msgstr "Snd" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "Ikkje tilkopla JACK - I/U-endringar er ikkje mogleg" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "INNGANG til %1" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "UTGANG frÃ¥ %1" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 msgid "Disconnected" msgstr "FrÃ¥kopla" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 msgid "*Comments*" msgstr "*Kommentarar*" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 msgid "Cmt" msgstr "Kmt" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "*Kmt*" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "Klikk for Ã¥ leggja til/redigera kommentarar" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr ": rediger kommentarar" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "Grp" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "~G" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 msgid "Comments..." msgstr "Merknader …" -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 msgid "Save As Template..." msgstr "Lagra som mal..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "Aktiv" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "Juster treigskap..." -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "Vern mot unormalar" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 msgid "Remote Control ID..." msgstr "Fjernstyrings-ID..." -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 msgid "in" msgstr "inn" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "etter" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 msgid "out" msgstr "ut" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "eigen" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 msgid "pr" msgstr "fø" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 msgid "po" msgstr "et" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 msgid "o" msgstr "" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "Disk" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "EL" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "FL" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 msgid "D" msgstr "D" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 #, fuzzy msgid "i" msgstr "inn" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 msgid "Pre-fader" msgstr "Før volumkontroll" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 msgid "Post-fader" msgstr "Etter volumkontroll" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "Kanal %1" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "fann ikkje sporvisingslisteobjekt for omdøypt stripe!" @@ -7583,10 +7641,69 @@ msgstr "fann ikkje sporvisingslisteobjekt for omdøypt stripe!" msgid "-all-" msgstr "-alle-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "Striper" +#: meter_strip.cc:764 +#, fuzzy +msgid "Variable height" +msgstr "høgda" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "kort" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +#, fuzzy +msgid "VU" +msgstr "V" + #: monitor_section.cc:62 msgid "SiP" msgstr "Spp" @@ -7975,7 +8092,7 @@ msgstr "" msgid "Panner (2D)" msgstr "Panorering (2D)" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "Forbikopla" @@ -8151,7 +8268,7 @@ msgstr "Etter kategori" msgid "Eh? LADSPA plugins don't have editors!" msgstr "Hm? LADSPA-utvidingar har ikkje redigering!" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " @@ -8164,7 +8281,7 @@ msgstr "" msgid "unknown type of editor-supplying plugin" msgstr "ukjent redigerbar utvidingstype" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " @@ -8173,23 +8290,23 @@ msgstr "" "ukjend type utviding med redigering (tips: linuxVST-utvidingar er ikkje " "støtta i denne versjonen av Ardour)" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "create_lv2_editor oppkalla pÃ¥ ikkje-LV2-utviding" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "Legg til" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 msgid "Description" msgstr "Skildring" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 msgid "Plugin analysis" msgstr "Analyse av programutvidingar" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" @@ -8197,23 +8314,23 @@ msgstr "" "Førehandsoppsett (viss dei finst) for utvidinga\n" "(BÃ¥de frÃ¥ produsent og brukarar)" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 msgid "Save a new preset" msgstr "Lagra nytt ferdigoppsett" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "Lagra ferdigoppsettet" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "Slett dette ferdigoppsett" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "Skru av signalhandsaminga Ã¥t utvidinga" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" @@ -8221,29 +8338,41 @@ msgstr "" "Klikk for Ã¥ gje utvidinga lov til Ã¥ ta imot tastetrykk som %1 vanlegvis " "bruker som snøggtastar" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "Klikk for Ã¥ skru av/pÃ¥ denne utvidinga" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "utreigskap (%1 punkt)" msgstr[1] "treigskap (%1 punkt)" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "treigskap (%1 ms)" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 msgid "Edit Latency" msgstr "Endra treigskap" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "Fann ikkje ferdiginnstillinga %1" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "Klikk for Ã¥ bruka snøggtastane som vanleg i %1" @@ -8347,46 +8476,46 @@ msgstr "Lyttar etter signal..." msgid "Port Insert " msgstr "Portinnstikk" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 msgid "Sources" msgstr "Kjelder" -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "MÃ¥l" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "Legg til %s %s" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, c-format msgid "Rename '%s'..." msgstr "Døyp om '%s'..." -#: port_matrix.cc:451 +#: port_matrix.cc:472 msgid "Remove all" msgstr "Fjern alt" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, c-format msgid "%s all" msgstr "%s alt" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "Oppdater" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "Vis individuelle portart" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "Flipp" -#: port_matrix.cc:702 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." @@ -8394,33 +8523,35 @@ msgstr "" "Du kan ikkje leggja til ein port her, fordi den fyrste signalprosessen pÃ¥ " "sporet eller bussen ikkje godtek det nye oppsettet." -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "Kan ikkje leggja til port" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "Ikkje lov Ã¥ fjerna portar" -#: port_matrix.cc:728 +#: port_matrix.cc:749 +#, fuzzy msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" "Du kan ikkje fjerna denne porten, fordi den fyrste utvidinga pÃ¥ sporet eller " "bussen ikkje godtek det nye talet pÃ¥ inngangar." -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, c-format msgid "Remove '%s'" msgstr "Fjern '%s'" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, c-format msgid "%s all from '%s'" msgstr "%s alt frÃ¥ '%s'" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 msgid "channel" msgstr "kanal" @@ -8432,36 +8563,36 @@ msgstr "Ingen portar Ã¥ kopla til." msgid "There are no %1 ports to connect." msgstr "Ingen %1-portar Ã¥ kopla til." -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 msgid "Show All Controls" msgstr "Vis alle kontrollar" -#: processor_box.cc:375 +#: processor_box.cc:376 msgid "Hide All Controls" msgstr "Gøym alle kontrollar" -#: processor_box.cc:464 +#: processor_box.cc:465 msgid "on" msgstr "pÃ¥" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "av" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" @@ -8469,15 +8600,15 @@ msgstr "" "Høgreklikk for Ã¥ leggja til/fjerna/redigera\n" "utvidingar, innstikk, send og meir" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "Utvidinga samsvarar ikkje" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "Du prøvde Ã¥ leggja til utvidinga \"%1\" i skuffen %2.\n" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" @@ -8485,19 +8616,19 @@ msgstr "" "\n" "Denne utvidinga har:\n" -#: processor_box.cc:1196 +#: processor_box.cc:1209 msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "\t%1 MIDI-inngang\n" msgstr[1] "\t%1 MIDI-inngangar\n" -#: processor_box.cc:1200 +#: processor_box.cc:1213 msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" msgstr[0] "\t%1 lydinngang\n" msgstr[1] "\t%1 lydinngangar\n" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" @@ -8505,19 +8636,19 @@ msgstr "" "\n" "men pÃ¥ innsetingspunktet er det:\n" -#: processor_box.cc:1206 +#: processor_box.cc:1219 msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "\t%1 MIDI-kanal\n" msgstr[1] "\t%1 MIDI-kanalar\n" -#: processor_box.cc:1210 +#: processor_box.cc:1223 msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "\t%1 lydkanal\n" msgstr[1] "\t%1 lydkanalar\n" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" @@ -8525,11 +8656,11 @@ msgstr "" "\n" "%1 greier ikkje setja inn utvidinga her.\n" -#: processor_box.cc:1249 +#: processor_box.cc:1262 msgid "Cannot set up new send: %1" msgstr "Greier ikkje setja opp ny send: %1" -#: processor_box.cc:1581 +#: processor_box.cc:1594 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" @@ -8539,19 +8670,19 @@ msgstr "" "signal-omdirigeringar, fordi inn- og utgangane\n" "ikkje verkar skikkeleg dÃ¥." -#: processor_box.cc:1765 +#: processor_box.cc:1778 msgid "Rename Processor" msgstr "Døyp om handsaming" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "Det finst minst 100 IU-objekt med namn som %1 - namnet er ikkje endra" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "greidde ikkje laga instikkpunkt for utvidinga" -#: processor_box.cc:1941 +#: processor_box.cc:1954 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" @@ -8561,7 +8692,7 @@ msgstr "" "tavla, truleg fordi I/U-oppsettet for utvidingane\n" "ikkje passar med oppsettet for dette sporet." -#: processor_box.cc:1987 +#: processor_box.cc:2000 msgid "" "Do you really want to remove all processors from %1?\n" "(this cannot be undone)" @@ -8569,15 +8700,15 @@ msgstr "" "Vil du verkeleg fjerna alle handsamingar frÃ¥ %1?\n" "(Du kan ikkje angra)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "Ja, slett alle" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 msgid "Remove processors" msgstr "Fjern handsamingar" -#: processor_box.cc:2008 +#: processor_box.cc:2021 msgid "" "Do you really want to remove all pre-fader processors from %1?\n" "(this cannot be undone)" @@ -8585,7 +8716,7 @@ msgstr "" "Vil du verkeleg fjerna alle før-dempar-handsamingar frÃ¥ %1?\n" "(Du kan ikkje angra)" -#: processor_box.cc:2011 +#: processor_box.cc:2024 msgid "" "Do you really want to remove all post-fader processors from %1?\n" "(this cannot be undone)" @@ -8593,52 +8724,52 @@ msgstr "" "Vil du verkeleg fjerna alle før-dempar-handsamingar frÃ¥ %1?\n" "(Du kan ikkje angra)" -#: processor_box.cc:2198 +#: processor_box.cc:2200 msgid "New Plugin" msgstr "Ny utviding" -#: processor_box.cc:2201 +#: processor_box.cc:2203 msgid "New Insert" msgstr "Nytt innstikk" -#: processor_box.cc:2204 +#: processor_box.cc:2206 msgid "New External Send ..." msgstr "Ny ekstern send..." -#: processor_box.cc:2208 +#: processor_box.cc:2210 msgid "New Aux Send ..." msgstr "Ny aux-send..." -#: processor_box.cc:2212 +#: processor_box.cc:2214 msgid "Clear (all)" msgstr "Tøm (alt)" -#: processor_box.cc:2214 +#: processor_box.cc:2216 msgid "Clear (pre-fader)" msgstr "Fjern (før-dempar)" -#: processor_box.cc:2216 +#: processor_box.cc:2218 msgid "Clear (post-fader)" msgstr "Fjern (etter-dempar)" -#: processor_box.cc:2242 +#: processor_box.cc:2244 msgid "Activate All" msgstr "SlÃ¥ pÃ¥ alle" -#: processor_box.cc:2244 +#: processor_box.cc:2246 msgid "Deactivate All" msgstr "SlÃ¥ av alle" -#: processor_box.cc:2246 +#: processor_box.cc:2248 msgid "A/B Plugins" msgstr "A/B programutvidingar" -#: processor_box.cc:2255 +#: processor_box.cc:2257 #, fuzzy msgid "Edit with generic controls..." msgstr "Rediger med grunnleggande kontrollar..." -#: processor_box.cc:2531 +#: processor_box.cc:2557 msgid "%1: %2 (by %3)" msgstr "%1: %2 (av %3)" @@ -8798,7 +8929,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -8887,7 +9018,7 @@ msgstr "Største tal pÃ¥ samtidige økter" msgid "Click gain level" msgstr "Klikkvolum" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Automasjon" @@ -9115,92 +9246,96 @@ msgstr "Flytt relevant automasjon saman med lydbolkane" msgid "Show meters on tracks in the editor" msgstr "Vis mælarar pÃ¥ spor i redigeringa" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 #, fuzzy msgid "whenever they overlap in time" msgstr "kort ned den overlappa nye noten" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "FÃ¥ gummistrikkval-rektangelet til Ã¥ festa til gitteret" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 msgid "Show waveforms in regions" msgstr "Vis bylgjeformer i bolkane" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 msgid "Show gain envelopes in audio regions" msgstr "Vis lydomhylling i lydbolkane" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "i alle modi" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "berre i bolkvolum-modus" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 msgid "Waveform scale" msgstr "Bylgjeskala" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "rettlinja" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "logaritmisk" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 msgid "Waveform shape" msgstr "Bylgjeform" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 msgid "traditional" msgstr "tradisjonell" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 msgid "rectified" msgstr "innretta" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "Vis bylgjeformer ved opptak" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "Vis zoom-verktylina" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "Fargelegg bolkar med sporfarga" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "Oppdater redigeringsvindauga nÃ¥r du dreg samandraget" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "Samkøyr redigeringa og kanalrekkjefylgja pÃ¥ miksaren" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "Samkøyr redigeringa og miksarvalet" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 msgid "Name new markers" msgstr "Døyp nye markørar" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9212,335 +9347,420 @@ msgstr "" "\n" "Du kan alltid døypa om markørar ved Ã¥ høgreklikka pÃ¥ dei." -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "Autorull redigeringsvindauga nÃ¥r du dreg nær kantane" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "Bufring" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 msgid "Record monitoring handled by" msgstr "Opptakslyttinga blir handtert av" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 msgid "ardour" msgstr "ardour" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 msgid "audio hardware" msgstr "lydmaskinvare" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 msgid "Tape machine mode" msgstr "Bandopptakarmodus" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "Tilkopling av spor og bussar" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "Kopla til master- og lyttebussane automatisk" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 msgid "Connect track inputs" msgstr "Kopla sporinngangane" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 msgid "automatically to physical inputs" msgstr "automatisk til fysiske inngangar" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "manuelt" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "Kopla til spor- og bussutgangar" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 msgid "automatically to physical outputs" msgstr "automatisk til fysiske inngangar" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 msgid "automatically to master bus" msgstr "automatisk til masterbussen" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 msgid "Denormals" msgstr "Unormalar" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "Bruk likestraumsbias for Ã¥ verna mot unormalar" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "Prosessorhandtering" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "inga prosessorhandtering" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "bruk SpylTilNull" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "bruk UnormalarErNull" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "bruk SpylTilNull og UnormalarErNull" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 msgid "Silence plugins when the transport is stopped" msgstr "Demp lyden frÃ¥ utvidingar ved stopp" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "Gjer nye utvidingar aktive" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "Skru pÃ¥ automatisk analyse av lyd" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "Kopier manglande bolk-kanalar" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "Solo / demp" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "Demping for solo-pÃ¥-plass (dB)" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "Solo-kontrollar er lyttekontrollar" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 msgid "Listen Position" msgstr "Lytteposisjon" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 msgid "after-fader (AFL)" msgstr "etterlytting (AFL)" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 msgid "pre-fader (PFL)" msgstr "førlytting (PFL)" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "Førlyttingssignal kjem frÃ¥ " -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 msgid "before pre-fader processors" msgstr "før før-volum-handsamingar" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "før-volum, men etter før-volum-signalhandsaming" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "AFL-signal kjem frÃ¥ " -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 msgid "immediately post-fader" msgstr "rett etter volum" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 msgid "after post-fader processors (before pan)" msgstr "etter etter-volum-signalprosessar (før panorering)" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "Eksklusiv solo" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "Vis solodemping" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "Solo overstyrer demping" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "Standard spor- og bussdempeval" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "Demping verkar pÃ¥ send før volum" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "Demping verkar pÃ¥ send etter volum" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 msgid "Mute affects control outputs" msgstr "Demping pÃ¥verkar kontrollutgangane" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "Demping verkar pÃ¥ hovudutgangar" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "Send MIDI-tidskode" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "Prosentdel til kvar side av normal transportfart for Ã¥ senda MTC" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "Lyd MIDI-maskinkontrollkommandoar" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "Send MIDI-maskinkontrollkommandoar" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 msgid "Send MIDI control feedback" msgstr "Send MIDI-kontrollsvar" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "ID for innkomande MMC-eining" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "ID for utgÃ¥ande MMC-eining" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "Tidleg programendring" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "Vis fyrste MIDI-bank/program som 0" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "Aldri vis periodiske MIDI-meldingar (MTC, MIDI-klokke)" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 msgid "Sound MIDI notes as they are selected" msgstr "Lytt pÃ¥ MIDI-notar medan du vel dei" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 msgid "User interaction" msgstr "Brukarsamhandling" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "Tastatur" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 msgid "Control surface remote ID" msgstr "Fjernstyrings-ID for kontrollflate" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "fastsett av brukaren" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "fylgjer miksaren" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "fylgjer redigeringa" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 #, fuzzy msgid "Preferences|GUI" msgstr "Innstillingar" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "Vis musepeikaren grafisk nÃ¥r han er over ulike smÃ¥program" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "Vis verktøytips nÃ¥r peikaren er over ein kontroll" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "Brukarflate" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 msgid "Mixer Strip" msgstr "Miksarstripe" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 msgid "Use narrow strips in the mixer by default" msgstr "Bruk smale miksarstriper i miksaren som standard" -#: rc_option_editor.cc:1898 -msgid "Meter hold time" +#: rc_option_editor.cc:1906 +#, fuzzy +msgid "Peak hold time" msgstr "Hald nivÃ¥toppar" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 msgid "short" msgstr "kort" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "middels" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "lenge" -#: rc_option_editor.cc:1912 -msgid "Meter fall-off" +#: rc_option_editor.cc:1920 +#, fuzzy +msgid "DPM fall-off" msgstr "Slepp nivÃ¥toppar" -#: rc_option_editor.cc:1918 -msgid "slowest" -msgstr "saktast" +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" -msgstr "sakte" +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" +msgstr "" -#: rc_option_editor.cc:1921 -msgid "fast" -msgstr "snøgt" +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" -#: rc_option_editor.cc:1922 -msgid "faster" -msgstr "snøggare" +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" + +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" -#: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "snøggast" +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 +#, fuzzy +msgid "Peak threshold [dBFS]" +msgstr "Toppterskel" + +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" + +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -9550,11 +9770,11 @@ msgstr "lytt pÃ¥ denne bolken" msgid "Position:" msgstr "Posisjon:" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Slutt:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "Lengd:" @@ -9578,23 +9798,23 @@ msgstr "Kjelder:" msgid "Source:" msgstr "Kjelde:" -#: region_editor.cc:167 +#: region_editor.cc:166 msgid "Region '%1'" msgstr "Bolk '%1'" -#: region_editor.cc:274 +#: region_editor.cc:273 msgid "change region start position" msgstr "endre bolkstartposisjon" -#: region_editor.cc:290 +#: region_editor.cc:289 msgid "change region end position" msgstr "endre boksluttposisjon" -#: region_editor.cc:310 +#: region_editor.cc:309 msgid "change region length" msgstr "endre bolklengd" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 msgid "change region sync point" msgstr "endre bolksynkposisjon" @@ -9785,319 +10005,319 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "Det finst alt ei rutegruppe med det namnet. Vel eit anna namn." -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "Spor/bussar" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "Inngangar" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "Utgangar" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "Utvidingar, innstikk og send" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "fann ikkje rutevisingslisteobjekt for omdøypt rute!" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "Avspelingsseinking: % punkt" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "IKKJE NOKO SPOR" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 msgid "No Track or Bus Selected" msgstr "Ingen spor eller bussar valde" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "g" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "p" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "a" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "Ta opp (høgreklikk for stegredigering)" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "Ta opp" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 msgid "Route Group" msgstr "Rut gruppe" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 msgid "MIDI Controllers and Automation" msgstr "MIDI-kontrollar og -automasjon" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 msgid "Show All Automation" msgstr "Vis all automasjon" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 msgid "Show Existing Automation" msgstr "Vis gjeldande automasjon" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 msgid "Hide All Automation" msgstr "Gøym all automasjon" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 #, fuzzy msgid "Processor automation" msgstr "tøm automasjon" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 msgid "Color..." msgstr "Farge..." -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "Overlagt" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "Stabla" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 msgid "Layers" msgstr "Lag" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 msgid "Automatic (based on I/O connections)" msgstr "Automatisk (basert pÃ¥ I/U-tilkoplingar)" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 msgid "(Currently: Existing Material)" msgstr "(No: eksisterande materiale)" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 msgid "(Currently: Capture Time)" msgstr "(No: opptakstidspunkt)" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 msgid "Align With Existing Material" msgstr "Juster til eksisterande materiale" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 msgid "Align With Capture Time" msgstr "Juster til innspelingstid" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 msgid "Alignment" msgstr "Justering" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 msgid "Normal Mode" msgstr "Normalmodus" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 msgid "Tape Mode" msgstr "Bandmodus" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 msgid "Non-Layered Mode" msgstr "Ikkje lagdelt modus" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Speleliste" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 msgid "Rename Playlist" msgstr "Døyp om spelelista" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 msgid "New name for playlist:" msgstr "Nytt namn pÃ¥ spelelista:" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 msgid "New Copy Playlist" msgstr "Ny spelelistekopi" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 msgid "Name for new playlist:" msgstr "Namn pÃ¥ den nye spelelista:" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 msgid "New Playlist" msgstr "Ny speleliste" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 msgid "You cannot create a track with that name as it is reserved for %1" msgstr "" "Du kan ikkje laga eit spor med det namnet, fordi det er halde att for %1" -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 msgid "New Copy..." msgstr "Ny kopi..." -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 msgid "New Take" msgstr "Nytt tak" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 msgid "Copy Take" msgstr "Kopier tak" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "Tøm gjeldande" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 msgid "Select From All..." msgstr "Vel frÃ¥ alt..." -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "Tak: %1.%2" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "Underlag" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 msgid "Remove \"%1\"" msgstr "Fjern \"%1\"" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "" "Programmeringsfeil: underlags-tilvisingspeikarpar er ikkje samanhengande!" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 msgid "After-fade listen (AFL)" msgstr "Etterlytting (AFL)" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 msgid "Pre-fade listen (PFL)" msgstr "Førlytting (PFL)" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "s" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "d" -#: route_ui.cc:114 +#: route_ui.cc:119 msgid "Mute this track" msgstr "Demp dette sporet" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "Demp alle andre (ikkje-solo) spor" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "Gjer klar til opptak pÃ¥ dette sporet" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "fÃ¥ miksarstripene til Ã¥ visa send for denne bussen" -#: route_ui.cc:133 +#: route_ui.cc:138 msgid "Monitor input" msgstr "Lytt pÃ¥ inngangen" -#: route_ui.cc:139 +#: route_ui.cc:144 msgid "Monitor playback" msgstr "Lytt pÃ¥ avspelinga" -#: route_ui.cc:586 +#: route_ui.cc:591 msgid "Not connected to JACK - cannot engage record" msgstr "Ikkje tilkopla JACK - kan ikkje gjera klar til opptak" -#: route_ui.cc:781 +#: route_ui.cc:786 msgid "Step Entry" msgstr "Steginnskriving" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "Tildel alle spor (før volum)" -#: route_ui.cc:858 +#: route_ui.cc:863 msgid "Assign all tracks and buses (prefader)" msgstr "Tildel alle spor og bussar (førvolum)" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "Tildel alle spor (etter volum)" -#: route_ui.cc:866 +#: route_ui.cc:871 msgid "Assign all tracks and buses (postfader)" msgstr "Tildel alle spor og bussar (ettervolum)" -#: route_ui.cc:870 +#: route_ui.cc:875 msgid "Assign selected tracks (prefader)" msgstr "Tildel dei valde spora (førvolum)" -#: route_ui.cc:874 +#: route_ui.cc:879 msgid "Assign selected tracks and buses (prefader)" msgstr "Tildel dei valde spora og bussane (førvolum)" -#: route_ui.cc:877 +#: route_ui.cc:882 msgid "Assign selected tracks (postfader)" msgstr "Tildel dei valde spora (ettervolum)" -#: route_ui.cc:881 +#: route_ui.cc:886 msgid "Assign selected tracks and buses (postfader)" msgstr "Tildel dei valde spora og bussane (ettervolum)" -#: route_ui.cc:884 +#: route_ui.cc:889 msgid "Copy track/bus gains to sends" msgstr "Kopier spor-/bussvolum til send" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "Set sendvolum til -inf" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "Set sendvolum til 0dB" -#: route_ui.cc:1206 +#: route_ui.cc:1211 msgid "Solo Isolate" msgstr "Isoler solo" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "Før volumkontroll" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "Etter volumkontroll" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "Kontrollutgangar" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "Hovudutgangar" -#: route_ui.cc:1385 +#: route_ui.cc:1390 msgid "Color Selection" msgstr "Fargeval" -#: route_ui.cc:1472 +#: route_ui.cc:1477 msgid "" "Do you really want to remove track \"%1\" ?\n" "\n" @@ -10111,7 +10331,7 @@ msgstr "" "\n" "(Du kan ikkje angra dette, og øktfila vil bli overskriven)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 msgid "" "Do you really want to remove bus \"%1\" ?\n" "\n" @@ -10121,15 +10341,15 @@ msgstr "" "\n" "(Du kan ikkje angra, og øktfila vil bli overskriven!)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 msgid "Remove track" msgstr "Fjern spor" -#: route_ui.cc:1484 +#: route_ui.cc:1489 msgid "Remove bus" msgstr "Fjern buss" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" @@ -10137,47 +10357,47 @@ msgstr "" "Me rÃ¥r ikkje til at du bruker kolon (':') i namn pÃ¥ spor og bussar.\n" "Vil du bruka dette nye namnet?" -#: route_ui.cc:1515 +#: route_ui.cc:1520 msgid "Use the new name" msgstr "Bruk det nye namnet" -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "Endra namnet pÃ¥ nytt" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "Døyp om spor" -#: route_ui.cc:1531 +#: route_ui.cc:1536 msgid "Rename Bus" msgstr "Døyp om bussen" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr "treigskap" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "Greier ikkje laga malmappa for ruter %1" -#: route_ui.cc:1709 +#: route_ui.cc:1714 msgid "Save As Template" msgstr "Lagra som mal" -#: route_ui.cc:1710 +#: route_ui.cc:1715 msgid "Template name:" msgstr "Namn pÃ¥ malen :" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "Fjernstyrings-ID" -#: route_ui.cc:1793 +#: route_ui.cc:1798 msgid "Remote control ID:" msgstr "Fjernstyrings-ID:" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10189,15 +10409,15 @@ msgstr "" "\n" "Du kan ikkje endra fjernkontroll-IDen for %3." -#: route_ui.cc:1811 +#: route_ui.cc:1816 msgid "the master bus" msgstr "hovudbussen" -#: route_ui.cc:1811 +#: route_ui.cc:1816 msgid "the monitor bus" msgstr "lyttebussen" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10215,15 +10435,15 @@ msgstr "" "%4SjÃ¥ pÃ¥ brukarsamhandling-fana i vindauga for innstillingar viss du vil " "endra dette%5" -#: route_ui.cc:1816 +#: route_ui.cc:1821 msgid "the mixer" msgstr "miksaren" -#: route_ui.cc:1816 +#: route_ui.cc:1821 msgid "the editor" msgstr "redigeringa" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." @@ -10231,7 +10451,7 @@ msgstr "" "Venstreklikk for Ã¥ fasevenda kanal %1 pÃ¥ dette sporet. Høgreklikk for Ã¥ sjÃ¥ " "menyen." -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "Klikk for Ã¥ visa ein meny over kanalar Ã¥ invertera (fasevenda)" @@ -10727,51 +10947,107 @@ msgstr "Lim nye markørar til takter og taktslag" msgid "Glue new regions to bars and beats" msgstr "Lim nye bolkar til takter og taktslag" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "NivÃ¥mÃ¥ling" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "Vis alle midipsor" + +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "Bussar" + +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "hovudbussen" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "slÃ¥ pÃ¥/av opptak" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "+ museknapp" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "Solo-volumauke" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "Namn pÃ¥ spor/buss" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 msgid "as new tracks" msgstr "som nytt spor" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 msgid "to selected tracks" msgstr "til valde spor" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to region list" msgstr "til bolklista" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "as new tape tracks" msgstr "som nytt bandspor" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "programmeringsfeil: ukjend importmodusstreng %1" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 msgid "Auto-play" msgstr "Autospel" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 msgid "Sound File Information" msgstr "Lydfilinformasjon" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 msgid "Timestamp:" msgstr "Tidsstempel:" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "Format:" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "Knaggar:" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "Me har ikkje gjort klart for Ã¥ lytta pÃ¥ MIDI-filer enno" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Greidde ikkje lesa fil: %1 (%2)." @@ -10799,11 +11075,11 @@ msgstr "Lydfiler" msgid "MIDI files" msgstr "MIDI-filer" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "Alle filer" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "Bla gjennom filer" @@ -10811,169 +11087,157 @@ msgstr "Bla gjennom filer" msgid "Paths" msgstr "Stigar" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "Søk i knaggar" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 msgid "Sort:" msgstr "Sorter:" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 msgid "Longest" msgstr "Lengst" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 msgid "Shortest" msgstr "Kortast" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 msgid "Newest" msgstr "Nyast" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "Eldste" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "Mest nedlasta" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 msgid "Least downloaded" msgstr "Minst nedlasta" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "Høgst vurderte" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "LÃ¥gast vurderte" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 msgid "ID" msgstr "ID" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 msgid "Filename" msgstr "Filnamn" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 msgid "Duration" msgstr "Lengd" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 msgid "Size" msgstr "Storleik" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 msgid "Samplerate" msgstr "Punktfrekvens" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "Lisens" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "Søk pÃ¥ Freesound" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "Trykk for Ã¥ importera filene og lukka dette vindauga" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "Press for Ã¥ importera filene og la dette vindauga vera ope" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "Press for Ã¥ lukka dette vindauga utan Ã¥ importera nokon filer" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "Fann %1 treff" -msgstr[1] "uFann %1 treff" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "SoundFileBrowser: Greidde ikkje laga teikn av strengen: " -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "B" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "kB" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "MB" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 msgid "GB" msgstr "GB" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "Søket gav ingen resultat." - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "Fann %1 treff" -msgstr[1] "Fann %1 treff" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "Eitt spor per fil" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "Eitt spor per kanal" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 msgid "sequence files" msgstr "sekvensfiler" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "alle filene i eitt spor" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 msgid "merge files" msgstr "flett filer" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 msgid "one region per file" msgstr "ein bolk per fil" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 msgid "one region per channel" msgstr "ein bolk for kvar kanal" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 msgid "all files in one region" msgstr "alle filene i ein bolk" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" @@ -10981,55 +11245,55 @@ msgstr "" "%1 kan ikkje bruka\n" "ei eller fleire av desse filene" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "Kopier filer til økta" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 msgid "file timestamp" msgstr "filtidsstempel" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 msgid "edit point" msgstr "redigeringspunkt" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 msgid "playhead" msgstr "spelehovud" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 msgid "session start" msgstr "øktstart" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "Legg til filer som ..." -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 msgid "Insert at" msgstr "Set inn ved" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 msgid "Mapping" msgstr "Punktlegging" -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 msgid "Conversion quality" msgstr "Omkodingskvalitet" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "Best" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "God" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "Snøgg" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "Fortast" @@ -11119,21 +11383,21 @@ msgstr "Eg vil gjerne ha fleire val for denne økta" #: startup.cc:194 #, fuzzy msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11289,10 +11553,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "Kva vil du gjera?" - #: startup.cc:729 msgid "Open" msgstr "Opna" @@ -11305,83 +11565,83 @@ msgstr "Namn pÃ¥ økta:" msgid "Create session folder in:" msgstr "Lag øktmappa i :" -#: startup.cc:813 +#: startup.cc:821 msgid "Select folder for session" msgstr "Vel mappe for økta" -#: startup.cc:845 +#: startup.cc:853 msgid "Use this template" msgstr "Bruk denne malen" -#: startup.cc:848 +#: startup.cc:856 msgid "no template" msgstr "ingen mal" -#: startup.cc:876 +#: startup.cc:884 msgid "Use an existing session as a template:" msgstr "Bruk ei eksisterande økt som mal:" -#: startup.cc:888 +#: startup.cc:896 msgid "Select template" msgstr "Vel mal" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "Ny økt" -#: startup.cc:1068 +#: startup.cc:1077 msgid "Select session file" msgstr "Vel øktfil" -#: startup.cc:1084 +#: startup.cc:1093 msgid "Browse:" msgstr "Bla gjennom:" -#: startup.cc:1093 +#: startup.cc:1102 msgid "Select a session" msgstr "Vel ei økt" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "kanalar" -#: startup.cc:1135 +#: startup.cc:1145 msgid "Busses" msgstr "Bussar" -#: startup.cc:1136 +#: startup.cc:1146 msgid "Inputs" msgstr "Ingangar" -#: startup.cc:1137 +#: startup.cc:1147 msgid "Outputs" msgstr "Utgangar" -#: startup.cc:1145 +#: startup.cc:1155 msgid "Create master bus" msgstr "Lag hovudbuss" -#: startup.cc:1155 +#: startup.cc:1165 msgid "Automatically connect to physical inputs" msgstr "Kopla automatisk til fysiske inngangar" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "Bruk berre" -#: startup.cc:1215 +#: startup.cc:1225 msgid "Automatically connect outputs" msgstr "Kopla utgangane automatisk" -#: startup.cc:1237 +#: startup.cc:1247 msgid "... to master bus" msgstr "... til hovudbussen" -#: startup.cc:1247 +#: startup.cc:1257 msgid "... to physical outputs" msgstr "... til fysiske utgangar" -#: startup.cc:1297 +#: startup.cc:1307 msgid "Advanced Session Options" msgstr "Avanserte innstillingar for økta" @@ -12053,19 +12313,19 @@ msgstr "Oppsettsfila %1 vart ikkje lagra" msgid "bad XPM header %1" msgstr "Feil med XPM-tittellinja %1" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "manglar RGBA-stil for \"%1\"" -#: utils.cc:544 +#: utils.cc:591 msgid "cannot find XPM file for %1" msgstr "greier ikkje finna XPM-fil for %1" -#: utils.cc:570 +#: utils.cc:617 msgid "cannot find icon image for %1 using %2" msgstr "greier ikkje finna ikonbilete for %1 ved bruk av %2" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "Fekk unntak nÃ¥r me lasta ikonet %1" @@ -12073,85 +12333,87 @@ msgstr "Fekk unntak nÃ¥r me lasta ikonet %1" msgid "VerboseCanvasCursor" msgstr "VerboseCanvasCursor" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 #, fuzzy msgid "Set Video Track" msgstr "Legg til lydspor" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 #, fuzzy msgid "Launch External Video Monitor" msgstr "Lytting" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 #, fuzzy msgid "Video files" msgstr "Lydfiler" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 #, fuzzy msgid "Video Information" msgstr "Lydfilinformasjon" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 #, fuzzy msgid "Start:" msgstr "Start" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 #, fuzzy msgid "Frame rate:" msgstr "Punktfrekvens:" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 #, fuzzy msgid "Export Successful: %1" msgstr "Eksporter MIDI: %1" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12159,18 +12421,18 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 #, fuzzy msgid "Video Monitor: File Not Found." msgstr "Lytting" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12180,381 +12442,390 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 #, fuzzy msgid "Transcode/Import Video File " msgstr "Eksporter økta til lydfil(er)..." -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 #, fuzzy msgid "Output File:" msgstr "Uteining:" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "Høgd" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 #, fuzzy msgid "File Information" msgstr "Lydfilinformasjon" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 #, fuzzy msgid "Duration:" msgstr "Lengd" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 #, fuzzy msgid "??" msgstr "???" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 #, fuzzy msgid "Import Settings" msgstr "Val" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 #, fuzzy msgid "Import/Transcode Video to Session" msgstr "Importer frÃ¥ økt" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 #, fuzzy msgid "Original Width" msgstr "Opphaveleg posisjon" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 #, fuzzy msgid "Extract Audio:" msgstr "Eksporter lyd" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 #, fuzzy msgid "Extracting Audio.." msgstr "Eksporter lyd" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 #, fuzzy msgid "Transcoding Failed." msgstr "Omsetjingar skrudde pÃ¥" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 #, fuzzy msgid "Save Transcoded Video File" msgstr "Eksporter økta til lydfil(er)..." -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 #, fuzzy msgid "Server Docroot:" msgstr "Tenar:" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 #, fuzzy msgid "Listen Port:" msgstr "Lytteposisjon" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 #, fuzzy msgid "Cache Size:" msgstr "Største storleik" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 #, fuzzy msgid "Confirm Overwrite" msgstr "Stadfest at du vil skriva over snøggbilete" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 #, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "Dette snøggbiletet finst frÃ¥ før. Vil du skriva over det?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 #, fuzzy msgid "Cannot create video folder \"%1\" (%2)" msgstr "greier ikkje laga ardourmappa %1 (%2)" -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 #, fuzzy msgid "Export Video File " msgstr "Eksporter økta til lydfil(er)..." -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 #, fuzzy msgid "Video:" msgstr "Mike Start" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "Normaliser til:" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 #, fuzzy msgid "Deinterlace" msgstr "Spelehovudet i midten" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 #, fuzzy msgid "Include Session Metadata" msgstr "Endra metadata for økta" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 #, fuzzy msgid "Output:" msgstr "Utgangar" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 #, fuzzy msgid "Input:" msgstr "Ingangar" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 #, fuzzy msgid "Audio:" msgstr "Lyd" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 #, fuzzy msgid "Master Bus" msgstr "hovudbussen" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 #, fuzzy msgid "Settings:" msgstr "MÃ¥l" -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 #, fuzzy msgid "Range:" msgstr "OmrÃ¥de" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 #, fuzzy msgid "Preset:" msgstr "Ferdigoppsett" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 #, fuzzy msgid "Video Codec:" msgstr "Mappe:" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 #, fuzzy msgid "Video KBit/s:" msgstr "Mike Start" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 #, fuzzy msgid "Audio Codec:" msgstr "Lydmodus:" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 #, fuzzy msgid "Audio KBit/s:" msgstr "Lydfiler" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 #, fuzzy msgid "Audio Samplerate:" msgstr "Punktfrekvens:" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "Normaliser verdiar" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 #, fuzzy msgid "Exporting audio" msgstr "Eksporter lyd" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:437 #, fuzzy -msgid "Exporting Audio.." +msgid "Exporting Audio..." msgstr "Eksporter lyd" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." -msgstr "" +#: export_video_dialog.cc:562 +#, fuzzy +msgid "Encoding Video..." +msgstr "Omsetjingar skrudde pÃ¥" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 #, fuzzy msgid "Transcoding failed." msgstr "Omsetjingar skrudde pÃ¥" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 #, fuzzy msgid "Save Exported Video File" msgstr "Eksporter økta til lydfil(er)..." @@ -12572,33 +12843,49 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" -"\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" -"\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#~ msgid "-Inf" +#~ msgstr "-ê" + +#~ msgid "slowest" +#~ msgstr "saktast" + +#~ msgid "slow" +#~ msgstr "sakte" + +#~ msgid "fast" +#~ msgstr "snøgt" + +#~ msgid "faster" +#~ msgstr "snøggare" + +#~ msgid "fastest" +#~ msgstr "snøggast" + +#~ msgid "found %1 match" +#~ msgid_plural "found %1 matches" +#~ msgstr[0] "Fann %1 treff" +#~ msgstr[1] "uFann %1 treff" + +#~ msgid "Search returned no results." +#~ msgstr "Søket gav ingen resultat." + +#~ msgid "Found %1 match" +#~ msgid_plural "Found %1 matches" +#~ msgstr[0] "Fann %1 treff" +#~ msgstr[1] "Fann %1 treff" + +#~ msgid "What would you like to do ?" +#~ msgstr "Kva vil du gjera?" + #~ msgid "Connect" #~ msgstr "Kopla til" @@ -14427,9 +14714,6 @@ msgstr "" #~ msgid "mute change" #~ msgstr "endra demping" -#~ msgid "rec-enable change" -#~ msgstr "slÃ¥ pÃ¥/av opptak" - #~ msgid "mix group solo change" #~ msgstr "soloendring for miksgruppa" diff --git a/gtk2_ardour/po/pl.po b/gtk2_ardour/po/pl.po index 3e6b7881b3..8947ea0365 100644 --- a/gtk2_ardour/po/pl.po +++ b/gtk2_ardour/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk2_ardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2008-04-10 10:47+0100\n" "Last-Translator: Piotr Zaryk \n" "Language-Team: Polish \n" @@ -398,7 +398,7 @@ msgstr "Nie odnaleziono pliku definicji menu" msgid "%1 will not work without a valid ardour.menus file" msgstr "Ardour nie zadziaÅ‚a bez poprawnego pliku ardour.menus" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 #, fuzzy msgid "Add Track or Bus" msgstr "Dodaj Å›cieżkÄ™/szynÄ™" @@ -441,8 +441,8 @@ msgstr "szyny" msgid "Add:" msgstr "" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 #, fuzzy msgid "Options" msgstr "WyjÅ›cia" @@ -459,22 +459,22 @@ msgid "Group:" msgstr "Grupa" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 #, fuzzy msgid "Audio" msgstr "OdsÅ‚uch" #: 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "MIDI" @@ -498,7 +498,7 @@ msgid "" msgstr "" #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "Normalny" @@ -548,7 +548,7 @@ msgstr "8 kanałów" msgid "12 Channel" msgstr "3 kanaÅ‚y" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "" @@ -634,7 +634,7 @@ msgid "Track" msgstr "Åšcieżka" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 msgid "Show" msgstr "WyÅ›wietl" @@ -642,103 +642,98 @@ msgstr "WyÅ›wietl" msgid "Re-analyze data" msgstr "Analizuj ponownie" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 #, fuzzy msgid "audition" msgstr "OdsÅ‚uch" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 #, fuzzy msgid "solo" msgstr "zmiana ustawienia solo" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 #, fuzzy msgid "feedback" msgstr "Sprzężenie zwrotne" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 #, fuzzy msgid "Speaker Configuration" msgstr "Konfiguracja kanałów" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "Menedżer motywów" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 #, fuzzy msgid "Key Bindings" msgstr "Skróty klawiszowe" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "Preferencje" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 #, fuzzy msgid "Add Tracks/Busses" msgstr "Åšcieżki/szyny" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "O programie" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "PoÅ‚ożenia" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 #, fuzzy msgid "Tracks and Busses" msgstr "Åšcieżki/szyny" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 #, fuzzy msgid "Bundle Manager" msgstr "Menedżer motywów" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Duży zegar" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 #, fuzzy msgid "Audio Connections" msgstr "PoÅ‚Ä…czenie \"" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "PoÅ‚Ä…czenia wejÅ›ciowe" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "BÅ‚Ä™dy" -#: ardour_ui.cc:299 -#, fuzzy -msgid "could not initialize %1." -msgstr "Nie można dokonać inicjalizacji programu." - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "Uruchamianie systemu dźwiÄ™ku" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 #, fuzzy msgid "%1 is ready for use" msgstr "Ardour jest gotowy do użycia" -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 #, fuzzy msgid "" "WARNING: Your system has a limit for maximum amount of locked memory. This " @@ -754,26 +749,26 @@ msgstr "" "Można sprawdzić limit pamiÄ™ci przy użyciu 'ulimit -l'. Standardowo limit ten " "jest kontrolowany przez /etc/security/limits.conf" -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "Nie pokazuj tego okna wiÄ™cej" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 #, fuzzy msgid "Don't quit" msgstr "Nie koÅ„cz" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 #, fuzzy msgid "Just quit" msgstr "Po prostu %1" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 #, fuzzy msgid "Save and quit" msgstr "Zapisz i %1" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 #, fuzzy msgid "" "%1 was unable to save your session.\n" @@ -788,17 +783,17 @@ msgstr "" "\n" "opcji \"Po prostu zakoÅ„cz\"." -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 #, fuzzy msgid "Please wait while %1 cleans up..." msgstr "ProszÄ™ czekać na wczytanie danych wizualnych" -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 #, fuzzy msgid "Unsaved Session" msgstr "Nowa Sesja" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 #, fuzzy msgid "" "The session \"%1\"\n" @@ -816,7 +811,7 @@ msgstr "" "\n" "Co zrobić?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 #, fuzzy msgid "" "The snapshot \"%1\"\n" @@ -834,75 +829,75 @@ msgstr "" "\n" "Co zrobić?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "Prompter" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "rozÅ‚Ä…czono" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 #, fuzzy msgid "File:" msgstr "Pliki" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "WAV" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -910,34 +905,34 @@ msgid "" "\">%%%" msgstr "" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 #, fuzzy msgid "Disk: Unknown" msgstr "Dysk: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, fuzzy, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "Dysk: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, fuzzy, c-format msgid "Timecode|TC: %s" msgstr "Dysk: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "Poprzednie sesje" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 #, fuzzy msgid "" "%1 is not connected to JACK\n" @@ -946,22 +941,22 @@ msgstr "" "Ardour nie jest poÅ‚Ä…czony z JACK.\n" "W tej sytuacji nie możesz otwierać lub zamykać sesji." -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Otwieranie sesji" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 #, fuzzy msgid "%1 sessions" msgstr "Sesja" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 #, fuzzy msgid "You cannot add a track without a session already loaded." msgstr "Nie możesz dodać Å›cieżki lub szyny bez otwierania sesji." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 #, fuzzy msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" @@ -969,7 +964,7 @@ msgstr[0] "nie można byÅ‚o utworzyć %1 nowych Å›cieżek dźwiÄ™kowych" msgstr[1] "nie można byÅ‚o utworzyć %1 nowych Å›cieżek dźwiÄ™kowych" msgstr[2] "nie można byÅ‚o utworzyć %1 nowych Å›cieżek dźwiÄ™kowych" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -977,11 +972,11 @@ msgid "" "restart JACK with more ports." msgstr "" -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 msgid "You cannot add a track or bus without a session already loaded." msgstr "Nie możesz dodać Å›cieżki lub szyny bez otwierania sesji." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 #, fuzzy msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" @@ -989,7 +984,7 @@ msgstr[0] "nie można byÅ‚o utworzyć nowej Å›cieżki dźwiÄ™kowej" msgstr[1] "nie można byÅ‚o utworzyć nowej Å›cieżki dźwiÄ™kowej" msgstr[2] "nie można byÅ‚o utworzyć nowej Å›cieżki dźwiÄ™kowej" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 #, fuzzy msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" @@ -997,7 +992,7 @@ msgstr[0] "nie można byÅ‚o utworzyć %1 nowych Å›cieżek dźwiÄ™kowych" msgstr[1] "nie można byÅ‚o utworzyć %1 nowych Å›cieżek dźwiÄ™kowych" msgstr[2] "nie można byÅ‚o utworzyć %1 nowych Å›cieżek dźwiÄ™kowych" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 #, fuzzy msgid "" "Please create one or more tracks before trying to record.\n" @@ -1007,14 +1002,14 @@ msgstr "" "przed rozpoczÄ™ciem nagrywania.\n" "Sprawdź menu Sesji." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" "%1" msgstr "" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 #, fuzzy msgid "" "JACK has either been shutdown or it\n" @@ -1026,81 +1021,81 @@ msgstr "" "niewystarczajÄ…cej szybkoÅ›ci. Można zapisać sesjÄ™ i/lub spróbować poÅ‚Ä…czyć " "ponownie z JACK." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Nie można wczytać sesji, gdyż jest aktualnie w użyciu." -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 #, fuzzy msgid "Take Snapshot" msgstr "Zrzut" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 #, fuzzy msgid "Name of new snapshot" msgstr "Nazwa zrzutu:" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 #, fuzzy msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Plik już istnieje. ZastÄ…pić go?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 #, fuzzy msgid "Rename Session" msgstr "ZmieÅ„ nazwÄ™ obszaru" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 #, fuzzy msgid "New session name" msgstr "Sesja" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" msgstr "" -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 #, fuzzy msgid "Save Template" msgstr "Zapisz szablon" -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 #, fuzzy msgid "Name for template:" msgstr "Nazwa szablonu miksu:" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-szablon" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 msgid "" "This session\n" "%1\n" @@ -1110,56 +1105,56 @@ msgstr "" "%1\n" "już istnieje. Otworzyć jÄ…?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 #, fuzzy msgid "Open Existing Session" msgstr "Otwieranie sesji" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 #, fuzzy msgid "Please wait while %1 loads your session" msgstr "ProszÄ™ czekać. Trwa wczytywanie sesji..." -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "" -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Sesja \"%1 (zrzut %2)\" nie zostaÅ‚a zaÅ‚adowana poprawnie" -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "BÅ‚Ä…d wczytywania" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "" -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 msgid "Could not create session in \"%1\"" msgstr "Nie udaÅ‚o siÄ™ utworzyć sesji w \"%1\"" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 #, fuzzy msgid "No files were ready for clean-up" msgstr "Å»adne pliki dźwiÄ™kowe nie byÅ‚y gotowe do wyczyszczenia" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 #, fuzzy msgid "Clean-up" msgstr "Wyczyść" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1171,19 +1166,19 @@ msgstr "" "Wciąż mogÄ… zawierać obszary\n" "wymagajÄ…ce obecnoÅ›ci nieużywanych plików." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 msgid "" "The following file was deleted from %2,\n" "releasing %3 %4bytes of disk space" @@ -1194,7 +1189,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 msgid "" "The following file was not in use and \n" "has been moved to: %2\n" @@ -1217,12 +1212,12 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 #, fuzzy msgid "Are you sure you want to clean-up?" msgstr "Na pewno wyczyÅ›cić?" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 #, fuzzy msgid "" "Clean-up is a destructive operation.\n" @@ -1234,83 +1229,83 @@ msgstr "" "Po czyszczeniu nieużywane pliki audio zostanÄ… przeniesione do katalogu " "\"dead sounds\"." -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "Okno dialogowe czyszczenia" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 #, fuzzy msgid "Cleaned Files" msgstr "usuniÄ™te pliki" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "usuniÄ™ty plik" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 #, fuzzy msgid "Do you really want to stop the Video Server?" msgstr "Na pewno usunąć %1 %2?" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 #, fuzzy msgid "Yes, Stop It" msgstr "Tak, usuÅ„ go." -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "nie można otworzyć %1" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "" -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1319,7 +1314,7 @@ msgid "" "quickly enough to keep up with recording.\n" msgstr "" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1328,11 +1323,11 @@ msgid "" "quickly enough to keep up with playback.\n" msgstr "" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 #, fuzzy msgid "" "This session appears to have been in the\n" @@ -1350,42 +1345,42 @@ msgstr "" "Ardour może przywrócić nagranie dla Ciebie.\n" "Co chcesz zrobić?\n" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "Ignorowanie dane z awarii" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "Przywróć dane z awarii" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "BÅ‚Ä™dna czÄ™stotliwość próbkowania" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 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" "audio may be played at the wrong sample rate.\n" msgstr "" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 msgid "Do not load session" msgstr "Nie Å‚aduj sesji" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "ZaÅ‚aduj sesjÄ™ mimo to" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "Nie można siÄ™ rozÅ‚Ä…czyć z JACK" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "Nie udaÅ‚o siÄ™ poÅ‚Ä…czyć ponownie z JACK" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1408,59 +1403,64 @@ msgstr "UI: nie można ustawić edytora" msgid "UI: cannot setup mixer" msgstr "UI: nie można ustawić miksera" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "UI: nie można ustawić miksera" + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "Odtwórz od poÅ‚ożenia gÅ‚owicy" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Zatrzymaj odtwarzanie" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 #, fuzzy msgid "Toggle record" msgstr "nagrywanie" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "Odtwórz zakres/zaznaczenie" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "Przejdź do poczÄ…tku sesji" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "Przejdź do koÅ„ca sesji" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "Zakres pÄ™tli" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" msgstr "" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "Powróć do poczÄ…tku ostatniego odtwarzania przy zatrzymaniu" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 #, fuzzy msgid "Playhead follows Range Selections and Edits" msgstr "GÅ‚owica do poczÄ…tku zakresu" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "WÅ‚Ä…cz/wyÅ‚Ä…cz metronom" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" @@ -1468,7 +1468,7 @@ msgstr "" "Gdy aktywne, gdzieÅ› wÅ‚Ä…czone jest solo.\n" "Kliknij by wyÅ‚Ä…czyć solo wszÄ™dzie." -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" @@ -1476,11 +1476,11 @@ msgstr "" "Gdy aktywne, odsÅ‚uchiwanie jest wÅ‚Ä…czone\n" "Kliknij, by zatrzymać odsÅ‚uchiwanie." -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "" -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1488,7 +1488,7 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1496,27 +1496,32 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "Resetuj obwiedniÄ™" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "[BÅAD]: " -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "[OSTRZEÅ»ENIE]: " -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "[INFORMACJA]: " -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "Autopowracanie" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1536,26 +1541,26 @@ msgstr "Ustawianie edytora" msgid "Setup Mixer" msgstr "Ustawianie miksera" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "Wczytywanie historii sesji" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 #, fuzzy msgid "Don't close" msgstr "Nie koÅ„cz" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 #, fuzzy msgid "Just close" msgstr "zamknij" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 #, fuzzy msgid "Save and close" msgstr "Zapisz i %1" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" @@ -1568,7 +1573,7 @@ msgstr "Sesja" msgid "Sync" msgstr "Synchronizacja" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Opcje" @@ -1596,15 +1601,15 @@ msgstr "Format pliku" msgid "Sample Format" msgstr "Format próbkowania" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "UrzÄ…dzenia sterujÄ…ce" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Wtyczki" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "Ustawienia metrum" @@ -1621,7 +1626,7 @@ msgstr "Czas przytrzymania" msgid "Denormal Handling" msgstr "ObsÅ‚uga liczb zdenormalizowanych" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "" @@ -1669,8 +1674,8 @@ msgstr "Zrzut" msgid "Save As..." msgstr "Zapisz szablon" -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 #, fuzzy msgid "Rename..." msgstr "ZmieÅ„ nazwÄ™" @@ -1702,7 +1707,7 @@ msgid "Stem export..." msgstr "Eksportuj" #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Eksportuj" @@ -1716,11 +1721,11 @@ msgstr "Nieużywane zasoby" msgid "Flush Wastebasket" msgstr "Opróżnij kosz" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: 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:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "Opóźnienie" @@ -1728,8 +1733,8 @@ msgstr "Opóźnienie" msgid "Reconnect" msgstr "PoÅ‚Ä…cz ponownie" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "RozÅ‚Ä…cz" @@ -1746,7 +1751,7 @@ msgstr "Maksymalizacja edytora" msgid "Show Toolbars" msgstr "WyÅ›wietlanie logo" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 #, fuzzy msgid "Window|Mixer" msgstr "Okno" @@ -1756,29 +1761,34 @@ msgstr "Okno" msgid "Toggle Editor+Mixer" msgstr "PrzeÅ‚Ä…cz tryb edycji" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "Okno" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 #, fuzzy msgid "Help|Manual" msgstr "RÄ™cznie" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 #, fuzzy msgid "Reference" msgstr "Preferencje" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Zapisz" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1788,103 +1798,103 @@ msgstr "Zapisz" msgid "Transport" msgstr "Nagrywanie i odtwarzanie" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "Zatrzymaj" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "Uruchom/Zatrzymaj" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 #, fuzzy msgid "Start/Continue/Stop" msgstr "Uruchom/Zatrzymaj" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 #, fuzzy msgid "Stop and Forget Capture" msgstr "Zatrzymaj i usuÅ„ nagranie" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 msgid "Transition To Roll" msgstr "Do przodu" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "Od tyÅ‚u" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "Odtwórz zakres pÄ™tli" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 #, fuzzy msgid "Play Selected Range" msgstr "Zaznacz zakres" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 #, fuzzy msgid "Play Selection w/Preroll" msgstr "Odtwórz zaznaczenie" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "WÅ‚Ä…cz nagrywanie" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 msgid "Start Recording" msgstr "Rozpocznij nagrywanie" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "PrzewiÅ„ do tyÅ‚u" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "PrzewiÅ„ do tyÅ‚u (powoli)" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "PrzewiÅ„ do tyÅ‚u (szybko)" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "PrzewiÅ„ do przodu" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "PrzewiÅ„ do przodu (powoli)" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "PrzewiÅ„ do przodu (szybko)" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "Do punktu zerowego" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "Do poczÄ…tku" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "Do koÅ„ca" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1893,135 +1903,135 @@ msgstr "" msgid "Timecode" msgstr "Zegar" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 msgid "Bars & Beats" msgstr "Takty i uderzenia" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 msgid "Minutes & Seconds" msgstr "Minuty i Sekundy" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "Próbki" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 msgid "Punch In" msgstr "WejÅ›cie przeÅ‚Ä…cznika" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "WejÅ›cie" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 msgid "Punch Out" msgstr "WyjÅ›cie przeÅ‚Ä…cznika" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "WyjÅ›cie" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "We/wy przeÅ‚Ä…cznika" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 #, fuzzy msgid "In/Out" msgstr "We/wy przeÅ‚Ä…cznika" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "Metronom" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 msgid "Auto Input" msgstr "WejÅ›cie dźwiÄ™ku" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 msgid "Auto Play" msgstr "Autoodtwarzanie" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 #, fuzzy msgid "Sync Startup to Video" msgstr "Synchronizuj poczÄ…tek z wideo" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 #, fuzzy msgid "Time Master" msgstr "ZarzÄ…dzanie czasem" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 #, fuzzy msgid "Toggle Record Enable Track %1" msgstr "PrzeÅ‚Ä…cz nagrywanie Åšcieżki1" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "Procenty" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Półtony" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "WysyÅ‚anie MTC" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "WysyÅ‚anie MMC" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "Używanie MMC" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 #, fuzzy msgid "Send MIDI Clock" msgstr "Sprzężenie zwrotne MIDI" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 #, fuzzy msgid "Send MIDI Feedback" msgstr "Sprzężenie zwrotne MIDI" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 #, fuzzy msgid "Wall Clock" msgstr "Duży zegar" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 #, fuzzy msgid "DSP" msgstr "LADSPA" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 #, fuzzy msgid "Buffers" msgstr "Rozmiar bufora" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 #, fuzzy msgid "Timecode Format" msgstr "Klatek na sekundÄ™ licznika czasu" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 #, fuzzy msgid "File Format" msgstr "Format pliku dźwiÄ™kowego" @@ -2037,12 +2047,12 @@ msgstr "" msgid "Internal" msgstr "wewnÄ™trzny" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 #, fuzzy msgid "Enable/Disable external positional sync" msgstr "WÅ‚Ä…cz/wyÅ‚Ä…cz metronom" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "" @@ -2073,7 +2083,7 @@ msgstr "Tempo" msgid "Meter" msgstr "Metrum" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2168,33 +2178,33 @@ msgid "hide track" msgstr "ukryj Å›cieżkÄ™" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 #, fuzzy msgid "Automation|Manual" msgstr "Automatyka" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "Odtwórz" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "Zapisz" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "Dotyk" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "???" @@ -2203,7 +2213,7 @@ msgid "clear automation" msgstr "wyczyść automatyzacjÄ™" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "Ukryj" @@ -2225,7 +2235,7 @@ msgstr "RozÅ‚Ä…cz" msgid "Linear" msgstr "Liniowy" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "Tryb" @@ -2244,13 +2254,13 @@ msgstr "Zmienianie przy użyciu:" msgid "Direction:" msgstr "Zaznaczenie" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "WejÅ›cie" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "WyjÅ›cie" @@ -2260,8 +2270,8 @@ msgid "Edit" msgstr "Edycja" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "UsuÅ„" @@ -2436,7 +2446,7 @@ msgstr "Zegar" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 #, fuzzy msgid "Length" msgstr "DÅ‚ugość:" @@ -2702,17 +2712,17 @@ msgid "Ranges & Marks" msgstr "Znaczniki zakresu" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 msgid "Editor" msgstr "Edytor" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "PÄ™tla" @@ -2737,8 +2747,8 @@ msgstr "" msgid "Slow" msgstr "Wolno" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "Szybko" @@ -2758,7 +2768,7 @@ msgstr "WÅ‚Ä…cz" msgid "Slowest" msgstr "Najwolniej" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "bÅ‚Ä…d programowania:" @@ -2892,7 +2902,7 @@ msgid "Select All in Track" msgstr "CaÅ‚Ä… Å›cieżkÄ™" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Wszystko" @@ -2950,15 +2960,15 @@ msgstr "Ustaw zakres miÄ™dzy gÅ‚owicÄ… a punktem edycji" msgid "Select" msgstr "Zaznacz" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Wytnij" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "Skopiuj" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Wklej" @@ -3126,7 +3136,7 @@ msgstr "Powtórz" msgid "Redo (%1)" msgstr "Powtórz (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "Powiel" @@ -3157,8 +3167,8 @@ msgstr "UsuÅ„ listÄ™ odtwarzania" msgid "Keep Playlist" msgstr "Zachowaj listÄ™ odtwarzania" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "Anuluj" @@ -3179,7 +3189,7 @@ msgstr "wyczyść listy odtwarzania" msgid "Please wait while %1 loads visual data." msgstr "ProszÄ™ czekać na wczytanie danych wizualnych" -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 #, fuzzy msgid "Edit..." msgstr "Edycja" @@ -3230,7 +3240,7 @@ msgstr "Warstwy" msgid "Position" msgstr "Pozycja" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Przytnij" @@ -3243,7 +3253,7 @@ msgstr "Wzmocnienie" msgid "Ranges" msgstr "Zakresy" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 #, fuzzy @@ -3284,7 +3294,7 @@ msgstr "Różne" msgid "Misc Options" msgstr "Różne" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "Monitorowanie" @@ -3326,8 +3336,8 @@ msgstr "Zegar dodatkowy" msgid "Separate" msgstr "Oddziel" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "Solo" @@ -3339,7 +3349,7 @@ msgstr "Podklatki" msgid "Timecode fps" msgstr "Klatek na sekundÄ™ licznika czasu" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Rozmiar" @@ -3478,7 +3488,7 @@ msgstr "GÅ‚owica do poczÄ…tku zakresu" msgid "Playhead to Range End" msgstr "GÅ‚owica do koÅ„ca zakresu" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "Nic" @@ -3783,9 +3793,9 @@ msgstr "Czas wstawienia" msgid "Toggle Active" msgstr "PrzeÅ‚Ä…cz aktywność" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "UsuÅ„" @@ -3794,19 +3804,19 @@ msgstr "UsuÅ„" msgid "Fit Selected Tracks" msgstr "do zaznaczonych Å›cieżek" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "NajwiÄ™kszy" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "WiÄ™kszy" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "Duży" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "MaÅ‚y" @@ -3910,7 +3920,7 @@ msgstr "Klocek" msgid "Slide" msgstr "Åšlizg" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "Zablokuj" @@ -4118,7 +4128,7 @@ msgstr "Minuty i sekundy" msgid "Video Monitor" msgstr "Monitorowanie" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -4128,8 +4138,9 @@ msgid "Always on Top" msgstr "PrzenieÅ› na wierzch" #: editor_actions.cc:554 -msgid "Framenumber" -msgstr "" +#, fuzzy +msgid "Frame number" +msgstr "zmieÅ„ nazwÄ™ znacznika" #: editor_actions.cc:555 #, fuzzy @@ -4222,7 +4233,7 @@ msgstr "UsuÅ„" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Importuj" @@ -4265,331 +4276,331 @@ msgstr "" msgid "Could not find editor.bindings in search path %1" msgstr "" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "bÅ‚Ä…d programowania: %1: %2" -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 #, fuzzy msgid "Raise to Top" msgstr "PrzenieÅ› na wierzch" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 #, fuzzy msgid "Lower to Bottom" msgstr "PrzenieÅ› na spód" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 #, fuzzy msgid "Move to Original Position" msgstr "PrzenieÅ› do pozycji poczÄ…tkowej" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 #, fuzzy msgid "Glue to Bars and Beats" msgstr "Przyklejenie do taktów i uderzeÅ„" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 #, fuzzy msgid "Remove Sync" msgstr "usuÅ„ synchronizacjÄ™" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Wyciszenie" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 #, fuzzy msgid "Normalize..." msgstr "Normalizuj" -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "Odwróć" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 #, fuzzy msgid "Make Mono Regions" msgstr "Ustaw obszary mono" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 #, fuzzy msgid "Boost Gain" msgstr "ZwiÄ™ksz wzmocnienie" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 #, fuzzy msgid "Cut Gain" msgstr "Zmniejsz wzmocnienie" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "" -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 #, fuzzy msgid "Transpose..." msgstr "Transponuj" -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 msgid "Opaque" msgstr "MÄ™tna" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "Stopniowe wzmocnienie" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "Stopniowe wyciszenie" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 #, fuzzy msgid "Multi-Duplicate..." msgstr "Powiel" -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "WypeÅ‚nij Å›cieżkÄ™" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "Ustaw zakres pÄ™tli" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 #, fuzzy msgid "Set Punch" msgstr "Ustaw zakres przeÅ‚Ä…cznika" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 #, fuzzy msgid "Add Single Range Marker" msgstr "Dodaj znaczniki zakresu" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 #, fuzzy msgid "Add Range Marker Per Region" msgstr "Dodaj znaczniki zakresu" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 #, fuzzy msgid "Snap Position To Grid" msgstr "Do taktów" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 #, fuzzy msgid "Close Gaps" msgstr "Zamknij" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "" -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 #, fuzzy msgid "Export..." msgstr "Eksportuj" -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 #, fuzzy msgid "Separate Under" msgstr "Oddziel" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 msgid "Set Fade In Length" msgstr "ZmieÅ„ dÅ‚ugość stopniowego wzmocnienia" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 msgid "Set Fade Out Length" msgstr "ZmieÅ„ dÅ‚ugość stopniowego wyciszenia" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 #, fuzzy msgid "Set Tempo from Region = Bar" msgstr "Ustaw tempo od obszar=takt" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 #, fuzzy msgid "Split at Percussion Onsets" msgstr "WystÄ…pienie perkusji" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 #, fuzzy msgid "List Editor..." msgstr "Ustawianie edytora" -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "" -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 #, fuzzy msgid "Spectral Analysis..." msgstr "Analiza spektrum" -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 msgid "Reset Envelope" msgstr "Resetuj obwiedniÄ™" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 #, fuzzy msgid "Reset Gain" msgstr "Resetuj wszystko" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 msgid "Envelope Active" msgstr "WÅ‚Ä…cz obwiedniÄ™" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 #, fuzzy msgid "Quantize..." msgstr "Format pliku" -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "" -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "" -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 msgid "Set Range Selection" msgstr "Ustaw zakres zaznaczenia" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 #, fuzzy msgid "Nudge Later" msgstr "Do przodu" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 #, fuzzy msgid "Nudge Earlier" msgstr "Do przodu" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 #, fuzzy msgid "Nudge Later by Capture Offset" msgstr "Do przodu wg wyrównania nagrania" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 #, fuzzy msgid "Nudge Earlier by Capture Offset" msgstr "Do przodu wg wyrównania nagrania" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 #, fuzzy msgid "Trim to Loop" msgstr "Do pÄ™tli" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 #, fuzzy msgid "Trim to Punch" msgstr "Do przeÅ‚Ä…cznika" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 #, fuzzy msgid "Trim to Previous" msgstr "Do przeÅ‚Ä…cznika" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 #, fuzzy msgid "Trim to Next" msgstr "przytnij do zaznaczenia" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 #, fuzzy msgid "Insert Region From Region List" msgstr "Do poczÄ…tku obszaru" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 #, fuzzy msgid "Set Sync Position" msgstr "Ustaw pozycjÄ™ synchronizacji" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "Podziel" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 #, fuzzy msgid "Trim Start at Edit Point" msgstr "PoczÄ…tek do punktu edycji" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 #, fuzzy msgid "Trim End at Edit Point" msgstr "Podziel w punkcie edycji" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 #, fuzzy msgid "Align Start" msgstr "Wyrównaj relatywnie" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 #, fuzzy msgid "Align Start Relative" msgstr "Wyrównaj relatywnie" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 #, fuzzy msgid "Align End" msgstr "Wyrównaj" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 #, fuzzy msgid "Align End Relative" msgstr "Wyrównaj relatywnie" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 #, fuzzy msgid "Align Sync" msgstr "Wyrównaj" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 #, fuzzy msgid "Align Sync Relative" msgstr "Wyrównaj relatywnie" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "" @@ -4616,33 +4627,33 @@ msgid "" "%2 as a new source, or skip it?" msgstr "" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "Anuluj import" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Edytor: nie można otworzyć pliku \"%1\", (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "Anuluj caÅ‚y import" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "Nie osadzaj tego" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "Osadź wszystko bez zadawania pytaÅ„" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 #, fuzzy msgid "Sample rate" msgstr "CzÄ™stotliwość próbkowania:" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4651,7 +4662,7 @@ msgstr "" "CzÄ™stotliwość próbkowania tego pliku nie odpowiada czÄ™stotliwoÅ›ci " "próbkowania sesji!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "Osadź mimo to" @@ -4688,32 +4699,32 @@ msgstr "kopiuj znacznik tempa" msgid "move tempo mark" msgstr "przesuÅ„ znacznik tempa" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "zmieÅ„ dÅ‚ugość stopniowego wzmocnienia" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "przesuÅ„ znacznik" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 #, fuzzy msgid "programming_error: %1" msgstr "bÅ‚Ä…d programowania: %1" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "nowy znacznik zakresu" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 msgid "rubberband selection" msgstr "" @@ -4792,7 +4803,7 @@ msgid "Sharing Solo?" msgstr "" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "Nagr" @@ -4872,7 +4883,7 @@ msgid "end" msgstr "PrzewiÅ„ do tyÅ‚u" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "dodaj znacznik" @@ -4881,7 +4892,7 @@ msgstr "dodaj znacznik" msgid "range" msgstr " zakres" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "usuÅ„ znacznik" @@ -4966,8 +4977,8 @@ msgstr "ZmieÅ„ nazwÄ™ znacznika" msgid "Rename Range" msgstr "ZmieÅ„ nazwÄ™ zakresu" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "ZmieÅ„ nazwÄ™" @@ -5113,7 +5124,7 @@ msgstr "PrzenieÅ› na spód" msgid "Rename Region" msgstr "ZmieÅ„ nazwÄ™ obszaru" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 msgid "New name:" msgstr "Nazwa:" @@ -5286,7 +5297,7 @@ msgstr "" "(Ta operacja nie może zostać cofniÄ™ta)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "Nie usuwaj niczego" @@ -5481,11 +5492,11 @@ msgstr "" msgid "close region gaps" msgstr "zresetuj wzmocnienie obszaru" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "" -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5499,7 +5510,7 @@ msgstr "" msgid "tracks" msgstr "Å›cieżki" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 msgid "track" msgstr "Å›cieżka" @@ -5507,7 +5518,7 @@ msgstr "Å›cieżka" msgid "busses" msgstr "szyny" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "szyna" @@ -5550,7 +5561,7 @@ msgstr "" msgid "Yes, remove them." msgstr "Tak, usuÅ„ je." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Tak, usuÅ„." @@ -5626,7 +5637,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "" @@ -5645,8 +5656,9 @@ msgstr "Przejdź" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "" @@ -5725,7 +5737,8 @@ msgstr "Åšcieżki/szyny" msgid "Track/Bus visible ?" msgstr "Åšcieżki/szyny" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "" @@ -5734,7 +5747,7 @@ msgstr "" msgid "Track/Bus active ?" msgstr "Åšcieżki/szyny" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 #, fuzzy msgid "I" msgstr "WejÅ›cie" @@ -5744,7 +5757,7 @@ msgstr "WejÅ›cie" msgid "MIDI input enabled" msgstr "WejÅ›cia" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "" @@ -5759,7 +5772,7 @@ msgstr "Tylko nagrywanie" msgid "Muted" msgstr "Wyciszenie" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "" @@ -5773,7 +5786,7 @@ msgstr "Solo" msgid "SI" msgstr "WejÅ›cie" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 #, fuzzy msgid "Solo Isolated" msgstr "Bezpieczne solo" @@ -6062,158 +6075,162 @@ msgid "192000Hz" msgstr "192000Hz" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Brak" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "Triangular" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "Rectangular" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "Shaped" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 #, fuzzy msgid "Playback/recording on 1 device" msgstr "Odtwarzanie/nagrywanie przy użyciu 1 urzÄ…dzenia" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 #, fuzzy msgid "Playback/recording on 2 devices" msgstr "Odtwarzanie/nagrywanie przy użyciu 2 urzÄ…dzeÅ„" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "Tylko odtwarzanie" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "Tylko nagrywanie" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 #, fuzzy msgid "raw" msgstr "rysuj" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 #, fuzzy msgid "Driver:" msgstr "Sterownik" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 #, fuzzy msgid "Audio Interface:" msgstr "Interfejs" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "CzÄ™stotliwość próbkowania:" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 #, fuzzy msgid "Buffer size:" msgstr "Rozmiar bufora" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 #, fuzzy msgid "Number of buffers:" msgstr "Liczba buforów" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 #, fuzzy msgid "Approximate latency:" msgstr "Przybliżone opóźnienie" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 #, fuzzy msgid "Audio mode:" msgstr "Tryb dźwiÄ™ku" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "Ignorowanie" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "Limit czasu na opowiedź klienta" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 #, fuzzy msgid "Number of ports:" msgstr "Liczba portów" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 #, fuzzy msgid "MIDI driver:" msgstr "Sterownik" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 #, fuzzy msgid "Dither:" msgstr "Rodzaj ditheringu" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "" "Nie znaleziono serwera JACK w systemie. ProszÄ™ zainstalować JACK i spróbować " "ponownie." -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "Serwer:" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 #, fuzzy msgid "Input device:" msgstr "UrzÄ…dzenie wejÅ›ciowe" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 #, fuzzy msgid "Output device:" msgstr "UrzÄ…dzenie wyjÅ›ciowe" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 #, fuzzy msgid "Hardware input latency:" msgstr "SprzÄ™towe opóźnienie dla wejÅ›cia (próbki)" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 #, fuzzy msgid "samples" msgstr "Próbki" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 #, fuzzy msgid "Hardware output latency:" msgstr "SprzÄ™towe opóźnienie dla wyjÅ›cia (próbki)" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "UrzÄ…dzenie" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "Zaawansowane" -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -6230,32 +6247,32 @@ msgid "" "%1 and choose the relevant device then." msgstr "" -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "" -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "" -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" "pliki konfiguracyjne zawierajÄ… nieistniejÄ…ce poÅ‚ożenie serwera JACK (%1)" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "KanaÅ‚y:" @@ -6419,9 +6436,9 @@ msgid "Folder:" msgstr "" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "PrzeglÄ…daj" @@ -6557,6 +6574,11 @@ msgstr "PoÅ‚ożenia" msgid "Broadcast Wave options" msgstr "" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "Na pewno usunąć %1 %2?" + #: export_preset_selector.cc:28 #, fuzzy msgid "Preset" @@ -6568,6 +6590,11 @@ msgid "" "Perhaps it references a format that has been removed?" msgstr "" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "Na pewno usunąć %1 %2?" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "" @@ -6581,36 +6608,49 @@ msgstr "" msgid "Range" msgstr "Zakresy" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "bÅ‚Ä…d programisty: %1 %2" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +msgid "%1" +msgstr "" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "Tryb automatyzacji wzmocnienia" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "Rodzaj automatyzacji wzmocnienia" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "" -#: gain_meter.cc:334 -msgid "-Inf" -msgstr "" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "" @@ -6622,7 +6662,7 @@ msgstr "" msgid "Switches" msgstr "" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "Sterowanie" @@ -6653,73 +6693,73 @@ msgstr "PoÅ‚Ä…czenie \"" msgid "MIDI Connection Manager" msgstr "PoÅ‚Ä…czenie \"" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 #, fuzzy msgid "port" msgstr "Eksportuj" -#: group_tabs.cc:306 +#: group_tabs.cc:308 #, fuzzy msgid "Selection..." msgstr "Zaznaczenie" -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "" -#: group_tabs.cc:308 +#: group_tabs.cc:310 #, fuzzy msgid "Soloed..." msgstr "Solo" -#: group_tabs.cc:314 +#: group_tabs.cc:316 #, fuzzy msgid "Create New Group ..." msgstr "Brak grupy" -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "" -#: group_tabs.cc:318 +#: group_tabs.cc:320 #, fuzzy msgid "Edit Group..." msgstr "Brak grupy" -#: group_tabs.cc:319 +#: group_tabs.cc:321 #, fuzzy msgid "Collect Group" msgstr "Zaznacz" -#: group_tabs.cc:320 +#: group_tabs.cc:322 #, fuzzy msgid "Remove Group" msgstr "Edycja grupy" -#: group_tabs.cc:323 +#: group_tabs.cc:325 #, fuzzy msgid "Remove Subgroup Bus" msgstr "Dodaj grupÄ™" -#: group_tabs.cc:325 +#: group_tabs.cc:327 #, fuzzy msgid "Add New Subgroup Bus" msgstr "Dodaj grupÄ™" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "" -#: group_tabs.cc:328 +#: group_tabs.cc:330 #, fuzzy msgid "Add New Aux Bus (post-fader)" msgstr "Wyczyść metrum" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "" -#: group_tabs.cc:335 +#: group_tabs.cc:337 #, fuzzy msgid "Disable All Groups" msgstr "WyÅ‚Ä…cz wszystko" @@ -6826,11 +6866,11 @@ msgstr "bÅ‚Ä…d programowania: %1 %2" msgid "I/O selector" msgstr "Odwróć zaznaczenie" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "%1 wejÅ›cie" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "%1 wyjÅ›cie" @@ -6910,7 +6950,7 @@ msgstr[2] "Próbki" msgid "Reset" msgstr "Zresetuj" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "" @@ -6939,71 +6979,71 @@ msgstr "" msgid "Pre-Emphasis" msgstr "Przed naciskiem" -#: location_ui.cc:310 +#: location_ui.cc:314 #, fuzzy msgid "Remove this range" msgstr "ustaw zakres przeÅ‚Ä…cznika" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 #, fuzzy msgid "Set range start from playhead location" msgstr "PrzenieÅ› znacznik zakresu do gÅ‚owicy" -#: location_ui.cc:316 +#: location_ui.cc:320 #, fuzzy msgid "Set range end from playhead location" msgstr "Ustaw zakres wedÅ‚ug zaznaczenia" -#: location_ui.cc:320 +#: location_ui.cc:324 #, fuzzy msgid "Remove this marker" msgstr "przesuÅ„ znacznik" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 #, fuzzy msgid "Set marker time from playhead location" msgstr "Ustaw zakres wedÅ‚ug zaznaczenia" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "" -#: location_ui.cc:708 +#: location_ui.cc:720 #, fuzzy msgid "New Marker" msgstr "Znacznik" -#: location_ui.cc:709 +#: location_ui.cc:721 #, fuzzy msgid "New Range" msgstr "Dodaj nowy zakres" -#: location_ui.cc:722 +#: location_ui.cc:734 #, fuzzy msgid "Loop/Punch Ranges" msgstr "Zakresy pÄ™tli/przeÅ‚Ä…cznika" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "dodaj znacznik zakresu" @@ -7079,20 +7119,20 @@ msgid "" "session at this time, because we would lose your connection information.\n" msgstr "" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr " (skompilowany przy użyciu " -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr " oraz GCC w wesji " -#: main.cc:504 +#: main.cc:500 #, fuzzy msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "Copyright (C) 1999-2008 Paul Davis" -#: main.cc:505 +#: main.cc:501 #, fuzzy msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " @@ -7101,29 +7141,34 @@ msgstr "" "Prawa autorskie do niektórych fragmentów (C) Steve Harris, Ari Johnson, " "Brett Viren, Joel Baker" -#: main.cc:507 +#: main.cc:503 #, fuzzy msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "Na program Ardour nie udziela siÄ™ ABSOLUTNIE Å»ADNEJ GWARANCJI" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "To jest oprogramowanie darmowe i możesz je rozpowszechniać" -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "" "na Å›ciÅ›le okreÅ›lonych zasadach; zobacz plik COPYING by dowiedzieć siÄ™ wiÄ™cej." -#: main.cc:519 +#: main.cc:513 +#, fuzzy +msgid "could not initialize %1." +msgstr "Nie można dokonać inicjalizacji programu." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "" -#: main.cc:525 +#: main.cc:528 #, fuzzy msgid "could not create %1 GUI" msgstr "Nie można utworzyć Ardour GUI" @@ -7133,7 +7178,7 @@ msgstr "Nie można utworzyć Ardour GUI" msgid "Display delta to edit cursor" msgstr "Zegar podstawowy wyÅ›wietla odstÄ™p od wskaźnika" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "Tekst znacznika" @@ -7672,7 +7717,7 @@ msgstr "" msgid "Missing Plugins" msgstr "Wtyczki" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "OK" @@ -7751,239 +7796,252 @@ msgstr "" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "przed" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 #, fuzzy msgid "Comments" msgstr "Komentarze" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "" -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 msgid "Hide this mixer strip" msgstr "" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 #, fuzzy msgid "Click to select metering point" msgstr "Wszystko za punktem edycji" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 #, fuzzy msgid "lock" msgstr "Zegar" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 msgid "iso" msgstr "" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 #, fuzzy msgid "Mix group" msgstr "Brak grupy" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 msgid "Phase Invert" msgstr "" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 #, fuzzy msgid "Solo Safe" msgstr "Bezpieczne solo" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "Grupa" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 #, fuzzy msgid "Meter Point" msgstr "Ustawienia metrum" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 #, fuzzy msgid "Enable/Disable MIDI input" msgstr "WÅ‚Ä…cz/wyÅ‚Ä…cz metronom" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 #, fuzzy msgid "" "Aux\n" "Sends" msgstr "WysyÅ‚anie MTC" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 #, fuzzy msgid "Snd" msgstr "Sekundy" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 #, fuzzy msgid "Disconnected" msgstr "rozÅ‚Ä…czono" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 msgid "*Comments*" msgstr "*Komentarze*" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 #, fuzzy msgid "Cmt" msgstr "Wytnij" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "Kliknij by dodać/edytować komentarze" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr ": edytor komentarzy" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 #, fuzzy msgid "Comments..." msgstr "Komentarze" -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 #, fuzzy msgid "Save As Template..." msgstr "Zapisz szablon" -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "Aktywne" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "" -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 #, fuzzy msgid "Protect Against Denormals" msgstr "ChroÅ„ przed liczbami zdenormalizowanymi" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 #, fuzzy msgid "Remote Control ID..." msgstr "ID zdalnego sterowania" -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 #, fuzzy msgid "in" msgstr "Wzmocnienie" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "za" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 #, fuzzy msgid "out" msgstr "O programie" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 #, fuzzy msgid "pr" msgstr "przed" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 #, fuzzy msgid "po" msgstr "L" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 #, fuzzy msgid "o" msgstr "Mono" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 #, fuzzy msgid "D" msgstr "CD" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 #, fuzzy msgid "i" msgstr "Wzmocnienie" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 #, fuzzy msgid "Pre-fader" msgstr "Przed potencjometrem" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 #, fuzzy msgid "Post-fader" msgstr "Za potencjometrem" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "KanaÅ‚y" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "" @@ -7992,10 +8050,68 @@ msgstr "" msgid "-all-" msgstr "-wszystko-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "Pas" +#: meter_strip.cc:764 +#, fuzzy +msgid "Variable height" +msgstr "wysokość" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "Krótko" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +msgid "VU" +msgstr "" + #: monitor_section.cc:62 msgid "SiP" msgstr "" @@ -8383,7 +8499,7 @@ msgstr "" msgid "Panner (2D)" msgstr "" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "PomiÅ„" @@ -8566,7 +8682,7 @@ msgstr "Kategoria" msgid "Eh? LADSPA plugins don't have editors!" msgstr "" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " "version of %1)" @@ -8576,64 +8692,64 @@ msgstr "" msgid "unknown type of editor-supplying plugin" msgstr "" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " "version of %1)" msgstr "" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "Dodaj" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 #, fuzzy msgid "Description" msgstr "Zaznaczenie" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 #, fuzzy msgid "Plugin analysis" msgstr "Wtyczki" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 #, fuzzy msgid "Save a new preset" msgstr "Nazwa zrzutu:" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" msgstr "" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 #, fuzzy msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" @@ -8641,21 +8757,33 @@ msgstr[0] "Opóźnienie" msgstr[1] "Opóźnienie" msgstr[2] "Opóźnienie" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 #, fuzzy msgid "latency (%1 ms)" msgstr "Opóźnienie" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 #, fuzzy msgid "Edit Latency" msgstr "Opóźnienie" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "" @@ -8770,79 +8898,80 @@ msgstr "" msgid "Port Insert " msgstr "Nazwa portu" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 #, fuzzy msgid "Sources" msgstr "Szyny" -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 #, fuzzy msgid "Destinations" msgstr "WejÅ›cia" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, fuzzy, c-format msgid "Rename '%s'..." msgstr "ZmieÅ„ nazwÄ™" -#: port_matrix.cc:451 +#: port_matrix.cc:472 #, fuzzy msgid "Remove all" msgstr "UsuÅ„ znak" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, fuzzy, c-format msgid "%s all" msgstr "Resetuj wszystko" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "Skanuj ponownie" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "" -#: port_matrix.cc:702 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." msgstr "" -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "" -#: port_matrix.cc:728 +#: port_matrix.cc:749 msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, fuzzy, c-format msgid "Remove '%s'" msgstr "UsuÅ„" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, c-format msgid "%s all from '%s'" msgstr "" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 #, fuzzy msgid "channel" msgstr " " @@ -8857,59 +8986,59 @@ msgstr "Nie ma wiÄ™cej dostÄ™pnych portów JACK." msgid "There are no %1 ports to connect." msgstr "Nie ma wiÄ™cej dostÄ™pnych portów JACK." -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 #, fuzzy msgid "Show All Controls" msgstr "WyÅ›wietl ustawienia wysyÅ‚u" -#: processor_box.cc:375 +#: processor_box.cc:376 #, fuzzy msgid "Hide All Controls" msgstr "Ukryj wszystkie przejÅ›cia krzyżowe" -#: processor_box.cc:464 +#: processor_box.cc:465 #, fuzzy msgid "on" msgstr "Mono" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "wyÅ‚" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" msgstr "" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" msgstr "" -#: processor_box.cc:1196 +#: processor_box.cc:1209 #, fuzzy msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" @@ -8917,7 +9046,7 @@ msgstr[0] "%1 wejÅ›cie" msgstr[1] "%1 wejÅ›cie" msgstr[2] "%1 wejÅ›cie" -#: processor_box.cc:1200 +#: processor_box.cc:1213 #, fuzzy msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" @@ -8925,13 +9054,13 @@ msgstr[0] "%1 wejÅ›cie" msgstr[1] "%1 wejÅ›cie" msgstr[2] "%1 wejÅ›cie" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" msgstr "" -#: processor_box.cc:1206 +#: processor_box.cc:1219 #, fuzzy msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" @@ -8939,7 +9068,7 @@ msgstr[0] "KanaÅ‚y wejÅ›ciowe" msgstr[1] "KanaÅ‚y wejÅ›ciowe" msgstr[2] "KanaÅ‚y wejÅ›ciowe" -#: processor_box.cc:1210 +#: processor_box.cc:1223 #, fuzzy msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" @@ -8947,44 +9076,44 @@ msgstr[0] "KanaÅ‚y wejÅ›ciowe" msgstr[1] "KanaÅ‚y wejÅ›ciowe" msgstr[2] "KanaÅ‚y wejÅ›ciowe" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" msgstr "" -#: processor_box.cc:1249 +#: processor_box.cc:1262 msgid "Cannot set up new send: %1" msgstr "" -#: processor_box.cc:1581 +#: processor_box.cc:1594 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" "outputs will not work correctly." msgstr "" -#: processor_box.cc:1765 +#: processor_box.cc:1778 #, fuzzy msgid "Rename Processor" msgstr "ZmieÅ„ nazwÄ™ Å›cieżki" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" "could not match the configuration of this track." msgstr "" -#: processor_box.cc:1987 +#: processor_box.cc:2000 #, fuzzy msgid "" "Do you really want to remove all processors from %1?\n" @@ -8993,16 +9122,16 @@ msgstr "" "Na pewno usunąć wszystkie przekierowania przed potencjometrem z tej szyny?\n" "(tej operacji nie można cofnąć)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "Tak, usuÅ„ je wszystkie" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 #, fuzzy msgid "Remove processors" msgstr "UsuÅ„ znacznik" -#: processor_box.cc:2008 +#: processor_box.cc:2021 #, fuzzy msgid "" "Do you really want to remove all pre-fader processors from %1?\n" @@ -9011,7 +9140,7 @@ msgstr "" "Na pewno usunąć wszystkie przekierowania przed potencjometrem z tej szyny?\n" "(tej operacji nie można cofnąć)" -#: processor_box.cc:2011 +#: processor_box.cc:2024 #, fuzzy msgid "" "Do you really want to remove all post-fader processors from %1?\n" @@ -9020,59 +9149,59 @@ msgstr "" "Na pewno sunąć wszystkie przekierowania za potencjometrem z tej szyny?\n" "(tej operacji nie można cofnąć)" -#: processor_box.cc:2198 +#: processor_box.cc:2200 #, fuzzy msgid "New Plugin" msgstr "Nowa wtyczka..." -#: processor_box.cc:2201 +#: processor_box.cc:2203 msgid "New Insert" msgstr "Nowy przysyÅ‚" -#: processor_box.cc:2204 +#: processor_box.cc:2206 #, fuzzy msgid "New External Send ..." msgstr "Nowy wysyÅ‚..." -#: processor_box.cc:2208 +#: processor_box.cc:2210 #, fuzzy msgid "New Aux Send ..." msgstr "Nowy wysyÅ‚..." -#: processor_box.cc:2212 +#: processor_box.cc:2214 #, fuzzy msgid "Clear (all)" msgstr "Wyczyść wszystkie zakresy" -#: processor_box.cc:2214 +#: processor_box.cc:2216 #, fuzzy msgid "Clear (pre-fader)" msgstr "Wyczyść metrum" -#: processor_box.cc:2216 +#: processor_box.cc:2218 #, fuzzy msgid "Clear (post-fader)" msgstr "Wyczyść metrum" -#: processor_box.cc:2242 +#: processor_box.cc:2244 msgid "Activate All" msgstr "WÅ‚Ä…cz wszystko" -#: processor_box.cc:2244 +#: processor_box.cc:2246 #, fuzzy msgid "Deactivate All" msgstr "WyÅ‚Ä…cz wszystko" -#: processor_box.cc:2246 +#: processor_box.cc:2248 #, fuzzy msgid "A/B Plugins" msgstr "Wtyczki" -#: processor_box.cc:2255 +#: processor_box.cc:2257 msgid "Edit with generic controls..." msgstr "" -#: processor_box.cc:2531 +#: processor_box.cc:2557 msgid "%1: %2 (by %3)" msgstr "" @@ -9250,7 +9379,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -9346,7 +9475,7 @@ msgstr "" msgid "Click gain level" msgstr "Plik dźwiÄ™kowy uderzenia" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Automatyka" @@ -9535,101 +9664,105 @@ msgstr "" msgid "Show meters on tracks in the editor" msgstr "" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 #, fuzzy msgid "Show waveforms in regions" msgstr "WyÅ›wietl obszary automatyczne" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 #, fuzzy msgid "Show gain envelopes in audio regions" msgstr "WyÅ›wietl obszary automatyczne" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 #, fuzzy msgid "Waveform scale" msgstr "Wykres fali" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "linearna" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 #, fuzzy msgid "logarithmic" msgstr "Logarytmiczny" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 #, fuzzy msgid "Waveform shape" msgstr "Wykres fali" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 #, fuzzy msgid "traditional" msgstr "Tradycyjny" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 #, fuzzy msgid "rectified" msgstr "Poprawiony" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 #, fuzzy msgid "Synchronise editor and mixer track order" msgstr "Synchronizacja kolejnoÅ›ci Å›cieżek miksera i edytora" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 #, fuzzy msgid "Synchronise editor and mixer selection" msgstr "Synchronizacja kolejnoÅ›ci Å›cieżek miksera i edytora" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 #, fuzzy msgid "Name new markers" msgstr "Dodaj nowy znacznik" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9637,380 +9770,460 @@ msgid "" "You can always rename markers by right-clicking on them" msgstr "" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 #, fuzzy msgid "Buffering" msgstr "Rozmiar bufora" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 #, fuzzy msgid "Record monitoring handled by" msgstr "Monitorowanie" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 #, fuzzy msgid "ardour" msgstr "ardour: " -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 #, fuzzy msgid "audio hardware" msgstr "Klatki audio" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 #, fuzzy msgid "Tape machine mode" msgstr "Tryb taÅ›mowy" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 #, fuzzy msgid "Auto-connect master/monitor busses" msgstr "ÅÄ…cz wyjÅ›cia z głównÄ… szynÄ… automatycznie" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 #, fuzzy msgid "Connect track inputs" msgstr "PoÅ‚Ä…czenia" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 #, fuzzy msgid "automatically to physical inputs" msgstr "Automatyczne Å‚Ä…czenie do wejść fizycznych" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 #, fuzzy msgid "manually" msgstr "RÄ™cznie" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 #, fuzzy msgid "automatically to physical outputs" msgstr "Automatyczne Å‚Ä…czenie do wejść fizycznych" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 #, fuzzy msgid "automatically to master bus" msgstr "Automatyczne Å‚Ä…czenie wyjść" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 #, fuzzy msgid "Denormals" msgstr "Cofnij normalizacjÄ™" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 #, fuzzy msgid "Use DC bias to protect against denormals" msgstr "ChroÅ„ przed liczbami zdenormalizowanymi" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 #, fuzzy msgid "Processor handling" msgstr "NieobsÅ‚ugiwane przez procesor" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 #, fuzzy msgid "no processor handling" msgstr "NieobsÅ‚ugiwane przez procesor" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 #, fuzzy msgid "use FlushToZero" msgstr "Użyj FlushToZero" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 #, fuzzy msgid "use DenormalsAreZero" msgstr "Użyj DenormalsAreZero" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 #, fuzzy msgid "use FlushToZero and DenormalsAreZero" msgstr "Użyj FlushToZero & DenormalsAreZero" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 #, fuzzy msgid "Silence plugins when the transport is stopped" msgstr "Zatrzymanie wtyczek przy zakoÅ„czeniu nagrywania/odtwarzania" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 #, fuzzy msgid "Make new plugins active" msgstr "wÅ‚Ä…cz stopniowe wzmocnienie" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 #, fuzzy msgid "Listen Position" msgstr "Pozycja" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 #, fuzzy msgid "after-fader (AFL)" msgstr "Stefan Kersten" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 #, fuzzy msgid "pre-fader (PFL)" msgstr "Przekierowania przed potencjometrem" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 #, fuzzy msgid "before pre-fader processors" msgstr "UsuÅ„ znacznik" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 #, fuzzy msgid "immediately post-fader" msgstr "Wyczyść metrum" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 #, fuzzy msgid "after post-fader processors (before pan)" msgstr "UsuÅ„ znacznik" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "WyÅ›wietlanie wyciszania solo" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 #, fuzzy msgid "Mute affects control outputs" msgstr "ÅÄ…cz wyjÅ›cia rÄ™cznie" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 #, fuzzy msgid "Send MIDI Time Code" msgstr "Sprzężenie zwrotne MIDI" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 #, fuzzy msgid "Send MIDI control feedback" msgstr "Sprzężenie zwrotne MIDI" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 #, fuzzy msgid "Inbound MMC device ID" msgstr "ID przychodzÄ…cego sygnaÅ‚u MMC" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 #, fuzzy msgid "Outbound MMC device ID" msgstr "ID wychodzÄ…cego sygnaÅ‚u MMC" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 msgid "Sound MIDI notes as they are selected" msgstr "" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 #, fuzzy msgid "User interaction" msgstr "Operacje na obszarach" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 #, fuzzy msgid "Keyboard" msgstr "UkÅ‚ad klawiatury" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 #, fuzzy msgid "Control surface remote ID" msgstr "UrzÄ…dzenia sterujÄ…ce" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 #, fuzzy msgid "assigned by user" msgstr "ID urzÄ…dzenia zdalnego przydzielone rÄ™cznie" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 #, fuzzy msgid "follows order of mixer" msgstr "ID urzÄ…dzenia zdalnego zgodne z kolejnoÅ›ciÄ… miksera" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 #, fuzzy msgid "follows order of editor" msgstr "ID urzÄ…dzenia zdalnego zgodne z kolejnoÅ›ciÄ… edytora" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 #, fuzzy msgid "Preferences|GUI" msgstr "Preferencje" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 #, fuzzy msgid "Mixer Strip" msgstr "Mikser" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 msgid "Use narrow strips in the mixer by default" msgstr "" -#: rc_option_editor.cc:1898 +#: rc_option_editor.cc:1906 #, fuzzy -msgid "Meter hold time" +msgid "Peak hold time" msgstr "Przytrzymanie metrum" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 #, fuzzy msgid "short" msgstr "Krótko" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 #, fuzzy msgid "medium" msgstr "Åšrednio" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "" -#: rc_option_editor.cc:1912 +#: rc_option_editor.cc:1920 #, fuzzy -msgid "Meter fall-off" +msgid "DPM fall-off" msgstr "Zmniejszanie metrum" -#: rc_option_editor.cc:1918 -#, fuzzy -msgid "slowest" -msgstr "Najwolniej" +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" msgstr "" -#: rc_option_editor.cc:1921 -#, fuzzy -msgid "fast" -msgstr "najszybsza" +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" -#: rc_option_editor.cc:1922 +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" + +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" + +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 #, fuzzy -msgid "faster" -msgstr "Szybciej" +msgid "Peak threshold [dBFS]" +msgstr "Wartość progowa" -#: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "najszybsza" +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" + +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -10021,11 +10234,11 @@ msgstr "przesÅ‚uchaj ten obszar" msgid "Position:" msgstr "Pozycja" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "DÅ‚ugość:" @@ -10051,24 +10264,24 @@ msgstr "" msgid "Source:" msgstr "ŹródÅ‚o sygnaÅ‚u" -#: region_editor.cc:167 +#: region_editor.cc:166 #, fuzzy msgid "Region '%1'" msgstr "Obszar %1" -#: region_editor.cc:274 +#: region_editor.cc:273 msgid "change region start position" msgstr "zmieÅ„ pozycjÄ™ poczÄ…tkowÄ… obszaru" -#: region_editor.cc:290 +#: region_editor.cc:289 msgid "change region end position" msgstr "zmieÅ„ pozycjÄ™ koÅ„cowÄ… obszaru" -#: region_editor.cc:310 +#: region_editor.cc:309 msgid "change region length" msgstr "zmieÅ„ dÅ‚ugość obszaru" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 #, fuzzy msgid "change region sync point" msgstr "zmieÅ„ pozycjÄ™ koÅ„cowÄ… obszaru" @@ -10277,358 +10490,358 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "" -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "Åšcieżki/szyny" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "WejÅ›cia" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "WyjÅ›cia" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "BRAK ÅšCIEÅ»KI" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 #, fuzzy msgid "No Track or Bus Selected" msgstr "Brak zaznaczonego szlaku" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "g" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "L" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "a" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "Nagrywanie" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 #, fuzzy msgid "Route Group" msgstr "Edycja grupy" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 #, fuzzy msgid "MIDI Controllers and Automation" msgstr "Reguluje automatyzacjÄ™ wzmocnienia" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 #, fuzzy msgid "Show All Automation" msgstr "WyÅ›wietl caÅ‚Ä… automatykÄ™" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 #, fuzzy msgid "Show Existing Automation" msgstr "WyÅ›wietl istniejÄ…cÄ… automatykÄ™" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 #, fuzzy msgid "Hide All Automation" msgstr "Ukryj caÅ‚Ä… automatykÄ™" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 #, fuzzy msgid "Processor automation" msgstr "wyczyść automatyzacjÄ™" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 #, fuzzy msgid "Color..." msgstr "Kolor" -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 #, fuzzy msgid "Layers" msgstr "Warstwy" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 #, fuzzy msgid "Automatic (based on I/O connections)" msgstr "Automatyczne Å‚Ä…czenie wyjść" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 #, fuzzy msgid "(Currently: Existing Material)" msgstr "Do istniejÄ…cego materiaÅ‚u" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 #, fuzzy msgid "(Currently: Capture Time)" msgstr "Z czasem nagrania" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 #, fuzzy msgid "Align With Existing Material" msgstr "Do istniejÄ…cego materiaÅ‚u" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 #, fuzzy msgid "Align With Capture Time" msgstr "Z czasem nagrania" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 msgid "Alignment" msgstr "Wyrównanie" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 #, fuzzy msgid "Normal Mode" msgstr "Tryb standardowy" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 #, fuzzy msgid "Tape Mode" msgstr "Tryb taÅ›mowy" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 #, fuzzy msgid "Non-Layered Mode" msgstr "Tryb przyciÄ…gania" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Lista odtwarzania" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 #, fuzzy msgid "Rename Playlist" msgstr "Nazwa listy odtwarzania" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 #, fuzzy msgid "New name for playlist:" msgstr "Nazwa listy odtwarzania" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 #, fuzzy msgid "New Copy Playlist" msgstr "Nazwa listy odtwarzania" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 #, fuzzy msgid "Name for new playlist:" msgstr "Nazwa listy odtwarzania" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 #, fuzzy msgid "New Playlist" msgstr "Lista odtwarzania" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 msgid "You cannot create a track with that name as it is reserved for %1" msgstr "" -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 #, fuzzy msgid "New Copy..." msgstr "Nowa kopia" -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 #, fuzzy msgid "New Take" msgstr "Nowe tempo" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 #, fuzzy msgid "Copy Take" msgstr "Skopiuj" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "Wyczyść aktualnÄ…" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 #, fuzzy msgid "Select From All..." msgstr "Wybierz spoÅ›ród wszystkich..." -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 #, fuzzy msgid "Remove \"%1\"" msgstr "UsuÅ„" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 #, fuzzy msgid "After-fade listen (AFL)" msgstr "Stefan Kersten" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 #, fuzzy msgid "Pre-fade listen (PFL)" msgstr "Przekierowania przed potencjometrem" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "s" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "w" -#: route_ui.cc:114 +#: route_ui.cc:119 #, fuzzy msgid "Mute this track" msgstr "Ukryj tÄ™ Å›cieżkÄ™" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "" -#: route_ui.cc:133 +#: route_ui.cc:138 #, fuzzy msgid "Monitor input" msgstr "Monitorowanie" -#: route_ui.cc:139 +#: route_ui.cc:144 #, fuzzy msgid "Monitor playback" msgstr "Zatrzymaj odtwarzanie" -#: route_ui.cc:586 +#: route_ui.cc:591 msgid "Not connected to JACK - cannot engage record" msgstr "Brak poÅ‚Ä…czenia z JACK - nie można rozpocząć nagrywania" -#: route_ui.cc:781 +#: route_ui.cc:786 #, fuzzy msgid "Step Entry" msgstr "Ustawianie edytora" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "" -#: route_ui.cc:858 +#: route_ui.cc:863 #, fuzzy msgid "Assign all tracks and buses (prefader)" msgstr "do zaznaczonych Å›cieżek" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "" -#: route_ui.cc:866 +#: route_ui.cc:871 #, fuzzy msgid "Assign all tracks and buses (postfader)" msgstr "do zaznaczonych Å›cieżek" -#: route_ui.cc:870 +#: route_ui.cc:875 #, fuzzy msgid "Assign selected tracks (prefader)" msgstr "do zaznaczonych Å›cieżek" -#: route_ui.cc:874 +#: route_ui.cc:879 #, fuzzy msgid "Assign selected tracks and buses (prefader)" msgstr "do zaznaczonych Å›cieżek" -#: route_ui.cc:877 +#: route_ui.cc:882 #, fuzzy msgid "Assign selected tracks (postfader)" msgstr "do zaznaczonych Å›cieżek" -#: route_ui.cc:881 +#: route_ui.cc:886 #, fuzzy msgid "Assign selected tracks and buses (postfader)" msgstr "do zaznaczonych Å›cieżek" -#: route_ui.cc:884 +#: route_ui.cc:889 #, fuzzy msgid "Copy track/bus gains to sends" msgstr "Skopiuj pliki do sesji" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "" -#: route_ui.cc:1206 +#: route_ui.cc:1211 #, fuzzy msgid "Solo Isolate" msgstr "Bezpieczne solo" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "Przed potencjometrem" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "Za potencjometrem" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "Główne wyjÅ›cia" -#: route_ui.cc:1385 +#: route_ui.cc:1390 #, fuzzy msgid "Color Selection" msgstr "Odtwórz zaznaczenie" -#: route_ui.cc:1472 +#: route_ui.cc:1477 #, fuzzy msgid "" "Do you really want to remove track \"%1\" ?\n" @@ -10642,7 +10855,7 @@ msgstr "" "Można również utracić listÄ™ odtwarzania używanÄ… przez tÄ™ Å›cieżkÄ™.\n" "(tej operacji nie można cofnąć)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 #, fuzzy msgid "" "Do you really want to remove bus \"%1\" ?\n" @@ -10654,69 +10867,69 @@ msgstr "" "Można również utracić listÄ™ odtwarzania używanÄ… przez tÄ™ Å›cieżkÄ™.\n" "(tej operacji nie można cofnąć)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 #, fuzzy msgid "Remove track" msgstr "UsuÅ„ znak" -#: route_ui.cc:1484 +#: route_ui.cc:1489 #, fuzzy msgid "Remove bus" msgstr "UsuÅ„" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" msgstr "" -#: route_ui.cc:1515 +#: route_ui.cc:1520 #, fuzzy msgid "Use the new name" msgstr "nazwa:" -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "ZmieÅ„ nazwÄ™ Å›cieżki" -#: route_ui.cc:1531 +#: route_ui.cc:1536 #, fuzzy msgid "Rename Bus" msgstr "ZmieÅ„ nazwÄ™" -#: route_ui.cc:1690 +#: route_ui.cc:1695 #, fuzzy msgid " latency" msgstr "Opóźnienie" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "" -#: route_ui.cc:1709 +#: route_ui.cc:1714 #, fuzzy msgid "Save As Template" msgstr "Zapisz szablon" -#: route_ui.cc:1710 +#: route_ui.cc:1715 #, fuzzy msgid "Template name:" msgstr "Szablon:" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "ID zdalnego sterowania" -#: route_ui.cc:1793 +#: route_ui.cc:1798 #, fuzzy msgid "Remote control ID:" msgstr "ID zdalnego sterowania" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10724,17 +10937,17 @@ msgid "" "The remote control ID of %3 cannot be changed." msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the master bus" msgstr "Tworzenie głównej szyny" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the monitor bus" msgstr "Tworzenie głównej szyny" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10745,23 +10958,23 @@ msgid "" "change this%5" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the mixer" msgstr "Mikser" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the editor" msgstr "edytor" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." msgstr "" -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "" @@ -11295,52 +11508,108 @@ msgstr "Przyklejenie do taktów i uderzeÅ„" msgid "Glue new regions to bars and beats" msgstr "Przyklejenie do taktów i uderzeÅ„" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "Ustawienia metrum" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "WyÅ›wietl wszystkie Å›cieżki audio" + +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "szyny" + +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "Tworzenie głównej szyny" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "zmiana ustawienia nagrywania" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "i przycisk:" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "i przycisk:" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "Åšcieżki/szyny" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 msgid "as new tracks" msgstr "jako nowe Å›cieżki" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 msgid "to selected tracks" msgstr "do zaznaczonych Å›cieżek" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to region list" msgstr "" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "as new tape tracks" msgstr "jako nowe Å›cieżki taÅ›mowe" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 msgid "Auto-play" msgstr "Autoodtwarzanie" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 #, fuzzy msgid "Sound File Information" msgstr "Informacje o pliku dźwiÄ™kowym" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 msgid "Timestamp:" msgstr "" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "Format:" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "Etykiety:" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Nie można odczytać pliku: %1 (%2)." @@ -11370,11 +11639,11 @@ msgstr "Pliki dźwiÄ™kowe" msgid "MIDI files" msgstr "Wszystkie pliki" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "Wszystkie pliki" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "PrzeglÄ…danie plików" @@ -11382,245 +11651,231 @@ msgstr "PrzeglÄ…danie plików" msgid "Paths" msgstr "Åšcieżki" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "Wyszukiwanie etykiet" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 #, fuzzy msgid "Sort:" msgstr "Sortuj" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 #, fuzzy msgid "Longest" msgstr "NajwiÄ™kszy" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 #, fuzzy msgid "Shortest" msgstr "Skrót" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 #, fuzzy msgid "Newest" msgstr "Najwolniej" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 #, fuzzy msgid "Least downloaded" msgstr "Rozpocznij pobieranie" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 #, fuzzy msgid "ID" msgstr "MIDI" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 #, fuzzy msgid "Filename" msgstr "ZmieÅ„ nazwÄ™" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 #, fuzzy msgid "Duration" msgstr "Czas trwania (s)" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 #, fuzzy msgid "Size" msgstr "NajwiÄ™kszy rozmiar" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 #, fuzzy msgid "Samplerate" msgstr "CzÄ™stotliwość próbkowania:" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "" -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 #, fuzzy msgid "GB" msgstr "Przejdź" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "" - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "jedna Å›cieżka na plik" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "jedna Å›cieżka na kanaÅ‚" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 msgid "sequence files" msgstr "" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 #, fuzzy msgid "all files in one track" msgstr "jako nowe Å›cieżki" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 msgid "merge files" msgstr "poÅ‚Ä…cz pliki" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 msgid "one region per file" msgstr "" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 msgid "one region per channel" msgstr "" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 msgid "all files in one region" msgstr "" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" msgstr "" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "Skopiuj pliki do sesji" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 #, fuzzy msgid "file timestamp" msgstr "WedÅ‚ug timestamp obszaru" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 #, fuzzy msgid "edit point" msgstr "Punkt edycji" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 #, fuzzy msgid "playhead" msgstr "GÅ‚owica" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 #, fuzzy msgid "session start" msgstr "od poczÄ…tku sesji" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "" -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 #, fuzzy msgid "Insert at" msgstr "Wstaw:" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 #, fuzzy msgid "Mapping" msgstr "WyjÅ›cia" -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 #, fuzzy msgid "Conversion quality" msgstr "Jakość konwersji:" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "Najlepsza" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "Dobra" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "Szybka" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "Najszybciej" @@ -11716,21 +11971,21 @@ msgstr "" #: startup.cc:194 msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11840,10 +12095,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "" - #: startup.cc:729 #, fuzzy msgid "Open" @@ -11859,94 +12110,94 @@ msgstr "Sesja" msgid "Create session folder in:" msgstr "PoÅ‚ożenie folderu:" -#: startup.cc:813 +#: startup.cc:821 #, fuzzy msgid "Select folder for session" msgstr "Wszystko przed punktem edycji" -#: startup.cc:845 +#: startup.cc:853 #, fuzzy msgid "Use this template" msgstr "Wybieranie szablonu" -#: startup.cc:848 +#: startup.cc:856 #, fuzzy msgid "no template" msgstr "-szablon" -#: startup.cc:876 +#: startup.cc:884 msgid "Use an existing session as a template:" msgstr "" -#: startup.cc:888 +#: startup.cc:896 #, fuzzy msgid "Select template" msgstr "Wybieranie szablonu" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "Nowa Sesja" -#: startup.cc:1068 +#: startup.cc:1077 #, fuzzy msgid "Select session file" msgstr "Wybieranie pliku sesji" -#: startup.cc:1084 +#: startup.cc:1093 msgid "Browse:" msgstr "PoÅ‚ożenie:" -#: startup.cc:1093 +#: startup.cc:1102 #, fuzzy msgid "Select a session" msgstr "Wybieranie pliku sesji" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr " " -#: startup.cc:1135 +#: startup.cc:1145 msgid "Busses" msgstr "Szyny" -#: startup.cc:1136 +#: startup.cc:1146 msgid "Inputs" msgstr "WejÅ›cia" -#: startup.cc:1137 +#: startup.cc:1147 msgid "Outputs" msgstr "WyjÅ›cia" -#: startup.cc:1145 +#: startup.cc:1155 #, fuzzy msgid "Create master bus" msgstr "Tworzenie głównej szyny" -#: startup.cc:1155 +#: startup.cc:1165 #, fuzzy msgid "Automatically connect to physical inputs" msgstr "Automatyczne Å‚Ä…czenie do wejść fizycznych" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "Ilość używanych kanałów:" -#: startup.cc:1215 +#: startup.cc:1225 #, fuzzy msgid "Automatically connect outputs" msgstr "Automatyczne Å‚Ä…czenie wyjść" -#: startup.cc:1237 +#: startup.cc:1247 #, fuzzy msgid "... to master bus" msgstr "do głównej szyny" -#: startup.cc:1247 +#: startup.cc:1257 #, fuzzy msgid "... to physical outputs" msgstr "do wyjść fizycznych" -#: startup.cc:1297 +#: startup.cc:1307 #, fuzzy msgid "Advanced Session Options" msgstr "Opcje zaawansowane" @@ -12673,21 +12924,21 @@ msgstr "" msgid "bad XPM header %1" msgstr "" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "" -#: utils.cc:544 +#: utils.cc:591 #, fuzzy msgid "cannot find XPM file for %1" msgstr "nie można otworzyć pliku pango.rc %1" -#: utils.cc:570 +#: utils.cc:617 #, fuzzy msgid "cannot find icon image for %1 using %2" msgstr "nie można otworzyć pliku pango.rc %1" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "" @@ -12695,84 +12946,86 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 #, fuzzy msgid "Set Video Track" msgstr "Dodaj Å›cieżkÄ™ dźwiÄ™kowÄ…" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 #, fuzzy msgid "Launch External Video Monitor" msgstr "Rozszerzone" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 #, fuzzy msgid "Video files" msgstr "Pliki dźwiÄ™kowe" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 #, fuzzy msgid "Video Information" msgstr "Informacje o pliku dźwiÄ™kowym" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 #, fuzzy msgid "Start:" msgstr "Wyrównaj relatywnie" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 #, fuzzy msgid "Frame rate:" msgstr "CzÄ™stotliwość próbkowania:" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 msgid "Export Successful: %1" msgstr "" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12780,18 +13033,18 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 #, fuzzy msgid "Video Monitor: File Not Found." msgstr "Monitorowanie" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12801,377 +13054,385 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 #, fuzzy msgid "Transcode/Import Video File " msgstr "SesjÄ™ do pliku dźwiÄ™kowego..." -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 #, fuzzy msgid "Output File:" msgstr "UrzÄ…dzenie wyjÅ›ciowe" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "Rozmiar" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 #, fuzzy msgid "File Information" msgstr "Informacje o pliku dźwiÄ™kowym" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 #, fuzzy msgid "Duration:" msgstr "Czas trwania (s)" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 #, fuzzy msgid "??" msgstr "???" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 #, fuzzy msgid "Import Settings" msgstr "WyjÅ›cia" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 #, fuzzy msgid "Import/Transcode Video to Session" msgstr "Ekspor sesji" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 #, fuzzy msgid "Original Width" msgstr "Pozycja poczÄ…tkowa" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 #, fuzzy msgid "Extract Audio:" msgstr "Eksportuj obszar" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 #, fuzzy msgid "Extracting Audio.." msgstr "Eksportuj obszar" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 msgid "Transcoding Failed." msgstr "" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 #, fuzzy msgid "Save Transcoded Video File" msgstr "SesjÄ™ do pliku dźwiÄ™kowego..." -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 #, fuzzy msgid "Server Docroot:" msgstr "Serwer:" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 #, fuzzy msgid "Listen Port:" msgstr "Pozycja" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 #, fuzzy msgid "Cache Size:" msgstr "NajwiÄ™kszy rozmiar" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 msgid "Confirm Overwrite" msgstr "" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 #, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "Plik już istnieje. ZastÄ…pić go?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 #, fuzzy msgid "Cannot create video folder \"%1\" (%2)" msgstr "Nie można odczytać pliku: %1 (%2)." -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 #, fuzzy msgid "Export Video File " msgstr "SesjÄ™ do pliku dźwiÄ™kowego..." -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 #, fuzzy msgid "Video:" msgstr "Wyrównaj relatywnie" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "Normalizuj" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 #, fuzzy msgid "Deinterlace" msgstr "WyÅ›rodkuj" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 #, fuzzy msgid "Include Session Metadata" msgstr "od poczÄ…tku sesji" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 #, fuzzy msgid "Output:" msgstr "WyjÅ›cia" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 #, fuzzy msgid "Input:" msgstr "WejÅ›cia" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 #, fuzzy msgid "Audio:" msgstr "OdsÅ‚uch" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 #, fuzzy msgid "Master Bus" msgstr "Tworzenie głównej szyny" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 #, fuzzy msgid "Settings:" msgstr "WejÅ›cia" -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 #, fuzzy msgid "Range:" msgstr "Zakresy" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 #, fuzzy msgid "Preset:" msgstr "Zresetuj" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 msgid "Video Codec:" msgstr "" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 #, fuzzy msgid "Video KBit/s:" msgstr "Wyrównaj relatywnie" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 #, fuzzy msgid "Audio Codec:" msgstr "Tryb dźwiÄ™ku" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 #, fuzzy msgid "Audio KBit/s:" msgstr "Pliki dźwiÄ™kowe" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 #, fuzzy msgid "Audio Samplerate:" msgstr "CzÄ™stotliwość próbkowania:" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "Normalizacja wartoÅ›ci" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 #, fuzzy msgid "Exporting audio" msgstr "Eksportuj obszar" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:437 #, fuzzy -msgid "Exporting Audio.." +msgid "Exporting Audio..." msgstr "Eksportuj obszar" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." +#: export_video_dialog.cc:562 +msgid "Encoding Video..." msgstr "" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 msgid "Transcoding failed." msgstr "" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 #, fuzzy msgid "Save Exported Video File" msgstr "SesjÄ™ do pliku dźwiÄ™kowego..." @@ -13189,33 +13450,30 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" -"\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" -"\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#, fuzzy +#~ msgid "slowest" +#~ msgstr "Najwolniej" + +#, fuzzy +#~ msgid "fast" +#~ msgstr "najszybsza" + +#, fuzzy +#~ msgid "faster" +#~ msgstr "Szybciej" + +#~ msgid "fastest" +#~ msgstr "najszybsza" + #~ msgid "Connect" #~ msgstr "PoÅ‚Ä…cz" @@ -13779,9 +14037,6 @@ msgstr "" #~ "na okreÅ›lonych warunkach - zobacz plik COPYING, by dowiedzieć siÄ™ " #~ "wiÄ™cej.\n" -#~ msgid "programmer error: %1 %2" -#~ msgstr "bÅ‚Ä…d programisty: %1 %2" - #~ msgid "Unknown action name: %1" #~ msgstr "Nieznana nazwa czynnoÅ›ci: %1" @@ -14507,9 +14762,6 @@ msgstr "" #~ msgid "Display Height" #~ msgstr "Rozmiar wyÅ›wietlania" -#~ msgid "rec-enable change" -#~ msgstr "zmiana ustawienia nagrywania" - #~ msgid "ardour: color selection" #~ msgstr "Wybieranie koloru" diff --git a/gtk2_ardour/po/pt.po b/gtk2_ardour/po/pt.po index bc02d059ab..6b8b85eae2 100644 --- a/gtk2_ardour/po/pt.po +++ b/gtk2_ardour/po/pt.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: ardour 0.688.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2005-08-15 21:50-0000\n" "Last-Translator: Chris Ross, Alexander Franca & Leandro Marco\n" "Language-Team: Portuguese\n" @@ -371,7 +371,7 @@ msgstr "" msgid "%1 will not work without a valid ardour.menus file" msgstr "" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 #, fuzzy msgid "Add Track or Bus" msgstr "Adicionar Trilha/Barramento" @@ -414,8 +414,8 @@ msgstr "Barramentos" msgid "Add:" msgstr "" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 #, fuzzy msgid "Options" msgstr "Preferências" @@ -432,22 +432,22 @@ msgid "Group:" msgstr "Grupos de Mixer" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 #, fuzzy msgid "Audio" msgstr "Audição" #: 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "MIDI" @@ -471,7 +471,7 @@ msgid "" msgstr "" #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "Normal" @@ -525,7 +525,7 @@ msgstr "cancelar" msgid "12 Channel" msgstr "cancelar" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "" @@ -615,7 +615,7 @@ msgid "Track" msgstr "Trilha" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 #, fuzzy msgid "Show" msgstr "Mostrar tudo" @@ -624,101 +624,96 @@ msgstr "Mostrar tudo" msgid "Re-analyze data" msgstr "" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 #, fuzzy msgid "audition" msgstr "Audição" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 #, fuzzy msgid "solo" msgstr "solo" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 msgid "feedback" msgstr "" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 #, fuzzy msgid "Speaker Configuration" msgstr "Cancelar importação" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 #, fuzzy msgid "Theme Manager" msgstr "Remover Marca" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 #, fuzzy msgid "Add Tracks/Busses" msgstr "Trilhas/Barramentos" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "Sobre" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "Localizações" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 #, fuzzy msgid "Tracks and Busses" msgstr "Trilhas/Barramentos" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Metrônomo" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 #, fuzzy msgid "Audio Connections" msgstr "Conexões" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "Conexões" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "" -#: ardour_ui.cc:299 -#, fuzzy -msgid "could not initialize %1." -msgstr "não foi possível iniciar o Ardour." - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 #, fuzzy msgid "Starting audio engine" msgstr "Separar intervalo" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "" -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 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" @@ -727,26 +722,26 @@ msgid "" "controlled by %2" msgstr "" -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 #, fuzzy msgid "Don't quit" msgstr "Não %1" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 #, fuzzy msgid "Just quit" msgstr "Apenas %1" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 #, fuzzy msgid "Save and quit" msgstr "Salvar e %1" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 #, fuzzy msgid "" "%1 was unable to save your session.\n" @@ -760,17 +755,17 @@ msgstr "" "Se mesmo assim você deseja sair, por favor utilize\n" "a opção \"Apenas Sair\"." -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 #, fuzzy msgid "Please wait while %1 cleans up..." msgstr "Continuar com a limpeza" -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 #, fuzzy msgid "Unsaved Session" msgstr "Sessão" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 #, fuzzy msgid "" "The session \"%1\"\n" @@ -790,7 +785,7 @@ msgstr "" "\n" "O que você quer fazer?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 #, fuzzy msgid "" "The snapshot \"%1\"\n" @@ -810,75 +805,75 @@ msgstr "" "\n" "O que você quer fazer?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "desconectado" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 #, fuzzy msgid "File:" msgstr "Renomear" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -886,66 +881,66 @@ msgid "" "\">%%%" msgstr "" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 #, fuzzy msgid "Disk: Unknown" msgstr "espaço: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, fuzzy, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "espaço: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, fuzzy, c-format msgid "Timecode|TC: %s" msgstr "espaço: %02dh:%02dm:%02ds" # -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 #, fuzzy msgid "Recent Sessions" msgstr "abrir sessão" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" msgstr "" # -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 #, fuzzy msgid "Open Session" msgstr "abrir sessão" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 #, fuzzy msgid "%1 sessions" msgstr "sessão" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "" "Você não pode adicionar uma trilha se uma sessão não estiver carregada." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 #, fuzzy msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "não pôde criar uma nova trilha de áudio" msgstr[1] "não pôde criar uma nova trilha de áudio" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 #, fuzzy msgid "" "There are insufficient JACK ports available\n" @@ -958,27 +953,27 @@ msgstr "" "Você deve salvar Ardour, sair e\n" "reiniciar o JACK com mais portas." -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 #, fuzzy msgid "You cannot add a track or bus without a session already loaded." msgstr "" "Você não pode adicionar uma trilha se uma sessão não estiver carregada." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 #, fuzzy msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "não pôde criar uma nova trilha de áudio" msgstr[1] "não pôde criar uma nova trilha de áudio" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 #, fuzzy msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "não pôde criar uma nova trilha de áudio" msgstr[1] "não pôde criar uma nova trilha de áudio" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 #, fuzzy msgid "" "Please create one or more tracks before trying to record.\n" @@ -988,14 +983,14 @@ msgstr "" "antes de tentar gravar.\n" "Vir o menu de Sessão." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" "%1" msgstr "" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 #, fuzzy msgid "" "JACK has either been shutdown or it\n" @@ -1009,81 +1004,81 @@ msgstr "" "A sessão corrente deverá ser salva e\n" "o serviço JACK reiniciado, tal como o Ardour." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Impossível iniciar a sessão" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 #, fuzzy msgid "Take Snapshot" msgstr "Capturar instantâneo" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 #, fuzzy msgid "Name of new snapshot" msgstr "Nome para a imagem capturada" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 #, fuzzy msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "já existe uma trilha com este nome" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 #, fuzzy msgid "Rename Session" msgstr "inverter horizontalmente as regiões" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 #, fuzzy msgid "New session name" msgstr "Nome da sessão:" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" msgstr "" -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 #, fuzzy msgid "Save Template" msgstr "Salvar Esquema..." -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 #, fuzzy msgid "Name for template:" msgstr "Nome para o esquema de mixer" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-esquema/template" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 #, fuzzy msgid "" "This session\n" @@ -1092,55 +1087,55 @@ msgid "" msgstr "Sessão %1 ainda existe à %2" # -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 #, fuzzy msgid "Open Existing Session" msgstr "abrir sessão" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "" -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "A sessão \"%1 (instantâneo %2)\" não pôde ser carregada" -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "" -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 #, fuzzy msgid "Could not create session in \"%1\"" msgstr "não foi possível carregar a sessão da linha de comando \"%1\"" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 msgid "No files were ready for clean-up" msgstr "" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 #, fuzzy msgid "Clean-up" msgstr "Limpar" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 #, fuzzy msgid "" "If this seems suprising, \n" @@ -1153,19 +1148,19 @@ msgstr "" "Eles podem conter regiões que requeiram a existência\n" "de arquivos não utlizados." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 #, fuzzy msgid "" "The following file was deleted from %2,\n" @@ -1180,7 +1175,7 @@ msgstr[1] "" "Os seguintes %1 arquivo%2 foram deletados, liberando %3 %4bytes de espaço no " "disco rígido" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 #, fuzzy msgid "" "The following file was not in use and \n" @@ -1211,11 +1206,11 @@ msgstr[1] "" "isto vai liberar %3 %4bytes\n" "de espaço no disco rígido" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 msgid "Are you sure you want to clean-up?" msgstr "" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 #, fuzzy msgid "" "Clean-up is a destructive operation.\n" @@ -1227,82 +1222,82 @@ msgstr "" "você continuar. Arquivos de audio não usados serão movidos\n" "para \"dead sounds\"" -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "Limpar" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 #, fuzzy msgid "Cleaned Files" msgstr "arquivos limpos" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "arquivo removido" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 #, fuzzy msgid "Yes, Stop It" msgstr "Sim, remova definitivamente isto." -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "não foi possível abrir %1" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "A gravação foi encerrada porque seu sistema não consegue acompanhar" -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1311,7 +1306,7 @@ msgid "" "quickly enough to keep up with recording.\n" msgstr "" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1320,11 +1315,11 @@ msgid "" "quickly enough to keep up with playback.\n" msgstr "" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 msgid "" "This session appears to have been in the\n" "middle of recording when %1 or\n" @@ -1335,45 +1330,45 @@ msgid "" "what you would like to do.\n" msgstr "" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 #, fuzzy msgid "Sample Rate Mismatch" msgstr "Separar Região" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 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" "audio may be played at the wrong sample rate.\n" msgstr "" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 #, fuzzy msgid "Do not load session" msgstr "Zoom na sessão" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "Não foi possível se desconectar ao servidor JACK" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 #, fuzzy msgid "Could not reconnect to JACK" msgstr "Não foi possível se conectar ao servidor JACK" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1396,75 +1391,80 @@ msgstr "não foi possível iniciar o editor" msgid "UI: cannot setup mixer" msgstr "não foi possível iniciar o mixer" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "não foi possível iniciar o medidor volumétrico (VU)" + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "Reproduzir a partir do início" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Parar reprodução" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 #, fuzzy msgid "Toggle record" msgstr "Gravar" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "Reproduzir intervalo/seleção" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "Ir para o início da sessão" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "Ir para o fim da sessão" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "Reproduzir intervalo" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" msgstr "" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "Ir para o início da última reprodução quando parar" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 #, fuzzy msgid "Playhead follows Range Selections and Edits" msgstr "Reproduzir intervalo/seleção" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "Sensível à monitoração na entrada" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "Habilitar/desabilitar metrônomo" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" msgstr "" -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" msgstr "" -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "" -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1472,7 +1472,7 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1480,30 +1480,35 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "reiniciar todos" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "" -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "" -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 #, fuzzy msgid "Auto Return" msgstr "" "retorno\n" "automático" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1525,26 +1530,26 @@ msgstr "Cursor de Edição" msgid "Setup Mixer" msgstr "Mixer" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 #, fuzzy msgid "Don't close" msgstr "Não %1" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 #, fuzzy msgid "Just close" msgstr "fechar" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 #, fuzzy msgid "Save and close" msgstr "Salvar e %1" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" @@ -1557,7 +1562,7 @@ msgstr "Sessão" msgid "Sync" msgstr "Sincronia" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 #, fuzzy msgid "Options" msgstr "Preferências" @@ -1590,16 +1595,16 @@ msgstr "Sistema de arquivos" msgid "Sample Format" msgstr "Separar Região" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 #, fuzzy msgid "Control Surfaces" msgstr "Controle de Saídas" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Entradas" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 #, fuzzy msgid "Metering" msgstr "VU (medidor volumétrico)" @@ -1616,7 +1621,7 @@ msgstr "" msgid "Denormal Handling" msgstr "" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "" @@ -1665,8 +1670,8 @@ msgstr "Capturar instantâneo" msgid "Save As..." msgstr "Salvar Esquema..." -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 #, fuzzy msgid "Rename..." msgstr "Renomear" @@ -1699,7 +1704,7 @@ msgid "Stem export..." msgstr "Exportar" #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Exportar" @@ -1713,11 +1718,11 @@ msgstr "Limpar fontes não usadas" msgid "Flush Wastebasket" msgstr "Esvaziar lixeira" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: 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:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "" @@ -1726,8 +1731,8 @@ msgstr "" msgid "Reconnect" msgstr "Conectar" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "Desconectar" @@ -1744,7 +1749,7 @@ msgstr "" msgid "Show Toolbars" msgstr "Por Posição da Região" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 #, fuzzy msgid "Window|Mixer" msgstr "Janelas" @@ -1754,27 +1759,32 @@ msgstr "Janelas" msgid "Toggle Editor+Mixer" msgstr "Modo de edição" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "Janelas" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 msgid "Help|Manual" msgstr "" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Salvar" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1785,109 +1795,109 @@ msgstr "Salvar" msgid "Transport" msgstr "Tradutores" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "Parar" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 #, fuzzy msgid "Start/Stop" msgstr "Inicio:" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 #, fuzzy msgid "Start/Continue/Stop" msgstr "Inicio:" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 msgid "Stop and Forget Capture" msgstr "" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 #, fuzzy msgid "Transition To Roll" msgstr "Tradicional" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 #, fuzzy msgid "Play Loop Range" msgstr "Reproduzir intervalo" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 #, fuzzy msgid "Play Selected Range" msgstr "Separar intervalo" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 #, fuzzy msgid "Play Selection w/Preroll" msgstr "Reproduzir região selecionada" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 #, fuzzy msgid "Enable Record" msgstr "Gravar" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 #, fuzzy msgid "Start Recording" msgstr "Separar intervalo" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 #, fuzzy msgid "Rewind" msgstr "Região" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 #, fuzzy msgid "Goto Start" msgstr "Inicio:" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1896,149 +1906,149 @@ msgstr "" msgid "Timecode" msgstr "" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 #, fuzzy msgid "Bars & Beats" msgstr "Compassos:Batimentos" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 #, fuzzy msgid "Minutes & Seconds" msgstr "Minutos:Segundos" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 #, fuzzy msgid "Samples" msgstr "Separar Região" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 #, fuzzy msgid "Punch In" msgstr "Inserção" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "Entrada" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 #, fuzzy msgid "Punch Out" msgstr "" "finalizar\n" "inserção" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "Saídas" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 #, fuzzy msgid "Punch In/Out" msgstr "" "finalizar\n" "inserção" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 #, fuzzy msgid "In/Out" msgstr "" "finalizar\n" "inserção" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "Metrônomo" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 #, fuzzy msgid "Auto Input" msgstr "" "entrada\n" "automática" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 #, fuzzy msgid "Auto Play" msgstr "" "reprodução\n" "automática" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 #, fuzzy msgid "Time Master" msgstr "Modo supervisor de tempo (JACK)" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 msgid "Toggle Record Enable Track %1" msgstr "" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "Percentual" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Semitons" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "Enviar MTC" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "Enviar MMC" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 #, fuzzy msgid "Use MMC" msgstr "Enviar MMC" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 #, fuzzy msgid "Send MIDI Clock" msgstr "Enviar MTC" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 msgid "Send MIDI Feedback" msgstr "" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 #, fuzzy msgid "Wall Clock" msgstr "Metrônomo" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 msgid "DSP" msgstr "" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 msgid "Buffers" msgstr "" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 #, fuzzy msgid "Timecode Format" msgstr "Quadros de Ãudio" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 #, fuzzy msgid "File Format" msgstr "Quadros de Ãudio" @@ -2054,12 +2064,12 @@ msgstr "" msgid "Internal" msgstr "interno" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 #, fuzzy msgid "Enable/Disable external positional sync" msgstr "Habilitar/desabilitar metrônomo" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "" @@ -2090,7 +2100,7 @@ msgstr "Tempo" msgid "Meter" msgstr "VU (medidor volumétrico)" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2187,35 +2197,35 @@ msgid "hide track" msgstr "ocultar esta trilha" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 #, fuzzy msgid "Automation|Manual" msgstr "Automação" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "Reproduzir" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 #, fuzzy msgid "Write" msgstr "escrever" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 #, fuzzy msgid "Touch" msgstr "marca como novo" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "" @@ -2224,7 +2234,7 @@ msgid "clear automation" msgstr "limpar automação" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "Ocultar" @@ -2246,7 +2256,7 @@ msgstr "Desconectar" msgid "Linear" msgstr "Linear" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "Modo" @@ -2265,14 +2275,14 @@ msgstr "Modo de edição" msgid "Direction:" msgstr "Reproduzir seleção" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 #, fuzzy msgid "Input" msgstr "Entradas" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 #, fuzzy msgid "Output" msgstr "Saídas" @@ -2283,8 +2293,8 @@ msgid "Edit" msgstr "Editar" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "Apagar" @@ -2466,7 +2476,7 @@ msgstr "" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "" @@ -2738,18 +2748,18 @@ msgid "Ranges & Marks" msgstr "Marcas de Intervalos" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 #, fuzzy msgid "Editor" msgstr "editor" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "Ciclo" @@ -2774,8 +2784,8 @@ msgstr "" msgid "Slow" msgstr "Devegar" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "Rapido" @@ -2795,7 +2805,7 @@ msgstr "Ativar" msgid "Slowest" msgstr "Menor" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "" @@ -2934,7 +2944,7 @@ msgid "Select All in Track" msgstr "Selecionar tudo na trilha" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Selecionar Tudo" @@ -2996,15 +3006,15 @@ msgstr "" msgid "Select" msgstr "Selecionar" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Cortar" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "Copiar" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Colar" @@ -3178,7 +3188,7 @@ msgstr "Refazer" msgid "Redo (%1)" msgstr "Refazer (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "Duplicar" @@ -3208,8 +3218,8 @@ msgstr "Nome para a imagem capturada" msgid "Keep Playlist" msgstr "Nome para a imagem capturada" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "Cancelar" @@ -3232,7 +3242,7 @@ msgstr "Nome para a imagem capturada" msgid "Please wait while %1 loads visual data." msgstr "" -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 #, fuzzy msgid "Edit..." msgstr "Editar" @@ -3291,7 +3301,7 @@ msgstr "Camada" msgid "Position" msgstr "Audição" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Cortar" @@ -3305,7 +3315,7 @@ msgstr "" msgid "Ranges" msgstr "Intervalo" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 #, fuzzy @@ -3349,7 +3359,7 @@ msgstr "Preferências" msgid "Misc Options" msgstr "Preferências" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 #, fuzzy msgid "Monitoring" @@ -3396,8 +3406,8 @@ msgstr "Relógio secundário" msgid "Separate" msgstr "Separar Região" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "Solo" @@ -3410,7 +3420,7 @@ msgstr "Quadros" msgid "Timecode fps" msgstr "" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Altura" @@ -3551,7 +3561,7 @@ msgstr "" msgid "Playhead to Range End" msgstr "Reproduzir intervalo" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 #, fuzzy msgid "Deselect All" msgstr "Selecionar Tudo" @@ -3872,9 +3882,9 @@ msgstr "Inserir região" msgid "Toggle Active" msgstr "ativo" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "Remover" @@ -3883,19 +3893,19 @@ msgstr "Remover" msgid "Fit Selected Tracks" msgstr "Inserir seleção" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "Enorme" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "Maior" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "Grande" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "Pequeno" @@ -4003,7 +4013,7 @@ msgstr "Reunir" msgid "Slide" msgstr "Deslizar" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "Trancar" @@ -4214,7 +4224,7 @@ msgstr "Min:Segs" msgid "Video Monitor" msgstr "Usar Monitoração de Hardware" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -4224,8 +4234,9 @@ msgid "Always on Top" msgstr "Trazer região para frente, primeira camada" #: editor_actions.cc:554 -msgid "Framenumber" -msgstr "" +#, fuzzy +msgid "Frame number" +msgstr "remover marca" #: editor_actions.cc:555 #, fuzzy @@ -4318,7 +4329,7 @@ msgstr "Remover" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Importar" @@ -4363,330 +4374,330 @@ msgstr "" msgid "Could not find editor.bindings in search path %1" msgstr "" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "" -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 #, fuzzy msgid "Raise to Top" msgstr "Trazer região para frente, primeira camada" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 #, fuzzy msgid "Lower" msgstr "Camada" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 #, fuzzy msgid "Lower to Bottom" msgstr "Enviar região para a trás, última camada" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 #, fuzzy msgid "Move to Original Position" msgstr "Posição original" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 #, fuzzy msgid "Remove Sync" msgstr "Remover ponto de sincronia" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Mutar" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 #, fuzzy msgid "Normalize..." msgstr "Normalizar" -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "Inverter horizontalmente" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 #, fuzzy msgid "Make Mono Regions" msgstr "Criar regiões mono" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "" -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 #, fuzzy msgid "Transpose..." msgstr "Tradutores" -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 #, fuzzy msgid "Opaque" msgstr "opaco" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "Fade In" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "Fade Out" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 #, fuzzy msgid "Multi-Duplicate..." msgstr "Duplicar" -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "Preencher Trilha" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "Marcar um intervalo de loop" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 #, fuzzy msgid "Set Punch" msgstr "Fazer intervalo de inserção" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 #, fuzzy msgid "Add Single Range Marker" msgstr "Marcas de Intervalos" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 #, fuzzy msgid "Add Range Marker Per Region" msgstr "Marcas de Intervalos" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 #, fuzzy msgid "Snap Position To Grid" msgstr "Ajustar a" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 #, fuzzy msgid "Close Gaps" msgstr "Fechar" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "" -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 #, fuzzy msgid "Export..." msgstr "Exportar" -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 #, fuzzy msgid "Separate Under" msgstr "Separar intervalo" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 #, fuzzy msgid "Set Fade In Length" msgstr "fade in na edição" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 #, fuzzy msgid "Set Fade Out Length" msgstr "fade out na edição" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 #, fuzzy msgid "Set Tempo from Region = Bar" msgstr "Nova região a partir da seleção" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 #, fuzzy msgid "Split at Percussion Onsets" msgstr "Do início ao cursor de edição" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 #, fuzzy msgid "List Editor..." msgstr "Preferências" -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "" -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "" -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 #, fuzzy msgid "Reset Envelope" msgstr "reiniciar todos" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 #, fuzzy msgid "Reset Gain" msgstr "reiniciar todos" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 #, fuzzy msgid "Envelope Active" msgstr "ativo" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 #, fuzzy msgid "Quantize..." msgstr "Sistema de arquivos" -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "" -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "" -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 #, fuzzy msgid "Set Range Selection" msgstr "Reproduzir seleção" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 #, fuzzy msgid "Nudge Later" msgstr "Retocar" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 #, fuzzy msgid "Nudge Earlier" msgstr "Retocar" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 #, fuzzy msgid "Nudge Later by Capture Offset" msgstr "Retocar" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 #, fuzzy msgid "Nudge Earlier by Capture Offset" msgstr "Retocar" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 #, fuzzy msgid "Trim to Previous" msgstr "Do início ao cursor de edição" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 #, fuzzy msgid "Trim to Next" msgstr "Do início ao cursor de edição" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 #, fuzzy msgid "Insert Region From Region List" msgstr "Nova região a partir da seleção" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 #, fuzzy msgid "Set Sync Position" msgstr "Por Posição da Região" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "Separar" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 msgid "Trim Start at Edit Point" msgstr "" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 msgid "Trim End at Edit Point" msgstr "" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 #, fuzzy msgid "Align Start" msgstr "Começo de regiões" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 #, fuzzy msgid "Align Start Relative" msgstr "Alinhamento Relativo" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 #, fuzzy msgid "Align End" msgstr "Alinhamento" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 #, fuzzy msgid "Align End Relative" msgstr "Alinhamento Relativo" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 #, fuzzy msgid "Align Sync" msgstr "normalizar região" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 #, fuzzy msgid "Align Sync Relative" msgstr "Alinhamento Relativo" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "" @@ -4713,36 +4724,36 @@ msgid "" "%2 as a new source, or skip it?" msgstr "" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "Cancelar importação" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 #, fuzzy msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Editor: não foi possível abrir o arquivo \"%1\" (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 #, fuzzy msgid "Cancel entire import" msgstr "Cancelar importação" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 #, fuzzy msgid "Don't embed it" msgstr "Não %1" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 #, fuzzy msgid "Sample rate" msgstr "Separar Região" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 #, fuzzy msgid "" "%1\n" @@ -4750,7 +4761,7 @@ msgid "" msgstr "" "A freqüência de áudio deste arquivo não corresponde à freqüência da sessão!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 #, fuzzy msgid "Embed it anyway" msgstr "Embutir mesmo assim" @@ -4793,35 +4804,35 @@ msgstr "remover marca" msgid "move tempo mark" msgstr "remover marca" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 #, fuzzy msgid "change fade in length" msgstr "fade in na edição" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 #, fuzzy msgid "change fade out length" msgstr "fade out na edição" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 #, fuzzy msgid "move marker" msgstr "remover marca" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 msgid "programming_error: %1" msgstr "" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 #, fuzzy msgid "new range marker" msgstr "adicionar marca de intervalo" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 #, fuzzy msgid "rubberband selection" msgstr "Reproduzir seleção" @@ -4901,7 +4912,7 @@ msgid "Sharing Solo?" msgstr "" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 #, fuzzy msgid "Rec" msgstr "Rescanear" @@ -4983,7 +4994,7 @@ msgid "end" msgstr "Segundos" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "adicionar marca" @@ -4992,7 +5003,7 @@ msgstr "adicionar marca" msgid "range" msgstr "intervalo" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "remover marca" @@ -5085,8 +5096,8 @@ msgstr "Renomear" msgid "Rename Range" msgstr "Renomear" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "Renomear" @@ -5242,7 +5253,7 @@ msgstr "Enviar região para a trás, última camada" msgid "Rename Region" msgstr "inverter horizontalmente as regiões" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 #, fuzzy msgid "New name:" msgstr "novo nome: " @@ -5431,7 +5442,7 @@ msgstr "" "(Isto não poderá ser desfeito)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "Não, não faça nada." @@ -5641,11 +5652,11 @@ msgstr "OU" msgid "close region gaps" msgstr "inverter horizontalmente as regiões" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "" -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5660,7 +5671,7 @@ msgstr "" msgid "tracks" msgstr "Trilhas" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 #, fuzzy msgid "track" msgstr "Trilha" @@ -5670,7 +5681,7 @@ msgstr "Trilha" msgid "busses" msgstr "Barramentos" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "" @@ -5711,7 +5722,7 @@ msgstr "" msgid "Yes, remove them." msgstr "Sim, remova isto." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Sim, remova isto." @@ -5790,7 +5801,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "" @@ -5809,8 +5820,9 @@ msgstr "Ir" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "" @@ -5887,7 +5899,8 @@ msgstr "Trilhas/Barramentos" msgid "Track/Bus visible ?" msgstr "Trilhas/Barramentos" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "" @@ -5896,7 +5909,7 @@ msgstr "" msgid "Track/Bus active ?" msgstr "Trilhas/Barramentos" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 #, fuzzy msgid "I" msgstr "ENTRADA" @@ -5906,7 +5919,7 @@ msgstr "ENTRADA" msgid "MIDI input enabled" msgstr "MIDI" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "" @@ -5921,7 +5934,7 @@ msgstr "Gravar" msgid "Muted" msgstr "Mutar" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "" @@ -5935,7 +5948,7 @@ msgstr "Solo" msgid "SI" msgstr "ENTRADA" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 #, fuzzy msgid "Solo Isolated" msgstr "Solo" @@ -6250,147 +6263,151 @@ msgid "192000Hz" msgstr "" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Nenhum" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "Triangular" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "Retangular" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 #, fuzzy msgid "Shaped" msgstr "Perfil de Ruído" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 #, fuzzy msgid "Recording only" msgstr "Suspender gravaçãoo em caso de falha sincrônica (XRUN)" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 #, fuzzy msgid "Audio Interface:" msgstr "interno" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 #, fuzzy msgid "Sample rate:" msgstr "Separar Região" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 #, fuzzy msgid "Audio mode:" msgstr "Quadros de Ãudio" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "" -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 #, fuzzy msgid "Output device:" msgstr "Saídas" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 #, fuzzy msgid "samples" msgstr "Separar Região" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 #, fuzzy msgid "Advanced" msgstr "Avançado ..." -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -6407,31 +6424,31 @@ msgid "" "%1 and choose the relevant device then." msgstr "" -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "" -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "" -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 #, fuzzy msgid "Channels:" msgstr "cancelar" @@ -6597,9 +6614,9 @@ msgid "Folder:" msgstr "Nome do diretório:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Localizar" @@ -6735,6 +6752,13 @@ msgstr "Localizações" msgid "Broadcast Wave options" msgstr "Broadcast WAVE/vírgula flutuante" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "" +"Tem certeza de que deseja remover a trilha \"%1\" ?\n" +"(não será possível voltar)" + #: export_preset_selector.cc:28 #, fuzzy msgid "Preset" @@ -6746,6 +6770,13 @@ msgid "" "Perhaps it references a format that has been removed?" msgstr "" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "" +"Tem certeza de que deseja remover a trilha \"%1\" ?\n" +"(não será possível voltar)" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "" @@ -6759,40 +6790,51 @@ msgstr "" msgid "Range" msgstr "Intervalo" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +msgid "curl error %1 (%2)" +msgstr "" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +msgid "%1" +msgstr "" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 #, fuzzy msgid "-inf" msgstr "entrada" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 #, fuzzy msgid "Fader automation mode" msgstr "modo automático de pan" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 #, fuzzy msgid "Fader automation type" msgstr "Tipo do pan automático" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "" -#: gain_meter.cc:334 -#, fuzzy -msgid "-Inf" -msgstr "entrada" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "" @@ -6804,7 +6846,7 @@ msgstr "" msgid "Switches" msgstr "" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 #, fuzzy msgid "Controls" msgstr "Controle de Saídas" @@ -6838,72 +6880,72 @@ msgstr "" msgid "MIDI Connection Manager" msgstr "Conexões de entrada" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "porta" -#: group_tabs.cc:306 +#: group_tabs.cc:308 #, fuzzy msgid "Selection..." msgstr "Reproduzir região selecionada" -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "" -#: group_tabs.cc:308 +#: group_tabs.cc:310 #, fuzzy msgid "Soloed..." msgstr "Solo" -#: group_tabs.cc:314 +#: group_tabs.cc:316 #, fuzzy msgid "Create New Group ..." msgstr "Sem grupo" -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "" -#: group_tabs.cc:318 +#: group_tabs.cc:320 #, fuzzy msgid "Edit Group..." msgstr "Sem grupo" -#: group_tabs.cc:319 +#: group_tabs.cc:321 #, fuzzy msgid "Collect Group" msgstr "Selecionar" -#: group_tabs.cc:320 +#: group_tabs.cc:322 #, fuzzy msgid "Remove Group" msgstr "Editar Grupo" -#: group_tabs.cc:323 +#: group_tabs.cc:325 #, fuzzy msgid "Remove Subgroup Bus" msgstr "Sem grupo" -#: group_tabs.cc:325 +#: group_tabs.cc:327 #, fuzzy msgid "Add New Subgroup Bus" msgstr "Sem grupo" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "" -#: group_tabs.cc:328 +#: group_tabs.cc:330 #, fuzzy msgid "Add New Aux Bus (post-fader)" msgstr "Apagar meter" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "" -#: group_tabs.cc:335 +#: group_tabs.cc:337 #, fuzzy msgid "Disable All Groups" msgstr "Desconectar" @@ -7010,11 +7052,11 @@ msgstr "" msgid "I/O selector" msgstr "Saltar Seleção" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "%1 entrada" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "%1 saída" @@ -7098,7 +7140,7 @@ msgstr[1] "Separar Região" msgid "Reset" msgstr "Reiniciar" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "" @@ -7127,71 +7169,71 @@ msgstr "" msgid "Pre-Emphasis" msgstr "" -#: location_ui.cc:310 +#: location_ui.cc:314 #, fuzzy msgid "Remove this range" msgstr "Selecionar intervalo atual" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 #, fuzzy msgid "Set range start from playhead location" msgstr "Marcar aqui" -#: location_ui.cc:316 +#: location_ui.cc:320 #, fuzzy msgid "Set range end from playhead location" msgstr "Reproduzir seleção" -#: location_ui.cc:320 +#: location_ui.cc:324 #, fuzzy msgid "Remove this marker" msgstr "remover marca" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 #, fuzzy msgid "Set marker time from playhead location" msgstr "Reproduzir seleção" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "" -#: location_ui.cc:708 +#: location_ui.cc:720 #, fuzzy msgid "New Marker" msgstr "Marca" -#: location_ui.cc:709 +#: location_ui.cc:721 #, fuzzy msgid "New Range" msgstr "Adicionar Novo Intervalo" -#: location_ui.cc:722 +#: location_ui.cc:734 #, fuzzy msgid "Loop/Punch Ranges" msgstr "Intervalos Loop/Insersão" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "adicionar marca de intervalo" @@ -7268,46 +7310,51 @@ msgid "" "session at this time, because we would lose your connection information.\n" msgstr "" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr "" -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr "" -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "" -#: main.cc:505 +#: main.cc:501 msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" msgstr "" -#: main.cc:507 +#: main.cc:503 #, fuzzy msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "Ardour não oferece ABSOLUTAMENTE NENHUMA GARANTIA" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "Isto é um Software Livre. Fique à vontade para redistribuí-lo " -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "com algumas condições; veja o fonte para mais detalhes" -#: main.cc:519 +#: main.cc:513 +#, fuzzy +msgid "could not initialize %1." +msgstr "não foi possível iniciar o Ardour." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "" -#: main.cc:525 +#: main.cc:528 #, fuzzy msgid "could not create %1 GUI" msgstr "não foi possível criar a INTERFACE ARDOUR" @@ -7317,7 +7364,7 @@ msgstr "não foi possível criar a INTERFACE ARDOUR" msgid "Display delta to edit cursor" msgstr "Do início ao cursor de edição" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 #, fuzzy msgid "MarkerText" msgstr "Marcas" @@ -7857,7 +7904,7 @@ msgstr "" msgid "Missing Plugins" msgstr "Entradas" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "OK" @@ -7936,241 +7983,254 @@ msgstr "" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 #, fuzzy msgid "Comments" msgstr "Centro" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "" -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 #, fuzzy msgid "Hide this mixer strip" msgstr "Ocultar os painéis de mixer de todo os barramento de áudio" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 #, fuzzy msgid "Click to select metering point" msgstr "Loop região selecionada" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "bloquear" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 #, fuzzy msgid "iso" msgstr "entradas" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 #, fuzzy msgid "Mix group" msgstr "Sem grupo" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 #, fuzzy msgid "Phase Invert" msgstr "Inverter verticalmente" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 #, fuzzy msgid "Solo Safe" msgstr "Solo" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 #, fuzzy msgid "Group" msgstr "Grupos de Mixer" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 #, fuzzy msgid "Meter Point" msgstr "VU (medidor volumétrico)" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 #, fuzzy msgid "Enable/Disable MIDI input" msgstr "Habilitar/desabilitar metrônomo" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 #, fuzzy msgid "" "Aux\n" "Sends" msgstr "Segundos" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 #, fuzzy msgid "Snd" msgstr "Segundos" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 #, fuzzy msgid "Disconnected" msgstr "desconectado" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 #, fuzzy msgid "*Comments*" msgstr "Centro" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 #, fuzzy msgid "Cmt" msgstr "cortar" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 #, fuzzy msgid ": comment editor" msgstr "não foi possível iniciar o editor" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 msgid "Comments..." msgstr "" -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 #, fuzzy msgid "Save As Template..." msgstr "Salvar Esquema..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "Ativar" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "" -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 #, fuzzy msgid "Remote Control ID..." msgstr "Remover ponto de controlo" -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 msgid "in" msgstr "entrada" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 #, fuzzy msgid "post" msgstr "porta" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 msgid "out" msgstr "saída" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 #, fuzzy msgid "pr" msgstr "porta" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 #, fuzzy msgid "po" msgstr "porta" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 #, fuzzy msgid "o" msgstr "mono" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 #, fuzzy msgid "D" msgstr "CD" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 #, fuzzy msgid "i" msgstr "entrada" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 #, fuzzy msgid "Pre-fader" msgstr "Pré Fade" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 #, fuzzy msgid "Post-fader" msgstr "Pós Fade" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "cancelar" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "não foi encontrada qualquer trilha para o painel de mixer" @@ -8179,10 +8239,68 @@ msgstr "não foi encontrada qualquer trilha para o painel de mixer" msgid "-all-" msgstr "-tudo-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "Painéis" +#: meter_strip.cc:764 +#, fuzzy +msgid "Variable height" +msgstr "Altura" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "porta" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +msgid "VU" +msgstr "" + #: monitor_section.cc:62 msgid "SiP" msgstr "" @@ -8554,7 +8672,7 @@ msgstr "" msgid "Panner (2D)" msgstr "" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "Ignorar" @@ -8747,7 +8865,7 @@ msgstr "" msgid "Eh? LADSPA plugins don't have editors!" msgstr "" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " @@ -8763,7 +8881,7 @@ msgstr "" "tipo desconhecido do plugin fornecido para o editor (nota: sem suporte VST " "nesta versão do ardour)" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " @@ -8772,76 +8890,88 @@ msgstr "" "tipo desconhecido do plugin fornecido para o editor (nota: sem suporte VST " "nesta versão do ardour)" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "Adicionar" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 #, fuzzy msgid "Description" msgstr "Reproduzir seleção" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 #, fuzzy msgid "Plugin analysis" msgstr "Entradas" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 #, fuzzy msgid "Save a new preset" msgstr "Nome para a nova conexão:" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" msgstr "" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "" msgstr[1] "" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 msgid "Edit Latency" msgstr "" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "Pré-seleção do plugin %1 não encontrada" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "" @@ -8956,78 +9086,79 @@ msgstr "" msgid "Port Insert " msgstr "nova entrada" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 #, fuzzy msgid "Sources" msgstr "Avançado ..." -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, fuzzy, c-format msgid "Rename '%s'..." msgstr "Renomear" -#: port_matrix.cc:451 +#: port_matrix.cc:472 #, fuzzy msgid "Remove all" msgstr "Remover Marca" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, fuzzy, c-format msgid "%s all" msgstr "reiniciar todos" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "Rescanear" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "" -#: port_matrix.cc:702 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." msgstr "" -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "" -#: port_matrix.cc:728 +#: port_matrix.cc:749 msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, fuzzy, c-format msgid "Remove '%s'" msgstr "Remover" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, fuzzy, c-format msgid "%s all from '%s'" msgstr "Selecionar Tudo" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 #, fuzzy msgid "channel" msgstr "cancelar" @@ -9040,66 +9171,66 @@ msgstr "" msgid "There are no %1 ports to connect." msgstr "" -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 #, fuzzy msgid "Show All Controls" msgstr "Velocidade do controle" -#: processor_box.cc:375 +#: processor_box.cc:376 #, fuzzy msgid "Hide All Controls" msgstr "Ocultar todos os barramentos de áudio" -#: processor_box.cc:464 +#: processor_box.cc:465 #, fuzzy msgid "on" msgstr "mono" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "desligado" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" msgstr "" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" msgstr "" -#: processor_box.cc:1196 +#: processor_box.cc:1209 #, fuzzy msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "%1 entrada" msgstr[1] "%1 entrada" -#: processor_box.cc:1200 +#: processor_box.cc:1213 #, fuzzy msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" @@ -9110,64 +9241,64 @@ msgstr[1] "" "entrada\n" "automática" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" msgstr "" -#: processor_box.cc:1206 +#: processor_box.cc:1219 #, fuzzy msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "cancelar" msgstr[1] "cancelar" -#: processor_box.cc:1210 +#: processor_box.cc:1223 #, fuzzy msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "cancelar" msgstr[1] "cancelar" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" msgstr "" -#: processor_box.cc:1249 +#: processor_box.cc:1262 msgid "Cannot set up new send: %1" msgstr "" -#: processor_box.cc:1581 +#: processor_box.cc:1594 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" "outputs will not work correctly." msgstr "" -#: processor_box.cc:1765 +#: processor_box.cc:1778 #, fuzzy msgid "Rename Processor" msgstr "Renomear" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" "could not match the configuration of this track." msgstr "" -#: processor_box.cc:1987 +#: processor_box.cc:2000 #, fuzzy msgid "" "Do you really want to remove all processors from %1?\n" @@ -9176,17 +9307,17 @@ msgstr "" "Tem certeza de que deseja remover a trilha \"%1\" ?\n" "(não será possível voltar)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 #, fuzzy msgid "Yes, remove them all" msgstr "Sim, remova isto." -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 #, fuzzy msgid "Remove processors" msgstr "Remover Marca" -#: processor_box.cc:2008 +#: processor_box.cc:2021 #, fuzzy msgid "" "Do you really want to remove all pre-fader processors from %1?\n" @@ -9195,7 +9326,7 @@ msgstr "" "Tem certeza de que deseja remover a trilha \"%1\" ?\n" "(não será possível voltar)" -#: processor_box.cc:2011 +#: processor_box.cc:2024 #, fuzzy msgid "" "Do you really want to remove all post-fader processors from %1?\n" @@ -9204,59 +9335,59 @@ msgstr "" "Tem certeza de que deseja remover a trilha \"%1\" ?\n" "(não será possível voltar)" -#: processor_box.cc:2198 +#: processor_box.cc:2200 #, fuzzy msgid "New Plugin" msgstr "Entradas" -#: processor_box.cc:2201 +#: processor_box.cc:2203 #, fuzzy msgid "New Insert" msgstr "nova entrada" -#: processor_box.cc:2204 +#: processor_box.cc:2206 msgid "New External Send ..." msgstr "" -#: processor_box.cc:2208 +#: processor_box.cc:2210 msgid "New Aux Send ..." msgstr "" -#: processor_box.cc:2212 +#: processor_box.cc:2214 #, fuzzy msgid "Clear (all)" msgstr "Remover todos os intervalos" -#: processor_box.cc:2214 +#: processor_box.cc:2216 #, fuzzy msgid "Clear (pre-fader)" msgstr "Apagar meter" -#: processor_box.cc:2216 +#: processor_box.cc:2218 #, fuzzy msgid "Clear (post-fader)" msgstr "Apagar meter" -#: processor_box.cc:2242 +#: processor_box.cc:2244 #, fuzzy msgid "Activate All" msgstr "Ativar" -#: processor_box.cc:2244 +#: processor_box.cc:2246 #, fuzzy msgid "Deactivate All" msgstr "Desativar" -#: processor_box.cc:2246 +#: processor_box.cc:2248 #, fuzzy msgid "A/B Plugins" msgstr "Entradas" -#: processor_box.cc:2255 +#: processor_box.cc:2257 msgid "Edit with generic controls..." msgstr "" -#: processor_box.cc:2531 +#: processor_box.cc:2557 #, fuzzy msgid "%1: %2 (by %3)" msgstr "ardour: região" @@ -9428,7 +9559,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -9523,7 +9654,7 @@ msgstr "" msgid "Click gain level" msgstr "Metrônomo no arquivo de áudio" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Automação" @@ -9710,98 +9841,102 @@ msgstr "" msgid "Show meters on tracks in the editor" msgstr "" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 #, fuzzy msgid "Show waveforms in regions" msgstr "mostra toda a automação" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 #, fuzzy msgid "Show gain envelopes in audio regions" msgstr "mostra toda a automação" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 #, fuzzy msgid "Waveform scale" msgstr "Forma de onda" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "linear" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 #, fuzzy msgid "Waveform shape" msgstr "Forma de onda" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 #, fuzzy msgid "traditional" msgstr "Tradicional" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 #, fuzzy msgid "rectified" msgstr "Corrigido" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 #, fuzzy msgid "Name new markers" msgstr "remover marca" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9809,365 +9944,444 @@ msgid "" "You can always rename markers by right-clicking on them" msgstr "" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 #, fuzzy msgid "Record monitoring handled by" msgstr "Usar Monitoração de Hardware" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 #, fuzzy msgid "ardour" msgstr "ardour: relógio" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 #, fuzzy msgid "audio hardware" msgstr "Quadros de Ãudio" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 #, fuzzy msgid "Tape machine mode" msgstr "modo automático de pan" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 #, fuzzy msgid "Connect track inputs" msgstr "Conectar novas faixas automaticamente" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 #, fuzzy msgid "automatically to physical inputs" msgstr "conectar automaticamente entradas das trilhas com as portas físicas" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 #, fuzzy msgid "Connect track and bus outputs" msgstr "concetar automaticamente saídas das trilhas com as saídas master" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 #, fuzzy msgid "automatically to physical outputs" msgstr "conectar manualmente saídas das trilhas" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 #, fuzzy msgid "automatically to master bus" msgstr "concetar automaticamente saídas das trilhas com as saídas master" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 #, fuzzy msgid "Denormals" msgstr "Normal" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 #, fuzzy msgid "Silence plugins when the transport is stopped" msgstr "Suspender efeitos/plugins em transporte" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 #, fuzzy msgid "Solo-in-place mute cut (dB)" msgstr "Solo" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 #, fuzzy msgid "Listen Position" msgstr "Audição" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 msgid "after-fader (AFL)" msgstr "" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 #, fuzzy msgid "pre-fader (PFL)" msgstr "Pré Redirecionamentos" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 #, fuzzy msgid "before pre-fader processors" msgstr "Remover Marca" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 #, fuzzy msgid "immediately post-fader" msgstr "Apagar meter" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 #, fuzzy msgid "after post-fader processors (before pan)" msgstr "Remover Marca" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 #, fuzzy msgid "Show solo muting" msgstr "mostra toda a automação" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 #, fuzzy msgid "Default track / bus muting options" msgstr "Inspetador de Trilhas/Barramentos" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 #, fuzzy msgid "Mute affects control outputs" msgstr "usar controles de saída" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 #, fuzzy msgid "Send MIDI control feedback" msgstr "Porta MMC" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 #, fuzzy msgid "Sound MIDI notes as they are selected" msgstr "Inserir seleção" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 #, fuzzy msgid "User interaction" msgstr "Regiões/criação" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 #, fuzzy msgid "Control surface remote ID" msgstr "Controle de Saídas" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 msgid "Preferences|GUI" msgstr "" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 #, fuzzy msgid "Mixer Strip" msgstr "Mixer" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 #, fuzzy msgid "Use narrow strips in the mixer by default" msgstr "Estreitar painéis de mixer" -#: rc_option_editor.cc:1898 +#: rc_option_editor.cc:1906 #, fuzzy -msgid "Meter hold time" +msgid "Peak hold time" msgstr "VU (medidor volumétrico)" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 #, fuzzy msgid "short" msgstr "porta" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "" -#: rc_option_editor.cc:1912 -msgid "Meter fall-off" +#: rc_option_editor.cc:1920 +msgid "DPM fall-off" msgstr "" -#: rc_option_editor.cc:1918 -#, fuzzy -msgid "slowest" -msgstr "Menor" +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" msgstr "" -#: rc_option_editor.cc:1921 -#, fuzzy -msgid "fast" -msgstr "rapidamente" +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" -#: rc_option_editor.cc:1922 -#, fuzzy -msgid "faster" -msgstr "Fades" +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" -#: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "rapidamente" +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" + +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 +msgid "Peak threshold [dBFS]" +msgstr "" + +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" + +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -10178,11 +10392,11 @@ msgstr "ouvir esta região" msgid "Position:" msgstr "Audição" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Final:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "" @@ -10206,27 +10420,27 @@ msgstr "" msgid "Source:" msgstr "" -#: region_editor.cc:167 +#: region_editor.cc:166 #, fuzzy msgid "Region '%1'" msgstr "Região" -#: region_editor.cc:274 +#: region_editor.cc:273 #, fuzzy msgid "change region start position" msgstr "Regiões/posição" -#: region_editor.cc:290 +#: region_editor.cc:289 #, fuzzy msgid "change region end position" msgstr "Regiões/posição" -#: region_editor.cc:310 +#: region_editor.cc:309 #, fuzzy msgid "change region length" msgstr "fade in na edição" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 #, fuzzy msgid "change region sync point" msgstr "Regiões/posição" @@ -10437,361 +10651,361 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "" -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 #, fuzzy msgid "Tracks/Busses" msgstr "Trilhas/Barramentos" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "Entradas" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "Saídas" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "não foi encontrada qualquer elemento para encaminhamento" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "NENHUMA TRILHA" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 #, fuzzy msgid "No Track or Bus Selected" msgstr "Caminho não selecionado" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "Gravar" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 #, fuzzy msgid "Route Group" msgstr "Editar Grupo" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 #, fuzzy msgid "MIDI Controllers and Automation" msgstr "Porta MMC" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 #, fuzzy msgid "Show All Automation" msgstr "mostra toda a automação" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 #, fuzzy msgid "Show Existing Automation" msgstr "mostra a automação existente" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 #, fuzzy msgid "Hide All Automation" msgstr "ocultar toda a automação" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 #, fuzzy msgid "Processor automation" msgstr "limpar automação" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 #, fuzzy msgid "Color..." msgstr "Cor" -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 #, fuzzy msgid "Layers" msgstr "Camada" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 #, fuzzy msgid "Automatic (based on I/O connections)" msgstr "conectar manualmente saídas das trilhas" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 #, fuzzy msgid "(Currently: Existing Material)" msgstr "Material existente" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 #, fuzzy msgid "(Currently: Capture Time)" msgstr "Tempo de captura" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 #, fuzzy msgid "Align With Existing Material" msgstr "Material existente" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 #, fuzzy msgid "Align With Capture Time" msgstr "Tempo de captura" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 #, fuzzy msgid "Alignment" msgstr "Alinhamento" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 #, fuzzy msgid "Normal Mode" msgstr "Normal" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 #, fuzzy msgid "Tape Mode" msgstr "Modo de Ajuste" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 #, fuzzy msgid "Non-Layered Mode" msgstr "Fim de regiões" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Lista de reprodução" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 #, fuzzy msgid "Rename Playlist" msgstr "Nome para a lista de reprodução" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 #, fuzzy msgid "New name for playlist:" msgstr "Nome para a lista de reprodução" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 #, fuzzy msgid "New Copy Playlist" msgstr "Nome para a lista de reprodução" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 #, fuzzy msgid "Name for new playlist:" msgstr "Nome para a lista de reprodução" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 #, fuzzy msgid "New Playlist" msgstr "Lista de reprodução" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 #, fuzzy msgid "You cannot create a track with that name as it is reserved for %1" msgstr "" "Você não pode adicionar uma trilha se uma sessão não estiver carregada." -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 #, fuzzy msgid "New Copy..." msgstr "Nova Cópia" -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 #, fuzzy msgid "New Take" msgstr "Novo Andamento" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 #, fuzzy msgid "Copy Take" msgstr "Copiar" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "Limpar Atual" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 #, fuzzy msgid "Select From All..." msgstr "Selecionar Tudo" -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 #, fuzzy msgid "Remove \"%1\"" msgstr "Remover" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 msgid "After-fade listen (AFL)" msgstr "" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 #, fuzzy msgid "Pre-fade listen (PFL)" msgstr "Pré Redirecionamentos" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "" -#: route_ui.cc:114 +#: route_ui.cc:119 #, fuzzy msgid "Mute this track" msgstr "Ocultar esta trilha" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "" -#: route_ui.cc:133 +#: route_ui.cc:138 #, fuzzy msgid "Monitor input" msgstr "Usar Monitoração de Hardware" -#: route_ui.cc:139 +#: route_ui.cc:144 #, fuzzy msgid "Monitor playback" msgstr "Parar reprodução" -#: route_ui.cc:586 +#: route_ui.cc:591 msgid "Not connected to JACK - cannot engage record" msgstr "" -#: route_ui.cc:781 +#: route_ui.cc:786 #, fuzzy msgid "Step Entry" msgstr "Editar" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "" -#: route_ui.cc:858 +#: route_ui.cc:863 #, fuzzy msgid "Assign all tracks and buses (prefader)" msgstr "Inserir seleção" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "" -#: route_ui.cc:866 +#: route_ui.cc:871 #, fuzzy msgid "Assign all tracks and buses (postfader)" msgstr "Inserir seleção" -#: route_ui.cc:870 +#: route_ui.cc:875 #, fuzzy msgid "Assign selected tracks (prefader)" msgstr "Inserir seleção" -#: route_ui.cc:874 +#: route_ui.cc:879 #, fuzzy msgid "Assign selected tracks and buses (prefader)" msgstr "Inserir seleção" -#: route_ui.cc:877 +#: route_ui.cc:882 #, fuzzy msgid "Assign selected tracks (postfader)" msgstr "Inserir seleção" -#: route_ui.cc:881 +#: route_ui.cc:886 #, fuzzy msgid "Assign selected tracks and buses (postfader)" msgstr "Inserir seleção" -#: route_ui.cc:884 +#: route_ui.cc:889 #, fuzzy msgid "Copy track/bus gains to sends" msgstr "ardour: adicionar trilhas/barramento" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "" -#: route_ui.cc:1206 +#: route_ui.cc:1211 #, fuzzy msgid "Solo Isolate" msgstr "Solo" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "Pré Fade" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "Pós Fade" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "Controle de Saídas" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "Saídas Principais" -#: route_ui.cc:1385 +#: route_ui.cc:1390 #, fuzzy msgid "Color Selection" msgstr "Reproduzir região selecionada" -#: route_ui.cc:1472 +#: route_ui.cc:1477 #, fuzzy msgid "" "Do you really want to remove track \"%1\" ?\n" @@ -10803,7 +11017,7 @@ msgstr "" "Tem certeza de que deseja remover a trilha \"%1\" ?\n" "(não será possível voltar)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 #, fuzzy msgid "" "Do you really want to remove bus \"%1\" ?\n" @@ -10813,70 +11027,70 @@ msgstr "" "Deseja realmente remover o barramento \"%1\" ?\n" "(esta operação não poderá ser desfeita)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 #, fuzzy msgid "Remove track" msgstr "Remover Marca" -#: route_ui.cc:1484 +#: route_ui.cc:1489 #, fuzzy msgid "Remove bus" msgstr "Remover" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" msgstr "" -#: route_ui.cc:1515 +#: route_ui.cc:1520 #, fuzzy msgid "Use the new name" msgstr "novo nome: " -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "" -#: route_ui.cc:1529 +#: route_ui.cc:1534 #, fuzzy msgid "Rename Track" msgstr "Renomear" -#: route_ui.cc:1531 +#: route_ui.cc:1536 #, fuzzy msgid "Rename Bus" msgstr "Renomear" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr "" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "" -#: route_ui.cc:1709 +#: route_ui.cc:1714 #, fuzzy msgid "Save As Template" msgstr "Salvar Esquema..." -#: route_ui.cc:1710 +#: route_ui.cc:1715 #, fuzzy msgid "Template name:" msgstr "Nome do campo:" -#: route_ui.cc:1783 +#: route_ui.cc:1788 #, fuzzy msgid "Remote Control ID" msgstr "Remover ponto de controlo" -#: route_ui.cc:1793 +#: route_ui.cc:1798 #, fuzzy msgid "Remote control ID:" msgstr "Remover ponto de controlo" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10884,17 +11098,17 @@ msgid "" "The remote control ID of %3 cannot be changed." msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the master bus" msgstr "usar saída master" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the monitor bus" msgstr "usar saída master" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10905,23 +11119,23 @@ msgid "" "change this%5" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the mixer" msgstr "Mixer" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the editor" msgstr "editor" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." msgstr "" -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "" @@ -11438,61 +11652,117 @@ msgstr "" msgid "Glue new regions to bars and beats" msgstr "" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "VU (medidor volumétrico)" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "Mostrar todos os barramentos de áudio" + +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "Barramentos" + +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "usar saída master" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "Gravar" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "+ button" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "+ button" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "Trilhas/Barramentos" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 #, fuzzy msgid "as new tracks" msgstr "Trilhas" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 #, fuzzy msgid "to selected tracks" msgstr "Inserir seleção" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 #, fuzzy msgid "to region list" msgstr "Começo de regiões" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 #, fuzzy msgid "as new tape tracks" msgstr "Outras trilhas" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 #, fuzzy msgid "Auto-play" msgstr "" "reprodução\n" "automática" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 #, fuzzy msgid "Sound File Information" msgstr "Informação do arquivo de áudio" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 #, fuzzy msgid "Timestamp:" msgstr "Por tempo data/hora da Região" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 #, fuzzy msgid "Format:" msgstr "Normal" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Não foi possível ler o arquivo: %1 (%2)." @@ -11523,12 +11793,12 @@ msgstr "Quadros de Ãudio" msgid "MIDI files" msgstr "MIDI" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 #, fuzzy msgid "All files" msgstr "arquivos limpos" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 #, fuzzy msgid "Browse Files" msgstr "Localizar" @@ -11538,245 +11808,233 @@ msgstr "Localizar" msgid "Paths" msgstr "Diretórios/Arquivos" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 #, fuzzy msgid "Sort:" msgstr "porta" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 #, fuzzy msgid "Longest" msgstr "Enorme" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 #, fuzzy msgid "Shortest" msgstr "porta" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 #, fuzzy msgid "Newest" msgstr "Menor" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 #, fuzzy msgid "Least downloaded" msgstr "Separar intervalo" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 #, fuzzy msgid "ID" msgstr "ENTRADA" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 #, fuzzy msgid "Filename" msgstr "Renomear" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 #, fuzzy msgid "Duration" msgstr "normalizar região" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 msgid "Size" msgstr "" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 #, fuzzy msgid "Samplerate" msgstr "Separar Região" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "" -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 #, fuzzy msgid "GB" msgstr "Ir" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "" - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 #, fuzzy msgid "sequence files" msgstr "arquivos limpos" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 #, fuzzy msgid "merge files" msgstr "arquivos limpos" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 #, fuzzy msgid "one region per file" msgstr "Saltar Seleção" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 #, fuzzy msgid "one region per channel" msgstr "Cortar região pela intervalo" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 #, fuzzy msgid "all files in one region" msgstr "normalizar região" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" msgstr "" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 #, fuzzy msgid "Copy files to session" msgstr "Zoom na sessão" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 #, fuzzy msgid "file timestamp" msgstr "Por tempo data/hora da Região" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 #, fuzzy msgid "edit point" msgstr "editor" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 #, fuzzy msgid "playhead" msgstr "Início" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 #, fuzzy msgid "session start" msgstr "Começo de regiões" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "" -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 #, fuzzy msgid "Insert at" msgstr "Inverter verticalmente" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 #, fuzzy msgid "Mapping" msgstr "Avançado ..." -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 msgid "Conversion quality" msgstr "" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "Rapidamente" @@ -11872,21 +12130,21 @@ msgstr "" #: startup.cc:194 msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11995,10 +12253,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "" - #: startup.cc:729 #, fuzzy msgid "Open" @@ -12014,99 +12268,99 @@ msgstr "Nome da sessão:" msgid "Create session folder in:" msgstr "Loop região selecionada" -#: startup.cc:813 +#: startup.cc:821 #, fuzzy msgid "Select folder for session" msgstr "Loop região selecionada" -#: startup.cc:845 +#: startup.cc:853 #, fuzzy msgid "Use this template" msgstr "-esquema/template" -#: startup.cc:848 +#: startup.cc:856 #, fuzzy msgid "no template" msgstr "-esquema/template" -#: startup.cc:876 +#: startup.cc:884 #, fuzzy msgid "Use an existing session as a template:" msgstr "usar esquema existente" -#: startup.cc:888 +#: startup.cc:896 #, fuzzy msgid "Select template" msgstr "-esquema/template" -#: startup.cc:914 +#: startup.cc:922 #, fuzzy msgid "New Session" msgstr "Sessão" -#: startup.cc:1068 +#: startup.cc:1077 #, fuzzy msgid "Select session file" msgstr "Loop região selecionada" -#: startup.cc:1084 +#: startup.cc:1093 #, fuzzy msgid "Browse:" msgstr "Localizar" -#: startup.cc:1093 +#: startup.cc:1102 #, fuzzy msgid "Select a session" msgstr "Loop região selecionada" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 #, fuzzy msgid "channels" msgstr "cancelar" -#: startup.cc:1135 +#: startup.cc:1145 #, fuzzy msgid "Busses" msgstr "Barramentos" -#: startup.cc:1136 +#: startup.cc:1146 #, fuzzy msgid "Inputs" msgstr "Inspetador de Trilhas/Barramentos" -#: startup.cc:1137 +#: startup.cc:1147 #, fuzzy msgid "Outputs" msgstr "Saídas" -#: startup.cc:1145 +#: startup.cc:1155 #, fuzzy msgid "Create master bus" msgstr "usar saída master" -#: startup.cc:1155 +#: startup.cc:1165 #, fuzzy msgid "Automatically connect to physical inputs" msgstr "conectar automaticamente entradas das trilhas com as portas físicas" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "" -#: startup.cc:1215 +#: startup.cc:1225 #, fuzzy msgid "Automatically connect outputs" msgstr "conectar manualmente saídas das trilhas" -#: startup.cc:1237 +#: startup.cc:1247 msgid "... to master bus" msgstr "" -#: startup.cc:1247 +#: startup.cc:1257 msgid "... to physical outputs" msgstr "" -#: startup.cc:1297 +#: startup.cc:1307 #, fuzzy msgid "Advanced Session Options" msgstr "Preferências" @@ -12824,19 +13078,19 @@ msgstr "" msgid "bad XPM header %1" msgstr "" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "" -#: utils.cc:544 +#: utils.cc:591 msgid "cannot find XPM file for %1" msgstr "" -#: utils.cc:570 +#: utils.cc:617 msgid "cannot find icon image for %1 using %2" msgstr "" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "" @@ -12844,84 +13098,86 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 #, fuzzy msgid "Set Video Track" msgstr "Adicionar Trilha/Barramento" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 #, fuzzy msgid "Launch External Video Monitor" msgstr "Usar Monitoração de Hardware" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 #, fuzzy msgid "Video files" msgstr "Quadros de Ãudio" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 #, fuzzy msgid "Video Information" msgstr "Informação do arquivo de áudio" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 #, fuzzy msgid "Start:" msgstr "Inicio:" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 #, fuzzy msgid "Frame rate:" msgstr "Separar Região" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 msgid "Export Successful: %1" msgstr "" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12929,18 +13185,18 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 #, fuzzy msgid "Video Monitor: File Not Found." msgstr "Usar Monitoração de Hardware" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12950,374 +13206,382 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 #, fuzzy msgid "Transcode/Import Video File " msgstr "Exportar sessão para arquivo de áudio" -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 #, fuzzy msgid "Output File:" msgstr "Saídas" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "Altura" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 #, fuzzy msgid "File Information" msgstr "Informação do arquivo de áudio" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 #, fuzzy msgid "Duration:" msgstr "normalizar região" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 msgid "??" msgstr "" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 #, fuzzy msgid "Import Settings" msgstr "Preferências" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 #, fuzzy msgid "Import/Transcode Video to Session" msgstr "Exportar região" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 msgid "Original Width" msgstr "" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 #, fuzzy msgid "Extract Audio:" msgstr "Exportar região" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 #, fuzzy msgid "Extracting Audio.." msgstr "Exportar região" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 msgid "Transcoding Failed." msgstr "" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 #, fuzzy msgid "Save Transcoded Video File" msgstr "Exportar sessão para arquivo de áudio" -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 msgid "Server Docroot:" msgstr "" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 #, fuzzy msgid "Listen Port:" msgstr "Audição" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 msgid "Cache Size:" msgstr "" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 msgid "Confirm Overwrite" msgstr "" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 #, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "já existe uma trilha com este nome" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 #, fuzzy msgid "Cannot create video folder \"%1\" (%2)" msgstr "Não foi possível ler o arquivo: %1 (%2)." -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 #, fuzzy msgid "Export Video File " msgstr "Exportar sessão para arquivo de áudio" -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 #, fuzzy msgid "Video:" msgstr "Começo de regiões" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "Normalizar" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 #, fuzzy msgid "Deinterlace" msgstr "interno" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 #, fuzzy msgid "Include Session Metadata" msgstr "Importar seleção" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 #, fuzzy msgid "Output:" msgstr "Saídas" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 #, fuzzy msgid "Input:" msgstr "Inspetador de Trilhas/Barramentos" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 #, fuzzy msgid "Audio:" msgstr "Audição" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 #, fuzzy msgid "Master Bus" msgstr "usar saída master" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 #, fuzzy msgid "Settings:" msgstr "Avançado ..." -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 #, fuzzy msgid "Range:" msgstr "Intervalo" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 #, fuzzy msgid "Preset:" msgstr "Reiniciar" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 #, fuzzy msgid "Video Codec:" msgstr "Nome do diretório:" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 #, fuzzy msgid "Video KBit/s:" msgstr "Começo de regiões" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 #, fuzzy msgid "Audio Codec:" msgstr "Quadros de Ãudio" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 #, fuzzy msgid "Audio KBit/s:" msgstr "Quadros de Ãudio" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 #, fuzzy msgid "Audio Samplerate:" msgstr "Separar Região" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "Normalizar" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 #, fuzzy msgid "Exporting audio" msgstr "Exportar região" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:437 #, fuzzy -msgid "Exporting Audio.." +msgid "Exporting Audio..." msgstr "Exportar região" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." +#: export_video_dialog.cc:562 +msgid "Encoding Video..." msgstr "" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 msgid "Transcoding failed." msgstr "" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 #, fuzzy msgid "Save Exported Video File" msgstr "Exportar sessão para arquivo de áudio" @@ -13335,33 +13599,34 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" -"\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" -"\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#, fuzzy +#~ msgid "-Inf" +#~ msgstr "entrada" + +#, fuzzy +#~ msgid "slowest" +#~ msgstr "Menor" + +#, fuzzy +#~ msgid "fast" +#~ msgstr "rapidamente" + +#, fuzzy +#~ msgid "faster" +#~ msgstr "Fades" + +#~ msgid "fastest" +#~ msgstr "rapidamente" + #~ msgid "Connect" #~ msgstr "Conectar" @@ -14686,13 +14951,6 @@ msgstr "" #~ msgid "Beat" #~ msgstr "Batimentos" -#~ msgid "" -#~ "Do you really want to remove track \"%1\" ?\n" -#~ "(cannot be undone)" -#~ msgstr "" -#~ "Tem certeza de que deseja remover a trilha \"%1\" ?\n" -#~ "(não será possível voltar)" - #~ msgid "" #~ "You cannot record-enable\n" #~ "track %1\n" @@ -14821,9 +15079,6 @@ msgstr "" #~ msgid "rescan" #~ msgstr "rescanear" -#~ msgid "UI: cannot setup meter_bridge" -#~ msgstr "não foi possível iniciar o medidor volumétrico (VU)" - #~ msgid "Enable/Disable follow playhead" #~ msgstr "Habilitar/desbilitar reprodução contínua" @@ -14836,9 +15091,6 @@ msgstr "" #~ msgid "Audio Library" #~ msgstr "Biblioteca de Ãudio" -#~ msgid "Meter Bridge" -#~ msgstr "VU (medidor volumétrico)" - #~ msgid "Output Connections" #~ msgstr "Conexões de saída" diff --git a/gtk2_ardour/po/pt_PT.po b/gtk2_ardour/po/pt_PT.po index f7f1590d15..b5170493fc 100644 --- a/gtk2_ardour/po/pt_PT.po +++ b/gtk2_ardour/po/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk2_ardour rev.1702\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2007-04-15 19:00+0100\n" "Last-Translator: Rui Nuno Capela \n" "Language-Team: Portuguese\n" @@ -367,7 +367,7 @@ msgstr "" msgid "%1 will not work without a valid ardour.menus file" msgstr "" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 #, fuzzy msgid "Add Track or Bus" msgstr "Acrescentar faixa/barramento" @@ -410,8 +410,8 @@ msgstr "Barramentos" msgid "Add:" msgstr "" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 #, fuzzy msgid "Options" msgstr "Opções" @@ -428,22 +428,22 @@ msgid "Group:" msgstr "Grupo" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 #, fuzzy msgid "Audio" msgstr "Audição" #: 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "" @@ -467,7 +467,7 @@ msgid "" msgstr "" #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "Normal" @@ -518,7 +518,7 @@ msgstr "Canais" msgid "12 Channel" msgstr "Canais" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "" @@ -609,7 +609,7 @@ msgid "Track" msgstr "Faixa" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 #, fuzzy msgid "Show" msgstr "Mostrar tudo" @@ -618,101 +618,96 @@ msgstr "Mostrar tudo" msgid "Re-analyze data" msgstr "" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 #, fuzzy msgid "audition" msgstr "Audição" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 #, fuzzy msgid "solo" msgstr "solo alterado" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 msgid "feedback" msgstr "" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 #, fuzzy msgid "Speaker Configuration" msgstr "Configuração de canal" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 #, fuzzy msgid "Theme Manager" msgstr "Remover marcador" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 #, fuzzy msgid "Add Tracks/Busses" msgstr "Faixas/barramentos" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "Acerca de" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "Localizações" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 #, fuzzy msgid "Tracks and Busses" msgstr "Faixas/barramentos" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Cronómetro principal" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 #, fuzzy msgid "Audio Connections" msgstr "Ligações" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "Ligações" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "" -#: ardour_ui.cc:299 -#, fuzzy -msgid "could not initialize %1." -msgstr "não foi possível inicializar o Ardour" - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 #, fuzzy msgid "Starting audio engine" msgstr "Iniciar intervalo" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "" -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 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" @@ -721,26 +716,26 @@ msgid "" "controlled by %2" msgstr "" -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 #, fuzzy msgid "Don't quit" msgstr "Não %1" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 #, fuzzy msgid "Just quit" msgstr "Apenas %1" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 #, fuzzy msgid "Save and quit" msgstr "Guardar e %1" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 #, fuzzy msgid "" "%1 was unable to save your session.\n" @@ -755,16 +750,16 @@ msgstr "" "\n" " a opção \"Apenas sair\"" -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 msgid "Please wait while %1 cleans up..." msgstr "" -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 #, fuzzy msgid "Unsaved Session" msgstr "Nova sessão" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 #, fuzzy msgid "" "The session \"%1\"\n" @@ -783,7 +778,7 @@ msgstr "" "\n" "O que pretende fazer?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 #, fuzzy msgid "" "The snapshot \"%1\"\n" @@ -802,75 +797,75 @@ msgstr "" "\n" "O que pretende fazer?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "Alerta" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "desligado" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 #, fuzzy msgid "File:" msgstr "Renomear" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -878,63 +873,63 @@ msgid "" "\">%%%" msgstr "" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 #, fuzzy msgid "Disk: Unknown" msgstr "espaço: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, fuzzy, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "espaço: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, fuzzy, c-format msgid "Timecode|TC: %s" msgstr "espaço: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "Sessões recentes" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" msgstr "" -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Abrir sessão" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 #, fuzzy msgid "%1 sessions" msgstr "sessão" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "" "Não é possível acrescentar uma faixa sem que haja uma sessão esteja " "carregada." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 #, fuzzy msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "não foi possível criar uma nova faixa audio" msgstr[1] "não foi possível criar uma nova faixa audio" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 #, fuzzy msgid "" "There are insufficient JACK ports available\n" @@ -947,28 +942,28 @@ msgstr "" "Deverá salvaguardar a sessão, sair e\n" "reiniciar JACK com um maior número de portos." -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 #, fuzzy msgid "You cannot add a track or bus without a session already loaded." msgstr "" "Não é possível acrescentar uma faixa sem que haja uma sessão esteja " "carregada." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 #, fuzzy msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "não foi possível criar uma nova faixa audio" msgstr[1] "não foi possível criar uma nova faixa audio" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 #, fuzzy msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "não foi possível criar uma nova faixa audio" msgstr[1] "não foi possível criar uma nova faixa audio" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 #, fuzzy msgid "" "Please create one or more tracks before trying to record.\n" @@ -978,14 +973,14 @@ msgstr "" "antes de tentar gravar.\n" "Verifique o menu de Sessão." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" "%1" msgstr "" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 #, fuzzy msgid "" "JACK has either been shutdown or it\n" @@ -999,82 +994,82 @@ msgstr "" "A sessão corrente deverá ser salvaguardada\n" "e o serviço JACK devidamente reiniciado." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Não foi possível iniciar a sessão corrente" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 #, fuzzy msgid "Take Snapshot" msgstr "Capturar" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 #, fuzzy msgid "Name of new snapshot" msgstr "Nome para a nova captura" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 #, fuzzy msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "O ficheiro já existe, deseja reescrevê-lo ?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 #, fuzzy msgid "Overwrite" msgstr "aGrav" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 #, fuzzy msgid "Rename Session" msgstr "Inverter região" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 #, fuzzy msgid "New session name" msgstr "Novo nome de sessão:" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" msgstr "" -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 #, fuzzy msgid "Save Template" msgstr "Guardar modelo..." -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 #, fuzzy msgid "Name for template:" msgstr "Nome para o modelo de mistura" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-modelo" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 #, fuzzy msgid "" "This session\n" @@ -1082,56 +1077,56 @@ msgid "" "already exists. Do you want to open it?" msgstr "O ficheiro já existe, deseja reescrevê-lo ?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 #, fuzzy msgid "Open Existing Session" msgstr "Abrir sessão" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "" -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Não foi possível carregar a sessão \"%1 (captura %2)\" com sucesso" -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "" -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 #, fuzzy msgid "Could not create session in \"%1\"" msgstr "não foi possível carregar a sessão de linha de comando \"%1\"" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 #, fuzzy msgid "No files were ready for clean-up" msgstr "Não foram encontrados ficheiros audio para limpeza" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 #, fuzzy msgid "Clean-up" msgstr "Limpar" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1143,19 +1138,19 @@ msgstr "" "Estas podem ainda incluir regiões que necessitem\n" "da existência de alguns ficheiros já em desuso." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 #, fuzzy msgid "" "The following file was deleted from %2,\n" @@ -1172,7 +1167,7 @@ msgstr[1] "" "%3,\n" "libertando %3 %4bytes de espaço em disco." -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 #, fuzzy msgid "" "The following file was not in use and \n" @@ -1205,12 +1200,12 @@ msgstr[1] "" "\n" "Serão libertados %3 %4bytes de espaço em disco.\n" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 #, fuzzy msgid "Are you sure you want to clean-up?" msgstr "Tem a certeza que pretende realizar a limpeza?" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 #, fuzzy msgid "" "Clean-up is a destructive operation.\n" @@ -1222,84 +1217,84 @@ msgstr "" "limpeza, todos os ficheiros audio em desuso serão\n" "removidos para um \"arquivo morto\"" -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 #, fuzzy msgid "Cleaned Files" msgstr "ficheiros limpos" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "ficheiro eliminado" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 #, fuzzy msgid "Yes, Stop It" msgstr "Sim, elimine-a." -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "não foi possível abrir %1" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "" "A gravação foi interrompida porque o seu sistema não foi capaz de a " "acompanhar adequadamente." -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 #, fuzzy msgid "" "The disk system on your computer\n" @@ -1314,7 +1309,7 @@ msgstr "" "Especificamente, a velocidade de escrita de dados em disco\n" "foi insuficiente para acompanhar o ritmo de gravação.\n" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 #, fuzzy msgid "" "The disk system on your computer\n" @@ -1329,11 +1324,11 @@ msgstr "" "Especificamente, a velocidade de leitura de dados em disco\n" "foi insuficiente para acompanhar o ritmo de reprodução.\n" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 #, fuzzy msgid "" "This session appears to have been in the\n" @@ -1352,44 +1347,44 @@ msgstr "" "gravado até então ou simplesmente ignorá-lo.\n" "Por favor decida o que pretende fazer.\n" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "Ignorar" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "Recuperar" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 #, fuzzy msgid "Sample Rate Mismatch" msgstr "Frequência de amostragem" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 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" "audio may be played at the wrong sample rate.\n" msgstr "" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 #, fuzzy msgid "Do not load session" msgstr "Zoom (sessão)" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "Não foi possível desligar do serviço JACK" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "Não foi possível ligar ao serviço JACK" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1412,75 +1407,80 @@ msgstr "Não foi possível iniciar o painel de edição" msgid "UI: cannot setup mixer" msgstr "Não foi posivel iniciar o painel de mistura" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "Não foi possível iniciar o monitor volumétrico (vuímetro)" + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "Reproduzir desde o cursor de reprodução" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Parar reprodução" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 #, fuzzy msgid "Toggle record" msgstr "gravar" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "Reproduzir selecção" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "Ir para o início da sessão" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "Ir para o final da sessão" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "Reproduzir intervalo cíclico" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" msgstr "" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "Ir para a última posição inicial do cursor de reprodução quando parar" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 #, fuzzy msgid "Playhead follows Range Selections and Edits" msgstr "Reprodução no início do intervalo" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "Seja sensível acerca da monitorização de entradas" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "Ligar/Desligar o metrónomo" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" msgstr "" -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" msgstr "" -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "" -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1488,7 +1488,7 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1496,30 +1496,35 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "Reiniciar tudo" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "" -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "" -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 #, fuzzy msgid "Auto Return" msgstr "" "Retorno\n" "automático" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1541,27 +1546,27 @@ msgstr "Estabelecer cursor de edição" msgid "Setup Mixer" msgstr "Mostrar painel de mistura" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 #, fuzzy msgid "Reload Session History" msgstr "Criar directório de sessão em :" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 #, fuzzy msgid "Don't close" msgstr "Não %1" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 #, fuzzy msgid "Just close" msgstr "fechar" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 #, fuzzy msgid "Save and close" msgstr "Guardar e %1" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" @@ -1574,7 +1579,7 @@ msgstr "Sessão" msgid "Sync" msgstr "Sincronia" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Opções" @@ -1603,15 +1608,15 @@ msgstr "Tipo de ficheiro" msgid "Sample Format" msgstr "Formato de amostra" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "Mesas de controlo" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Efeitos/plug-ins" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "VUímetro" @@ -1628,7 +1633,7 @@ msgstr "Tempo de persistência" msgid "Denormal Handling" msgstr "" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "" @@ -1676,8 +1681,8 @@ msgstr "Capturar" msgid "Save As..." msgstr "Guardar modelo..." -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 #, fuzzy msgid "Rename..." msgstr "Renomear" @@ -1710,7 +1715,7 @@ msgid "Stem export..." msgstr "Exportar" #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Exportar" @@ -1724,11 +1729,11 @@ msgstr "Limpar originais em desuso" msgid "Flush Wastebasket" msgstr "Limpeza" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1472 msgid "JACK" msgstr "" -#: ardour_ui_ed.cc:190 route_params_ui.cc:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "Latência" @@ -1736,8 +1741,8 @@ msgstr "Latência" msgid "Reconnect" msgstr "Religar" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "Desligar" @@ -1754,7 +1759,7 @@ msgstr "Maximizar o painel de edição" msgid "Show Toolbars" msgstr "Mostrar posição" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 #, fuzzy msgid "Window|Mixer" msgstr "Janelas" @@ -1764,28 +1769,33 @@ msgstr "Janelas" msgid "Toggle Editor+Mixer" msgstr "Modo de edição" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "Janelas" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 #, fuzzy msgid "MIDI Tracer" msgstr "Porto parameterização MIDI" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 msgid "Help|Manual" msgstr "" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Guardar" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1795,105 +1805,105 @@ msgstr "Guardar" msgid "Transport" msgstr "Transporte" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "Parar" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "Rolar" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "Iniciar/Parar" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 #, fuzzy msgid "Start/Continue/Stop" msgstr "Iniciar/Parar" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 #, fuzzy msgid "Stop and Forget Capture" msgstr "Parar + esquecer gravação" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 #, fuzzy msgid "Transition To Roll" msgstr "Tradicional" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "Reproduzir intervalo cíclico" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 #, fuzzy msgid "Play Selected Range" msgstr "Estabelecer intervalo" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 #, fuzzy msgid "Play Selection w/Preroll" msgstr "Reproduzir região seleccionada" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "Gravar" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 #, fuzzy msgid "Start Recording" msgstr "Iniciar intervalo" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "Rebobinar" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "Rebobinar (devagar)" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "Rebobinar (rápido)" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "Avançar" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "Avançar (devagar)" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "Avançar (rápido)" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "Ir para o zero" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "Ir para o início" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "Ir para o final" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1902,152 +1912,152 @@ msgstr "" msgid "Timecode" msgstr "" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 #, fuzzy msgid "Bars & Beats" msgstr "Comp:Bat" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 #, fuzzy msgid "Minutes & Seconds" msgstr "Mins:Segs" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 #, fuzzy msgid "Samples" msgstr "Frequência de amostragem" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 #, fuzzy msgid "Punch In" msgstr "Inserção" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "Entrada" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 #, fuzzy msgid "Punch Out" msgstr "" "final de\n" "inserção" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "Saída" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 #, fuzzy msgid "Punch In/Out" msgstr "" "final de\n" "inserção" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 #, fuzzy msgid "In/Out" msgstr "" "final de\n" "inserção" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "Metrónomo" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 #, fuzzy msgid "Auto Input" msgstr "" "entrada\n" "automática" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 #, fuzzy msgid "Auto Play" msgstr "" "Reprodução\n" "automática" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 #, fuzzy msgid "Time Master" msgstr "" "Supervisão\n" "de tempo" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 #, fuzzy msgid "Toggle Record Enable Track %1" msgstr "Comutador de gravação Faixa 1" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "Percentagem" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Semi-tons" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "Enviar MTC" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "Enviar MMC" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "Usar MMC" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 #, fuzzy msgid "Send MIDI Clock" msgstr "Enviar controlo MIDI" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 #, fuzzy msgid "Send MIDI Feedback" msgstr "Enviar controlo MIDI" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 #, fuzzy msgid "Wall Clock" msgstr "Cronómetro principal" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 msgid "DSP" msgstr "" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 msgid "Buffers" msgstr "" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 #, fuzzy msgid "Timecode Format" msgstr "Quadros audio" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 #, fuzzy msgid "File Format" msgstr "Formato de ficheiro audio" @@ -2062,12 +2072,12 @@ msgstr "" msgid "Internal" msgstr "Interno" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 #, fuzzy msgid "Enable/Disable external positional sync" msgstr "Ligar/Desligar o metrónomo" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "" @@ -2098,7 +2108,7 @@ msgstr "" msgid "Meter" msgstr "VUímetro" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2192,33 +2202,33 @@ msgid "hide track" msgstr "esconder faixa" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 #, fuzzy msgid "Automation|Manual" msgstr "Automatização" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "Reprodução" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "Escrita" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "Tocar" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "" @@ -2227,7 +2237,7 @@ msgid "clear automation" msgstr "apagar automatizações" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "Esconder" @@ -2249,7 +2259,7 @@ msgstr "Desligar" msgid "Linear" msgstr "" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "Modo" @@ -2268,13 +2278,13 @@ msgstr "Modo de edição" msgid "Direction:" msgstr "resolução" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "Entradas" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "Saída" @@ -2284,8 +2294,8 @@ msgid "Edit" msgstr "Editar" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "Eliminar" @@ -2464,7 +2474,7 @@ msgstr "Tempo de persistência" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "" @@ -2732,18 +2742,18 @@ msgid "Ranges & Marks" msgstr "Marcadores de intervalo" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 #, fuzzy msgid "Editor" msgstr "Editar" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "Ciclo" @@ -2768,8 +2778,8 @@ msgstr "" msgid "Slow" msgstr "Lento" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "Rápido" @@ -2789,7 +2799,7 @@ msgstr "Activar" msgid "Slowest" msgstr "Mais lento" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "" @@ -2924,7 +2934,7 @@ msgid "Select All in Track" msgstr "Seleccionar tudo na faixa" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Seleccionar tudo" @@ -2984,15 +2994,15 @@ msgstr "" msgid "Select" msgstr "Seleccionar" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Cortar" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "Copiar" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Colar" @@ -3163,7 +3173,7 @@ msgstr "Refazer" msgid "Redo (%1)" msgstr "Refazer (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "Duplicar" @@ -3199,8 +3209,8 @@ msgstr "Eliminar lista de reprodução" msgid "Keep Playlist" msgstr "Manter lista de reprodução" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "Cancelar" @@ -3220,7 +3230,7 @@ msgstr "apagar lista de reprodução" msgid "Please wait while %1 loads visual data." msgstr "" -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 #, fuzzy msgid "Edit..." msgstr "Editar" @@ -3275,7 +3285,7 @@ msgstr "Nivelar" msgid "Position" msgstr "Posição" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Cortar" @@ -3290,7 +3300,7 @@ msgstr "Ferramenta/ganho" msgid "Ranges" msgstr "Intervalo" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 #, fuzzy @@ -3333,7 +3343,7 @@ msgstr "Opções" msgid "Misc Options" msgstr "Opções" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "Monitorização" @@ -3380,8 +3390,8 @@ msgstr "Cronómetro secundário" msgid "Separate" msgstr "separar" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "" @@ -3394,7 +3404,7 @@ msgstr "Quadros" msgid "Timecode fps" msgstr "" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Altura" @@ -3535,7 +3545,7 @@ msgstr "Reprodução no início do intervalo" msgid "Playhead to Range End" msgstr "Reprodução no final do intervalo" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "Seleccionar nenhum" @@ -3846,9 +3856,9 @@ msgstr "Inserir região" msgid "Toggle Active" msgstr "Comutar activação de envolvente" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "Remover" @@ -3857,19 +3867,19 @@ msgstr "Remover" msgid "Fit Selected Tracks" msgstr "seleccionar visualização de faixa" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "Enorme" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "Maior" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "Grande" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "Pequeno" @@ -3973,7 +3983,7 @@ msgstr "Reunir" msgid "Slide" msgstr "Deslizar" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "Bloquear" @@ -4184,7 +4194,7 @@ msgstr "Min:Segs" msgid "Video Monitor" msgstr "Monitorização" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -4194,8 +4204,9 @@ msgid "Always on Top" msgstr "Elevar região para o nível de topo" #: editor_actions.cc:554 -msgid "Framenumber" -msgstr "" +#, fuzzy +msgid "Frame number" +msgstr "remover marcador" #: editor_actions.cc:555 #, fuzzy @@ -4287,7 +4298,7 @@ msgstr "Remover" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Importar" @@ -4331,329 +4342,329 @@ msgstr "" msgid "Could not find editor.bindings in search path %1" msgstr "" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "" -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 #, fuzzy msgid "Raise to Top" msgstr "Elevar região para o nível de topo" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "Inferior" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 #, fuzzy msgid "Lower to Bottom" msgstr "Descer região para o nível de fundo" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 #, fuzzy msgid "Move to Original Position" msgstr "Posição original" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 #, fuzzy msgid "Remove Sync" msgstr "remover sincronismo" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Mudo" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 #, fuzzy msgid "Normalize..." msgstr "Normalizar" -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "Inverter" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 #, fuzzy msgid "Make Mono Regions" msgstr "Criar regiões mono" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "" -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 #, fuzzy msgid "Transpose..." msgstr "Transporte" -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 #, fuzzy msgid "Opaque" msgstr "opaco" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "Evanescimento" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "Desvanecimento" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 #, fuzzy msgid "Multi-Duplicate..." msgstr "Duplicar" -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "Preencher faixa" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "Estabelecer intervalo cíclico" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 #, fuzzy msgid "Set Punch" msgstr "Estabelecer intervalo de inserção" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 #, fuzzy msgid "Add Single Range Marker" msgstr "Acrescentar marcadores de intervalo" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 #, fuzzy msgid "Add Range Marker Per Region" msgstr "Acrescentar marcadores de intervalo" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 #, fuzzy msgid "Snap Position To Grid" msgstr "Ajustar ao compasso" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 #, fuzzy msgid "Close Gaps" msgstr "Fechar" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "" -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 #, fuzzy msgid "Export..." msgstr "Exportar" -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 #, fuzzy msgid "Separate Under" msgstr "Separar intervalo em faixa" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 #, fuzzy msgid "Set Fade In Length" msgstr "alterar duração de evanescimento" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 #, fuzzy msgid "Set Fade Out Length" msgstr "alterar duração de desvanecimento" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 #, fuzzy msgid "Set Tempo from Region = Bar" msgstr "estabelecer selecção desde a região" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 #, fuzzy msgid "Split at Percussion Onsets" msgstr "Do início ao cursor de edição" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 #, fuzzy msgid "List Editor..." msgstr "Opções" -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "" -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "" -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 #, fuzzy msgid "Reset Envelope" msgstr "Reiniciar tudo" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 #, fuzzy msgid "Reset Gain" msgstr "Reiniciar tudo" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 #, fuzzy msgid "Envelope Active" msgstr "Comutar activação de envolvente" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 #, fuzzy msgid "Quantize..." msgstr "Tipo de ficheiro" -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "" -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "" -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 #, fuzzy msgid "Set Range Selection" msgstr "Estabelecer intervalo desde selecção de intervalo" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 #, fuzzy msgid "Nudge Later" msgstr "Retocar p/frente" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 #, fuzzy msgid "Nudge Earlier" msgstr "Retocar p/frente" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 #, fuzzy msgid "Nudge Later by Capture Offset" msgstr "Retocar p/frente (gravação)" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 #, fuzzy msgid "Nudge Earlier by Capture Offset" msgstr "Retocar p/frente (gravação)" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 #, fuzzy msgid "Trim to Previous" msgstr "cortar para edição" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 #, fuzzy msgid "Trim to Next" msgstr "cortar para edição" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 #, fuzzy msgid "Insert Region From Region List" msgstr "estabelecer selecção desde a região" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 #, fuzzy msgid "Set Sync Position" msgstr "Estabelecer posição de sincronia de região" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "Separar" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 msgid "Trim Start at Edit Point" msgstr "" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 msgid "Trim End at Edit Point" msgstr "" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 #, fuzzy msgid "Align Start" msgstr "Alinhar regiões pelo início" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 #, fuzzy msgid "Align Start Relative" msgstr "Alinhar regiões pelo início (relativamente)" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 #, fuzzy msgid "Align End" msgstr "Alinhar" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 #, fuzzy msgid "Align End Relative" msgstr "Alinhar relativamente" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 #, fuzzy msgid "Align Sync" msgstr "Alinhar regiões sincronizadas" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 #, fuzzy msgid "Align Sync Relative" msgstr "Alinhar relativamente" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "" @@ -4679,33 +4690,33 @@ msgid "" "%2 as a new source, or skip it?" msgstr "" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "Cancelar importação" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Editor: não foi possível abrir o ficheiro \"%1\", (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "Cancelar importação inteira" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "Não acrescentar" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "Acrescentar sem qualquer questão" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 #, fuzzy msgid "Sample rate" msgstr "Frequência de amostragem" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4713,7 +4724,7 @@ msgstr "" "%1\n" "A frequência de amostragem deste ficheiro audio não é igual à de sessão!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "Acrescentar de qualquer forma" @@ -4751,31 +4762,31 @@ msgstr "copiar marcador de tempo" msgid "move tempo mark" msgstr "mover marcador de tempo" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "alterar duração de evanescimento" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "alterar duração de desvanecimento" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "mover marcador" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 msgid "programming_error: %1" msgstr "" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "novo marcador de região" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 #, fuzzy msgid "rubberband selection" msgstr "selecção de intervalo" @@ -4855,7 +4866,7 @@ msgid "Sharing Solo?" msgstr "" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "" @@ -4935,7 +4946,7 @@ msgid "end" msgstr "Envios" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "acrescentar marcador" @@ -4944,7 +4955,7 @@ msgstr "acrescentar marcador" msgid "range" msgstr " intervalo" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "remover marcador" @@ -5031,8 +5042,8 @@ msgstr "Renomear marcador" msgid "Rename Range" msgstr "Renomear intervalo" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "Renomear" @@ -5182,7 +5193,7 @@ msgstr "Descer região para o nível de fundo" msgid "Rename Region" msgstr "Inverter região" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 #, fuzzy msgid "New name:" msgstr "Novo nome: " @@ -5361,7 +5372,7 @@ msgstr "" "(esta operação é destrutiva e não pode ser desfeita)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "Não, não fazer nada." @@ -5571,11 +5582,11 @@ msgstr "" msgid "close region gaps" msgstr "estas regiões" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "" -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5590,7 +5601,7 @@ msgstr "" msgid "tracks" msgstr "Faixas" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 #, fuzzy msgid "track" msgstr "Faixa" @@ -5600,7 +5611,7 @@ msgstr "Faixa" msgid "busses" msgstr "Barramentos" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "" @@ -5645,7 +5656,7 @@ msgstr "" msgid "Yes, remove them." msgstr "Sim, remover." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Sim, remover." @@ -5723,7 +5734,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "" @@ -5742,8 +5753,9 @@ msgstr "Ir" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "" @@ -5819,7 +5831,8 @@ msgstr "Faixas/barramentos" msgid "Track/Bus visible ?" msgstr "Faixas/barramentos" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "" @@ -5828,7 +5841,7 @@ msgstr "" msgid "Track/Bus active ?" msgstr "Faixas/barramentos" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 msgid "I" msgstr "E" @@ -5837,7 +5850,7 @@ msgstr "E" msgid "MIDI input enabled" msgstr "Associação MIDI" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "" @@ -5852,7 +5865,7 @@ msgstr "Gravar" msgid "Muted" msgstr "Mudo" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "" @@ -5866,7 +5879,7 @@ msgstr "Solo livre" msgid "SI" msgstr "E" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 #, fuzzy msgid "Solo Isolated" msgstr "Solo livre" @@ -6164,151 +6177,155 @@ msgid "192000Hz" msgstr "" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Nenhum" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 #, fuzzy msgid "Shaped" msgstr "Forma de ruído" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 #, fuzzy msgid "Recording only" msgstr "Suspender gravação em caso de falha sincrónica (XRUN)" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 #, fuzzy msgid "raw" msgstr "desenhar" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 #, fuzzy msgid "Audio Interface:" msgstr "Interno" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 #, fuzzy msgid "Sample rate:" msgstr "Frequência de amostragem" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 #, fuzzy msgid "Audio mode:" msgstr "Quadros audio" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 #, fuzzy msgid "Dither:" msgstr "Tipo de extrapolação" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "" -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 #, fuzzy msgid "Output device:" msgstr "Saída" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 #, fuzzy msgid "Hardware input latency:" msgstr "Entradas Físicas: usar" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 #, fuzzy msgid "samples" msgstr "freq.amostragem" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 #, fuzzy msgid "Hardware output latency:" msgstr "Saídas Físicas: usar" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 #, fuzzy msgid "Advanced" msgstr "Avançado..." -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -6325,31 +6342,31 @@ msgid "" "%1 and choose the relevant device then." msgstr "" -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "" -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "" -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 #, fuzzy msgid "Channels:" msgstr "Canais" @@ -6513,9 +6530,9 @@ msgid "Folder:" msgstr "Nome do directório:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Pesquisar" @@ -6653,6 +6670,13 @@ msgstr "Localizações" msgid "Broadcast Wave options" msgstr "WAVE/vírgula flutuante (difusão)" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "" +"Deseja realmente remover o faixa \"%1\" ?\n" +"(esta operação não pode ser desfeita)" + #: export_preset_selector.cc:28 #, fuzzy msgid "Preset" @@ -6664,6 +6688,13 @@ msgid "" "Perhaps it references a format that has been removed?" msgstr "" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "" +"Deseja realmente remover o faixa \"%1\" ?\n" +"(esta operação não pode ser desfeita)" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "" @@ -6677,36 +6708,48 @@ msgstr "" msgid "Range" msgstr "Intervalo" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +msgid "curl error %1 (%2)" +msgstr "" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +msgid "%1" +msgstr "" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "Modo de automatizaçã" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "Tipo de automatização" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "" -#: gain_meter.cc:334 -msgid "-Inf" -msgstr "" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "" @@ -6718,7 +6761,7 @@ msgstr "Parametrizações" msgid "Switches" msgstr "" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "Controlos" @@ -6750,71 +6793,71 @@ msgstr "" msgid "MIDI Connection Manager" msgstr "Ligações de entrada" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "porto" -#: group_tabs.cc:306 +#: group_tabs.cc:308 #, fuzzy msgid "Selection..." msgstr "Reproduzir região seleccionada" -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "" -#: group_tabs.cc:308 +#: group_tabs.cc:310 msgid "Soloed..." msgstr "" -#: group_tabs.cc:314 +#: group_tabs.cc:316 #, fuzzy msgid "Create New Group ..." msgstr "Sem grupo" -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "" -#: group_tabs.cc:318 +#: group_tabs.cc:320 #, fuzzy msgid "Edit Group..." msgstr "Sem grupo" -#: group_tabs.cc:319 +#: group_tabs.cc:321 #, fuzzy msgid "Collect Group" msgstr "Seleccionar" -#: group_tabs.cc:320 +#: group_tabs.cc:322 #, fuzzy msgid "Remove Group" msgstr "Grupo" -#: group_tabs.cc:323 +#: group_tabs.cc:325 #, fuzzy msgid "Remove Subgroup Bus" msgstr "Acrescentar grupo" -#: group_tabs.cc:325 +#: group_tabs.cc:327 #, fuzzy msgid "Add New Subgroup Bus" msgstr "Acrescentar grupo" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "" -#: group_tabs.cc:328 +#: group_tabs.cc:330 #, fuzzy msgid "Add New Aux Bus (post-fader)" msgstr "Apagar VUímetro" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "" -#: group_tabs.cc:335 +#: group_tabs.cc:337 #, fuzzy msgid "Disable All Groups" msgstr "Desabilitar tudo" @@ -6919,11 +6962,11 @@ msgstr "" msgid "I/O selector" msgstr "Inverter selecção" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "%1 entrada" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "%1 saída" @@ -7007,7 +7050,7 @@ msgstr[1] "freq.amostragem" msgid "Reset" msgstr "Reiniciar" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "" @@ -7036,71 +7079,71 @@ msgstr "" msgid "Pre-Emphasis" msgstr "Pré-êmfase" -#: location_ui.cc:310 +#: location_ui.cc:314 #, fuzzy msgid "Remove this range" msgstr "estabelecer intervalo de inserção" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 #, fuzzy msgid "Set range start from playhead location" msgstr "Estabelecer marcador de intervalo desde cursor de reprodução" -#: location_ui.cc:316 +#: location_ui.cc:320 #, fuzzy msgid "Set range end from playhead location" msgstr "Estabelecer intervalo desde selecção de intervalo" -#: location_ui.cc:320 +#: location_ui.cc:324 #, fuzzy msgid "Remove this marker" msgstr "mover marcador" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 #, fuzzy msgid "Set marker time from playhead location" msgstr "Estabelecer intervalo desde selecção de intervalo" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "" -#: location_ui.cc:708 +#: location_ui.cc:720 #, fuzzy msgid "New Marker" msgstr "Marcador" -#: location_ui.cc:709 +#: location_ui.cc:721 #, fuzzy msgid "New Range" msgstr "Adicionar novo intervalo" -#: location_ui.cc:722 +#: location_ui.cc:734 #, fuzzy msgid "Loop/Punch Ranges" msgstr "Ciclos/inserção" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "acrescentar marcador de região" @@ -7177,19 +7220,19 @@ msgid "" "session at this time, because we would lose your connection information.\n" msgstr "" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr " (compilado " -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr " e versão GCC " -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "" -#: main.cc:505 +#: main.cc:501 #, fuzzy msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " @@ -7198,30 +7241,35 @@ msgstr "" "Algumas partes Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker" -#: main.cc:507 +#: main.cc:503 #, fuzzy msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "Ardour é fornecido ABSOLUTAMENTE SEM QUALQUER GARANTIA" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "nem mesmo para COMERCIALIZAÇÃO ou INDICADO PARA UM FIM PARTICULAR." -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "Sendo software livre, é permitida e até encorajada a sua distribuição " -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "" "desde que sejam respeitadas algumas condições; para mais informações, por " "favor leia o ficheiro COPYING." -#: main.cc:519 +#: main.cc:513 +#, fuzzy +msgid "could not initialize %1." +msgstr "não foi possível inicializar o Ardour" + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "" -#: main.cc:525 +#: main.cc:528 #, fuzzy msgid "could not create %1 GUI" msgstr "não foi possível criar o interface gráfico (GUI)" @@ -7231,7 +7279,7 @@ msgstr "não foi possível criar o interface gráfico (GUI)" msgid "Display delta to edit cursor" msgstr "Do início ao cursor de edição" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "Marcadores" @@ -7770,7 +7818,7 @@ msgstr "" msgid "Missing Plugins" msgstr "Efeitos/plug-ins" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "" @@ -7849,237 +7897,250 @@ msgstr "" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 #, fuzzy msgid "Comments" msgstr "Comentários" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "" -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 #, fuzzy msgid "Hide this mixer strip" msgstr "Esconder painéis de mistura de todos os barramentos audio" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 #, fuzzy msgid "Click to select metering point" msgstr "Seleccionar regiões" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "adartne" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "bloquear" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 #, fuzzy msgid "iso" msgstr "entradas" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 #, fuzzy msgid "Mix group" msgstr "Sem grupo" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 #, fuzzy msgid "Phase Invert" msgstr "Inverter" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 #, fuzzy msgid "Solo Safe" msgstr "Solo livre" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "Grupo" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 #, fuzzy msgid "Meter Point" msgstr "VUímetro" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 #, fuzzy msgid "Enable/Disable MIDI input" msgstr "Ligar/Desligar o metrónomo" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 #, fuzzy msgid "" "Aux\n" "Sends" msgstr "Envios" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 #, fuzzy msgid "Snd" msgstr "Envios" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "Desligado do JACK - não são possíveis alterações nas entradas/saídas" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 #, fuzzy msgid "Disconnected" msgstr "desligado" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 msgid "*Comments*" msgstr "*Comentários*" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 #, fuzzy msgid "Cmt" msgstr "Cortar" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "Clicar para acrescentar/editar comentários" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr ": editor de comentários" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 #, fuzzy msgid "Comments..." msgstr "Comentários" -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 #, fuzzy msgid "Save As Template..." msgstr "Guardar modelo..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "Activo" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "" -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 #, fuzzy msgid "Remote Control ID..." msgstr "ID controlo remoto" -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 msgid "in" msgstr "entrada" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "pós" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 msgid "out" msgstr "saída" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 #, fuzzy msgid "pr" msgstr "porto" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 #, fuzzy msgid "po" msgstr "porto" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 #, fuzzy msgid "o" msgstr "pronto" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 msgid "D" msgstr "" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 #, fuzzy msgid "i" msgstr "entrada" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 #, fuzzy msgid "Pre-fader" msgstr "Pré-atenuador" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 #, fuzzy msgid "Post-fader" msgstr "Pós-atenuador" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "Canais" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "não foi encontrada qualquer faixa para o painel de mistura" @@ -8088,10 +8149,68 @@ msgstr "não foi encontrada qualquer faixa para o painel de mistura" msgid "-all-" msgstr "-tudo-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "Painéis" +#: meter_strip.cc:764 +#, fuzzy +msgid "Variable height" +msgstr "altura da faixa" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "Curto" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +msgid "VU" +msgstr "" + #: monitor_section.cc:62 msgid "SiP" msgstr "" @@ -8474,7 +8593,7 @@ msgstr "" msgid "Panner (2D)" msgstr "" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "Ignorar" @@ -8668,7 +8787,7 @@ msgstr "" msgid "Eh? LADSPA plugins don't have editors!" msgstr "" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " @@ -8684,7 +8803,7 @@ msgstr "" "tipo desconhecido de editor de efeito/plug-in (nota: esta versão do ardour " "não suporta VST)" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " @@ -8693,79 +8812,91 @@ msgstr "" "tipo desconhecido de editor de efeito/plug-in (nota: esta versão do ardour " "não suporta VST)" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "Acrescentar" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 #, fuzzy msgid "Description" msgstr "resolução" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 #, fuzzy msgid "Plugin analysis" msgstr "Efeitos/plug-ins" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 #, fuzzy msgid "Save a new preset" msgstr "Nome para a nova parametrização:" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" msgstr "" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 #, fuzzy msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "Latência" msgstr[1] "Latência" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 #, fuzzy msgid "latency (%1 ms)" msgstr "Latência" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 #, fuzzy msgid "Edit Latency" msgstr "Latência" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "Parametrização de efeito/plug-in %1 inexistente" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "" @@ -8881,78 +9012,79 @@ msgstr "" msgid "Port Insert " msgstr "Nova inserção" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 #, fuzzy msgid "Sources" msgstr "Avançado..." -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, fuzzy, c-format msgid "Rename '%s'..." msgstr "Renomear" -#: port_matrix.cc:451 +#: port_matrix.cc:472 #, fuzzy msgid "Remove all" msgstr "Remover marcador" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, fuzzy, c-format msgid "%s all" msgstr "Reiniciar tudo" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "Refrescar" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "" -#: port_matrix.cc:702 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." msgstr "" -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "" -#: port_matrix.cc:728 +#: port_matrix.cc:749 msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, fuzzy, c-format msgid "Remove '%s'" msgstr "Remover" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, fuzzy, c-format msgid "%s all from '%s'" msgstr "seleccionar tudo desde o ciclo" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 #, fuzzy msgid "channel" msgstr "canais" @@ -8967,66 +9099,66 @@ msgstr "Não existem portos JACK disponíveis" msgid "There are no %1 ports to connect." msgstr "Não existem portos JACK disponíveis" -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 #, fuzzy msgid "Show All Controls" msgstr "Mostrar controlos de envio" -#: processor_box.cc:375 +#: processor_box.cc:376 #, fuzzy msgid "Hide All Controls" msgstr "Esconder todos os desvanecimentos cruzados" -#: processor_box.cc:464 +#: processor_box.cc:465 #, fuzzy msgid "on" msgstr "pronto" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "desligado" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" msgstr "" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" msgstr "" -#: processor_box.cc:1196 +#: processor_box.cc:1209 #, fuzzy msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "%1 entrada" msgstr[1] "%1 entrada" -#: processor_box.cc:1200 +#: processor_box.cc:1213 #, fuzzy msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" @@ -9037,38 +9169,38 @@ msgstr[1] "" "entrada\n" "automática" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" msgstr "" -#: processor_box.cc:1206 +#: processor_box.cc:1219 #, fuzzy msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "canais" msgstr[1] "canais" -#: processor_box.cc:1210 +#: processor_box.cc:1223 #, fuzzy msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "canais" msgstr[1] "canais" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" msgstr "" -#: processor_box.cc:1249 +#: processor_box.cc:1262 #, fuzzy msgid "Cannot set up new send: %1" msgstr "não foi possível estabelecer receptor de sinal %1" -#: processor_box.cc:1581 +#: processor_box.cc:1594 #, fuzzy msgid "" "You cannot reorder these plugins/sends/inserts\n" @@ -9079,20 +9211,20 @@ msgstr "" "na forma pretendida porque as entradas e saídas\n" "não podem ser combinadas correctamente." -#: processor_box.cc:1765 +#: processor_box.cc:1778 #, fuzzy msgid "Rename Processor" msgstr "Renomear faixa" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 #, fuzzy msgid "" "Copying the set of processors on the clipboard failed,\n" @@ -9104,7 +9236,7 @@ msgstr "" "para os efeitos/plug-ins não combinam correctamente\n" "com a configuração desta faixa." -#: processor_box.cc:1987 +#: processor_box.cc:2000 #, fuzzy msgid "" "Do you really want to remove all processors from %1?\n" @@ -9113,16 +9245,16 @@ msgstr "" "Deseja realmente remover todos os redireccionamentos para este barramento?\n" "(esta operação não pode ser desfeita)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "Sim, remover todos" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 #, fuzzy msgid "Remove processors" msgstr "Remover marcador" -#: processor_box.cc:2008 +#: processor_box.cc:2021 #, fuzzy msgid "" "Do you really want to remove all pre-fader processors from %1?\n" @@ -9131,7 +9263,7 @@ msgstr "" "Deseja realmente remover todos os redireccionamentos para este barramento?\n" "(esta operação não pode ser desfeita)" -#: processor_box.cc:2011 +#: processor_box.cc:2024 #, fuzzy msgid "" "Do you really want to remove all post-fader processors from %1?\n" @@ -9140,59 +9272,59 @@ msgstr "" "Deseja realmente remover todos os redireccionamentos para este barramento?\n" "(esta operação não pode ser desfeita)" -#: processor_box.cc:2198 +#: processor_box.cc:2200 #, fuzzy msgid "New Plugin" msgstr "Novo efeito/plug-in..." -#: processor_box.cc:2201 +#: processor_box.cc:2203 msgid "New Insert" msgstr "Nova inserção" -#: processor_box.cc:2204 +#: processor_box.cc:2206 #, fuzzy msgid "New External Send ..." msgstr "Novo envio..." -#: processor_box.cc:2208 +#: processor_box.cc:2210 #, fuzzy msgid "New Aux Send ..." msgstr "Novo envio..." -#: processor_box.cc:2212 +#: processor_box.cc:2214 #, fuzzy msgid "Clear (all)" msgstr "Apagar todos os intervalos" -#: processor_box.cc:2214 +#: processor_box.cc:2216 #, fuzzy msgid "Clear (pre-fader)" msgstr "Apagar VUímetro" -#: processor_box.cc:2216 +#: processor_box.cc:2218 #, fuzzy msgid "Clear (post-fader)" msgstr "Apagar VUímetro" -#: processor_box.cc:2242 +#: processor_box.cc:2244 msgid "Activate All" msgstr "Activar tudo" -#: processor_box.cc:2244 +#: processor_box.cc:2246 #, fuzzy msgid "Deactivate All" msgstr "Desactivar todos" -#: processor_box.cc:2246 +#: processor_box.cc:2248 #, fuzzy msgid "A/B Plugins" msgstr "Efeitos/plug-ins" -#: processor_box.cc:2255 +#: processor_box.cc:2257 msgid "Edit with generic controls..." msgstr "" -#: processor_box.cc:2531 +#: processor_box.cc:2557 #, fuzzy msgid "%1: %2 (by %3)" msgstr "ardour: %1: %2 (por %3)" @@ -9364,7 +9496,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -9459,7 +9591,7 @@ msgstr "" msgid "Click gain level" msgstr "Ficheiro audio para metrónomo" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Automatização" @@ -9648,98 +9780,102 @@ msgstr "" msgid "Show meters on tracks in the editor" msgstr "" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 #, fuzzy msgid "Show waveforms in regions" msgstr "Mostrar regiões de automatização" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 #, fuzzy msgid "Show gain envelopes in audio regions" msgstr "Mostrar regiões de automatização" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 #, fuzzy msgid "Waveform scale" msgstr "Forma de onda" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "linear" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 #, fuzzy msgid "Waveform shape" msgstr "Forma de onda" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 #, fuzzy msgid "traditional" msgstr "Tradicional" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 #, fuzzy msgid "rectified" msgstr "Rectificado" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 #, fuzzy msgid "Name new markers" msgstr "remover marcador" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9747,370 +9883,449 @@ msgid "" "You can always rename markers by right-clicking on them" msgstr "" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 #, fuzzy msgid "Record monitoring handled by" msgstr "Monitorização" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 #, fuzzy msgid "ardour" msgstr "ardour: cronómetro" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 #, fuzzy msgid "audio hardware" msgstr "Quadros audio" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 #, fuzzy msgid "Tape machine mode" msgstr "Modo de automatizaçã" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 #, fuzzy msgid "Connect track inputs" msgstr "Ligar entradas de faixas novas automaticamente" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 #, fuzzy msgid "automatically to physical inputs" msgstr "Ligar entradas automaticamente" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 #, fuzzy msgid "Connect track and bus outputs" msgstr "Ligar saídas principais de faixas novas a automaticamente" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 #, fuzzy msgid "automatically to physical outputs" msgstr "Ligar saídas automaticamente" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 #, fuzzy msgid "automatically to master bus" msgstr "ligar saídas principais automaticamente" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 #, fuzzy msgid "Denormals" msgstr "normal" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 #, fuzzy msgid "Silence plugins when the transport is stopped" msgstr "Suspender efeitos/plug-ins com transporte" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 #, fuzzy msgid "Replicate missing region channels" msgstr "Criar uma região para cada canal" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 #, fuzzy msgid "Solo / mute" msgstr "Solo via barramento" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 #, fuzzy msgid "Listen Position" msgstr "Posição" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 msgid "after-fader (AFL)" msgstr "" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 #, fuzzy msgid "pre-fader (PFL)" msgstr "Encaminhamentos pré-atenuador" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 #, fuzzy msgid "before pre-fader processors" msgstr "Remover marcador" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 #, fuzzy msgid "immediately post-fader" msgstr "Apagar VUímetro" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 #, fuzzy msgid "after post-fader processors (before pan)" msgstr "Remover marcador" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 #, fuzzy msgid "Show solo muting" msgstr "Mostrar todas as automatizações" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 #, fuzzy msgid "Default track / bus muting options" msgstr "Faixas/barramentos" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 #, fuzzy msgid "Mute affects control outputs" msgstr "usar saídas de controlo" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 #, fuzzy msgid "Send MIDI Time Code" msgstr "Enviar controlo MIDI" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 #, fuzzy msgid "Send MIDI control feedback" msgstr "Enviar controlo MIDI" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 #, fuzzy msgid "Sound MIDI notes as they are selected" msgstr "Inserir selecção" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 #, fuzzy msgid "User interaction" msgstr "Operações em regiões" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 #, fuzzy msgid "Control surface remote ID" msgstr "Mesas de controlo" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 #, fuzzy msgid "assigned by user" msgstr "não atribuidas" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 msgid "Preferences|GUI" msgstr "" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 #, fuzzy msgid "Mixer Strip" msgstr "Mostrar painel de mistura" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 #, fuzzy msgid "Use narrow strips in the mixer by default" msgstr "Estreitar painéis de mistura" -#: rc_option_editor.cc:1898 +#: rc_option_editor.cc:1906 #, fuzzy -msgid "Meter hold time" +msgid "Peak hold time" msgstr "VUímetro (persistência)" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 #, fuzzy msgid "short" msgstr "Curto" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 #, fuzzy msgid "medium" msgstr "Médio" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "" -#: rc_option_editor.cc:1912 +#: rc_option_editor.cc:1920 #, fuzzy -msgid "Meter fall-off" +msgid "DPM fall-off" msgstr "VUímetro (decaimento)" -#: rc_option_editor.cc:1918 -#, fuzzy -msgid "slowest" -msgstr "Mais lento" +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" msgstr "" -#: rc_option_editor.cc:1921 -#, fuzzy -msgid "fast" -msgstr "rápido" +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" -#: rc_option_editor.cc:1922 -#, fuzzy -msgid "faster" -msgstr "Rápido" +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" + +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" -#: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "rápido" +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" + +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 +msgid "Peak threshold [dBFS]" +msgstr "" + +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" + +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -10121,11 +10336,11 @@ msgstr "ouvir esta região" msgid "Position:" msgstr "Posição" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Final:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "" @@ -10149,27 +10364,27 @@ msgstr "" msgid "Source:" msgstr "" -#: region_editor.cc:167 +#: region_editor.cc:166 #, fuzzy msgid "Region '%1'" msgstr "Regiões" -#: region_editor.cc:274 +#: region_editor.cc:273 #, fuzzy msgid "change region start position" msgstr "estabelecer posição de sincronismo na região" -#: region_editor.cc:290 +#: region_editor.cc:289 #, fuzzy msgid "change region end position" msgstr "estabelecer posição de sincronismo na região" -#: region_editor.cc:310 +#: region_editor.cc:309 #, fuzzy msgid "change region length" msgstr "alterar duração de evanescimento" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 #, fuzzy msgid "change region sync point" msgstr "estabelecer posição de sincronismo na região" @@ -10379,361 +10594,361 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "" -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "Faixas/barramentos" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "Entradas" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "Saídas" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "não foi encontrado qualquer encaminhamento" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "Nenhuma faixa" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 #, fuzzy msgid "No Track or Bus Selected" msgstr "Nenhum saminho seleccionado" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "Gravar" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 #, fuzzy msgid "Route Group" msgstr "Grupo" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 #, fuzzy msgid "MIDI Controllers and Automation" msgstr "Usar controlo MIDI" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 #, fuzzy msgid "Show All Automation" msgstr "Mostrar todas as automatizações" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 #, fuzzy msgid "Show Existing Automation" msgstr "Mostrar automatizações existentes" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 #, fuzzy msgid "Hide All Automation" msgstr "Esconder todas as automatizações" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 #, fuzzy msgid "Processor automation" msgstr "apagar automatizações" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 #, fuzzy msgid "Color..." msgstr "Cor" -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 #, fuzzy msgid "Layers" msgstr "Nível" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 #, fuzzy msgid "Automatic (based on I/O connections)" msgstr "Ligar saídas automaticamente" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 #, fuzzy msgid "(Currently: Existing Material)" msgstr "Alinhar com material existente" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 #, fuzzy msgid "(Currently: Capture Time)" msgstr "Alinhar com tempo de gravação" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 #, fuzzy msgid "Align With Existing Material" msgstr "Alinhar com material existente" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 #, fuzzy msgid "Align With Capture Time" msgstr "Alinhar com tempo de gravação" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 msgid "Alignment" msgstr "Alinhamento" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 #, fuzzy msgid "Normal Mode" msgstr "Normal" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 #, fuzzy msgid "Tape Mode" msgstr "Modo de ajuste" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 #, fuzzy msgid "Non-Layered Mode" msgstr "Níveis de região" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Lista de reprodução" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 #, fuzzy msgid "Rename Playlist" msgstr "Nome para lista de reprodução" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 #, fuzzy msgid "New name for playlist:" msgstr "Nome para lista de reprodução" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 #, fuzzy msgid "New Copy Playlist" msgstr "Nome para lista de reprodução" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 #, fuzzy msgid "Name for new playlist:" msgstr "Nome para lista de reprodução" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 #, fuzzy msgid "New Playlist" msgstr "Lista de reprodução" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 #, fuzzy msgid "You cannot create a track with that name as it is reserved for %1" msgstr "" "Não é possível acrescentar uma faixa sem que haja uma sessão esteja " "carregada." -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 #, fuzzy msgid "New Copy..." msgstr "Nova cópia" -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 #, fuzzy msgid "New Take" msgstr "Novo tempo" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 #, fuzzy msgid "Copy Take" msgstr "Copiar" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "Apagar actual" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 #, fuzzy msgid "Select From All..." msgstr "Seleccionar tudo..." -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 #, fuzzy msgid "Remove \"%1\"" msgstr "Remover" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 msgid "After-fade listen (AFL)" msgstr "" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 #, fuzzy msgid "Pre-fade listen (PFL)" msgstr "Encaminhamentos pré-atenuador" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "" -#: route_ui.cc:114 +#: route_ui.cc:119 #, fuzzy msgid "Mute this track" msgstr "Esconder esta faixa" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "" -#: route_ui.cc:133 +#: route_ui.cc:138 #, fuzzy msgid "Monitor input" msgstr "Monitorização" -#: route_ui.cc:139 +#: route_ui.cc:144 #, fuzzy msgid "Monitor playback" msgstr "Parar reprodução" -#: route_ui.cc:586 +#: route_ui.cc:591 #, fuzzy msgid "Not connected to JACK - cannot engage record" msgstr "Desligado do JACK - não são possíveis alterações nas entradas/saídas" -#: route_ui.cc:781 +#: route_ui.cc:786 #, fuzzy msgid "Step Entry" msgstr "Editar" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "" -#: route_ui.cc:858 +#: route_ui.cc:863 #, fuzzy msgid "Assign all tracks and buses (prefader)" msgstr "seleccionar visualização de faixa" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "" -#: route_ui.cc:866 +#: route_ui.cc:871 #, fuzzy msgid "Assign all tracks and buses (postfader)" msgstr "seleccionar visualização de faixa" -#: route_ui.cc:870 +#: route_ui.cc:875 #, fuzzy msgid "Assign selected tracks (prefader)" msgstr "seleccionar visualização de faixa" -#: route_ui.cc:874 +#: route_ui.cc:879 #, fuzzy msgid "Assign selected tracks and buses (prefader)" msgstr "seleccionar visualização de faixa" -#: route_ui.cc:877 +#: route_ui.cc:882 #, fuzzy msgid "Assign selected tracks (postfader)" msgstr "seleccionar visualização de faixa" -#: route_ui.cc:881 +#: route_ui.cc:886 #, fuzzy msgid "Assign selected tracks and buses (postfader)" msgstr "seleccionar visualização de faixa" -#: route_ui.cc:884 +#: route_ui.cc:889 #, fuzzy msgid "Copy track/bus gains to sends" msgstr "ardour: faixa/barramento: " -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "" -#: route_ui.cc:1206 +#: route_ui.cc:1211 #, fuzzy msgid "Solo Isolate" msgstr "Solo livre" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "Pré-atenuador" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "Pós-atenuador" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "Saídas de controlo" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "Saídas principais" -#: route_ui.cc:1385 +#: route_ui.cc:1390 #, fuzzy msgid "Color Selection" msgstr "Reproduzir região seleccionada" -#: route_ui.cc:1472 +#: route_ui.cc:1477 #, fuzzy msgid "" "Do you really want to remove track \"%1\" ?\n" @@ -10747,7 +10962,7 @@ msgstr "" "A lista de reprodução em uso para esta faixa pode ficar perdida.\n" "(esta operação não pode ser desfeita)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 #, fuzzy msgid "" "Do you really want to remove bus \"%1\" ?\n" @@ -10757,69 +10972,69 @@ msgstr "" "Deseja realmente remover o barramento \"%1\" ?\n" "(esta operação não pode ser desfeita)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 #, fuzzy msgid "Remove track" msgstr "Remover marcador" -#: route_ui.cc:1484 +#: route_ui.cc:1489 #, fuzzy msgid "Remove bus" msgstr "Remover" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" msgstr "" -#: route_ui.cc:1515 +#: route_ui.cc:1520 #, fuzzy msgid "Use the new name" msgstr "novo nome: " -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "Renomear faixa" -#: route_ui.cc:1531 +#: route_ui.cc:1536 #, fuzzy msgid "Rename Bus" msgstr "Renomear" -#: route_ui.cc:1690 +#: route_ui.cc:1695 #, fuzzy msgid " latency" msgstr "Latência" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "" -#: route_ui.cc:1709 +#: route_ui.cc:1714 #, fuzzy msgid "Save As Template" msgstr "Guardar modelo..." -#: route_ui.cc:1710 +#: route_ui.cc:1715 #, fuzzy msgid "Template name:" msgstr "Nome para o campo:" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "ID controlo remoto" -#: route_ui.cc:1793 +#: route_ui.cc:1798 #, fuzzy msgid "Remote control ID:" msgstr "ID controlo remoto" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10827,17 +11042,17 @@ msgid "" "The remote control ID of %3 cannot be changed." msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the master bus" msgstr "Criar barramento para VUímetro" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the monitor bus" msgstr "Criar barramento para VUímetro" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10848,25 +11063,25 @@ msgid "" "change this%5" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the mixer" msgstr "" "edição\n" "mistura" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the editor" msgstr "a altura" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." msgstr "" -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "" @@ -11390,61 +11605,117 @@ msgstr "" msgid "Glue new regions to bars and beats" msgstr "" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "VUímetro" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "Mostrar todos as faixas audio" + +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "Barramentos" + +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "Criar barramento para VUímetro" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "gravar alterado" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "+ botão" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "Solo via barramento" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "Faixas/barramentos" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 #, fuzzy msgid "as new tracks" msgstr "... como faixa nova" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 #, fuzzy msgid "to selected tracks" msgstr "seleccionar visualização de faixa" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 #, fuzzy msgid "to region list" msgstr "Ajustar ao início de região" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 #, fuzzy msgid "as new tape tracks" msgstr "... como faixa nova" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 #, fuzzy msgid "Auto-play" msgstr "" "Reprodução\n" "automática" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 #, fuzzy msgid "Sound File Information" msgstr "Informações" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 #, fuzzy msgid "Timestamp:" msgstr "Por instante de região" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 #, fuzzy msgid "Format:" msgstr "Formato" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Não foi possível ler o ficheiro: %1 (%2)." @@ -11475,12 +11746,12 @@ msgstr "Quadros audio" msgid "MIDI files" msgstr "Associação MIDI" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 #, fuzzy msgid "All files" msgstr "ficheiros limpos" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 #, fuzzy msgid "Browse Files" msgstr "Pesquisar" @@ -11489,248 +11760,236 @@ msgstr "Pesquisar" msgid "Paths" msgstr "Directórios" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 #, fuzzy msgid "Sort:" msgstr "Ordenar" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 #, fuzzy msgid "Longest" msgstr "Enorme" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 #, fuzzy msgid "Shortest" msgstr "Curto" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 #, fuzzy msgid "Newest" msgstr "Mais lento" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 #, fuzzy msgid "Least downloaded" msgstr "Iniciar intervalo" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 #, fuzzy msgid "ID" msgstr "E" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 #, fuzzy msgid "Filename" msgstr "Renomear" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 #, fuzzy msgid "Duration" msgstr "Duração (seg)" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 #, fuzzy msgid "Size" msgstr "Tamanho máximo" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 #, fuzzy msgid "Samplerate" msgstr "Frequência de amostragem" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "" -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 #, fuzzy msgid "GB" msgstr "Ir" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "" - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 #, fuzzy msgid "one track per channel" msgstr "panorama para o canal %u" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 #, fuzzy msgid "sequence files" msgstr "ficheiros limpos" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 #, fuzzy msgid "merge files" msgstr "ficheiros limpos" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 #, fuzzy msgid "one region per file" msgstr "preencher região" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 #, fuzzy msgid "one region per channel" msgstr "Criar uma região para cada canal" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 #, fuzzy msgid "all files in one region" msgstr "alinhar região" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" msgstr "" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 #, fuzzy msgid "Copy files to session" msgstr "Copiar ficheiro para o directório de sessão" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 #, fuzzy msgid "file timestamp" msgstr "Por instante de região" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 #, fuzzy msgid "edit point" msgstr "Editar com" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 #, fuzzy msgid "playhead" msgstr "Cursor de reprodução" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 #, fuzzy msgid "session start" msgstr "Inícios de região" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "" -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 #, fuzzy msgid "Insert at" msgstr "Inverte" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 #, fuzzy msgid "Mapping" msgstr "Avançado..." -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 #, fuzzy msgid "Conversion quality" msgstr "Qualidade de conversão" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "Mais rápido" @@ -11824,21 +12083,21 @@ msgstr "" #: startup.cc:194 msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11947,10 +12206,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "" - #: startup.cc:729 #, fuzzy msgid "Open" @@ -11966,99 +12221,99 @@ msgstr "Novo nome de sessão:" msgid "Create session folder in:" msgstr "Criar directório de sessão em :" -#: startup.cc:813 +#: startup.cc:821 #, fuzzy msgid "Select folder for session" msgstr "Seleccionar regiões" -#: startup.cc:845 +#: startup.cc:853 #, fuzzy msgid "Use this template" msgstr "seleccionar modelo" -#: startup.cc:848 +#: startup.cc:856 #, fuzzy msgid "no template" msgstr "-modelo" -#: startup.cc:876 +#: startup.cc:884 #, fuzzy msgid "Use an existing session as a template:" msgstr "Usar modelo de sessão" -#: startup.cc:888 +#: startup.cc:896 #, fuzzy msgid "Select template" msgstr "seleccionar modelo" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "Nova sessão" -#: startup.cc:1068 +#: startup.cc:1077 #, fuzzy msgid "Select session file" msgstr "seleccionar sessão" -#: startup.cc:1084 +#: startup.cc:1093 #, fuzzy msgid "Browse:" msgstr "Pesquisar" -#: startup.cc:1093 +#: startup.cc:1102 #, fuzzy msgid "Select a session" msgstr "seleccionar sessão" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "canais" -#: startup.cc:1135 +#: startup.cc:1145 #, fuzzy msgid "Busses" msgstr "Barramentos" -#: startup.cc:1136 +#: startup.cc:1146 #, fuzzy msgid "Inputs" msgstr "Faixas/Barramentos de entrada" -#: startup.cc:1137 +#: startup.cc:1147 #, fuzzy msgid "Outputs" msgstr "Faixas/Barramentos de saída" -#: startup.cc:1145 +#: startup.cc:1155 #, fuzzy msgid "Create master bus" msgstr "Criar barramento para VUímetro" -#: startup.cc:1155 +#: startup.cc:1165 #, fuzzy msgid "Automatically connect to physical inputs" msgstr "Ligar entradas automaticamente" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "" -#: startup.cc:1215 +#: startup.cc:1225 #, fuzzy msgid "Automatically connect outputs" msgstr "Ligar saídas automaticamente" -#: startup.cc:1237 +#: startup.cc:1247 #, fuzzy msgid "... to master bus" msgstr "Ligar ao barramento principal" -#: startup.cc:1247 +#: startup.cc:1257 #, fuzzy msgid "... to physical outputs" msgstr "Ligar às saídas físicas" -#: startup.cc:1297 +#: startup.cc:1307 #, fuzzy msgid "Advanced Session Options" msgstr "Opções avançadas" @@ -12775,20 +13030,20 @@ msgstr "" msgid "bad XPM header %1" msgstr "" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "" -#: utils.cc:544 +#: utils.cc:591 msgid "cannot find XPM file for %1" msgstr "" -#: utils.cc:570 +#: utils.cc:617 #, fuzzy msgid "cannot find icon image for %1 using %2" msgstr "não foi possível estabelecer receptor de sinal %1" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "" @@ -12796,84 +13051,86 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 #, fuzzy msgid "Set Video Track" msgstr "Acrescentar faixa/barramento audio" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 #, fuzzy msgid "Launch External Video Monitor" msgstr "Monitorização externa" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 #, fuzzy msgid "Video files" msgstr "Quadros audio" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 #, fuzzy msgid "Video Information" msgstr "Informações" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 #, fuzzy msgid "Start:" msgstr "Início:" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 #, fuzzy msgid "Frame rate:" msgstr "Frequência de amostragem" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 msgid "Export Successful: %1" msgstr "" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12881,18 +13138,18 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 #, fuzzy msgid "Video Monitor: File Not Found." msgstr "Monitorização" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12902,376 +13159,384 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 #, fuzzy msgid "Transcode/Import Video File " msgstr "Exportar sessão para ficheiro audio..." -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 #, fuzzy msgid "Output File:" msgstr "Saída" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "Altura" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 #, fuzzy msgid "File Information" msgstr "Informações" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 #, fuzzy msgid "Duration:" msgstr "Duração (seg)" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 msgid "??" msgstr "" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 #, fuzzy msgid "Import Settings" msgstr "Opções" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 #, fuzzy msgid "Import/Transcode Video to Session" msgstr "Exportar região" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 msgid "Original Width" msgstr "" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 #, fuzzy msgid "Extract Audio:" msgstr "Exportar região" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 #, fuzzy msgid "Extracting Audio.." msgstr "Exportar região" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 msgid "Transcoding Failed." msgstr "" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 #, fuzzy msgid "Save Transcoded Video File" msgstr "Exportar sessão para ficheiro audio..." -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 msgid "Server Docroot:" msgstr "" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 #, fuzzy msgid "Listen Port:" msgstr "Posição" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 #, fuzzy msgid "Cache Size:" msgstr "Tamanho máximo" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 #, fuzzy msgid "Confirm Overwrite" msgstr "aGrav" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 #, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "O ficheiro já existe, deseja reescrevê-lo ?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 #, fuzzy msgid "Cannot create video folder \"%1\" (%2)" msgstr "não foi possível estabelecer-se como processo principal de grupo (%1)" -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 #, fuzzy msgid "Export Video File " msgstr "Exportar sessão para ficheiro audio..." -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 #, fuzzy msgid "Video:" msgstr "Alinhar regiões pelo início" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "Normalizar" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 #, fuzzy msgid "Deinterlace" msgstr "interno" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 #, fuzzy msgid "Include Session Metadata" msgstr "Importar selecção" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 #, fuzzy msgid "Output:" msgstr "Faixas/Barramentos de saída" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 #, fuzzy msgid "Input:" msgstr "Faixas/Barramentos de entrada" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 #, fuzzy msgid "Audio:" msgstr "Audição" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 #, fuzzy msgid "Master Bus" msgstr "Criar barramento para VUímetro" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 #, fuzzy msgid "Settings:" msgstr "Avançado..." -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 #, fuzzy msgid "Range:" msgstr "Intervalo" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 #, fuzzy msgid "Preset:" msgstr "Reiniciar" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 #, fuzzy msgid "Video Codec:" msgstr "Nome do directório:" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 #, fuzzy msgid "Video KBit/s:" msgstr "Alinhar regiões pelo início" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 #, fuzzy msgid "Audio Codec:" msgstr "Quadros audio" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 #, fuzzy msgid "Audio KBit/s:" msgstr "Quadros audio" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 #, fuzzy msgid "Audio Samplerate:" msgstr "Frequência de amostragem" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "Normalizar" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 #, fuzzy msgid "Exporting audio" msgstr "Exportar região" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:437 #, fuzzy -msgid "Exporting Audio.." +msgid "Exporting Audio..." msgstr "Exportar região" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." +#: export_video_dialog.cc:562 +msgid "Encoding Video..." msgstr "" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 msgid "Transcoding failed." msgstr "" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 #, fuzzy msgid "Save Exported Video File" msgstr "Exportar sessão para ficheiro audio..." @@ -13289,33 +13554,30 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" -"\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" -"\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#, fuzzy +#~ msgid "slowest" +#~ msgstr "Mais lento" + +#, fuzzy +#~ msgid "fast" +#~ msgstr "rápido" + +#, fuzzy +#~ msgid "faster" +#~ msgstr "Rápido" + +#~ msgid "fastest" +#~ msgstr "rápido" + #~ msgid "Connect" #~ msgstr "Ligar" @@ -14172,9 +14434,6 @@ msgstr "" #~ msgid "Current: %1" #~ msgstr "Actual: %1" -#~ msgid "track height" -#~ msgstr "altura da faixa" - #~ msgid "clear track" #~ msgstr "apagar faixa" @@ -14890,9 +15149,6 @@ msgstr "" #~ msgid "ardour: track/bus/inspector: no route selected" #~ msgstr "ardour: faixa/baramento: nenhum caminho seleccionado" -#~ msgid "rec-enable change" -#~ msgstr "gravar alterado" - #~ msgid "mix group solo change" #~ msgstr "grupo solo alterado" @@ -14926,13 +15182,6 @@ msgstr "" #~ msgid "Beat" #~ msgstr "Batimento" -#~ msgid "" -#~ "Do you really want to remove track \"%1\" ?\n" -#~ "(cannot be undone)" -#~ msgstr "" -#~ "Deseja realmente remover o faixa \"%1\" ?\n" -#~ "(esta operação não pode ser desfeita)" - #~ msgid "set selected regionview" #~ msgstr "seleccionar visualização de região" @@ -15060,9 +15309,6 @@ msgstr "" #~ msgid "Session %1 already exists at %2" #~ msgstr "Sessão %1 já existe em %2" -#~ msgid "UI: cannot setup meter_bridge" -#~ msgstr "Não foi possível iniciar o monitor volumétrico (vuímetro)" - #~ msgid "Enable/Disable follow playhead" #~ msgstr "Ligar/Desligar acompanhamento ao cursor de reprodução" @@ -15075,9 +15321,6 @@ msgstr "" #~ msgid "Audio Library" #~ msgstr "Audioteca" -#~ msgid "Meter Bridge" -#~ msgstr "VUímetro" - #~ msgid "Output Connections" #~ msgstr "Ligações de saída" diff --git a/gtk2_ardour/po/ru.po b/gtk2_ardour/po/ru.po index 3c81be6c62..f50cdf44d1 100644 --- a/gtk2_ardour/po/ru.po +++ b/gtk2_ardour/po/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-14 15:01+0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-07-14 18:04+0300\n" "Last-Translator: ÐлекÑандр Прокудин \n" "Language-Team: руÑÑкий <>\n" @@ -413,7 +413,7 @@ msgstr "%1 menu definition file not found" msgid "%1 will not work without a valid ardour.menus file" msgstr "%1 will not work without a valid ardour.menus file" -#: add_route_dialog.cc:53 route_params_ui.cc:499 +#: add_route_dialog.cc:53 route_params_ui.cc:500 msgid "Add Track or Bus" msgstr "Добавить дорожку или шину" @@ -449,8 +449,8 @@ msgstr "Шины" msgid "Add:" msgstr "Добавить:" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 msgid "Options" msgstr "Параметры" @@ -464,21 +464,21 @@ msgid "Group:" msgstr "Группа:" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "MIDI" @@ -506,7 +506,7 @@ msgstr "" "звуковые и MIDI-дорожки." #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1304 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "ÐормальнаÑ" @@ -550,7 +550,7 @@ msgstr "8 каналов" msgid "12 Channel" msgstr "3 канала" -#: add_route_dialog.cc:475 mixer_strip.cc:2130 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "Ðа заказ" @@ -662,75 +662,71 @@ msgstr "Ñолирование" msgid "feedback" msgstr "отклик" -#: ardour_ui.cc:184 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 msgid "Speaker Configuration" msgstr "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð³Ñ€Ð¾Ð¼ÐºÐ¾Ð³Ð¾Ð²Ð¾Ñ€Ð¸Ñ‚ÐµÐ»ÐµÐ¹" -#: ardour_ui.cc:185 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "Стиль оформлениÑ" -#: ardour_ui.cc:186 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "Клавиатурные комбинации" -#: ardour_ui.cc:187 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "Параметры" -#: ardour_ui.cc:188 ardour_ui.cc:193 +#: ardour_ui.cc:191 ardour_ui.cc:196 msgid "Add Tracks/Busses" msgstr "Добавить дорожки/шины" -#: ardour_ui.cc:189 +#: ardour_ui.cc:192 msgid "About" msgstr "О программе" -#: ardour_ui.cc:190 location_ui.cc:1146 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "Позиции" -#: ardour_ui.cc:191 route_params_ui.cc:57 route_params_ui.cc:600 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 msgid "Tracks and Busses" msgstr "Дорожки и шины" -#: ardour_ui.cc:192 +#: ardour_ui.cc:195 msgid "Properties" msgstr "СвойÑтва" -#: ardour_ui.cc:194 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "Управление пакетами" -#: ardour_ui.cc:195 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Большой Ñчётчик" -#: ardour_ui.cc:196 +#: ardour_ui.cc:199 msgid "Audio Connections" msgstr "Звуковые ÑоединениÑ" -#: ardour_ui.cc:197 +#: ardour_ui.cc:200 msgid "MIDI Connections" msgstr "Ð¡Ð¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ MIDI" -#: ardour_ui.cc:199 +#: ardour_ui.cc:202 msgid "Errors" msgstr "Ошибки" -#: ardour_ui.cc:301 -msgid "could not initialize %1." -msgstr "Ðе удалоÑÑŒ инициализировать %1." - -#: ardour_ui.cc:396 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "ЗапуÑкаетÑÑ Ð·Ð²ÑƒÐºÐ¾Ð²Ð¾Ð¹ движок" -#: ardour_ui.cc:766 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "%1 готов к работе" -#: ardour_ui.cc:814 +#: ardour_ui.cc:806 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" @@ -745,23 +741,23 @@ msgstr "" "Ð’Ñ‹ можете узнать уÑтановленный предел при помощи команды 'ulimit -l'. Обычно " "Ñто контролируетÑÑ Ð² %2." -#: ardour_ui.cc:831 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "Больше не показывать Ñто окно" -#: ardour_ui.cc:873 +#: ardour_ui.cc:865 msgid "Don't quit" msgstr "Ðе выходить" -#: ardour_ui.cc:874 +#: ardour_ui.cc:866 msgid "Just quit" msgstr "ПроÑто выйти" -#: ardour_ui.cc:875 +#: ardour_ui.cc:867 msgid "Save and quit" msgstr "Сохранить и выйти" -#: ardour_ui.cc:885 +#: ardour_ui.cc:877 msgid "" "%1 was unable to save your session.\n" "\n" @@ -776,15 +772,15 @@ msgstr "" "\n" "«ПроÑто выйти»." -#: ardour_ui.cc:916 +#: ardour_ui.cc:908 msgid "Please wait while %1 cleans up..." msgstr "ДождитеÑÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ñ‡Ð¸Ñтки ÑеанÑа в %1..." -#: ardour_ui.cc:933 +#: ardour_ui.cc:925 msgid "Unsaved Session" msgstr "Ð¡ÐµÐ°Ð½Ñ Ð½Ðµ Ñохранён" -#: ardour_ui.cc:954 +#: ardour_ui.cc:946 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -802,7 +798,7 @@ msgstr "" "\n" "Что вы хотите Ñделать?" -#: ardour_ui.cc:957 +#: ardour_ui.cc:949 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -820,74 +816,74 @@ msgstr "" "\n" "Что вы хотите Ñделать?" -#: ardour_ui.cc:971 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "" -#: ardour_ui.cc:1048 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "отÑоединено" -#: ardour_ui.cc:1055 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "JACK: %.1f КГц / %4.1f мÑ" -#: ardour_ui.cc:1059 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "JACK: % КГц / %4.1f мÑ" -#: ardour_ui.cc:1077 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 msgid "File:" msgstr "Файл:" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "BWF" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "WAV" -#: ardour_ui.cc:1087 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "WAV64" -#: ardour_ui.cc:1090 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "CAF" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "AIFF" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "iXML" -#: ardour_ui.cc:1099 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "RF64" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "32-float" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "24-int" -#: ardour_ui.cc:1113 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "16-int" -#: ardour_ui.cc:1132 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "ЦП: %5.1f%%" -#: ardour_ui.cc:1151 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -898,33 +894,33 @@ msgstr "" "%% c:" "%%%" -#: ardour_ui.cc:1187 +#: ardour_ui.cc:1188 msgid "Disk: Unknown" msgstr "Ðа диÑке: неизвеÑтно" -#: ardour_ui.cc:1189 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "Ðа диÑке: 24ч+" -#: ardour_ui.cc:1207 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "Ðа диÑке: >24ч" -#: ardour_ui.cc:1218 +#: ardour_ui.cc:1219 #, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "Ðа диÑке: %02dч:%02dм:%02dÑ" -#: ardour_ui.cc:1244 +#: ardour_ui.cc:1245 #, c-format msgid "Timecode|TC: %s" msgstr "ТК: %s" -#: ardour_ui.cc:1361 ardour_ui.cc:1370 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "Ðедавние ÑеанÑÑ‹" -#: ardour_ui.cc:1450 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" @@ -932,27 +928,27 @@ msgstr "" "%1 не Ñоединен Ñ JACK.\n" "Открытие и закрытие ÑеанÑов невозможно." -#: ardour_ui.cc:1477 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Открыть ÑеанÑ" -#: ardour_ui.cc:1495 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 msgid "%1 sessions" msgstr "CеанÑÑ‹ %1" -#: ardour_ui.cc:1532 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "Ð’Ñ‹ не можете добавить дорожку без загруженного ÑеанÑа." -#: ardour_ui.cc:1540 +#: ardour_ui.cc:1548 msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "Ðе удалоÑÑŒ Ñоздать %1 новую Ñмешанную дорожку" msgstr[1] "Ðе удалоÑÑŒ Ñоздать %1 новых Ñмешанных дорожки" msgstr[2] "Ðе удалоÑÑŒ Ñоздать %1 новых Ñмешанных дорожек" -#: ardour_ui.cc:1546 ardour_ui.cc:1607 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -964,25 +960,25 @@ msgstr "" "Ðеобходимо Ñохранить %1, выйти и запуÑтить\n" "JACK Ñ ÑƒÐ²ÐµÐ»Ð¸Ñ‡ÐµÐ½Ð½Ñ‹Ð¼ количеÑтвом портов." -#: ardour_ui.cc:1581 +#: ardour_ui.cc:1589 msgid "You cannot add a track or bus without a session already loaded." msgstr "Ð’Ñ‹ не можете добавить дорожку или шину без открытого ÑеанÑа." -#: ardour_ui.cc:1590 +#: ardour_ui.cc:1598 msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "Ðе удалоÑÑŒ Ñоздать %1 новую звуковую дорожку" msgstr[1] "Ðе удалоÑÑŒ Ñоздать %2 новых звуковых дорожки" msgstr[2] "Ðе удалоÑÑŒ Ñоздать %2 новых звуковых дорожек" -#: ardour_ui.cc:1599 +#: ardour_ui.cc:1607 msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "Ðе удалоÑÑŒ Ñоздать %1 новую звуковую шину" msgstr[1] "Ðе удалоÑÑŒ Ñоздать %1 новых звуковых шины" msgstr[2] "Ðе удалоÑÑŒ Ñоздать %1 новых звуковых шин" -#: ardour_ui.cc:1716 +#: ardour_ui.cc:1724 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." @@ -991,14 +987,14 @@ msgstr "" "как пытатьÑÑ Ñ‡Ñ‚Ð¾-либо запиÑать.\n" "ИÑпользуйте меню Â«Ð¡ÐµÐ°Ð½Ñ > Добавить дорожку/шину»." -#: ardour_ui.cc:2106 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" "%1" msgstr "" -#: ardour_ui.cc:2108 +#: ardour_ui.cc:2116 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -1009,19 +1005,19 @@ msgstr "" "Ñ %1 и отÑоединил его. Ðеобходимо перезапуÑтить \n" "JACK, воÑÑтановить Ñоединение и Ñохранить ÑеанÑ." -#: ardour_ui.cc:2134 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Ðевозможно запуÑтить уже выполнÑемый ÑеанÑ" -#: ardour_ui.cc:2214 +#: ardour_ui.cc:2222 msgid "Take Snapshot" msgstr "Создать Ñнимок" -#: ardour_ui.cc:2215 +#: ardour_ui.cc:2223 msgid "Name of new snapshot" msgstr "Ðазвание нового Ñнимка" -#: ardour_ui.cc:2239 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" @@ -1029,27 +1025,27 @@ msgstr "" "Ð”Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ ÑовмеÑтимоÑти Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ ÑиÑтемами\n" "Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñнимков не могут Ñодержать Ñимвол '%1'." -#: ardour_ui.cc:2251 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "Подтвердите перезапиÑÑŒ Ñнимка" -#: ardour_ui.cc:2252 +#: ardour_ui.cc:2260 msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Снимок Ñ Ñ‚Ð°ÐºÐ¸Ð¼ названием уже еÑÑ‚ÑŒ. ПерезапиÑать его?" -#: ardour_ui.cc:2255 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "ПерезапиÑать" -#: ardour_ui.cc:2289 +#: ardour_ui.cc:2297 msgid "Rename Session" msgstr "Переименовать ÑеанÑ" -#: ardour_ui.cc:2290 +#: ardour_ui.cc:2298 msgid "New session name" msgstr "Ðовое название ÑеанÑа" -#: ardour_ui.cc:2304 ardour_ui.cc:2684 ardour_ui.cc:2729 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" @@ -1057,12 +1053,12 @@ msgstr "" "Ð”Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ ÑовмеÑтимоÑти Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ ÑиÑтемами\n" "Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ ÑеанÑов не могут Ñодержать Ñимвол '%1'." -#: ardour_ui.cc:2312 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" -#: ardour_ui.cc:2321 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" @@ -1070,19 +1066,19 @@ msgstr "" "Ðе удалоÑÑŒ переименовать Ñтот ÑеанÑ.\n" "Очень может быть, что вÑÑ‘ иÑпортилоÑÑŒ." -#: ardour_ui.cc:2432 +#: ardour_ui.cc:2440 msgid "Save Template" msgstr "Сохранить шаблон" -#: ardour_ui.cc:2433 +#: ardour_ui.cc:2441 msgid "Name for template:" msgstr "Ðазвание шаблона:" -#: ardour_ui.cc:2434 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-шаблон" -#: ardour_ui.cc:2472 +#: ardour_ui.cc:2480 msgid "" "This session\n" "%1\n" @@ -1092,52 +1088,52 @@ msgstr "" "%1\n" "уже ÑущеÑтвует. Открыть его?" -#: ardour_ui.cc:2482 +#: ardour_ui.cc:2490 msgid "Open Existing Session" msgstr "Открыть ÑущеÑтвующий ÑеанÑ" -#: ardour_ui.cc:2720 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr "По адреÑу \"%1\" не ÑущеÑтвующего ÑеанÑа" -#: ardour_ui.cc:2807 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "ДождитеÑÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ ÑеанÑа в %1" -#: ardour_ui.cc:2822 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "Ошибка региÑтрации порта" -#: ardour_ui.cc:2823 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "Щелкните кнопку «Закрыть» Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° к предыдущему диалогу." -#: ardour_ui.cc:2844 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Ðе удалоÑÑŒ загрузить ÑÐµÐ°Ð½Ñ \"%1 (Ñнимок %2)\"" -#: ardour_ui.cc:2850 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "Ошибка при загрузке" -#: ardour_ui.cc:2851 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "Щёлкните кнопку «Обновить» Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð¹ попытки." -#: ardour_ui.cc:2933 +#: ardour_ui.cc:2941 msgid "Could not create session in \"%1\"" msgstr "Ðе удалоÑÑŒ Ñоздать ÑÐµÐ°Ð½Ñ Â«%1»" -#: ardour_ui.cc:3033 +#: ardour_ui.cc:3041 msgid "No files were ready for clean-up" msgstr "Ðет готовых к удалению звуковых файлов" -#: ardour_ui.cc:3037 ardour_ui.cc:3047 ardour_ui.cc:3180 ardour_ui.cc:3187 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "ОчиÑтить" -#: ardour_ui.cc:3038 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1149,19 +1145,19 @@ msgstr "" "Они могут включать облаÑти, которым\n" "нужны неиÑпользуемые файлы." -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "кило" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3108 msgid "mega" msgstr "мега" -#: ardour_ui.cc:3103 +#: ardour_ui.cc:3111 msgid "giga" msgstr "гига" -#: ardour_ui.cc:3108 +#: ardour_ui.cc:3116 msgid "" "The following file was deleted from %2,\n" "releasing %3 %4bytes of disk space" @@ -1181,7 +1177,7 @@ msgstr[2] "" "оÑвободив при Ñтом %3 %4байт\n" "диÑкового проÑтранÑтва." -#: ardour_ui.cc:3115 +#: ardour_ui.cc:3123 msgid "" "The following file was not in use and \n" "has been moved to: %2\n" @@ -1228,11 +1224,11 @@ msgstr[2] "" "\n" "дополнительно оÑвободит %3 %4байт диÑкового проÑтранÑтва.\n" -#: ardour_ui.cc:3175 +#: ardour_ui.cc:3183 msgid "Are you sure you want to clean-up?" msgstr "Ð’Ñ‹ уверены, что хотите выполнить очиÑтку?" -#: ardour_ui.cc:3182 +#: ardour_ui.cc:3190 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" @@ -1243,80 +1239,80 @@ msgstr "" "неиÑпользуемые звуковые файлы\n" "будут перемещены в «мертвую» зону." -#: ardour_ui.cc:3190 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "ОчиÑтка" -#: ardour_ui.cc:3220 +#: ardour_ui.cc:3228 msgid "Cleaned Files" msgstr "Очищенные файлы" -#: ardour_ui.cc:3237 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "удалён файл" -#: ardour_ui.cc:3329 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3333 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "Ð’Ñ‹ дейÑтвительно хотите оÑтановить видеоÑервер?" -#: ardour_ui.cc:3337 +#: ardour_ui.cc:3345 msgid "Yes, Stop It" msgstr "Да, оÑтановить" -#: ardour_ui.cc:3363 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3365 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3373 ardour_ui.cc:3463 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3397 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3402 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3435 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "Ðе удалоÑÑŒ запуÑтить видеоÑервер" -#: ardour_ui.cc:3444 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3489 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "не удалоÑÑŒ открыть %1" -#: ardour_ui.cc:3493 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3658 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "ЗапиÑÑŒ оÑтановлена из-за недоÑтаточного быÑтродейÑÑ‚Ð²Ð¸Ñ ÑиÑтемы" -#: ardour_ui.cc:3687 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1330,7 +1326,7 @@ msgstr "" "Ð’ чаÑтноÑти ей не удалоÑÑŒ запиÑать данные на диÑк\n" "доÑтаточно быÑтро Ð´Ð»Ñ Ñ„Ð¸ÐºÑации захваченных данных.\n" -#: ardour_ui.cc:3706 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1344,11 +1340,11 @@ msgstr "" "Ð’ чаÑтноÑти ей не удалоÑÑŒ прочитать данные\n" "Ñ Ð´Ð¸Ñка доÑтаточно быÑтро Ð´Ð»Ñ Ð²Ð¾ÑпроизведениÑ.\n" -#: ardour_ui.cc:3746 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "ВоÑÑтановление данных" -#: ardour_ui.cc:3747 +#: ardour_ui.cc:3762 msgid "" "This session appears to have been in the\n" "middle of recording when %1 or\n" @@ -1364,19 +1360,19 @@ msgstr "" "%1 может воÑÑтановить запиÑанные данные,\n" "либо проигнорировать их. Примите решение.\n" -#: ardour_ui.cc:3759 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "Проигнорировать" -#: ardour_ui.cc:3760 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "ВоÑÑтановить данные" -#: ardour_ui.cc:3780 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "ÐеÑовпадение чаÑтот ÑÑмплированиÑ" -#: ardour_ui.cc:3781 +#: ardour_ui.cc:3796 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" @@ -1388,23 +1384,23 @@ msgstr "" "ЕÑли вы загрузите Ñтот ÑеанÑ, звуковые данные могут быть\n" "воÑпроизведены Ñ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ чаÑтотой ÑÑмплированиÑ.\n" -#: ardour_ui.cc:3790 +#: ardour_ui.cc:3805 msgid "Do not load session" msgstr "Ðе загружать ÑеанÑ" -#: ardour_ui.cc:3791 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "Ð’Ñе равно загрузить" -#: ardour_ui.cc:3814 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "Ðе удалоÑÑŒ отÑоединитьÑÑ Ð¾Ñ‚ Ñервера JACK" -#: ardour_ui.cc:3827 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "Ðе удалоÑÑŒ ÑоединитьÑÑ Ñ Ñервером JACK" -#: ardour_ui.cc:4101 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1527,27 +1523,32 @@ msgstr "" "ПрÑмой ввод: Esc: отмена; Enter: подтверждение; поÑÑ‚Ñ„Ð¸ÐºÑ " "'+' или '-' вводит разницу во времени.\n" -#: ardour_ui2.cc:178 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "СброÑить огибающую" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "[ОШИБКÐ]: " -#: ardour_ui2.cc:180 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "[ПРЕДУПРЕЖДЕÐИЕ]:" -#: ardour_ui2.cc:182 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "[СПРÐВКÐ]:" -#: ardour_ui2.cc:246 ardour_ui_ed.cc:377 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "Ðвтовозврат" -#: ardour_ui2.cc:248 ardour_ui_ed.cc:380 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "Следовать правкам" -#: ardour_ui2.cc:626 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1571,19 +1572,19 @@ msgstr "ÐаÑтройка микшера" msgid "Reload Session History" msgstr "ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° иÑтории ÑеанÑов" -#: ardour_ui_dialogs.cc:200 +#: ardour_ui_dialogs.cc:242 msgid "Don't close" msgstr "Ðе закрывать" -#: ardour_ui_dialogs.cc:201 +#: ardour_ui_dialogs.cc:243 msgid "Just close" msgstr "ПроÑто закрыть" -#: ardour_ui_dialogs.cc:202 +#: ardour_ui_dialogs.cc:244 msgid "Save and close" msgstr "Сохранить и закрыть" -#: ardour_ui_dialogs.cc:291 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "Размеров Ñкрана недоÑтаточно, чтобы показать окно микшера" @@ -1596,7 +1597,7 @@ msgstr "СеанÑ" msgid "Sync" msgstr "СинхронизациÑ" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Параметры" @@ -1624,15 +1625,15 @@ msgstr "Тип файла" msgid "Sample Format" msgstr "Формат ÑÑмпла" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "УÑтройÑтва управлениÑ" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Модули" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "Индикаторы" @@ -1689,7 +1690,7 @@ msgid "Save As..." msgstr "Сохранить как..." #: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1470 route_time_axis.cc:1485 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 msgid "Rename..." msgstr "Переименовать..." @@ -1718,7 +1719,7 @@ msgid "Stem export..." msgstr "Каждую дорожку в Ñвой файл..." #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "ЭкÑпортировать" @@ -1730,11 +1731,11 @@ msgstr "ОчиÑтить неиÑпользуемые иÑточники..." msgid "Flush Wastebasket" msgstr "ОчиÑтить корзину" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: 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:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "Задержка отклика" @@ -1743,7 +1744,7 @@ msgid "Reconnect" msgstr "ПереÑоединить" #: ardour_ui_ed.cc:195 global_port_matrix.cc:207 io_selector.cc:210 -#: mixer_strip.cc:718 mixer_strip.cc:844 +#: mixer_strip.cc:719 mixer_strip.cc:845 msgid "Disconnect" msgstr "ОтÑоединить" @@ -1767,7 +1768,7 @@ msgstr "Микшер" msgid "Toggle Editor+Mixer" msgstr "Редактор или микшер на переднем плане" -#: ardour_ui_ed.cc:232 meterbridge.cc:224 meterbridge.cc:230 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 msgid "Window|Meterbridge" msgstr "Панель индикаторов" @@ -1919,7 +1920,7 @@ msgstr "СÑмплы" msgid "Punch In" msgstr "Ðачало врезки" -#: ardour_ui_ed.cc:357 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "Вход" @@ -1984,7 +1985,7 @@ msgstr "Передавать MMC" msgid "Use MMC" msgstr "ИÑпользовать MMC" -#: ardour_ui_ed.cc:412 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 msgid "Send MIDI Clock" msgstr "ОтправлÑÑ‚ÑŒ MIDI Clock" @@ -2034,11 +2035,11 @@ msgstr "" msgid "Internal" msgstr "Внутр. ÑинхронизациÑ" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 msgid "Enable/Disable external positional sync" msgstr "Включить или выключить внешнюю Ñинхронизацию позиционированиÑ" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "" @@ -2157,32 +2158,32 @@ msgid "hide track" msgstr "Скрыть дорожку" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:194 generic_pluginui.cc:456 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 #: generic_pluginui.cc:746 panner_ui.cc:150 msgid "Automation|Manual" msgstr "Вручную" #: 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:197 +#: 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 msgid "Play" msgstr "ВоÑпр." #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:200 generic_pluginui.cc:462 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 #: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "ЗапиÑÑŒ" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:203 generic_pluginui.cc:465 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 #: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "КаÑание" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "???" @@ -2229,13 +2230,13 @@ msgstr "Изменение пакета" msgid "Direction:" msgstr "Ðаправление:" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:157 -#: mixer_strip.cc:2126 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "Вход" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:162 mixer_strip.cc:2129 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "Выход" @@ -2245,7 +2246,7 @@ msgid "Edit" msgstr "Правка" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2216 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 #: route_time_axis.cc:713 msgid "Delete" msgstr "Удалить" @@ -2660,12 +2661,12 @@ msgid "Ranges & Marks" msgstr "ОблаÑти и маркеры" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 msgid "Editor" msgstr "Редактор" @@ -2695,8 +2696,8 @@ msgstr "Симметрично" msgid "Slow" msgstr "Медленно" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1633 -#: sfdb_ui.cc:1742 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "БыÑтро" @@ -2833,7 +2834,7 @@ msgid "Select All in Track" msgstr "Выделить вÑÑ‘ на дорожке" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2224 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Выделить вÑÑ‘" @@ -2885,15 +2886,15 @@ msgstr "Создать выделение между указателем и к msgid "Select" msgstr "Выделить" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2209 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Вырезать" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2212 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "Копировать" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2220 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Ð’Ñтавить" @@ -3077,8 +3078,8 @@ msgstr "Удалить ÑпиÑок" msgid "Keep Playlist" msgstr "Сохранить ÑпиÑок" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "Отмена" @@ -3098,7 +3099,7 @@ msgstr "ОчиÑтить ÑпиÑки воÑпроизведениÑ" msgid "Please wait while %1 loads visual data." msgstr "ДождитеÑÑŒ загрузки визуальных данных в %1." -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2240 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 msgid "Edit..." msgstr "Изменить" @@ -3147,7 +3148,7 @@ msgstr "Слои" msgid "Position" msgstr "Положение" -#: editor_actions.cc:101 gain_meter.cc:120 gain_meter.cc:787 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Обрезать" @@ -3198,7 +3199,7 @@ msgstr "Параметры MIDI" msgid "Misc Options" msgstr "Прочие параметры" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "Мониторинг" @@ -3239,7 +3240,7 @@ msgstr "Дополнительный Ñчётчик" msgid "Separate" msgstr "Разделить" -#: editor_actions.cc:132 mixer_strip.cc:1913 route_time_axis.cc:208 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 #: route_time_axis.cc:2417 msgid "Solo" msgstr "Соло" @@ -3376,7 +3377,7 @@ msgstr "К началу облаÑти" msgid "Playhead to Range End" msgstr "К концу облаÑти" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2226 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "СнÑÑ‚ÑŒ вÑе выделениÑ" @@ -3645,7 +3646,7 @@ msgid "Toggle Active" msgstr "Переключить активноÑÑ‚ÑŒ" #: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1494 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 #: route_time_axis.cc:710 msgid "Remove" msgstr "Удалить" @@ -3654,19 +3655,19 @@ msgstr "Удалить" msgid "Fit Selected Tracks" msgstr "Только выделенные дорожки" -#: editor_actions.cc:376 time_axis_view.cc:1301 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "ОгромнаÑ" -#: editor_actions.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "Больше" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1303 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "БольшаÑ" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1305 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "МаленькаÑ" @@ -3935,7 +3936,7 @@ msgstr "Мин:С" msgid "Video Monitor" msgstr "Видеомонитор" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "Видео" @@ -4111,7 +4112,7 @@ msgstr "Приклеить к тактам и долÑм" msgid "Remove Sync" msgstr "Удалить Ñинхронизатор" -#: editor_actions.cc:1752 mixer_strip.cc:1903 route_time_axis.cc:209 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Молча" @@ -4388,28 +4389,28 @@ msgstr "" msgid "Cancel Import" msgstr "Отменить импорт" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Редактор: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ файл \"%1\", (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "Отменить веÑÑŒ импорт" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "Ðе вÑтраивать" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "Ð’Ñтроить без лишних вопроÑов" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 msgid "Sample rate" msgstr "ЧаÑтота ÑÑмплированиÑ" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4418,7 +4419,7 @@ msgstr "" "Выбранный звуковой файл имеет чаÑтоту ÑÑмплированиÑ,\n" "отличную от чаÑтоты активного ÑеанÑа!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "Ð’ÑÑ‘ равно вÑтроить" @@ -4454,31 +4455,31 @@ msgstr "Ñкопировать маркер темпа" msgid "move tempo mark" msgstr "перемеÑтить маркер темпа" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "Ñмена длительноÑти фейда нараÑтаниÑ" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "Ñмена длительноÑти фейда затуханиÑ" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "Ñмещение маркера" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 msgid "programming_error: %1" msgstr "Ошибка в программе: %1" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "новый маркер выделениÑ" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 msgid "rubberband selection" msgstr "прÑмоугольное выделение" @@ -4547,7 +4548,7 @@ msgid "Sharing Solo?" msgstr "РазделÑетÑÑ Ð»Ð¸ Ñолирование" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "Зап" @@ -4702,8 +4703,8 @@ msgstr "Переименовать маркер" msgid "Rename Range" msgstr "Переименовать выделение" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2222 route_time_axis.cc:982 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "Переименовать" @@ -4839,7 +4840,7 @@ msgstr "опуÑкание облаÑтей вниз" msgid "Rename Region" msgstr "Переименовать облаÑÑ‚ÑŒ..." -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 msgid "New name:" msgstr "Ðовое название:" @@ -5002,7 +5003,7 @@ msgstr "" "(отмена операции невозможна)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "Ðет" @@ -5191,11 +5192,11 @@ msgstr "ОК" msgid "close region gaps" msgstr "" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "" -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5215,7 +5216,7 @@ msgstr "" msgid "tracks" msgstr "дорожек" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 msgid "track" msgstr "дорожка" @@ -5223,7 +5224,7 @@ msgstr "дорожка" msgid "busses" msgstr "шин" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "шина" @@ -5265,7 +5266,7 @@ msgstr "" msgid "Yes, remove them." msgstr "Да, удалить их." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Да, удалить" @@ -5334,7 +5335,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1953 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "Л" @@ -5351,8 +5352,8 @@ msgstr "" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:755 -#: mixer_strip.cc:1930 meter_strip.cc:272 panner_ui.cc:554 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 #: stereo_panner.cc:237 msgid "M" msgstr "Ð’" @@ -5422,7 +5423,7 @@ msgstr "Ðазвание дорожи/шины" msgid "Track/Bus visible ?" msgstr "Дорожка или шина видима?" -#: editor_routes.cc:204 mixer_strip.cc:1944 meter_strip.cc:286 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 #: route_time_axis.cc:2407 msgid "A" msgstr "A" @@ -5431,7 +5432,7 @@ msgstr "A" msgid "Track/Bus active ?" msgstr "Дорожка или шина активна?" -#: editor_routes.cc:205 mixer_strip.cc:1931 +#: editor_routes.cc:205 mixer_strip.cc:1932 msgid "I" msgstr "Ð’Ð¥" @@ -5439,7 +5440,7 @@ msgstr "Ð’Ð¥" msgid "MIDI input enabled" msgstr "Вход MIDI включен" -#: editor_routes.cc:206 mixer_strip.cc:1929 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "П" @@ -5452,7 +5453,7 @@ msgstr "ГотовноÑÑ‚ÑŒ к запиÑи" msgid "Muted" msgstr "" -#: editor_routes.cc:208 mixer_strip.cc:1940 meter_strip.cc:282 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "S" @@ -5464,7 +5465,7 @@ msgstr "..." msgid "SI" msgstr "" -#: editor_routes.cc:209 mixer_strip.cc:352 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 msgid "Solo Isolated" msgstr "Изолирование Ñоло" @@ -5744,139 +5745,143 @@ msgid "192000Hz" msgstr "192КГц" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:541 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Ðет" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "Треугольное" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "ПрÑмоугольное" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "По очертаниÑм" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "ВоÑпроизведение и запиÑÑŒ на 1 уÑтройÑтве" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "ВоÑпроизведение и запиÑÑŒ на 2 уÑтройÑтвах" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "Только воÑпроизведение" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "Только запиÑÑŒ" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "Драйвер:" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 msgid "Audio Interface:" msgstr "Звуковой интерфейÑ:" -#: engine_dialog.cc:187 sfdb_ui.cc:149 sfdb_ui.cc:262 sfdb_ui.cc:267 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "ЧаÑтота ÑÑмплированиÑ:" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "Размер буфера:" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "ЧиÑло буферов:" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "ÐŸÑ€Ð¸Ð¼ÐµÑ€Ð½Ð°Ñ Ð·Ð°Ð´ÐµÑ€Ð¶ÐºÐ°:" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 msgid "Audio mode:" msgstr "Звуковой режим:" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "Игнорировать" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "Ошибка времени Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ ÐºÐ»Ð¸ÐµÐ½Ñ‚Ð°" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "ЧиÑло портов:" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "Драйвер MIDI:" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "Подмешивание шума:" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "Сервер JACK в ÑиÑтеме не обнаружен. УÑтановить его и попробуйте Ñнова." -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "Сервер:" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "УÑтройÑтво входа:" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "УÑтройÑтво выхода:" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "Задержка аппаратных входов:" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "ÑÑмплов" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "Задержка аппаратных выходов:" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "УÑтройÑтво" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "Дополнительно" -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -5893,31 +5898,31 @@ msgid "" "%1 and choose the relevant device then." msgstr "" -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "Ðет подходÑщих звуковых уÑтройÑтв" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "JACK отÑутÑтвует в поÑтавке %1" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "Ð”Ð»Ñ Ð½Ð°Ñ‡Ð°Ð»Ð° нужно выбрать звуковое уÑтройÑтво." -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "Звуковое уÑтройÑтво \"%1\" в Ñтом компьютере не обнаружено." -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "Значению AudioSetup Ð´Ð»Ñ %1 не хватает данных" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" -#: export_channel_selector.cc:45 sfdb_ui.cc:147 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "Каналов:" @@ -6067,9 +6072,9 @@ msgid "Folder:" msgstr "Папка:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Указать" @@ -6224,32 +6229,50 @@ msgstr " до " msgid "Range" msgstr "Диапазон" -#: gain_meter.cc:105 gain_meter.cc:356 gain_meter.cc:461 gain_meter.cc:852 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "Ошибка в программе: %1 (%2)" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +#, fuzzy +msgid "%1" +msgstr "%" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "-inf" -#: gain_meter.cc:111 gain_meter.cc:909 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "Режим автоматизации фейдера" -#: gain_meter.cc:112 gain_meter.cc:910 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "Тип автоматизации фейдера" -#: gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "ÐбÑ" -#: gain_meter.cc:758 mixer_strip.cc:1947 meter_strip.cc:289 panner_ui.cc:557 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 #: route_time_axis.cc:2411 msgid "P" msgstr "P" -#: gain_meter.cc:761 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "К" -#: gain_meter.cc:764 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "З" @@ -6261,7 +6284,7 @@ msgstr "Профили" msgid "Switches" msgstr "Переключатели" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2199 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "Управление" @@ -6293,59 +6316,59 @@ msgstr "Управление MIDI-ÑоединениÑми" msgid "port" msgstr "порт" -#: group_tabs.cc:306 +#: group_tabs.cc:308 msgid "Selection..." msgstr "ВыделениÑ..." -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "Готовых к запиÑи..." -#: group_tabs.cc:308 +#: group_tabs.cc:310 msgid "Soloed..." msgstr "Солирующих..." -#: group_tabs.cc:314 +#: group_tabs.cc:316 msgid "Create New Group ..." msgstr "Создать группу..." -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "Создать группу из" -#: group_tabs.cc:318 +#: group_tabs.cc:320 msgid "Edit Group..." msgstr "Изменить группу..." -#: group_tabs.cc:319 +#: group_tabs.cc:321 msgid "Collect Group" msgstr "Собрать группу" -#: group_tabs.cc:320 +#: group_tabs.cc:322 msgid "Remove Group" msgstr "Удалить группу" -#: group_tabs.cc:323 +#: group_tabs.cc:325 msgid "Remove Subgroup Bus" msgstr "Удалить шину подгруппы" -#: group_tabs.cc:325 +#: group_tabs.cc:327 msgid "Add New Subgroup Bus" msgstr "Добавить новую шину подгруппы" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "Добавить новую внешнюю шину (до фейдера)" -#: group_tabs.cc:328 +#: group_tabs.cc:330 msgid "Add New Aux Bus (post-fader)" msgstr "Добавить новую внешнюю шину (поÑле фейдера)" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "Включить вÑе группы" -#: group_tabs.cc:335 +#: group_tabs.cc:337 msgid "Disable All Groups" msgstr "Отключить вÑе группы" @@ -6521,7 +6544,7 @@ msgstr[2] "%1 ÑÑмплов" msgid "Reset" msgstr "СброÑить" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1761 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "Ошибка в программе: %1 (%2)" @@ -6678,19 +6701,19 @@ msgid "" "session at this time, because we would lose your connection information.\n" msgstr "" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr "" -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr ", при помощи GCC верÑии " -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "ÐвторÑкие права © 1999-2012 Paul Davis" -#: main.cc:505 +#: main.cc:501 msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" @@ -6698,27 +6721,31 @@ msgstr "" "ЧаÑтичные авторÑкие права © Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" -#: main.cc:507 +#: main.cc:503 msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "%1 раÑпроÑтранÑетÑÑ Ð‘Ð•Ð—Ðž ВСЯКИХ ГÐРÐÐТИЙ" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "Это Ñвободное программное обеÑпечение, Ð’Ñ‹ можете раÑпроÑтранÑÑ‚ÑŒ его" -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "на определённых уÑловиÑÑ…; подробнее об Ñтом читайте в файле COPYING." -#: main.cc:519 +#: main.cc:513 +msgid "could not initialize %1." +msgstr "Ðе удалоÑÑŒ инициализировать %1." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "" -#: main.cc:525 +#: main.cc:528 msgid "could not create %1 GUI" msgstr "не удалоÑÑŒ Ñоздать графичеÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ %1" @@ -6726,7 +6753,7 @@ msgstr "не удалоÑÑŒ Ñоздать графичеÑкий интерфе msgid "Display delta to edit cursor" msgstr "Показывать разницу Ñ ÐºÑƒÑ€Ñором редактора" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "" @@ -7205,7 +7232,7 @@ msgstr "Выберите дополнительную папку:" msgid "Missing Plugins" msgstr "ОтÑутÑтвующие модули" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "ОК" @@ -7277,248 +7304,231 @@ msgstr "" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:92 mixer_strip.cc:120 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "lj" -#: mixer_strip.cc:94 mixer_strip.cc:122 mixer_strip.cc:353 mixer_strip.cc:1299 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 msgid "Comments" msgstr "Комментарии" -#: mixer_strip.cc:146 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "Щёлкните Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ñ‹ полоÑки микшера" -#: mixer_strip.cc:148 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:155 +#: mixer_strip.cc:156 msgid "Hide this mixer strip" msgstr "Скрыть полоÑку микшера" -#: mixer_strip.cc:166 +#: mixer_strip.cc:167 msgid "Click to select metering point" msgstr "Щёлкните Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° точка замера" -#: mixer_strip.cc:172 +#: mixer_strip.cc:173 msgid "tupni" msgstr "" -#: mixer_strip.cc:191 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "Изолировать Ñоло" -#: mixer_strip.cc:200 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ ÑолированиÑ" -#: mixer_strip.cc:202 mixer_strip.cc:1925 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "Блок" -#: mixer_strip.cc:203 mixer_strip.cc:1924 +#: mixer_strip.cc:204 mixer_strip.cc:1925 msgid "iso" msgstr "Изол" -#: mixer_strip.cc:257 +#: mixer_strip.cc:258 msgid "Mix group" msgstr "Группа микÑа" -#: mixer_strip.cc:350 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 msgid "Phase Invert" msgstr "ИнверÑÐ¸Ñ Ñ„Ð°Ð·Ñ‹" -#: mixer_strip.cc:351 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 msgid "Solo Safe" msgstr "Блокировка ÑолированиÑ" -#: mixer_strip.cc:354 mixer_ui.cc:124 route_time_axis.cc:673 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "Группа" -#: mixer_strip.cc:355 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 msgid "Meter Point" msgstr "Точка измерениÑ" -#: mixer_strip.cc:469 +#: mixer_strip.cc:470 msgid "Enable/Disable MIDI input" msgstr "Включить или выключить MIDI-вход" -#: mixer_strip.cc:621 +#: mixer_strip.cc:622 msgid "" "Aux\n" "Sends" msgstr "" -#: mixer_strip.cc:645 +#: mixer_strip.cc:646 msgid "Snd" msgstr "ПÑл" -#: mixer_strip.cc:700 mixer_strip.cc:828 processor_box.cc:2141 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "Ðет ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ JACK, любые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ñ…Ð¾Ð´Ð°-выхода невозможны" -#: mixer_strip.cc:1095 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "ВХОД в %1" -#: mixer_strip.cc:1098 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "ВЫХОД из %1" -#: mixer_strip.cc:1173 +#: mixer_strip.cc:1174 msgid "Disconnected" msgstr "Ðет ÑоединениÑ" -#: mixer_strip.cc:1302 +#: mixer_strip.cc:1303 msgid "*Comments*" msgstr "*Кмт*" -#: mixer_strip.cc:1309 +#: mixer_strip.cc:1310 msgid "Cmt" msgstr "Кмт" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "*Кмт*" -#: mixer_strip.cc:1318 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "Ðажмите Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ/правки комментариев" -#: mixer_strip.cc:1357 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr ": редактор комментариев" -#: mixer_strip.cc:1434 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "Грп" -#: mixer_strip.cc:1437 +#: mixer_strip.cc:1438 msgid "~G" msgstr "нГр" -#: mixer_strip.cc:1466 +#: mixer_strip.cc:1467 msgid "Comments..." msgstr "Комментарии..." -#: mixer_strip.cc:1468 +#: mixer_strip.cc:1469 msgid "Save As Template..." msgstr "Сохранить как шаблон..." -#: mixer_strip.cc:1474 route_group_dialog.cc:39 route_time_axis.cc:696 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "ÐктивноÑÑ‚ÑŒ" -#: mixer_strip.cc:1481 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "Скорректировать задержку..." -#: mixer_strip.cc:1484 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "Защищать от отклонений" -#: mixer_strip.cc:1490 route_time_axis.cc:435 +#: mixer_strip.cc:1491 route_time_axis.cc:435 msgid "Remote Control ID..." msgstr "ID Ð´Ð»Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ управлениÑ..." -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 msgid "in" msgstr "вх" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "поÑле" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 msgid "out" msgstr "вых" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 msgid "pr" msgstr "" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 msgid "po" msgstr "" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 msgid "o" msgstr "" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "ДиÑк" -#: mixer_strip.cc:1917 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "AFL" -#: mixer_strip.cc:1920 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "PFL" -#: mixer_strip.cc:1932 +#: mixer_strip.cc:1933 msgid "D" msgstr "" -#: mixer_strip.cc:1952 +#: mixer_strip.cc:1953 #, fuzzy msgid "i" msgstr "вх" -#: mixer_strip.cc:2127 +#: mixer_strip.cc:2128 msgid "Pre-fader" msgstr "До фейдера" -#: mixer_strip.cc:2128 +#: mixer_strip.cc:2129 msgid "Post-fader" msgstr "ПоÑле фейдера" -#: mixer_strip.cc:2135 meter_strip.cc:575 -msgid "Peak" -msgstr "Пиковое значение" - -#: mixer_strip.cc:2136 meter_strip.cc:576 -msgid "RMS + Peak" -msgstr "Среднеквадратичное + пиковое значение" - -#: mixer_strip.cc:2155 meter_strip.cc:579 -msgid "Change all in Group to Peak" +#: mixer_strip.cc:2166 meter_strip.cc:728 +#, fuzzy +msgid "Change all in Group to %1" msgstr "ПоменÑÑ‚ÑŒ вÑе в группе на пиковое" -#: mixer_strip.cc:2156 meter_strip.cc:580 -msgid "Change all in Group to RMS + Peak" -msgstr "ПоменÑÑ‚ÑŒ вÑе в группе на Ñреднеквадратичное + пиковое" - -#: mixer_strip.cc:2157 meter_strip.cc:581 -msgid "Change all to Peak" +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" msgstr "ПоменÑÑ‚ÑŒ вÑе на пиковое" -#: mixer_strip.cc:2158 meter_strip.cc:582 -msgid "Change all to RMS + Peak" -msgstr "ПоменÑÑ‚ÑŒ вÑе на Ñреднеквадратичное + пиковое" - -#: mixer_strip.cc:2159 meter_strip.cc:583 -msgid "Change same track-type to Peak" +#: mixer_strip.cc:2170 meter_strip.cc:732 +#, fuzzy +msgid "Change same track-type to %1" msgstr "ПоменÑÑ‚ÑŒ дорожки одного типа на пиковое" -#: mixer_strip.cc:2160 meter_strip.cc:584 -msgid "Change same track-type to RMS + Peak" -msgstr "ПоменÑÑ‚ÑŒ дорожки одного типа на Ñреднеквадратичное + пиковое" - #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "" @@ -7531,6 +7541,64 @@ msgstr "-вÑе-" msgid "Strips" msgstr "Каналы" +#: meter_strip.cc:764 +#, fuzzy +msgid "Variable height" +msgstr "Ð’Ñ‹Ñота видеолинейки" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "Короткое" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "Пиковое значение" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "Среднеквадратичное + пиковое значение" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +msgid "VU" +msgstr "" + #: monitor_section.cc:62 msgid "SiP" msgstr "" @@ -8286,46 +8354,46 @@ msgstr "ВыполнÑетÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ..." msgid "Port Insert " msgstr "Ð’Ñтавка порта" -#: port_matrix.cc:325 port_matrix.cc:344 +#: port_matrix.cc:331 port_matrix.cc:357 msgid "Sources" msgstr "ИÑточники" -#: port_matrix.cc:326 port_matrix.cc:345 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "ÐазначениÑ" -#: port_matrix.cc:421 port_matrix.cc:429 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "Добавить %s %s" -#: port_matrix.cc:437 +#: port_matrix.cc:456 #, c-format msgid "Rename '%s'..." msgstr "Переименовать '%s'..." -#: port_matrix.cc:453 +#: port_matrix.cc:472 msgid "Remove all" msgstr "Удалить вÑе" -#: port_matrix.cc:473 port_matrix.cc:485 +#: port_matrix.cc:492 port_matrix.cc:504 #, c-format msgid "%s all" msgstr "%s вÑе" -#: port_matrix.cc:508 +#: port_matrix.cc:527 msgid "Rescan" msgstr "ПроÑканировать заново" -#: port_matrix.cc:510 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "Показывать порты раздельно" -#: port_matrix.cc:516 +#: port_matrix.cc:535 msgid "Flip" msgstr "Повернуть матрицу" -#: port_matrix.cc:704 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." @@ -8333,31 +8401,32 @@ msgstr "" "Ðевозможно добавить Ñюда порт, поÑкольку первый обработчик дорожки или шины " "не может поддерживать новую конфигурацию." -#: port_matrix.cc:707 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "Ðевозможно добавить порт" -#: port_matrix.cc:729 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "Удаление портов не разрешено" -#: port_matrix.cc:730 +#: port_matrix.cc:749 msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" -#: port_matrix.cc:947 +#: port_matrix.cc:966 #, c-format msgid "Remove '%s'" msgstr "Удалить '%s'" -#: port_matrix.cc:962 +#: port_matrix.cc:981 #, c-format msgid "%s all from '%s'" msgstr "%s вÑе из '%s'" -#: port_matrix.cc:1028 +#: port_matrix.cc:1047 msgid "channel" msgstr "канал" @@ -8369,7 +8438,7 @@ msgstr "Ðет доÑтупных портов." msgid "There are no %1 ports to connect." msgstr "нет ÑоединÑемых портов %1." -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" @@ -8379,7 +8448,7 @@ msgstr "" "Двойной щелчок вызывает ÑобÑтвенный диалог модулÑ.\n" "Alt+ двойной щелчок вызывает генерируемый хоÑтом диалог Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸." -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." @@ -8387,23 +8456,23 @@ msgstr "" "%1\n" "Двойной щелчок вызывает генерируемый хоÑтом диалог Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸." -#: processor_box.cc:371 +#: processor_box.cc:372 msgid "Show All Controls" msgstr "Показать вÑе регулÑторы" -#: processor_box.cc:375 +#: processor_box.cc:376 msgid "Hide All Controls" msgstr "Скрыть вÑе регулÑторы" -#: processor_box.cc:464 +#: processor_box.cc:465 msgid "on" msgstr "Вкл" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "Выкл" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" @@ -8411,15 +8480,15 @@ msgstr "" "Щелчком правой клавишей мыши можно добавлÑÑ‚ÑŒ, \n" "изменÑÑ‚ÑŒ и удалÑÑ‚ÑŒ модули, поÑылы, возвраты и прочее." -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "ÐеÑовмеÑтимоÑÑ‚ÑŒ модулей" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "Ð’Ñ‹ пыталиÑÑŒ добавить модуль \"%1\" в Ñлот %2.\n" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" @@ -8427,21 +8496,21 @@ msgstr "" "\n" "У Ñтого модулÑ:\n" -#: processor_box.cc:1196 +#: processor_box.cc:1209 msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "\t%1 MIDI-вход\n" msgstr[1] "\t%1 MIDI-входа\n" msgstr[2] "\t%1 MIDI-входов\n" -#: processor_box.cc:1200 +#: processor_box.cc:1213 msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" msgstr[0] "\t%1 звуковой вход\n" msgstr[1] "\t%1 звуковых входа\n" msgstr[2] "\t%1 звуковых входов\n" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" @@ -8449,21 +8518,21 @@ msgstr "" "\n" "но в точке вÑтавки ÑейчаÑ:\n" -#: processor_box.cc:1206 +#: processor_box.cc:1219 msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "\t%1 MIDI-канал\n" msgstr[1] "\t%1 MIDI-канала\n" msgstr[2] "\t%1 MIDI-каналов\n" -#: processor_box.cc:1210 +#: processor_box.cc:1223 msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "\t%1 звуковой канал\n" msgstr[1] "\t%1 звуковых канала\n" msgstr[2] "\t%1 звуковых каналов\n" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" @@ -8471,11 +8540,11 @@ msgstr "" "\n" "%1 не может вÑтавить Ñюда Ñтот модуль.\n" -#: processor_box.cc:1249 +#: processor_box.cc:1262 msgid "Cannot set up new send: %1" msgstr "Ðевозможно наÑтроить новый поÑыл: %1" -#: processor_box.cc:1581 +#: processor_box.cc:1594 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" @@ -8485,19 +8554,19 @@ msgstr "" "поÑылы и возвраты подобным образом, поÑкольку \n" "входы и выходы переÑтанут корректно работать." -#: processor_box.cc:1765 +#: processor_box.cc:1778 msgid "Rename Processor" msgstr "Переименовать обработчик" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" @@ -8507,7 +8576,7 @@ msgstr "" "буфер обмена. ВероÑтно, ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð²Ñ…Ð¾Ð´Ð° и выхода\n" "модулей не Ñовпала Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸ÐµÐ¹ Ñтой дорожки." -#: processor_box.cc:1987 +#: processor_box.cc:2000 msgid "" "Do you really want to remove all processors from %1?\n" "(this cannot be undone)" @@ -8516,15 +8585,15 @@ msgstr "" "обработчики из \"%1\" ?\n" "(отмена невозможна)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "Да, удалить их вÑе" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 msgid "Remove processors" msgstr "Удалить обработчики" -#: processor_box.cc:2008 +#: processor_box.cc:2021 msgid "" "Do you really want to remove all pre-fader processors from %1?\n" "(this cannot be undone)" @@ -8533,7 +8602,7 @@ msgstr "" "предфейдерные обработчики из \"%1\" ?\n" "(отмена невозможна)" -#: processor_box.cc:2011 +#: processor_box.cc:2024 msgid "" "Do you really want to remove all post-fader processors from %1?\n" "(this cannot be undone)" @@ -8542,51 +8611,51 @@ msgstr "" "поÑлефейдерные обработчики из \"%1\" ?\n" "(отмена невозможна)" -#: processor_box.cc:2187 +#: processor_box.cc:2200 msgid "New Plugin" msgstr "Добавить модуль" -#: processor_box.cc:2190 +#: processor_box.cc:2203 msgid "New Insert" msgstr "Добавить возврат" -#: processor_box.cc:2193 +#: processor_box.cc:2206 msgid "New External Send ..." msgstr "Добавить внешний поÑыл Ñ Ð¿Ð¾Ñ€Ñ‚Ð¾Ð¼ JACK..." -#: processor_box.cc:2197 +#: processor_box.cc:2210 msgid "New Aux Send ..." msgstr "Добавить внешний поÑыл без порта JACK..." -#: processor_box.cc:2201 +#: processor_box.cc:2214 msgid "Clear (all)" msgstr "ОчиÑтить (вÑÑ‘)" -#: processor_box.cc:2203 +#: processor_box.cc:2216 msgid "Clear (pre-fader)" msgstr "ОчиÑтить (до фейдера)" -#: processor_box.cc:2205 +#: processor_box.cc:2218 msgid "Clear (post-fader)" msgstr "ОчиÑтить (поÑле фейдера)" -#: processor_box.cc:2231 +#: processor_box.cc:2244 msgid "Activate All" msgstr "Ðктивировать вÑе" -#: processor_box.cc:2233 +#: processor_box.cc:2246 msgid "Deactivate All" msgstr "Деактивировать вÑе" -#: processor_box.cc:2235 +#: processor_box.cc:2248 msgid "A/B Plugins" msgstr "Отключить вÑе" -#: processor_box.cc:2244 +#: processor_box.cc:2257 msgid "Edit with generic controls..." msgstr "Изменить Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñом хоÑта..." -#: processor_box.cc:2544 +#: processor_box.cc:2557 msgid "%1: %2 (by %3)" msgstr "%1: %2 (автор — %3)" @@ -8746,7 +8815,7 @@ msgstr "URL видеоÑервера:" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -9035,91 +9104,95 @@ msgstr "Перемещать автоматизацию вмеÑте Ñ Ð¾Ð±Ð»Ð° msgid "Show meters on tracks in the editor" msgstr "Показывать индикаторы громкоÑти в дорожках" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "ОблаÑти в активных редактируемых группах менÑÑŽÑ‚ÑÑ Ð²Ð¼ÐµÑте" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 msgid "whenever they overlap in time" msgstr "Когда переÑекаютÑÑ Ð¿Ð¾ времени" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "При одинаковой длительноÑти, позиции и проиÑхождении" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "ПрÑмоугольное выделение прилипает к Ñетке" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 msgid "Show waveforms in regions" msgstr "Показывать форму волны в облаÑÑ‚ÑÑ…" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 msgid "Show gain envelopes in audio regions" msgstr "Показывать огибающие уÑилениÑ" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "Во вÑех режимах" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "Только в режиме правки огибающей" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 msgid "Waveform scale" msgstr "МаÑштаб Ñигнала" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "Линейный" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "ЛогарифмичеÑкий" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 msgid "Waveform shape" msgstr "Форма Ñигнала" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 msgid "traditional" msgstr "ОбычнаÑ" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 msgid "rectified" msgstr "От низа" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "Показывать форму Ñигнала при запиÑи" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "Показывать панель Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¼Ð°Ñштабом" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "РаÑкрашивать облаÑти цветом дорожки" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "ОбновлÑÑ‚ÑŒ окно редактора при изменениÑÑ… в панели Ñводки" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "Синхронизировать порÑдок дорожек в редакторе и микшере" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "Синхронизировать выделение в редакторе и микшере" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 msgid "Name new markers" msgstr "Спрашивать об имени каждого нового маркера" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9127,240 +9200,240 @@ msgid "" "You can always rename markers by right-clicking on them" msgstr "" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" "ÐвтоматичеÑки прокручивать окно редактора при перетаÑкивании близко к краÑм" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "БуферизациÑ" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 msgid "Record monitoring handled by" msgstr "Мониторинг запиÑи выполнÑет" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 msgid "ardour" msgstr "Ardour" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 msgid "audio hardware" msgstr "Ðппаратное обеÑпечение" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 msgid "Tape machine mode" msgstr "Режим плёночного магнитофона" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "Соединение дорожек и шин" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "ÐвтоматичеÑки ÑоединÑÑ‚ÑŒ шины master/monitor" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 msgid "Connect track inputs" msgstr "СоединÑÑ‚ÑŒ входы дорожек" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 msgid "automatically to physical inputs" msgstr "ÐвтоматичеÑки Ñ Ñ„Ð¸Ð·Ð¸Ñ‡ÐµÑкими входами" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "Вручную" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "СоединÑÑ‚ÑŒ выходы дорожек и шин" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 msgid "automatically to physical outputs" msgstr "ÐвтоматичеÑки Ñ Ñ„Ð¸Ð·Ð¸Ñ‡ÐµÑкими выходами" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 msgid "automatically to master bus" msgstr "ÐвтоматичеÑки Ñ Ð¾Ð±Ñ‰ÐµÐ¹ шиной" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 msgid "Denormals" msgstr "ÐžÑ‚ÐºÐ»Ð¾Ð½ÐµÐ½Ð¸Ñ Ñигнала" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "ИÑпользовать FlushToZero" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "ИÑпользовать DenormalsAreZero" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "ИÑпользовать FlushToZero и DenormalsAreZero" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 msgid "Silence plugins when the transport is stopped" msgstr "Приглушать модули при оÑтановке транÑпорта" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "Делать новые Ñффекты/инÑтрументы активными" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "Включить автоматичеÑкий анализ звука" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "ВоÑÑоздавать отÑутÑтвующие каналы облаÑти" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "Соло/Приглушение" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "Приглушение Ñигнала при Ñолировании (dB)" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "Управление Ñолированием работает как управление проÑлушиванием" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 msgid "Listen Position" msgstr "Положение проÑлушиваниÑ" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 msgid "after-fader (AFL)" msgstr "ПоÑле фейдера (AFL)" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 msgid "pre-fader (PFL)" msgstr "До фейдера (PFL)" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "ИÑточник Ñигнала PFL" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 msgid "before pre-fader processors" msgstr "До поÑлефейдерных обработчиков" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "До фейдера, но поÑле предфейдерных обработчиков" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "ИÑточник Ñигнала AFL" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 msgid "immediately post-fader" msgstr "Сразу поÑле фейдера" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 msgid "after post-fader processors (before pan)" msgstr "За поÑлефейдерными обработчиками и до панорамированиÑ" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "ЭкÑклюзивное Ñолирование" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "Показывать приглушение при Ñолировании" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "Солирование приоритетнее приглушениÑ" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "Приглушение дорожек и шин по умолчанию затрагивает" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "Предфейдерные поÑылы" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "ПоÑлефейдерные поÑылы" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 msgid "Mute affects control outputs" msgstr "Выходы мониторинга" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "ОÑновные выходы" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "Передавать MIDI Time Code" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "ВыполнÑÑ‚ÑŒ команды MIDI Machine Control" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "ОтправлÑÑ‚ÑŒ команды MIDI Machine Control" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 msgid "Send MIDI control feedback" msgstr "ОтправлÑÑ‚ÑŒ отклик на контрольные ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ MIDI" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "Идентификатор входÑщего уÑтройÑтва MMC" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñмена программы" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "Показывать первый банк/программу MIDI как 0" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "Ðикогда не показывать периодичеÑкие ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ MIDI (MTC, MIDI Clock)" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 msgid "Sound MIDI notes as they are selected" msgstr "ВоÑпроизводить ноты MIDI при их выделении" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 msgid "User interaction" msgstr "ВзаимодейÑтвие Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¼" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" @@ -9370,143 +9443,182 @@ msgstr "" " (вÑтупает в Ñилу поÑле перезапуÑка %1)\n" " (еÑли Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ Ñзыка доÑтупна)" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "Клавиатура" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 msgid "Control surface remote ID" msgstr "ID Ð´Ð»Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ управлениÑ" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "Ðазначенные пользователем" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "Следуют порÑдку микшера" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "Следуют порÑдку редактора" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1927 rc_option_editor.cc:1943 -#: rc_option_editor.cc:1957 +#: 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 msgid "Preferences|GUI" msgstr "ИнтерфейÑ" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "ПодÑвечивать Ñлементы интерфейÑа под указателем мыши" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "Показывать вÑплывающие подÑказки к Ñлементам интерфейÑа" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "ИнтерфейÑ" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "ОбновлÑÑ‚ÑŒ Ñчётчик транÑпорта каждые 40Ð¼Ñ Ð²Ð¼ÐµÑто каждых 100мÑ" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 msgid "Mixer Strip" msgstr "ПолоÑа микшера" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 msgid "Use narrow strips in the mixer by default" msgstr "ИÑпользовать тонкие полоÑки в микшере по умолчанию" -#: rc_option_editor.cc:1898 +#: rc_option_editor.cc:1906 msgid "Peak hold time" msgstr "Удерживание пика" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 msgid "short" msgstr "Короткое" -#: rc_option_editor.cc:1905 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "Среднее" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "Долгое" -#: rc_option_editor.cc:1912 +#: rc_option_editor.cc:1920 msgid "DPM fall-off" msgstr "СкороÑÑ‚ÑŒ ÑпаданиÑ" -#: rc_option_editor.cc:1918 +#: rc_option_editor.cc:1926 msgid "slowest [6.6dB/sec]" msgstr "Самое медленное [6,6 Дб/Ñ]" -#: rc_option_editor.cc:1919 +#: rc_option_editor.cc:1927 msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" msgstr "Медленное [8,6 Дб/Ñ] (BBC PPM, EBU PPM)" -#: rc_option_editor.cc:1920 +#: rc_option_editor.cc:1928 msgid "slowish [12.0dB/sec] (DIN)" msgstr "Ðеторопливое [12 Дб/Ñ] (DIN)" -#: rc_option_editor.cc:1921 +#: rc_option_editor.cc:1929 msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" msgstr "Умеренное [13,3 Дб/Ñ] (EBU Digi PPM, IRT Digi PPM)" -#: rc_option_editor.cc:1922 +#: rc_option_editor.cc:1930 msgid "medium [20dB/sec]" msgstr "Среднее [20 Дб/Ñ]" -#: rc_option_editor.cc:1923 +#: rc_option_editor.cc:1931 msgid "fast [32dB/sec]" msgstr "БыÑтрое [32 Дб/Ñ]" -#: rc_option_editor.cc:1924 +#: rc_option_editor.cc:1932 msgid "faster [46dB/sec]" msgstr "Ещё быÑтрее [46 Дб/Ñ]" -#: rc_option_editor.cc:1925 +#: rc_option_editor.cc:1933 msgid "fastest [70dB/sec]" msgstr "Самое быÑтрое [70 Дб/Ñ]" -#: rc_option_editor.cc:1931 -msgid "Meter line-up level" +#: rc_option_editor.cc:1939 +#, fuzzy +msgid "Meter line-up level; 0dBu" msgstr "Уровень выравниваниÑ" -#: rc_option_editor.cc:1936 -msgid "-24dB" -msgstr "-24 Дб" +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" -#: rc_option_editor.cc:1937 -msgid "-20dB (SMPTE)" +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +#, fuzzy +msgid "-20dBFS (SMPTE RP.0155)" msgstr "-20 Дб (SMPTE)" -#: rc_option_editor.cc:1938 -msgid "-18dB (EBU)" +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +#, fuzzy +msgid "-18dBFS (EBU, BBC)" msgstr "-18 Дб (EBU)" -#: rc_option_editor.cc:1939 -msgid "-15dB" -msgstr "-15 Дб" +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" -#: rc_option_editor.cc:1941 -msgid "Configure meter-ticks and color-knee point." +#: rc_option_editor.cc:1955 +#, fuzzy +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "Уровень выравниваниÑ" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." msgstr "" -#: rc_option_editor.cc:1947 +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" + +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 msgid "Peak threshold [dBFS]" msgstr "Порог пика (dbFS)" -#: rc_option_editor.cc:1955 +#: rc_option_editor.cc:1993 msgid "" "Specify the audio signal level in dbFS at and above which the meter-peak " "indicator will flash red." msgstr "" +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" + #: region_editor.cc:79 msgid "audition this region" msgstr "проÑлушать облаÑÑ‚ÑŒ" @@ -9515,11 +9627,11 @@ msgstr "проÑлушать облаÑÑ‚ÑŒ" msgid "Position:" msgstr "ПозициÑ:" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Конец:" -#: region_editor.cc:92 sfdb_ui.cc:141 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "ДлительноÑÑ‚ÑŒ:" @@ -9751,36 +9863,36 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "" -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "Дорожки/Шины" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "Входы" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "Выходы" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "Модули, возвраты и поÑылы" -#: route_params_ui.cc:207 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "" -#: route_params_ui.cc:254 route_params_ui.cc:282 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "Задержка воÑпроизведениÑ: % ÑÑмплов" -#: route_params_ui.cc:474 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "ÐЕТ ДОРОЖЕК" -#: route_params_ui.cc:607 route_params_ui.cc:608 +#: route_params_ui.cc:613 route_params_ui.cc:614 msgid "No Track or Bus Selected" msgstr "Ðет выбранных дорожек или шин" @@ -9961,107 +10073,107 @@ msgstr "Ñ" msgid "m" msgstr "м" -#: route_ui.cc:114 +#: route_ui.cc:119 msgid "Mute this track" msgstr "Приглушить Ñту дорожку" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "Приглушить другие (не Ñолирующие) дорожки" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "Включить запиÑываемоÑÑ‚ÑŒ Ñтой дорожки" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "" -#: route_ui.cc:133 +#: route_ui.cc:138 msgid "Monitor input" msgstr "Следить за входом" -#: route_ui.cc:139 +#: route_ui.cc:144 msgid "Monitor playback" msgstr "Следить за воÑпроизведением" -#: route_ui.cc:586 +#: route_ui.cc:591 msgid "Not connected to JACK - cannot engage record" msgstr "" -#: route_ui.cc:781 +#: route_ui.cc:786 msgid "Step Entry" msgstr "Пошаговый ввод" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "Ðазначить вÑем дорожкам (до фейдера)" -#: route_ui.cc:858 +#: route_ui.cc:863 msgid "Assign all tracks and buses (prefader)" msgstr "Ðазначить вÑем дорожкам и шинам (до фейдера)" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "Ðазначить вÑем дорожкам (поÑле фейдера)" -#: route_ui.cc:866 +#: route_ui.cc:871 msgid "Assign all tracks and buses (postfader)" msgstr "Ðазначить вÑем дорожкам и шинам (поÑле фейдера)" -#: route_ui.cc:870 +#: route_ui.cc:875 msgid "Assign selected tracks (prefader)" msgstr "Ðазначить выбранным дорожкам (до фейдера)" -#: route_ui.cc:874 +#: route_ui.cc:879 msgid "Assign selected tracks and buses (prefader)" msgstr "Ðазначить выбранным дорожкам и шинам (до фейдера)" -#: route_ui.cc:877 +#: route_ui.cc:882 msgid "Assign selected tracks (postfader)" msgstr "Ðазначить выбранным дорожкам (поÑле фейдера)" -#: route_ui.cc:881 +#: route_ui.cc:886 msgid "Assign selected tracks and buses (postfader)" msgstr "Ðазначить выбранным дорожкам и шинам (поÑле фейдера)" -#: route_ui.cc:884 +#: route_ui.cc:889 msgid "Copy track/bus gains to sends" msgstr "" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "" -#: route_ui.cc:1206 +#: route_ui.cc:1211 msgid "Solo Isolate" msgstr "" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "Предфейдер" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "ПоÑлефейдер" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "Контрольные выходы" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "Главные выходы" -#: route_ui.cc:1385 +#: route_ui.cc:1390 msgid "Color Selection" msgstr "Выбор цвета" -#: route_ui.cc:1472 +#: route_ui.cc:1477 msgid "" "Do you really want to remove track \"%1\" ?\n" "\n" @@ -10075,7 +10187,7 @@ msgstr "" "\n" "Это дейÑтвие невозможно отменить, файл ÑеанÑа будет перезапиÑан." -#: route_ui.cc:1474 +#: route_ui.cc:1479 msgid "" "Do you really want to remove bus \"%1\" ?\n" "\n" @@ -10085,15 +10197,15 @@ msgstr "" "\n" "Это дейÑтвие невозможно отменить, файл ÑеанÑа будет перезапиÑан." -#: route_ui.cc:1482 +#: route_ui.cc:1487 msgid "Remove track" msgstr "Удаление дорожки" -#: route_ui.cc:1484 +#: route_ui.cc:1489 msgid "Remove bus" msgstr "Удаление шины" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" @@ -10101,47 +10213,47 @@ msgstr "" "ИÑпользование Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ñ Ð² названиÑÑ… дорожек и шин не поощрÑетÑÑ.\n" "Ð’Ñ‹ точно хотите оÑтавить двоеточие?" -#: route_ui.cc:1515 +#: route_ui.cc:1520 msgid "Use the new name" msgstr "ИÑпользовать новое имÑ" -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "Повторно изменить название" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "Переименование дорожки" -#: route_ui.cc:1531 +#: route_ui.cc:1536 msgid "Rename Bus" msgstr "Переименование шины" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr " задержка" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "Ðе удалоÑÑŒ Ñоздать папку Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸ маршрутизации %1" -#: route_ui.cc:1709 +#: route_ui.cc:1714 msgid "Save As Template" msgstr "Сохранить как шаблон" -#: route_ui.cc:1710 +#: route_ui.cc:1715 msgid "Template name:" msgstr "Ðазвание шаблона:" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "ID Ð´Ð»Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ управлениÑ" -#: route_ui.cc:1793 +#: route_ui.cc:1798 msgid "Remote control ID:" msgstr "ID Ð´Ð»Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ управлениÑ:" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10153,15 +10265,15 @@ msgstr "" "\n" "%3 не может получить другой ID." -#: route_ui.cc:1811 +#: route_ui.cc:1816 msgid "the master bus" msgstr "МаÑтер-шина" -#: route_ui.cc:1811 +#: route_ui.cc:1816 msgid "the monitor bus" msgstr "Шина мониторинга" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10179,15 +10291,15 @@ msgstr "" "%4Ð’Ñ‹ можете наÑтроить Ñто в диалоге «Параметры» на вкладке «ВзаимодейÑтвие Ñ " "пользователем»%5" -#: route_ui.cc:1816 +#: route_ui.cc:1821 msgid "the mixer" msgstr "микшер" -#: route_ui.cc:1816 +#: route_ui.cc:1821 msgid "the editor" msgstr "the editor" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." @@ -10195,7 +10307,7 @@ msgstr "" "Щелчком левой клавиши мыши инвертируетÑÑ (инверÑÐ¸Ñ Ñ„Ð°Ð·Ñ‹) \n" "канал %1 Ñтой дорожки. По правой клавише вызываетÑÑ Ð¼ÐµÐ½ÑŽ." -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr " " @@ -10740,243 +10852,243 @@ msgstr "Показывать в метках имён" msgid "Track Name" msgstr "Ðазвание дорожи" -#: sfdb_ui.cc:88 sfdb_ui.cc:108 sfdb_ui.cc:117 +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 msgid "as new tracks" msgstr "как новые дорожки" -#: sfdb_ui.cc:90 sfdb_ui.cc:110 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 msgid "to selected tracks" msgstr "в выделенные дорожки" -#: sfdb_ui.cc:92 sfdb_ui.cc:112 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to region list" msgstr "в ÑпиÑок облаÑтей" -#: sfdb_ui.cc:94 sfdb_ui.cc:114 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "as new tape tracks" msgstr "как новые плёночные дорожки" -#: sfdb_ui.cc:98 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "Ошибка в программе: неизвеÑÑ‚Ð½Ð°Ñ Ñтрока режима импорта %1" -#: sfdb_ui.cc:125 +#: sfdb_ui.cc:123 msgid "Auto-play" msgstr "ÐвтовоÑпр." -#: sfdb_ui.cc:131 sfdb_ui.cc:238 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 msgid "Sound File Information" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ файле" -#: sfdb_ui.cc:143 +#: sfdb_ui.cc:141 msgid "Timestamp:" msgstr "Отметка времени:" -#: sfdb_ui.cc:145 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "Формат:" -#: sfdb_ui.cc:184 sfdb_ui.cc:529 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "Метки:" -#: sfdb_ui.cc:321 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "ПроÑлушивание файлов MIDI пока что не реализовано" -#: sfdb_ui.cc:328 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Ðе удалоÑÑŒ прочитать файл: %1 (%2)" -#: sfdb_ui.cc:350 +#: sfdb_ui.cc:349 msgid "Could not access soundfile: " msgstr "Файл недоÑтупен: " -#: sfdb_ui.cc:404 +#: sfdb_ui.cc:403 msgid "SoundFileBox: Could not tokenize string: " msgstr "" -#: sfdb_ui.cc:424 sfdb_ui.cc:426 +#: sfdb_ui.cc:423 sfdb_ui.cc:425 msgid "Search" msgstr "ИÑкать" -#: sfdb_ui.cc:450 +#: sfdb_ui.cc:449 msgid "Audio and MIDI files" msgstr "Звуковые и MIDI-файлы" -#: sfdb_ui.cc:453 +#: sfdb_ui.cc:452 msgid "Audio files" msgstr "Звуковые файлы" -#: sfdb_ui.cc:456 +#: sfdb_ui.cc:455 msgid "MIDI files" msgstr "Файлы MIDI" -#: sfdb_ui.cc:459 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "Ð’Ñе файлы" -#: sfdb_ui.cc:478 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "Обзор файлов" -#: sfdb_ui.cc:507 +#: sfdb_ui.cc:506 msgid "Paths" msgstr "РаÑположениÑ" -#: sfdb_ui.cc:516 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "ПоиÑк по меткам" -#: sfdb_ui.cc:534 +#: sfdb_ui.cc:531 msgid "Sort:" msgstr "Критерий Ñортировки:" -#: sfdb_ui.cc:542 +#: sfdb_ui.cc:539 msgid "Longest" msgstr "Более длинные" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:540 msgid "Shortest" msgstr "Более короткие" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:541 msgid "Newest" msgstr "Более новые" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "Более Ñтарые" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "Чаще Ñкачиваемые" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:544 msgid "Least downloaded" msgstr "Реже Ñкачиваемые" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "Выше оценённые" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "Ðиже оценённые" -#: sfdb_ui.cc:554 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:558 +#: sfdb_ui.cc:555 msgid "Similar" msgstr "" -#: sfdb_ui.cc:570 +#: sfdb_ui.cc:567 msgid "ID" msgstr "ID" -#: sfdb_ui.cc:571 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 msgid "Filename" msgstr "Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°" -#: sfdb_ui.cc:573 +#: sfdb_ui.cc:570 msgid "Duration" msgstr "ДлительноÑÑ‚ÑŒ" -#: sfdb_ui.cc:574 +#: sfdb_ui.cc:571 msgid "Size" msgstr "Размер" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:572 msgid "Samplerate" msgstr "ЧаÑтота ÑÑмплированиÑ" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:573 msgid "License" msgstr "ЛицензиÑ" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "ПоиÑк по Freesound" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "Ðажмите, чтобы импортировать выбранные файлы и закрыть Ñто окно" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" "Ðажмите, чтобы импортировать выбранные файлы и оÑтавить Ñто окно открытым" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "Ðажмите, чтобы закрыть Ñто окно, ничего не импортируÑ" -#: sfdb_ui.cc:813 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "" -#: sfdb_ui.cc:1013 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "Ещё %1 Ñтраница из 100 доÑтупных" msgstr[1] "Ещё %1 Ñтраницы из 100 доÑтупных" msgstr[2] "Ещё %1 Ñтраниц из 100 доÑтупных" -#: sfdb_ui.cc:1018 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "Больше результатов нет" -#: sfdb_ui.cc:1082 +#: sfdb_ui.cc:1078 msgid "B" msgstr "Б" -#: sfdb_ui.cc:1084 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "КБ" -#: sfdb_ui.cc:1086 sfdb_ui.cc:1088 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "МБ" -#: sfdb_ui.cc:1090 +#: sfdb_ui.cc:1086 msgid "GB" msgstr "ГБ" -#: sfdb_ui.cc:1304 sfdb_ui.cc:1612 sfdb_ui.cc:1662 sfdb_ui.cc:1680 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "Одна дорожка на файл" -#: sfdb_ui.cc:1307 sfdb_ui.cc:1663 sfdb_ui.cc:1681 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "Одна дорожка на канал" -#: sfdb_ui.cc:1315 sfdb_ui.cc:1665 sfdb_ui.cc:1682 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 msgid "sequence files" msgstr "" -#: sfdb_ui.cc:1318 sfdb_ui.cc:1670 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "Ð’Ñе файлы в одну дорожку" -#: sfdb_ui.cc:1319 sfdb_ui.cc:1664 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 msgid "merge files" msgstr "Объединить файлы" -#: sfdb_ui.cc:1325 sfdb_ui.cc:1667 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 msgid "one region per file" msgstr "Одна облаÑÑ‚ÑŒ на файл" -#: sfdb_ui.cc:1328 sfdb_ui.cc:1668 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 msgid "one region per channel" msgstr "Одна облаÑÑ‚ÑŒ на канал" -#: sfdb_ui.cc:1333 sfdb_ui.cc:1669 sfdb_ui.cc:1683 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 msgid "all files in one region" msgstr "Ð’Ñе файлы в одной облаÑти" -#: sfdb_ui.cc:1400 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" @@ -10984,55 +11096,55 @@ msgstr "" "Один или более выбранных файлов\n" "не могут быть иÑпользованы в %1" -#: sfdb_ui.cc:1540 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "Скопировать файлы в ÑеанÑ" -#: sfdb_ui.cc:1557 sfdb_ui.cc:1720 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 msgid "file timestamp" msgstr "По отметке времени файла" -#: sfdb_ui.cc:1558 sfdb_ui.cc:1722 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 msgid "edit point" msgstr "По курÑору редактора" -#: sfdb_ui.cc:1559 sfdb_ui.cc:1724 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 msgid "playhead" msgstr "По указателю воÑпр." -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1554 msgid "session start" msgstr "Ð’ начало ÑеанÑа" -#: sfdb_ui.cc:1565 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "Добавить файлы как..." -#: sfdb_ui.cc:1587 +#: sfdb_ui.cc:1581 msgid "Insert at" msgstr "Куда вÑтавить" -#: sfdb_ui.cc:1600 +#: sfdb_ui.cc:1594 msgid "Mapping" msgstr "СпоÑоб вÑтавки" -#: sfdb_ui.cc:1618 +#: sfdb_ui.cc:1612 msgid "Conversion quality" msgstr "КачеÑтво преобразованиÑ:" -#: sfdb_ui.cc:1630 sfdb_ui.cc:1736 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "Ðаилучшее" -#: sfdb_ui.cc:1631 sfdb_ui.cc:1738 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "Хорошее" -#: sfdb_ui.cc:1632 sfdb_ui.cc:1740 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "БыÑтрое" -#: sfdb_ui.cc:1634 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "БыÑтрее вÑего" @@ -11119,22 +11231,23 @@ msgid "I'd like more options for this session" msgstr "Указать дополнительные параметры Ð´Ð»Ñ Ñтого ÑеанÑа" #: startup.cc:194 +#, fuzzy msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11310,83 +11423,83 @@ msgstr "Ðазвание ÑеанÑа:" msgid "Create session folder in:" msgstr "Создать папку ÑеанÑа в:" -#: startup.cc:813 +#: startup.cc:821 msgid "Select folder for session" msgstr "Выберите папку Ð´Ð»Ñ ÑеанÑа" -#: startup.cc:845 +#: startup.cc:853 msgid "Use this template" msgstr "ИÑпользовать Ñтот шаблон" -#: startup.cc:848 +#: startup.cc:856 msgid "no template" msgstr "Без шаблона" -#: startup.cc:876 +#: startup.cc:884 msgid "Use an existing session as a template:" msgstr "ИÑпользовать ÑущеÑтвующий ÑÐµÐ°Ð½Ñ ÐºÐ°Ðº шаблон:" -#: startup.cc:888 +#: startup.cc:896 msgid "Select template" msgstr "Выберите шаблон" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "Создать ÑеанÑ" -#: startup.cc:1068 +#: startup.cc:1077 msgid "Select session file" msgstr "Выберите файл ÑеанÑа" -#: startup.cc:1084 +#: startup.cc:1093 msgid "Browse:" msgstr "Обзор:" -#: startup.cc:1093 +#: startup.cc:1102 msgid "Select a session" msgstr "Выберите ÑеанÑ" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "канал(-ов)" -#: startup.cc:1135 +#: startup.cc:1145 msgid "Busses" msgstr "Шины" -#: startup.cc:1136 +#: startup.cc:1146 msgid "Inputs" msgstr "Входы" -#: startup.cc:1137 +#: startup.cc:1147 msgid "Outputs" msgstr "Выходы" -#: startup.cc:1145 +#: startup.cc:1155 msgid "Create master bus" msgstr "Создать маÑтер-шину" -#: startup.cc:1155 +#: startup.cc:1165 msgid "Automatically connect to physical inputs" msgstr "ÐвтоматичеÑки подключить к физичеÑким входам" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "ИÑпользовать только" -#: startup.cc:1215 +#: startup.cc:1225 msgid "Automatically connect outputs" msgstr "ÐвтоматичеÑки подключить выходы" -#: startup.cc:1237 +#: startup.cc:1247 msgid "... to master bus" msgstr "... к маÑтер-шине" -#: startup.cc:1247 +#: startup.cc:1257 msgid "... to physical outputs" msgstr "... к физичеÑким выходам" -#: startup.cc:1297 +#: startup.cc:1307 msgid "Advanced Session Options" msgstr "Дополнительные параметры ÑеанÑа" @@ -12059,19 +12172,19 @@ msgstr "Config file %1 not saved" msgid "bad XPM header %1" msgstr "bad XPM header %1" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "missing RGBA style for \"%1\"" -#: utils.cc:544 +#: utils.cc:591 msgid "cannot find XPM file for %1" msgstr "cannot find XPM file for %1" -#: utils.cc:570 +#: utils.cc:617 msgid "cannot find icon image for %1 using %2" msgstr "cannot find icon image for %1 using %2" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "" @@ -12079,47 +12192,47 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "VerboseCanvasCursor" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 msgid "Set Video Track" msgstr "УÑтановка видеодорожки" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 msgid "Launch External Video Monitor" msgstr "ЗапуÑтить внешний видеомонитор" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "Подогнать чаÑтоту кадров ÑеанÑа к чаÑтоте кадров видео" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 msgid "Video files" msgstr "Видеофайлы" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 msgid "Video Information" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ видеофайле" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 msgid "Start:" msgstr "Ðачало:" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 msgid "Frame rate:" msgstr "ЧаÑтота кадров::" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "Соотношение Ñторон:" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr " %1 к/Ñ" @@ -12127,37 +12240,32 @@ msgstr " %1 к/Ñ" msgid "Export Successful: %1" msgstr "ЭкÑпорт уÑпешно завершён: %1" -#: video_timeline.cc:468 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:505 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:505 -msgid " does not have a corresponding option setting in Ardour." -msgstr "" - -#: video_timeline.cc:511 +#: video_timeline.cc:507 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:512 -msgid " vs " +#: video_timeline.cc:515 +msgid "" +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:583 +#: video_timeline.cc:588 msgid "" -"Video-server docroot mismatch. Ardour: '%1', video-server: '%2'. This " -"usually means that the video server was not started by ardour and uses a " -"different document-root." +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:732 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12169,13 +12277,13 @@ msgstr "" msgid "Video Monitor: File Not Found." msgstr "Видеомонитор: файл не найден" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12185,353 +12293,350 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 msgid "Transcode/Import Video File " msgstr "Импортировать/перекодировать видеофайл" -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 msgid "Output File:" msgstr "Файл вывода:" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "Прервать" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 msgid "Height = " msgstr "Ð’Ñ‹Ñота = " -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +#, fuzzy +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "Режим отладки: вывод команд ffmpeg в stdout" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 msgid "File Information" msgstr "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ файле" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "К/Ñ:" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 msgid "Duration:" msgstr "ДлительноÑÑ‚ÑŒ:" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "Кодек:" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "ГеометриÑ:" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 msgid "??" msgstr "" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 msgid "Import Settings" msgstr "Параметры импорта" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "Ðе импортировать видео" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "ИÑпользовать иÑходный видеофайл" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 msgid "Import/Transcode Video to Session" msgstr "Импортировать/перекодировать видео в ÑеанÑ" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "МаÑштаб видео: Ширина = " -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 msgid "Original Width" msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ ÑˆÐ¸Ñ€Ð¸Ð½Ð°" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "СкороÑÑ‚ÑŒ потока (Кбит/Ñ):" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 msgid "Extract Audio:" msgstr "Извлечь звук:" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 msgid "Extracting Audio.." msgstr "ИзвлекаетÑÑ Ð·Ð²ÑƒÐº..." -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "Ðе удалоÑÑŒ извлечь звуковую дорожку." -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "Перекодирование видео..." -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 msgid "Transcoding Failed." msgstr "Ðе удалоÑÑŒ выполнить перекодирование." -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 msgid "Save Transcoded Video File" msgstr "Сохранить перекодированный видеофайл" -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "ЗапуÑтить видеоÑервер" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "ИÑполнÑемый файл Ñервера:" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 msgid "Server Docroot:" msgstr "" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "Больше не показывать Ñтот диалог" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "Слушать адреÑ:" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 msgid "Listen Port:" msgstr "Слушать порт:" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 msgid "Cache Size:" msgstr "Размер кÑша:" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "Дальше" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 msgid "Confirm Overwrite" msgstr "Подтвердите перезапиÑÑŒ" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "Снимок Ñ Ñ‚Ð°ÐºÐ¸Ð¼ названием уже еÑÑ‚ÑŒ. ПерезапиÑать его?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 msgid "Cannot create video folder \"%1\" (%2)" msgstr "Ðе удалоÑÑŒ Ñоздать папку Ð´Ð»Ñ Ð²Ð¸Ð´ÐµÐ¾: \"%1\" (%2)" -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 msgid "Export Video File " msgstr "ЭкÑпортировать видеофайл" -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 msgid "Video:" msgstr "Видео:" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "МаÑштабирование видео (В×Ш):" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "Указать Ñоотношение Ñторон:" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 msgid "Normalize Audio" msgstr "Ðормировать звук" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "Кодирование в два прохода" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ¾Ð´ÐµÐºÐ°:" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 msgid "Deinterlace" msgstr "" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "ИÑпользовать [2] B-кадры (только MPEG 2 или 4)" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "Принудительно указать Ñвою чаÑтоту кадров:" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 msgid "Include Session Metadata" msgstr "Включить метаданные ÑеанÑа" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "Включить режим отладки: направлÑÑ‚ÑŒ вывод ffmpeg в stdout" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 msgid "Output:" msgstr "Выход:" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 msgid "Input:" msgstr "Вход:" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 msgid "Audio:" msgstr "Звук:" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 msgid "Master Bus" msgstr "МаÑтер-шина" -#: export_video_dialog.cc:144 +#: export_video_dialog.cc:145 msgid "from the %1 session's start to the session's end" msgstr "от начала до конца ÑеанÑа %1" -#: export_video_dialog.cc:148 +#: export_video_dialog.cc:149 msgid "from 00:00:00:00 to the video's end" msgstr "от 00:00:00:00 до конца видео" -#: export_video_dialog.cc:150 +#: export_video_dialog.cc:151 msgid "from the video's start to the video's end" msgstr "от начала до конца видео" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:184 msgid "Settings:" msgstr "Параметры:" -#: export_video_dialog.cc:191 +#: export_video_dialog.cc:192 msgid "Range:" msgstr "Диапазон:" -#: export_video_dialog.cc:194 +#: export_video_dialog.cc:195 msgid "Preset:" msgstr "Профиль:" -#: export_video_dialog.cc:197 +#: export_video_dialog.cc:198 msgid "Video Codec:" msgstr "Видеокодек:" -#: export_video_dialog.cc:200 +#: export_video_dialog.cc:201 msgid "Video KBit/s:" msgstr "СкороÑÑ‚ÑŒ видеопотока (Кбит/Ñ):" -#: export_video_dialog.cc:203 +#: export_video_dialog.cc:204 msgid "Audio Codec:" msgstr "Звуковой кодек:" -#: export_video_dialog.cc:206 +#: export_video_dialog.cc:207 msgid "Audio KBit/s:" msgstr "СкороÑÑ‚ÑŒ звукового потока (Кбит/Ñ):" -#: export_video_dialog.cc:209 +#: export_video_dialog.cc:210 msgid "Audio Samplerate:" msgstr "ЧаÑтота ÑÑÐ¼Ð¿Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð²ÑƒÐºÐ°:" -#: export_video_dialog.cc:386 +#: export_video_dialog.cc:387 msgid "Normalizing audio" msgstr "ВыполнÑетÑÑ Ð½Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²ÐºÐ° звука" -#: export_video_dialog.cc:390 +#: export_video_dialog.cc:391 msgid "Exporting audio" msgstr "ЭкÑпорт звука" -#: export_video_dialog.cc:436 +#: export_video_dialog.cc:437 msgid "Exporting Audio..." msgstr "ЭкÑпортируетÑÑ Ð·Ð²ÑƒÐº..." -#: export_video_dialog.cc:493 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:522 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:561 +#: export_video_dialog.cc:562 msgid "Encoding Video..." msgstr "КодируетÑÑ Ð²Ð¸Ð´ÐµÐ¾..." -#: export_video_dialog.cc:580 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:678 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "ВыполнÑетÑÑ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ видео. Проход 1/2." -#: export_video_dialog.cc:690 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "ВыполнÑетÑÑ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ видео. Проход 2/2." -#: export_video_dialog.cc:778 +#: export_video_dialog.cc:779 msgid "Transcoding failed." msgstr "Ðе удалоÑÑŒ выполнить перекодировку." -#: export_video_dialog.cc:947 export_video_dialog.cc:967 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 msgid "Save Exported Video File" msgstr "Сохранить ÑкÑпортированный видеофайл" @@ -12556,6 +12661,24 @@ msgid "" "Open Manual in Browser? " msgstr "" +#~ msgid "Change all in Group to RMS + Peak" +#~ msgstr "ПоменÑÑ‚ÑŒ вÑе в группе на Ñреднеквадратичное + пиковое" + +#~ msgid "Change all to RMS + Peak" +#~ msgstr "ПоменÑÑ‚ÑŒ вÑе на Ñреднеквадратичное + пиковое" + +#~ msgid "Change same track-type to RMS + Peak" +#~ msgstr "ПоменÑÑ‚ÑŒ дорожки одного типа на Ñреднеквадратичное + пиковое" + +#~ msgid "-24dB" +#~ msgstr "-24 Дб" + +#~ msgid "-15dB" +#~ msgstr "-15 Дб" + +#~ msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." +#~ msgstr "Включить режим отладки: направлÑÑ‚ÑŒ вывод ffmpeg в stdout" + #~ msgid "-Inf" #~ msgstr "-Inf" diff --git a/gtk2_ardour/po/sv.po b/gtk2_ardour/po/sv.po index baca2feee0..b2e70618bf 100644 --- a/gtk2_ardour/po/sv.po +++ b/gtk2_ardour/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ardour-gtk 1.0.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2006-06-26 23:57+GMT+1\n" "Last-Translator: Petter Sundlöf \n" "Language-Team: Svenska \n" @@ -371,7 +371,7 @@ msgstr "" msgid "%1 will not work without a valid ardour.menus file" msgstr "" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 msgid "Add Track or Bus" msgstr "Lägg till spÃ¥r eller buss" @@ -410,8 +410,8 @@ msgstr "buss(ar)" msgid "Add:" msgstr "Lägg till" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 msgid "Options" msgstr "Alternativ" @@ -425,21 +425,21 @@ msgid "Group:" msgstr "Grupp:" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 msgid "Audio" msgstr "LjudspÃ¥r" #: 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "" @@ -463,7 +463,7 @@ msgid "" msgstr "" #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "" @@ -507,7 +507,7 @@ msgstr "8 kanaler" msgid "12 Channel" msgstr "12 kanaler" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "Manuellt" @@ -593,7 +593,7 @@ msgid "Track" msgstr "SpÃ¥r" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 msgid "Show" msgstr "Visa" @@ -601,100 +601,95 @@ msgstr "Visa" msgid "Re-analyze data" msgstr "Ã…teranalysera data" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 #, fuzzy msgid "audition" msgstr "Avlyssna" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 #, fuzzy msgid "solo" msgstr "Sololäge" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 #, fuzzy msgid "feedback" msgstr "Gensvar" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 #, fuzzy msgid "Speaker Configuration" msgstr "Kanalkonfiguration" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "Färgtema" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "Kortkommandon" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "Inställningar" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 #, fuzzy msgid "Add Tracks/Busses" msgstr "SpÃ¥r/Bussar" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "Om" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "Platser" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 msgid "Tracks and Busses" msgstr "SpÃ¥r och bussar" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "Egenskaper" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "Buntar" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "Stor klocka" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 #, fuzzy msgid "Audio Connections" msgstr "Anslutningar" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "Anslutningar" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "" -#: ardour_ui.cc:299 -#, fuzzy -msgid "could not initialize %1." -msgstr "kunde inte initialisera Ardour." - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "Startar ljudsystemet" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 #, fuzzy msgid "%1 is ready for use" msgstr "Ardour är redo att användas" -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 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" @@ -703,26 +698,26 @@ msgid "" "controlled by %2" msgstr "" -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 #, fuzzy msgid "Don't quit" msgstr "Stäng inte" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 #, fuzzy msgid "Just quit" msgstr "Stäng utan att spara" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 #, fuzzy msgid "Save and quit" msgstr "Spara och stäng" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 #, fuzzy msgid "" "%1 was unable to save your session.\n" @@ -737,17 +732,17 @@ msgstr "" "\n" "\"Avsluta bara\"-alternativet." -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 #, fuzzy msgid "Please wait while %1 cleans up..." msgstr "Vänta medan Ardour laddar visuell data..." -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 #, fuzzy msgid "Unsaved Session" msgstr "Ny session" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 #, fuzzy msgid "" "The session \"%1\"\n" @@ -767,7 +762,7 @@ msgstr "" "\n" "Vad vill du göra?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 #, fuzzy msgid "" "The snapshot \"%1\"\n" @@ -787,75 +782,75 @@ msgstr "" "\n" "Vad vill du göra?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "FrÃ¥ga" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "frÃ¥nkopplad" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 #, fuzzy msgid "File:" msgstr "Filer" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 msgid "WAV" msgstr "" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -863,61 +858,61 @@ msgid "" "\">%%%" msgstr "" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 #, fuzzy msgid "Disk: Unknown" msgstr "Utrymme: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, fuzzy, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "Utrymme: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, fuzzy, c-format msgid "Timecode|TC: %s" msgstr "Utrymme: %02dh:%02dm:%02ds" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "Tidigare Sessioner" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" msgstr "" -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "Öppna session" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 #, fuzzy msgid "%1 sessions" msgstr "Sessionen" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "Du kan inte lägga till ett spÃ¥r utan en session laddad." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 #, fuzzy msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "kunde inte skapa nytt ljudspÃ¥r" msgstr[1] "kunde inte skapa nytt ljudspÃ¥r" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 #, fuzzy msgid "" "There are insufficient JACK ports available\n" @@ -930,26 +925,26 @@ msgstr "" "Du bör spara, avsluta och\n" "starta om JACK med fler portar." -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 #, fuzzy msgid "You cannot add a track or bus without a session already loaded." msgstr "Du kan inte lägga till ett spÃ¥r utan en session laddad." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 #, fuzzy msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "kunde inte skapa nytt ljudspÃ¥r" msgstr[1] "kunde inte skapa nytt ljudspÃ¥r" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 #, fuzzy msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "kunde inte skapa nytt ljudspÃ¥r" msgstr[1] "kunde inte skapa nytt ljudspÃ¥r" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 #, fuzzy msgid "" "Please create one or more tracks before trying to record.\n" @@ -959,14 +954,14 @@ msgstr "" "innan du försöker spela in.\n" "Se Session-menyn." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" "%1" msgstr "" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 #, fuzzy msgid "" "JACK has either been shutdown or it\n" @@ -979,79 +974,79 @@ msgstr "" "Ardour inte var snabb nog. Du kan spara\n" "och/eller försöka Ã¥teransluta till JACK ." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "Kan ej starta sessionen" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 msgid "Take Snapshot" msgstr "Gör ögonblickskopia" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 msgid "Name of new snapshot" msgstr "Namnge ny ögonblickskopia" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 #, fuzzy msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Filen existerar redan, vill du skriva över den?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 #, fuzzy msgid "Rename Session" msgstr "Byt namn pÃ¥ region" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 #, fuzzy msgid "New session name" msgstr "Sessionens namn:" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" msgstr "" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" msgstr "" -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 #, fuzzy msgid "Save Template" msgstr "Spara mall..." -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 #, fuzzy msgid "Name for template:" msgstr "Namn för mixmall: " -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-mall" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 #, fuzzy msgid "" "This session\n" @@ -1059,59 +1054,59 @@ msgid "" "already exists. Do you want to open it?" msgstr "Filen existerar redan, vill du skriva över den?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 #, fuzzy msgid "Open Existing Session" msgstr "Öppna en existerande session" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 #, fuzzy msgid "There is no existing session at \"%1\"" msgstr "Öppna en existerande session" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 #, fuzzy msgid "Please wait while %1 loads your session" msgstr "Vänta medan Ardour laddar din session" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "" -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Session \"%1 (ögonblickskopia %2)\" kunde inte laddas" -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 #, fuzzy msgid "Loading Error" msgstr "programmeringsfel: " -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "" -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 #, fuzzy msgid "Could not create session in \"%1\"" msgstr "kunde inte ladda kommandopromptssessionen \"%1\"" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 #, fuzzy msgid "No files were ready for clean-up" msgstr "Inga ljudfiler var redo för rensning" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 #, fuzzy msgid "Clean-up" msgstr "Upprensning" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1122,19 +1117,19 @@ msgstr "" "ögonblickskopior. Dessa kan använda regioner som\n" "använder oanvända filer för att kunna fungera." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 #, fuzzy msgid "" "The following file was deleted from %2,\n" @@ -1151,7 +1146,7 @@ msgstr[1] "" "%3,\n" "vilket frigjorde %4 %5byte diskutrymme" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 #, fuzzy msgid "" "The following file was not in use and \n" @@ -1188,12 +1183,12 @@ msgstr[1] "" "frigöra ytterligarel\n" "%4 %5byte diskutrymme.\n" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 #, fuzzy msgid "Are you sure you want to clean-up?" msgstr "Är du säker pÃ¥ att du vill rensa upp?" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 #, fuzzy msgid "" "Clean-up is a destructive operation.\n" @@ -1204,83 +1199,83 @@ msgstr "" "ALL Ã¥ngra-/gör om-information kommer att gÃ¥ förlorad om du rensar.\n" "Oanvända filer kommer att flyttas till \"dead_sounds\" i sessionens mapp." -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "Rensadialog" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 #, fuzzy msgid "Cleaned Files" msgstr "rensade filer" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "raderad fil" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 #, fuzzy msgid "Yes, Stop It" msgstr "Ja, radera den." -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "kunde inte öppna %1" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 #, fuzzy msgid "no video-file selected" msgstr "Ingen rutt vald" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "Inspelningen stoppades eftersom ditt system inte kunde hänga med." -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 #, fuzzy msgid "" "The disk system on your computer\n" @@ -1295,7 +1290,7 @@ msgstr "" "Närmare bestämt, det kunde inte skriva data till disk\n" "snabbt nog för att matcha inspelningen.\n" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 #, fuzzy msgid "" "The disk system on your computer\n" @@ -1310,11 +1305,11 @@ msgstr "" "Närmare bestämt, det kunde inte läsa data frÃ¥n disk\n" "snabbt nog för att matcha uppspelningen.\n" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 #, fuzzy msgid "" "This session appears to have been in the\n" @@ -1333,45 +1328,45 @@ msgstr "" "dig, eller ignorera dem. Markera\n" "vad du vill göra.\n" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "Ignorera kraschdata" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "Ã…terhämta frÃ¥n krasch" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 #, fuzzy msgid "Sample Rate Mismatch" msgstr "Samplingsfrekvens" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 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" "audio may be played at the wrong sample rate.\n" msgstr "" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 #, fuzzy msgid "Do not load session" msgstr "Zooma in/ut till hela sessionen" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 #, fuzzy msgid "Load session anyway" msgstr "vid början" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "Kunde inte koppla loss frÃ¥n JACK" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "Kunde inte Ã¥teransluta till JACK" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1394,35 +1389,40 @@ msgstr "Gränssnitt: kan ej konfigurera editorn" msgid "UI: cannot setup mixer" msgstr "Gränssnitt: kan inte konfigurera mixern" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "Gränssnitt: kan inte konfigurera mixern" + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "Spela frÃ¥n startmarkören" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Stanna uppspelning" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 msgid "Toggle record" msgstr "Växla inspelningläge" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "Spela omfÃ¥ng/markering" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "GÃ¥ till början av sessionen" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "GÃ¥ till slutet av sessionen" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "Spela loop-omfÃ¥ng" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 #, fuzzy msgid "" "MIDI Panic\n" @@ -1430,24 +1430,24 @@ msgid "" msgstr "" "Skicka 'note off' och nollställ kontrollmeddelanden pÃ¥ alla MIDI-kanaler" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "Ã…tervänd till senaste startmarkörpunkten vid stopp" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 #, fuzzy msgid "Playhead follows Range Selections and Edits" msgstr "Startmarkören till omfÃ¥ngstarten" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "Rimlig inljudsmedhörning" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "SlÃ¥ pÃ¥/av audio-klick" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" @@ -1455,7 +1455,7 @@ msgstr "" "I aktivt läge är valda kanaler i sololäge.\n" "Klicka för att stänga av" -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" @@ -1463,11 +1463,11 @@ msgstr "" "I aktivt läge avlyssnas nÃ¥got\n" "Klicka för att stoppa avlyssningen" -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "" -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1475,7 +1475,7 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1483,28 +1483,33 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "Nollställ konvolut" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "" -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "" -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "AutoÃ¥tervänd" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 #, fuzzy msgid "Follow Edits" msgstr "Fokus: redigeringspunkten" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1524,26 +1529,26 @@ msgstr "Förbereder redigeraren..." msgid "Setup Mixer" msgstr "Förbereder mixern..." -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "Laddar sessionshistoriken..." -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 #, fuzzy msgid "Don't close" msgstr "Stäng inte" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 #, fuzzy msgid "Just close" msgstr "stäng" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 #, fuzzy msgid "Save and close" msgstr "Spara och stäng" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" @@ -1556,7 +1561,7 @@ msgstr "" msgid "Sync" msgstr "Synk." -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "Inställningar" @@ -1584,15 +1589,15 @@ msgstr "Filtyp" msgid "Sample Format" msgstr "Samplingsformat" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "Kontrollytor" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "Insticksprogram" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "NivÃ¥mätning" @@ -1609,7 +1614,7 @@ msgstr "HÃ¥llningslängd" msgid "Denormal Handling" msgstr "Denormal-hantering" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "Ny..." @@ -1652,8 +1657,8 @@ msgstr "Ögonblickskopia..." msgid "Save As..." msgstr "Spara som..." -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 msgid "Rename..." msgstr "Byt namn..." @@ -1684,7 +1689,7 @@ msgid "Stem export..." msgstr "Exportera..." #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "Exportera" @@ -1697,11 +1702,11 @@ msgstr "Rensa oanvända källfiler..." msgid "Flush Wastebasket" msgstr "Töm papperskorgen" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1472 msgid "JACK" msgstr "" -#: ardour_ui_ed.cc:190 route_params_ui.cc:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "Fördröjning" @@ -1709,8 +1714,8 @@ msgstr "Fördröjning" msgid "Reconnect" msgstr "Ã…teranslut" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "Koppla frÃ¥n" @@ -1727,7 +1732,7 @@ msgstr "Helskärmsläge" msgid "Show Toolbars" msgstr "Visa zoom-verktygsraden" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 #, fuzzy msgid "Window|Mixer" msgstr "Fönster" @@ -1737,28 +1742,33 @@ msgstr "Fönster" msgid "Toggle Editor+Mixer" msgstr "Växla redigerare eller mixer överst" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "Fönster" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "MIDI-spÃ¥rare" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "Chatt" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 #, fuzzy msgid "Help|Manual" msgstr "Manuell" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "Referens" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Spara" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1768,101 +1778,101 @@ msgstr "Spara" msgid "Transport" msgstr "Uppspelning" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "Stopp" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "Start/Stopp" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 msgid "Start/Continue/Stop" msgstr "Start/Fortsätt/Stopp" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 msgid "Stop and Forget Capture" msgstr "Stoppa och glöm inspelning" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 msgid "Transition To Roll" msgstr "ÖvergÃ¥ng till Rullning" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "ÖvergÃ¥ng till Motsatt riktning" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "Spela loop-omfÃ¥ng" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 #, fuzzy msgid "Play Selected Range" msgstr "Markera omfÃ¥ng" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 #, fuzzy msgid "Play Selection w/Preroll" msgstr "Spela valda regioner" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "TillÃ¥t inspelning" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 msgid "Start Recording" msgstr "Börja inspelning" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "BakÃ¥tspolning" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "BakÃ¥tspolning (lÃ¥ngsam)" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "BakÃ¥tspolning (snabb)" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "FramÃ¥tspolning" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "FramÃ¥tspolning (lÃ¥ngsam)" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "FramÃ¥tspolning (snabb)" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "GÃ¥ till noll" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "GÃ¥ till början" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "GÃ¥ till slutet" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "GÃ¥ till väggklocka" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "Fokus pÃ¥ klockan" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1871,132 +1881,132 @@ msgstr "Fokus pÃ¥ klockan" msgid "Timecode" msgstr "Tidskod" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 msgid "Bars & Beats" msgstr "Takter & slag" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 msgid "Minutes & Seconds" msgstr "Minuter & sekunder" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "Samplingar" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 msgid "Punch In" msgstr "Inslag" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 msgid "Punch Out" msgstr "Utslag" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "Ut" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "Inslag/utslag" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 #, fuzzy msgid "In/Out" msgstr "Inslag/utslag" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "Klick" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 msgid "Auto Input" msgstr "Autoinljud" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 msgid "Auto Play" msgstr "Autospela" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 #, fuzzy msgid "Sync Startup to Video" msgstr "Synka start till video" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 msgid "Time Master" msgstr "Huvudklocka" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 #, fuzzy msgid "Toggle Record Enable Track %1" msgstr "Ändra inspelningsläge för SpÃ¥r1" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "Procent" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Halvtoner" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "Skicka MTC" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "Skicka MMC" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "Använd MMC" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 msgid "Send MIDI Clock" msgstr "Skicka MIDI-klocka" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 #, fuzzy msgid "Send MIDI Feedback" msgstr "Skicka MIDI-gensvar" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "Panik!" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 #, fuzzy msgid "Wall Clock" msgstr "GÃ¥ till väggklocka" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 msgid "DSP" msgstr "" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 #, fuzzy msgid "Buffers" msgstr "Buffertstorlek" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 #, fuzzy msgid "Timecode Format" msgstr "Tidskod: rutor" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 #, fuzzy msgid "File Format" msgstr "Sampleformat" @@ -2011,11 +2021,11 @@ msgstr "" msgid "Internal" msgstr "Intern" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 msgid "Enable/Disable external positional sync" msgstr "Välj extern positionssynkronisering" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "" @@ -2047,7 +2057,7 @@ msgstr "" msgid "Meter" msgstr "Taktart" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2141,33 +2151,33 @@ msgid "hide track" msgstr "dölj spÃ¥r" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 #, fuzzy msgid "Automation|Manual" msgstr "Automatisering" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "Uppspelning" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "Skriv" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "Beröring" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "" @@ -2176,7 +2186,7 @@ msgid "clear automation" msgstr "rensa automatisering" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "Göm" @@ -2198,7 +2208,7 @@ msgstr "Koppla frÃ¥n" msgid "Linear" msgstr "Linjär" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "Visningsläge" @@ -2215,13 +2225,13 @@ msgstr "Redigera bunt" msgid "Direction:" msgstr "Riktning:" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "IngÃ¥ng" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "UtgÃ¥ng" @@ -2231,8 +2241,8 @@ msgid "Edit" msgstr "Redigera" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "Radera" @@ -2406,7 +2416,7 @@ msgstr "Tidskod" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "Längd" @@ -2654,17 +2664,17 @@ msgid "Ranges & Marks" msgstr "OmfÃ¥ng & markörer" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 msgid "Editor" msgstr "Redigerare" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "Loop" @@ -2689,8 +2699,8 @@ msgstr "" msgid "Slow" msgstr "LÃ¥ngsam" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "Snabb" @@ -2710,7 +2720,7 @@ msgstr "Aktivera" msgid "Slowest" msgstr "LÃ¥ngsammast" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "programmeringsfel: " @@ -2840,7 +2850,7 @@ msgid "Select All in Track" msgstr "Välj allt i spÃ¥ret" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "Markera allt" @@ -2892,15 +2902,15 @@ msgstr "Markera omfÃ¥ng mellan startmarkören och redigeringspunkten" msgid "Select" msgstr "Markera" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "Klipp ut" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "Kopiera" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "Klistra in" @@ -3062,7 +3072,7 @@ msgstr "Gör om" msgid "Redo (%1)" msgstr "Gör om (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "Duplicera" @@ -3097,8 +3107,8 @@ msgstr "Radera spellista" msgid "Keep Playlist" msgstr "BehÃ¥ll spellista" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "Avbryt" @@ -3119,7 +3129,7 @@ msgstr "rensa spellistor" msgid "Please wait while %1 loads visual data." msgstr "Vänta medan Ardour laddar visuell data..." -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 msgid "Edit..." msgstr "Redigera..." @@ -3173,7 +3183,7 @@ msgstr "Lager" msgid "Position" msgstr "" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Beskär" @@ -3186,7 +3196,7 @@ msgstr "Volym" msgid "Ranges" msgstr "OmfÃ¥ng" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 msgid "Fades" @@ -3226,7 +3236,7 @@ msgstr "Diverse inställningar" msgid "Misc Options" msgstr "Diverse inställningar" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "Medhörning" @@ -3269,8 +3279,8 @@ msgstr "Sekundär klocka" msgid "Separate" msgstr "Separera" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "" @@ -3282,7 +3292,7 @@ msgstr "Underrutor" msgid "Timecode fps" msgstr "Tidskod-FPS" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Höjd" @@ -3414,7 +3424,7 @@ msgstr "Startmarkören till omfÃ¥ngstarten" msgid "Playhead to Range End" msgstr "Startmarkören till omfÃ¥ngslutet" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "Avmarkera allt" @@ -3699,9 +3709,9 @@ msgstr "Infoga tid" msgid "Toggle Active" msgstr "Växla aktiv" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "Ta bort" @@ -3709,19 +3719,19 @@ msgstr "Ta bort" msgid "Fit Selected Tracks" msgstr "Rym valda spÃ¥r" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "Störst" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "Stor" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "Större" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "Liten" @@ -3821,7 +3831,7 @@ msgstr "Skarv" msgid "Slide" msgstr "Glid" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "LÃ¥s" @@ -4000,7 +4010,7 @@ msgstr "Min:sek" msgid "Video Monitor" msgstr "Medhörning" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -4011,7 +4021,7 @@ msgstr "Placera överst" #: editor_actions.cc:554 #, fuzzy -msgid "Framenumber" +msgid "Frame number" msgstr "SpÃ¥rnummer" #: editor_actions.cc:555 @@ -4104,7 +4114,7 @@ msgstr "Ta bort '%s'" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Importera" @@ -4145,301 +4155,301 @@ msgstr "" msgid "Could not find editor.bindings in search path %1" msgstr "" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 #, fuzzy msgid "programming error: %1: %2" msgstr "programmeringsfel: " -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "Högre" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 msgid "Raise to Top" msgstr "Placera överst" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "Lägre" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 msgid "Lower to Bottom" msgstr "Placera underst" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 msgid "Move to Original Position" msgstr "Flytta till ursprunglig position" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "Klistra mot takt & slag" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 msgid "Remove Sync" msgstr "Ta bort synk." -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "Tysta" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 msgid "Normalize..." msgstr "Normalisera..." -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "Motsatt riktning" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 msgid "Make Mono Regions" msgstr "Skapa monoregioner" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "Öka volym" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "Sänk volym" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 #, fuzzy msgid "Pitch Shift..." msgstr "Tonhöjdsändring" -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 #, fuzzy msgid "Transpose..." msgstr "Transponera" -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 msgid "Opaque" msgstr "Ogenomskinlig" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "Tona In" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "Tona Ut" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 msgid "Multi-Duplicate..." msgstr "Multiduplicera..." -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "Fyll spÃ¥ret" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "Sätt loop-omfÃ¥ng här" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 msgid "Set Punch" msgstr "Ställ in inslag" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 #, fuzzy msgid "Add Single Range Marker" msgstr "Lägg till 1 omfÃ¥ngsmarkör" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 #, fuzzy msgid "Add Range Marker Per Region" msgstr "Lägg till omfÃ¥ngsmarkörer" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 #, fuzzy msgid "Snap Position To Grid" msgstr "Fäst mot rutnät" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 msgid "Close Gaps" msgstr "Stäng luckor" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "" -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 msgid "Export..." msgstr "Exportera..." -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 msgid "Separate Under" msgstr "Separera under" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 msgid "Set Fade In Length" msgstr "Välj intoningslängd" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 msgid "Set Fade Out Length" msgstr "Välj uttoningslängd" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 msgid "Set Tempo from Region = Bar" msgstr "Sätt tempo frÃ¥n region = takt" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 msgid "Split at Percussion Onsets" msgstr "Dela vid perkussiva anslag" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 msgid "List Editor..." msgstr "Listredigerare..." -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "Egenskaper..." -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "Kombinera" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "Okombinera" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "Spektralanalys..." -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 msgid "Reset Envelope" msgstr "Nollställ konvolut" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 #, fuzzy msgid "Reset Gain" msgstr "Nollställ alla" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 msgid "Envelope Active" msgstr "Konvolut aktivt" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 #, fuzzy msgid "Quantize..." msgstr "Kvantisera" -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "Infoga patchändring..." -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "Klipp ut tystnad..." -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 msgid "Set Range Selection" msgstr "Definiera omfÃ¥ngsmarkering" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 #, fuzzy msgid "Nudge Later" msgstr "Knuffa framÃ¥t" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 #, fuzzy msgid "Nudge Earlier" msgstr "Knuffa framÃ¥t" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 #, fuzzy msgid "Nudge Later by Capture Offset" msgstr "Knuffa framÃ¥t utifrÃ¥n inspelningskompensation" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 #, fuzzy msgid "Nudge Earlier by Capture Offset" msgstr "Knuffa framÃ¥t utifrÃ¥n inspelningskompensation" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "Beskär till loop" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "Beskär till inslag" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 msgid "Trim to Previous" msgstr "Beskär till föregÃ¥ende" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 msgid "Trim to Next" msgstr "Beskär till nästa" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 msgid "Insert Region From Region List" msgstr "Infoga region frÃ¥n regionlistan" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 msgid "Set Sync Position" msgstr "Ställ in synk.-position" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "Placera transient" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "Dela" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 msgid "Trim Start at Edit Point" msgstr "Beskär början vid redigeringspunkten" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 msgid "Trim End at Edit Point" msgstr "Beskär slutet vid redigeringspunkten" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 msgid "Align Start" msgstr "Justera början" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 msgid "Align Start Relative" msgstr "Juster början relativt" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 msgid "Align End" msgstr "Justera slutet" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 msgid "Align End Relative" msgstr "Justa slutet relativt" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 msgid "Align Sync" msgstr "Justera synk." -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 msgid "Align Sync Relative" msgstr "Justera synk. relativt" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "" @@ -4463,33 +4473,33 @@ msgid "" "%2 as a new source, or skip it?" msgstr "" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "Avbryt importering" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "Redigerare: kan inte öppna filen \"%1\" (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "Avbryt hela importen" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "Infoga inte" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "Infoga alla" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 #, fuzzy msgid "Sample rate" msgstr "Samplingsfrekvens:" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4497,7 +4507,7 @@ msgstr "" "%1\n" "Denna ljudfils samplingsfrekvens matchar inte sessionens!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "Infoga ändÃ¥" @@ -4535,32 +4545,32 @@ msgstr "kopiera tempomarkör" msgid "move tempo mark" msgstr "flytta tempomarkör" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "ändra intoningslängd" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "ändra uttoningslängd" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "flytta markör" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 #, fuzzy msgid "programming_error: %1" msgstr "programmeringsfel: " -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "ny omfÃ¥ngsmarkör" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 #, fuzzy msgid "rubberband selection" msgstr "omfÃ¥ngsmarkering" @@ -4640,7 +4650,7 @@ msgid "Sharing Solo?" msgstr "" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "Spela in" @@ -4720,7 +4730,7 @@ msgid "end" msgstr "Slut" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "" @@ -4728,7 +4738,7 @@ msgstr "" msgid "range" msgstr "omfÃ¥ng" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "ta bort markör" @@ -4813,8 +4823,8 @@ msgstr "Byt namn pÃ¥ markör" msgid "Rename Range" msgstr "Byt namn pÃ¥ omfÃ¥ng" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "Döp om" @@ -4963,7 +4973,7 @@ msgstr "Placera underst" msgid "Rename Region" msgstr "Byt namn pÃ¥ region" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 msgid "New name:" msgstr "Nytt namn:" @@ -5140,7 +5150,7 @@ msgstr "" "(Detta är en destruktiv handling och kan ej Ã¥ngras)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "Nej, gör ingenting." @@ -5357,11 +5367,11 @@ msgstr "A" msgid "close region gaps" msgstr "dessa regioner" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "" -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5375,7 +5385,7 @@ msgstr "" msgid "tracks" msgstr "spÃ¥r" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 #, fuzzy msgid "track" msgstr "spÃ¥r" @@ -5384,7 +5394,7 @@ msgstr "spÃ¥r" msgid "busses" msgstr "buss(ar)" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 #, fuzzy msgid "bus" msgstr "buss(ar)" @@ -5428,7 +5438,7 @@ msgstr "" msgid "Yes, remove them." msgstr "Ja, ta bort den." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "Ja, ta bort den." @@ -5505,7 +5515,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "V" @@ -5524,8 +5534,9 @@ msgstr "GÃ¥ till" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "" @@ -5601,7 +5612,8 @@ msgstr "SpÃ¥r/Bussar" msgid "Track/Bus visible ?" msgstr "SpÃ¥r/Bussar" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "" @@ -5610,7 +5622,7 @@ msgstr "" msgid "Track/Bus active ?" msgstr "SpÃ¥r/Bussar" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 msgid "I" msgstr "" @@ -5619,7 +5631,7 @@ msgstr "" msgid "MIDI input enabled" msgstr "%1-ingÃ¥ng" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "H" @@ -5634,7 +5646,7 @@ msgstr "Inspelningsläge" msgid "Muted" msgstr "Tysta" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "" @@ -5647,7 +5659,7 @@ msgstr "Solad..." msgid "SI" msgstr "" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 #, fuzzy msgid "Solo Isolated" msgstr "Solo-säker" @@ -5940,141 +5952,145 @@ msgid "192000Hz" msgstr "" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "Ingen" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "Triangulär" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "Rektangulär" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "Formad" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "Upp-/inspelning pÃ¥ 1 enhet" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "Upp-/inspelning pÃ¥ 2 enheter" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "Uppspelning endast" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "Inspelning endast" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "Drivrutin:" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 #, fuzzy msgid "Audio Interface:" msgstr "Enhet:" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "Samplingsfrekvens:" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "Buffertstorlek:" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "Antal buffertar:" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "Ungefärlig fördröjning:" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 msgid "Audio mode:" msgstr "Ljudläge:" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "Ignorera" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "Klient-timeout" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "Antal portar:" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "MIDI-drivrutin:" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 #, fuzzy msgid "Dither:" msgstr "Dither-typ" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "Ingen JACK-server hittades. Installera JACK och starta om" -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "IngÃ¥ngsenhet:" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "UtgÃ¥ngsenhet:" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "HÃ¥rdvarans ingÃ¥ngsfördröjning" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "samplingar" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "HÃ¥rdvarans utgÃ¥ngsfördröjning" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "Enhet" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "Avancerat" -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "kan ej öppna JACKs rc-fil %1 för att lagra parametrar" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -6091,32 +6107,32 @@ msgid "" "%1 and choose the relevant device then." msgstr "" -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 #, fuzzy msgid "JACK appears to be missing from the %1 bundle" msgstr "JACK tycks saknas frÃ¥n Ardours bundle" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "" -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "" -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "AudioSetup-värde för %1 saknar data" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "konfigurationsfilerna anger en JACK-serversökväg som inte existerar" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "Kanaler:" @@ -6279,9 +6295,9 @@ msgid "Folder:" msgstr "Mapp:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "Bläddra" @@ -6414,6 +6430,13 @@ msgstr "Platser" msgid "Broadcast Wave options" msgstr "" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "" +"Vill du verkligen ta bort spÃ¥r \"%1\" ?\n" +"(detta kan inte Ã¥ngras)" + #: export_preset_selector.cc:28 #, fuzzy msgid "Preset" @@ -6425,6 +6448,13 @@ msgid "" "Perhaps it references a format that has been removed?" msgstr "" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "" +"Vill du verkligen ta bort spÃ¥r \"%1\" ?\n" +"(detta kan inte Ã¥ngras)" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "Visa tider som:" @@ -6437,36 +6467,49 @@ msgstr "" msgid "Range" msgstr "OmfÃ¥ng" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "programmeringsfel: " + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +msgid "%1" +msgstr "" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "Automatiseringsläge för reglage" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "Automatiseringstyp för reglage" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "" -#: gain_meter.cc:334 -msgid "-Inf" -msgstr "" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "U" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "B" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "S" @@ -6479,7 +6522,7 @@ msgstr "Förinställningar" msgid "Switches" msgstr "Tonhöjdsändring" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "Kontroller" @@ -6510,71 +6553,71 @@ msgstr "LjudspÃ¥rsanslutningar" msgid "MIDI Connection Manager" msgstr "MIDI-spÃ¥ranslutningar" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "" -#: group_tabs.cc:306 +#: group_tabs.cc:308 msgid "Selection..." msgstr "Markering..." -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "Inspelningsläge" -#: group_tabs.cc:308 +#: group_tabs.cc:310 msgid "Soloed..." msgstr "Solad..." -#: group_tabs.cc:314 +#: group_tabs.cc:316 #, fuzzy msgid "Create New Group ..." msgstr "Ny grupp..." -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "" -#: group_tabs.cc:318 +#: group_tabs.cc:320 #, fuzzy msgid "Edit Group..." msgstr "Redigera Grupp" -#: group_tabs.cc:319 +#: group_tabs.cc:321 #, fuzzy msgid "Collect Group" msgstr "Samla" -#: group_tabs.cc:320 +#: group_tabs.cc:322 #, fuzzy msgid "Remove Group" msgstr "Ruttgrupp" -#: group_tabs.cc:323 +#: group_tabs.cc:325 #, fuzzy msgid "Remove Subgroup Bus" msgstr "Lägg till grupp" -#: group_tabs.cc:325 +#: group_tabs.cc:327 #, fuzzy msgid "Add New Subgroup Bus" msgstr "Lägg till grupp" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "" -#: group_tabs.cc:328 +#: group_tabs.cc:330 #, fuzzy msgid "Add New Aux Bus (post-fader)" msgstr "Rensa (efterreglage)" -#: group_tabs.cc:334 +#: group_tabs.cc:336 #, fuzzy msgid "Enable All Groups" msgstr "Avaktivera alla insticksprogram" -#: group_tabs.cc:335 +#: group_tabs.cc:337 #, fuzzy msgid "Disable All Groups" msgstr "Avaktivera alla" @@ -6684,11 +6727,11 @@ msgstr "" msgid "I/O selector" msgstr "Invertera markeringen" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "%1-ingÃ¥ng" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "%1-utgÃ¥ng" @@ -6766,7 +6809,7 @@ msgstr[1] "sampling" msgid "Reset" msgstr "Nollställ" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 #, fuzzy msgid "programming error: %1 (%2)" msgstr "programmeringsfel: " @@ -6797,68 +6840,68 @@ msgstr "Kompositör" msgid "Pre-Emphasis" msgstr "" -#: location_ui.cc:310 +#: location_ui.cc:314 #, fuzzy msgid "Remove this range" msgstr "ställ in inslagsomfÃ¥ng" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 #, fuzzy msgid "Set range start from playhead location" msgstr "Placera omfÃ¥ngsmarkör frÃ¥n startmarkören" -#: location_ui.cc:316 +#: location_ui.cc:320 #, fuzzy msgid "Set range end from playhead location" msgstr "Sätt omfÃ¥ng frÃ¥n omfÃ¥ngsmarkering" -#: location_ui.cc:320 +#: location_ui.cc:324 #, fuzzy msgid "Remove this marker" msgstr "flytta markör" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 #, fuzzy msgid "Set marker time from playhead location" msgstr "Placera markör frÃ¥n startmarkören" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "" -#: location_ui.cc:708 +#: location_ui.cc:720 msgid "New Marker" msgstr "Ny markör" -#: location_ui.cc:709 +#: location_ui.cc:721 msgid "New Range" msgstr "Nytt omfÃ¥ng" -#: location_ui.cc:722 +#: location_ui.cc:734 msgid "Loop/Punch Ranges" msgstr "Loop-/inslagsomfÃ¥ng" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "Markörer (inkl CD-index)" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "OmfÃ¥ng (inkl CD-spÃ¥rsomfÃ¥ng)" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "lägg till omfÃ¥ngsmarkör" @@ -6935,22 +6978,22 @@ msgid "" "session at this time, because we would lose your connection information.\n" msgstr "" -#: main.cc:491 +#: main.cc:487 #, fuzzy msgid " (built using " msgstr "" "\n" " (kompilerat med " -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr " och GCC version " -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "" -#: main.cc:505 +#: main.cc:501 #, fuzzy msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " @@ -6958,27 +7001,32 @@ msgid "" msgstr "" "Vissa delar Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel Baker" -#: main.cc:507 +#: main.cc:503 msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "" -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "" -#: main.cc:519 +#: main.cc:513 +#, fuzzy +msgid "could not initialize %1." +msgstr "kunde inte initialisera Ardour." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "" -#: main.cc:525 +#: main.cc:528 #, fuzzy msgid "could not create %1 GUI" msgstr "kunde inte skapa ARDOUR GUI" @@ -6988,7 +7036,7 @@ msgstr "kunde inte skapa ARDOUR GUI" msgid "Display delta to edit cursor" msgstr "Primär klockdelta till redigeringspunkten" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 msgid "MarkerText" msgstr "MarkörText" @@ -7527,7 +7575,7 @@ msgstr "Klicka för att välja ingÃ¥ngar" msgid "Missing Plugins" msgstr "Insticksprogram" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "" @@ -7608,234 +7656,247 @@ msgstr "" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "pre" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 #, fuzzy msgid "Comments" msgstr "Kommentar" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "" -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 #, fuzzy msgid "Hide this mixer strip" msgstr "Dölj detta spÃ¥r" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 #, fuzzy msgid "Click to select metering point" msgstr "Välj nivÃ¥mätningskälla" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "ni" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "lÃ¥s" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 msgid "iso" msgstr "" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 msgid "Mix group" msgstr "Mixgrupp" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 #, fuzzy msgid "Phase Invert" msgstr "Invertera" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 #, fuzzy msgid "Solo Safe" msgstr "Solo-säker" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "Grupp" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 #, fuzzy msgid "Meter Point" msgstr "NivÃ¥mätning" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 #, fuzzy msgid "Enable/Disable MIDI input" msgstr "SlÃ¥ pÃ¥/av audio-klick" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 #, fuzzy msgid "" "Aux\n" "Sends" msgstr "Skicka MTC" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 #, fuzzy msgid "Snd" msgstr "Slut" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "Inte ansluten till JACK - in/ut-ändringar är inte möjliga" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 #, fuzzy msgid "Disconnected" msgstr "frÃ¥nkopplad" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 msgid "*Comments*" msgstr "*Kommentarer" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 msgid "Cmt" msgstr "Kmt" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "*Kmt*" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "Klicka för att lägga till/redigera kommentarer" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr ": kommentar" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 #, fuzzy msgid "Comments..." msgstr "Kommentarer" -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 msgid "Save As Template..." msgstr "Spara som spÃ¥rmall..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "Aktiv" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "Justera fördröjning..." -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "Skydda mot denormals" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 msgid "Remote Control ID..." msgstr "Fjärr-ID..." -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 #, fuzzy msgid "in" msgstr "volym" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "post" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 #, fuzzy msgid "out" msgstr "Om" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "egen" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 #, fuzzy msgid "pr" msgstr "pre" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 #, fuzzy msgid "po" msgstr "post" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 #, fuzzy msgid "o" msgstr "klar" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 msgid "D" msgstr "" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 #, fuzzy msgid "i" msgstr "volym" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 #, fuzzy msgid "Pre-fader" msgstr "Före-nivÃ¥reglage" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 #, fuzzy msgid "Post-fader" msgstr "Efter-nivÃ¥reglage" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "Kanaler: %1" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "hittade inte spÃ¥rvisningslisteobjekt för omdöpt remsor!" @@ -7844,10 +7905,68 @@ msgstr "hittade inte spÃ¥rvisningslisteobjekt för omdöpt remsor!" msgid "-all-" msgstr "-alla-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "Remsor" +#: meter_strip.cc:764 +#, fuzzy +msgid "Variable height" +msgstr "höjden" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "kort" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +msgid "VU" +msgstr "" + #: monitor_section.cc:62 msgid "SiP" msgstr "" @@ -8231,7 +8350,7 @@ msgstr "" msgid "Panner (2D)" msgstr "Panorerare" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "FörbigÃ¥" @@ -8410,7 +8529,7 @@ msgstr "Kategori" msgid "Eh? LADSPA plugins don't have editors!" msgstr "" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " @@ -8426,7 +8545,7 @@ msgstr "" "okänd typ av editor-levererande insticksprogram (N.B.: inget VST-stöd i " "denna version av ardour)" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " @@ -8435,47 +8554,47 @@ msgstr "" "okänd typ av editor-levererande insticksprogram (N.B.: inget VST-stöd i " "denna version av ardour)" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "Lägg till" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 #, fuzzy msgid "Description" msgstr "Riktning:" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 msgid "Plugin analysis" msgstr "Analys av insticksprogram" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 #, fuzzy msgid "Save a new preset" msgstr "Namnge ny förinställning" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" @@ -8483,30 +8602,42 @@ msgstr "" "Tryck här för att tillÃ¥ta att insticksprogrammet mottar tangentbordsgenvägar " "som %1 vanligtvis skulle använda" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "Tryck för att slÃ¥ pÃ¥/av insticksprogrammet" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 #, fuzzy msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "fördröjning (%1 samplingar)" msgstr[1] "fördröjning (%1 samplingar)" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "fördröjning (%1 msek)" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 msgid "Edit Latency" msgstr "Ställ in fördröjning" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "Förinställningen %1 hittades ej" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "Tryck här för att Ã¥terställa normala tangentbordsgenvägar" @@ -8622,77 +8753,78 @@ msgstr "Markering..." msgid "Port Insert " msgstr "Ny Anslutningspunkt" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 msgid "Sources" msgstr "Källor" -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "Destinationer" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "Lägg till %s-%s" # -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, c-format msgid "Rename '%s'..." msgstr "Byt namn pÃ¥ '%s'..." -#: port_matrix.cc:451 +#: port_matrix.cc:472 msgid "Remove all" msgstr "Ta bort alla" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, fuzzy, c-format msgid "%s all" msgstr "Nollställ alla" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "Uppdatera" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "Visa enskilda portar" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "" -#: port_matrix.cc:702 +#: port_matrix.cc:723 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." msgstr "" -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "" -#: port_matrix.cc:728 +#: port_matrix.cc:749 msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "" -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, c-format msgid "Remove '%s'" msgstr "Ta bort '%s'" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, c-format msgid "%s all from '%s'" msgstr "%s alla frÃ¥n '%s'" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 msgid "channel" msgstr "kanal" @@ -8706,103 +8838,103 @@ msgstr "Det finns inga fler JACK-portar tillgängliga" msgid "There are no %1 ports to connect." msgstr "Det finns inga fler JACK-portar tillgängliga" -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 #, fuzzy msgid "Show All Controls" msgstr "msgstr Visa Sändkontroller" -#: processor_box.cc:375 +#: processor_box.cc:376 #, fuzzy msgid "Hide All Controls" msgstr "Göm alla övertoningar" -#: processor_box.cc:464 +#: processor_box.cc:465 #, fuzzy msgid "on" msgstr "klar" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "av" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" msgstr "" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 #, fuzzy msgid "Plugin Incompatibility" msgstr "Kompatibilitet" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" msgstr "" -#: processor_box.cc:1196 +#: processor_box.cc:1209 #, fuzzy msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "%1-ingÃ¥ng" msgstr[1] "%1-ingÃ¥ng" -#: processor_box.cc:1200 +#: processor_box.cc:1213 #, fuzzy msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" msgstr[0] "%1-ingÃ¥ng" msgstr[1] "%1-ingÃ¥ng" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" msgstr "" -#: processor_box.cc:1206 +#: processor_box.cc:1219 msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "" msgstr[1] "" -#: processor_box.cc:1210 +#: processor_box.cc:1223 msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "" msgstr[1] "" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" msgstr "" -#: processor_box.cc:1249 +#: processor_box.cc:1262 #, fuzzy msgid "Cannot set up new send: %1" msgstr "kan ej konfigurera signalhantering för %1" -#: processor_box.cc:1581 +#: processor_box.cc:1594 #, fuzzy msgid "" "You cannot reorder these plugins/sends/inserts\n" @@ -8813,20 +8945,20 @@ msgstr "" "pÃ¥ det sättet eftersom ingÃ¥ngar och\n" "utgÃ¥ngarna inte fungerar korrekt." -#: processor_box.cc:1765 +#: processor_box.cc:1778 #, fuzzy msgid "Rename Processor" msgstr "Döp om spÃ¥r" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 #, fuzzy msgid "" "Copying the set of processors on the clipboard failed,\n" @@ -8837,7 +8969,7 @@ msgstr "" "förmodligen pÃ¥ grund av att I/O-konfiguration av insticksprogrammen\n" "inte kunde matcha konfiurationen av detta spÃ¥ret." -#: processor_box.cc:1987 +#: processor_box.cc:2000 #, fuzzy msgid "" "Do you really want to remove all processors from %1?\n" @@ -8846,16 +8978,16 @@ msgstr "" "Vill du verkligen radera alla omdirigeringar frÃ¥n denna bussen?\n" "(detta kan inte Ã¥ngras)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "Ja, ta bort alla" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 #, fuzzy msgid "Remove processors" msgstr "%1 processor(er)" -#: processor_box.cc:2008 +#: processor_box.cc:2021 #, fuzzy msgid "" "Do you really want to remove all pre-fader processors from %1?\n" @@ -8864,7 +8996,7 @@ msgstr "" "Vill du verkligen radera alla omdirigeringar frÃ¥n denna bussen?\n" "(detta kan inte Ã¥ngras)" -#: processor_box.cc:2011 +#: processor_box.cc:2024 #, fuzzy msgid "" "Do you really want to remove all post-fader processors from %1?\n" @@ -8873,53 +9005,53 @@ msgstr "" "Vill du verkligen radera alla omdirigeringar frÃ¥n denna bussen?\n" "(detta kan inte Ã¥ngras)" -#: processor_box.cc:2198 +#: processor_box.cc:2200 msgid "New Plugin" msgstr "Nytt insticksprogram" -#: processor_box.cc:2201 +#: processor_box.cc:2203 msgid "New Insert" msgstr "Ny Anslutningspunkt" -#: processor_box.cc:2204 +#: processor_box.cc:2206 #, fuzzy msgid "New External Send ..." msgstr "Ny auxilliär sänd..." -#: processor_box.cc:2208 +#: processor_box.cc:2210 msgid "New Aux Send ..." msgstr "Ny auxilliär sänd..." -#: processor_box.cc:2212 +#: processor_box.cc:2214 msgid "Clear (all)" msgstr "Rensa (alla)" -#: processor_box.cc:2214 +#: processor_box.cc:2216 msgid "Clear (pre-fader)" msgstr "Rensa (förreglage)" -#: processor_box.cc:2216 +#: processor_box.cc:2218 msgid "Clear (post-fader)" msgstr "Rensa (efterreglage)" -#: processor_box.cc:2242 +#: processor_box.cc:2244 msgid "Activate All" msgstr "Aktivera alla" -#: processor_box.cc:2244 +#: processor_box.cc:2246 #, fuzzy msgid "Deactivate All" msgstr "Avaktivera alla" -#: processor_box.cc:2246 +#: processor_box.cc:2248 msgid "A/B Plugins" msgstr "A/B:a insticksprogram" -#: processor_box.cc:2255 +#: processor_box.cc:2257 msgid "Edit with generic controls..." msgstr "" -#: processor_box.cc:2531 +#: processor_box.cc:2557 #, fuzzy msgid "%1: %2 (by %3)" msgstr "ardour: %1: %2 (av %3)" @@ -9083,7 +9215,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -9176,7 +9308,7 @@ msgstr "" msgid "Click gain level" msgstr "Klickljudfil" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Automatisering" @@ -9359,96 +9491,100 @@ msgstr "Flytta automation tillsammans med regioner" msgid "Show meters on tracks in the editor" msgstr "Visa nivÃ¥mätning vid spÃ¥ren i redigeraren" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 #, fuzzy msgid "whenever they overlap in time" msgstr "förkorta den nya överlappande noten" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "Gummibandsmarkeringen fäster mot rutnätet" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 msgid "Show waveforms in regions" msgstr "Visa vÃ¥gformer i regioner" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 #, fuzzy msgid "Show gain envelopes in audio regions" msgstr "Visa vÃ¥gformer i regioner" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 #, fuzzy msgid "in all modes" msgstr "Normalt läge" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 msgid "Waveform scale" msgstr "VÃ¥gformsskala" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "linjär" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "logaritmisk" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 msgid "Waveform shape" msgstr "VÃ¥gformsutseende" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 msgid "traditional" msgstr "traditionell" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 msgid "rectified" msgstr "korrigerad" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "Visa vÃ¥gformer vid inspelning" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "Visa zoom-verktygsraden" -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "Färglägg regioner med spÃ¥rets färg" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 #, fuzzy msgid "Synchronise editor and mixer track order" msgstr "Matcha redigerare och mixers spÃ¥rordning" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 #, fuzzy msgid "Synchronise editor and mixer selection" msgstr "Matcha redigerare och mixers spÃ¥rordning" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 msgid "Name new markers" msgstr "Namnge nya markörer" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9456,346 +9592,431 @@ msgid "" "You can always rename markers by right-clicking on them" msgstr "" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "Buffertar" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 #, fuzzy msgid "Record monitoring handled by" msgstr "Medhörning hanteras av" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 msgid "ardour" msgstr "" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 msgid "audio hardware" msgstr "ljudhÃ¥rdvaran" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 msgid "Tape machine mode" msgstr "Bandmaskingläge" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "SpÃ¥r- och bussanslutning" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "Anslut master/medhörningsbussar automatiskt" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 msgid "Connect track inputs" msgstr "Anslut spÃ¥ringÃ¥ngar" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 msgid "automatically to physical inputs" msgstr "automatiskt till fysiska ingÃ¥ngar" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "manuellt" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "Anslut spÃ¥r- och bussutgÃ¥ngar" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 msgid "automatically to physical outputs" msgstr "automatiskt till fysiska utgÃ¥ngar" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 msgid "automatically to master bus" msgstr "automatiskt till master-bussen" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 msgid "Denormals" msgstr "" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "Använd DC-bias för att skydda mot denormals" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "Processorhantering" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "ingen processorhantering" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "använd FlushToZero" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "använd DenormalsAreZero" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 #, fuzzy msgid "use FlushToZero and DenormalsAreZero" msgstr "använd FlushToZero och DenormalsAreZerO" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 #, fuzzy msgid "Silence plugins when the transport is stopped" msgstr "Stoppa insticksprogram vid stopp" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "Aktivera nya insticksprogram automatiskt" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "Analysera ljudfiler automatiskt" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "Ã…terskapa saknade regioners kanaler" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "Solo / tysta" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 #, fuzzy msgid "Solo-in-place mute cut (dB)" msgstr "Tystningströskel för solo (dB)" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "Solokontroller är avlyssningskontroller" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 msgid "Listen Position" msgstr "Avlyssningsposition" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 #, fuzzy msgid "after-fader (AFL)" msgstr "efter volymreglage" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 #, fuzzy msgid "pre-fader (PFL)" msgstr "före volymreglare" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "PFL-signaler kommer frÃ¥n" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 msgid "before pre-fader processors" msgstr "innan för-nivÃ¥reglageprocessorer" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "för-nivÃ¥reglage men efter för-nivÃ¥reglageprocessorer" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "AFL-signaler kommer frÃ¥n" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 #, fuzzy msgid "immediately post-fader" msgstr "Rensa (efterreglage)" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 #, fuzzy msgid "after post-fader processors (before pan)" msgstr "efter efter-nivÃ¥reglageprocessorer" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "Avskild solo" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "Visa solotystning" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "Solo Ã¥sidosätter tystning" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "Standardinställningar för spÃ¥r-/busstystning" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "Tystning pÃ¥verkar för-reglagesändningar" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "Tystning pÃ¥verkar efter-reglagesändningar" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 msgid "Mute affects control outputs" msgstr "Tystning pÃ¥verkar kontrollutgÃ¥ngar" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr "Tystning pÃ¥verkar huvudutgÃ¥ngarna" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "Skicka MIDI-tidskod" -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "Lyd MIDI Machine Control-kommandon" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "Skicka MIDI Machine Control-kommandon" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 msgid "Send MIDI control feedback" msgstr "Skicka MIDI-kontrollgensvar" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "Inkommande MMC-enhets-ID" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "UtgÃ¥ende MMC-enhets-ID" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "Initiell programändring" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 msgid "Sound MIDI notes as they are selected" msgstr "" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 #, fuzzy msgid "User interaction" msgstr "RegionsÃ¥tgärder" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "Tangentbord" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 msgid "Control surface remote ID" msgstr "Kontrollytans fjärr-ID" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "användardefinierat" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "följer mixerns ordning" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "följer redigerarens ordning" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 #, fuzzy msgid "Preferences|GUI" msgstr "Inställningar" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 #, fuzzy msgid "Mixer Strip" msgstr "Mixer" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 #, fuzzy msgid "Use narrow strips in the mixer by default" msgstr "Använd smala mixerremsor" -#: rc_option_editor.cc:1898 -msgid "Meter hold time" +#: rc_option_editor.cc:1906 +#, fuzzy +msgid "Peak hold time" msgstr "HÃ¥lltid" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 msgid "short" msgstr "kort" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "lÃ¥ng" -#: rc_option_editor.cc:1912 -msgid "Meter fall-off" +#: rc_option_editor.cc:1920 +#, fuzzy +msgid "DPM fall-off" msgstr "Nedfall" -#: rc_option_editor.cc:1918 -msgid "slowest" -msgstr "lÃ¥ngsammast" +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" +msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" -msgstr "lÃ¥ngsam" +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" +msgstr "" -#: rc_option_editor.cc:1921 -msgid "fast" -msgstr "snabb" +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" -#: rc_option_editor.cc:1922 -msgid "faster" -msgstr "snabbare" +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" -#: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "snabbast" +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" + +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 +#, fuzzy +msgid "Peak threshold [dBFS]" +msgstr "Topptröskel" + +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" + +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -9806,11 +10027,11 @@ msgstr "avlyssna denna region" msgid "Position:" msgstr "LÃ¥s position" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "Slut:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "Längd:" @@ -9834,27 +10055,27 @@ msgstr "Källor:" msgid "Source:" msgstr "Källa:" -#: region_editor.cc:167 +#: region_editor.cc:166 #, fuzzy msgid "Region '%1'" msgstr "Regioner" -#: region_editor.cc:274 +#: region_editor.cc:273 #, fuzzy msgid "change region start position" msgstr "Ställ in regionssynk.-punkt" -#: region_editor.cc:290 +#: region_editor.cc:289 #, fuzzy msgid "change region end position" msgstr "Ställ in regionssynk.-punkt" -#: region_editor.cc:310 +#: region_editor.cc:309 #, fuzzy msgid "change region length" msgstr "ändra intoningslängd" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 #, fuzzy msgid "change region sync point" msgstr "Ställ in regionssynk.-punkt" @@ -10056,340 +10277,340 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "" -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "SpÃ¥r/Bussar" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "IngÃ¥ngar" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "UtgÃ¥ngar" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "Insticksprogram, anslutningspunkter & sändningar" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "ruttvisningslisteobjekt för omdöpt rutt hittades inte!" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "Uppspelningsfördröjning: % samplingar" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "INGET SPÃ…R" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 msgid "No Track or Bus Selected" msgstr "Inget spÃ¥r eller buss vald" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "Spela in" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 msgid "Route Group" msgstr "Ruttgrupp" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 #, fuzzy msgid "MIDI Controllers and Automation" msgstr "Rita volymautomatisering" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 msgid "Show All Automation" msgstr "Visa all automatisering" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 msgid "Show Existing Automation" msgstr "Visa existerande automatisering" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 msgid "Hide All Automation" msgstr "Göm all automatisering" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 #, fuzzy msgid "Processor automation" msgstr "rensa automatisering" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 msgid "Color..." msgstr "Färg..." -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "Överlappande" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "I trappa" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 msgid "Layers" msgstr "Lager" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 #, fuzzy msgid "Automatic (based on I/O connections)" msgstr "Anslut automatiskt utgÃ¥ngar" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 #, fuzzy msgid "(Currently: Existing Material)" msgstr "Efter existerande material" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 #, fuzzy msgid "(Currently: Capture Time)" msgstr "Efter inspelningstiden" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 msgid "Align With Existing Material" msgstr "Efter existerande material" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 msgid "Align With Capture Time" msgstr "Efter inspelningstiden" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 msgid "Alignment" msgstr "Justera" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 msgid "Normal Mode" msgstr "Normalt" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 msgid "Tape Mode" msgstr "Bandläge" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 msgid "Non-Layered Mode" msgstr "Ej i lager" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Spellista" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 #, fuzzy msgid "Rename Playlist" msgstr "Spellistans namn" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 #, fuzzy msgid "New name for playlist:" msgstr "Spellistans namn" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 #, fuzzy msgid "New Copy Playlist" msgstr "Spellistans namn" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 #, fuzzy msgid "Name for new playlist:" msgstr "Spellistans namn" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 #, fuzzy msgid "New Playlist" msgstr "Spellista" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 #, fuzzy msgid "You cannot create a track with that name as it is reserved for %1" msgstr "Du kan inte lägga till ett spÃ¥r utan en session laddad." -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 msgid "New Copy..." msgstr "Ny kopia..." -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 #, fuzzy msgid "New Take" msgstr "Ny markör" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 #, fuzzy msgid "Copy Take" msgstr "Kopiera" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "Rensa aktuell" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 #, fuzzy msgid "Select From All..." msgstr "Välj frÃ¥n alla..." -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 #, fuzzy msgid "Remove \"%1\"" msgstr "Ta bort '%s'" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 #, fuzzy msgid "After-fade listen (AFL)" msgstr "efter volymreglage" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 #, fuzzy msgid "Pre-fade listen (PFL)" msgstr "före volymreglare" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "" -#: route_ui.cc:114 +#: route_ui.cc:119 msgid "Mute this track" msgstr "Tysta detta spÃ¥r" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "Tysta andra (icke-solade) spÃ¥r" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "" -#: route_ui.cc:133 +#: route_ui.cc:138 #, fuzzy msgid "Monitor input" msgstr "Medhörning" -#: route_ui.cc:139 +#: route_ui.cc:144 #, fuzzy msgid "Monitor playback" msgstr "Stanna uppspelning" -#: route_ui.cc:586 +#: route_ui.cc:591 #, fuzzy msgid "Not connected to JACK - cannot engage record" msgstr "Inte ansluten till JACK - in/ut-ändringar är inte möjliga" -#: route_ui.cc:781 +#: route_ui.cc:786 msgid "Step Entry" msgstr "" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "" -#: route_ui.cc:858 +#: route_ui.cc:863 msgid "Assign all tracks and buses (prefader)" msgstr "" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "" -#: route_ui.cc:866 +#: route_ui.cc:871 msgid "Assign all tracks and buses (postfader)" msgstr "" -#: route_ui.cc:870 +#: route_ui.cc:875 #, fuzzy msgid "Assign selected tracks (prefader)" msgstr "till valda spÃ¥r" -#: route_ui.cc:874 +#: route_ui.cc:879 msgid "Assign selected tracks and buses (prefader)" msgstr "" -#: route_ui.cc:877 +#: route_ui.cc:882 #, fuzzy msgid "Assign selected tracks (postfader)" msgstr "Lägg till i valt spÃ¥r" -#: route_ui.cc:881 +#: route_ui.cc:886 msgid "Assign selected tracks and buses (postfader)" msgstr "" -#: route_ui.cc:884 +#: route_ui.cc:889 #, fuzzy msgid "Copy track/bus gains to sends" msgstr "ardour: spÃ¥r/buss-inspektör" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "" -#: route_ui.cc:1206 +#: route_ui.cc:1211 #, fuzzy msgid "Solo Isolate" msgstr "Solo-säker" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "Före-nivÃ¥reglage" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "Efter-nivÃ¥reglage" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "KontrollutgÃ¥ngar" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "HuvudutgÃ¥ngar" -#: route_ui.cc:1385 +#: route_ui.cc:1390 msgid "Color Selection" msgstr "Färgval" -#: route_ui.cc:1472 +#: route_ui.cc:1477 #, fuzzy msgid "" "Do you really want to remove track \"%1\" ?\n" @@ -10402,7 +10623,7 @@ msgstr "" "Du kanske ocksÃ¥ förlorar spellista använd av detta spÃ¥r.\n" "(detta kan inte Ã¥ngras)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 #, fuzzy msgid "" "Do you really want to remove bus \"%1\" ?\n" @@ -10412,65 +10633,65 @@ msgstr "" "Vill du verkligen ta bort buss \"%1\" ?\n" "(detta kan inte Ã¥ngras)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 #, fuzzy msgid "Remove track" msgstr "Ta bort markör" -#: route_ui.cc:1484 +#: route_ui.cc:1489 #, fuzzy msgid "Remove bus" msgstr "Ta bort '%s'" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" msgstr "" -#: route_ui.cc:1515 +#: route_ui.cc:1520 #, fuzzy msgid "Use the new name" msgstr "nytt namn: " -#: route_ui.cc:1516 +#: route_ui.cc:1521 #, fuzzy msgid "Re-edit the name" msgstr "ändra tempo" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "Döp om spÃ¥r" -#: route_ui.cc:1531 +#: route_ui.cc:1536 msgid "Rename Bus" msgstr "Byt namn pÃ¥ buss" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr "-fördröjning" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "" -#: route_ui.cc:1709 +#: route_ui.cc:1714 msgid "Save As Template" msgstr "Spara som spÃ¥rmall" -#: route_ui.cc:1710 +#: route_ui.cc:1715 msgid "Template name:" msgstr "Namn pÃ¥ spÃ¥rmall:" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "Fjärrstyrnings-ID" -#: route_ui.cc:1793 +#: route_ui.cc:1798 msgid "Remote control ID:" msgstr "Fjärr-ID:" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10478,17 +10699,17 @@ msgid "" "The remote control ID of %3 cannot be changed." msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the master bus" msgstr "Skapa master-buss" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the monitor bus" msgstr "Skapa medhörningsbuss" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10499,17 +10720,17 @@ msgid "" "change this%5" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the mixer" msgstr "Remixare" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the editor" msgstr "redigerare" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." @@ -10517,7 +10738,7 @@ msgstr "" "Vänsterklicka för att invertera (fasinvers) kanal %1 i detta spÃ¥r. " "Högerklicka för att visa menyn" -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "" @@ -11030,53 +11251,109 @@ msgstr "Klistra mot takt & slag" msgid "Glue new regions to bars and beats" msgstr "Klistra mot takt & slag" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "NivÃ¥mätning" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "Visa alla MIDI-spÃ¥r" + +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "buss(ar)" + +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "Skapa master-buss" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "ändra inspelningsläge" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "+ musknapp" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "Solo / tysta" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "SpÃ¥r/Bussar" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 msgid "as new tracks" msgstr "som nya spÃ¥r" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 msgid "to selected tracks" msgstr "till valda spÃ¥r" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to region list" msgstr "till regionslistan" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "as new tape tracks" msgstr "som nya bandspÃ¥r" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 #, fuzzy msgid "programming error: unknown import mode string %1" msgstr "programmeringsfel: omöjlig kontroll-metod" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 msgid "Auto-play" msgstr "Spela autom." -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 #, fuzzy msgid "Sound File Information" msgstr "Information" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 msgid "Timestamp:" msgstr "" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "Taggar:" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "Kunde inte läsa fil: %1 (%2)." @@ -11105,11 +11382,11 @@ msgstr "Ljudfiler" msgid "MIDI files" msgstr "MIDI-filer" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "Alla filer" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "Bläddra" @@ -11117,186 +11394,174 @@ msgstr "Bläddra" msgid "Paths" msgstr "Sökvägar" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "Sök taggar" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 #, fuzzy msgid "Sort:" msgstr "Sortera" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 #, fuzzy msgid "Longest" msgstr "LÃ¥ng" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 #, fuzzy msgid "Shortest" msgstr "Kort" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 #, fuzzy msgid "Newest" msgstr "LÃ¥ngsammast" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 #, fuzzy msgid "Least downloaded" msgstr "Ladda ner" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 msgid "ID" msgstr "" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 #, fuzzy msgid "Filename" msgstr "Döp om" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 #, fuzzy msgid "Duration" msgstr "Varaktighet (sekunder)" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 #, fuzzy msgid "Size" msgstr "Max storlek" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 #, fuzzy msgid "Samplerate" msgstr "Samplingsfrekvens:" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "Sök i Freesound" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "" -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 #, fuzzy msgid "GB" msgstr "GÃ¥ till" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "" - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "ett spÃ¥r per fil" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 #, fuzzy msgid "one track per channel" msgstr "ett spÃ¥r per fil" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 #, fuzzy msgid "sequence files" msgstr "rensade filer" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 #, fuzzy msgid "all files in one track" msgstr "som nya spÃ¥r" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 #, fuzzy msgid "merge files" msgstr "rensade filer" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 #, fuzzy msgid "one region per file" msgstr "ett spÃ¥r per fil" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 #, fuzzy msgid "one region per channel" msgstr "Skapa en region för varje kanal" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 #, fuzzy msgid "all files in one region" msgstr "justera region" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 #, fuzzy msgid "" "One or more of the selected files\n" @@ -11305,58 +11570,58 @@ msgstr "" "En eller flera filer kunde\n" "inte användas av Ardour" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "Kopiera filer till sessionen" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 msgid "file timestamp" msgstr "filens timestamp" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 msgid "edit point" msgstr "redigeringspunkten" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 msgid "playhead" msgstr "startmarkören" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 msgid "session start" msgstr "sessionens start" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "" -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 #, fuzzy msgid "Insert at" msgstr "Infoga vid:" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 #, fuzzy msgid "Mapping" msgstr "Gemensamt" -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 #, fuzzy msgid "Conversion quality" msgstr "Konverteringskvalitet:" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "Bäst" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "Bra" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "Snabb" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "Snabbast" @@ -11455,21 +11720,21 @@ msgstr "Jag vill ha fler alternativ för sessionen" #: startup.cc:194 msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11603,10 +11868,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "Vad vill du göra?" - #: startup.cc:729 msgid "Open" msgstr "Öppna" @@ -11619,84 +11880,84 @@ msgstr "Sessionens namn:" msgid "Create session folder in:" msgstr "Skapa sessionsmappen i:" -#: startup.cc:813 +#: startup.cc:821 msgid "Select folder for session" msgstr "Välj mapp för sessionen" -#: startup.cc:845 +#: startup.cc:853 msgid "Use this template" msgstr "Använd denna mall" -#: startup.cc:848 +#: startup.cc:856 msgid "no template" msgstr "ingen mall" -#: startup.cc:876 +#: startup.cc:884 msgid "Use an existing session as a template:" msgstr "Använd en existerande session som mall:" -#: startup.cc:888 +#: startup.cc:896 msgid "Select template" msgstr "Välj mall" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "Ny session" -#: startup.cc:1068 +#: startup.cc:1077 msgid "Select session file" msgstr "Välj sessionsfil" -#: startup.cc:1084 +#: startup.cc:1093 msgid "Browse:" msgstr "Bläddra:" -#: startup.cc:1093 +#: startup.cc:1102 msgid "Select a session" msgstr "Välj en session" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "kanaler" -#: startup.cc:1135 +#: startup.cc:1145 msgid "Busses" msgstr "Bussar" -#: startup.cc:1136 +#: startup.cc:1146 msgid "Inputs" msgstr "IngÃ¥ngar" -#: startup.cc:1137 +#: startup.cc:1147 msgid "Outputs" msgstr "UtgÃ¥ngar" -#: startup.cc:1145 +#: startup.cc:1155 msgid "Create master bus" msgstr "Skapa master-buss" -#: startup.cc:1155 +#: startup.cc:1165 #, fuzzy msgid "Automatically connect to physical inputs" msgstr "Anslut automatiskt till fysiska ingÃ¥ngar" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "Använd endast" -#: startup.cc:1215 +#: startup.cc:1225 msgid "Automatically connect outputs" msgstr "Anslut automatiskt utgÃ¥ngar" -#: startup.cc:1237 +#: startup.cc:1247 msgid "... to master bus" msgstr "...till master-bussen" -#: startup.cc:1247 +#: startup.cc:1257 msgid "... to physical outputs" msgstr "...till fysiska utgÃ¥ngar" -#: startup.cc:1297 +#: startup.cc:1307 msgid "Advanced Session Options" msgstr "Avancerade sessionsalternativ" @@ -12424,21 +12685,21 @@ msgstr "" msgid "bad XPM header %1" msgstr "" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "saknar RGBA-stil för \"%1\"" -#: utils.cc:544 +#: utils.cc:591 #, fuzzy msgid "cannot find XPM file for %1" msgstr "kan inte hitta bilder för reglageräcke" -#: utils.cc:570 +#: utils.cc:617 #, fuzzy msgid "cannot find icon image for %1 using %2" msgstr "kan inte hitta bilder för reglageräcke" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "" @@ -12446,85 +12707,86 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 #, fuzzy msgid "Set Video Track" msgstr "Lägg till spÃ¥r" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 #, fuzzy msgid "Launch External Video Monitor" msgstr "Extern medhörning" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 #, fuzzy msgid "Video files" msgstr "Ljudfiler" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 #, fuzzy msgid "Video Information" msgstr "Information" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 #, fuzzy msgid "Start:" msgstr "Början:" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 #, fuzzy msgid "Frame rate:" msgstr "Samplingsfrekvens:" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 msgid "Export Successful: %1" msgstr "" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -#, fuzzy -msgid "Failed to set session-framerate: " -msgstr "Kopiera en fil till sessionsmappen" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12532,18 +12794,18 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 #, fuzzy msgid "Video Monitor: File Not Found." msgstr "Medhörning" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12553,376 +12815,384 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 #, fuzzy msgid "Transcode/Import Video File " msgstr "Exportera till ljudfil(er)..." -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 #, fuzzy msgid "Output File:" msgstr "UtgÃ¥ngsenhet:" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "Höjd" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 #, fuzzy msgid "File Information" msgstr "Information" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 #, fuzzy msgid "Duration:" msgstr "Varaktighet (sekunder)" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 msgid "??" msgstr "" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 #, fuzzy msgid "Import Settings" msgstr "Alternativ" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 #, fuzzy msgid "Import/Transcode Video to Session" msgstr "Importera frÃ¥n session" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 #, fuzzy msgid "Original Width" msgstr "Ursprunglig position" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 #, fuzzy msgid "Extract Audio:" msgstr "Exportera session" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 #, fuzzy msgid "Extracting Audio.." msgstr "Lägg till ljudfil" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 msgid "Transcoding Failed." msgstr "" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 #, fuzzy msgid "Save Transcoded Video File" msgstr "Exportera till ljudfil(er)..." -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 msgid "Server Docroot:" msgstr "" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 #, fuzzy msgid "Listen Port:" msgstr "Avlyssningsposition" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 #, fuzzy msgid "Cache Size:" msgstr "Max storlek" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 msgid "Confirm Overwrite" msgstr "" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 #, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "Filen existerar redan, vill du skriva över den?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 #, fuzzy msgid "Cannot create video folder \"%1\" (%2)" msgstr "kan inte bli ny processgruppledare (%1)" -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 #, fuzzy msgid "Export Video File " msgstr "Exportera till ljudfil(er)..." -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 #, fuzzy msgid "Video:" msgstr "Filstart:" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "Normalisera till" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 #, fuzzy msgid "Deinterlace" msgstr "intern" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 #, fuzzy msgid "Include Session Metadata" msgstr "Redigera sessionens metadata" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 #, fuzzy msgid "Output:" msgstr "UtgÃ¥ngar" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 #, fuzzy msgid "Input:" msgstr "IngÃ¥ngar" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 #, fuzzy msgid "Audio:" msgstr "LjudspÃ¥r" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 #, fuzzy msgid "Master Bus" msgstr "Skapa master-buss" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 #, fuzzy msgid "Settings:" msgstr "Destinationer" -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 #, fuzzy msgid "Range:" msgstr "OmfÃ¥ng" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 #, fuzzy msgid "Preset:" msgstr "Ny förinställning" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 #, fuzzy msgid "Video Codec:" msgstr "Mapp:" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 #, fuzzy msgid "Video KBit/s:" msgstr "Filstart:" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 #, fuzzy msgid "Audio Codec:" msgstr "Ljudläge:" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 #, fuzzy msgid "Audio KBit/s:" msgstr "Ljudfiler" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 #, fuzzy msgid "Audio Samplerate:" msgstr "Samplingsfrekvens:" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "Normalisera värden" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 #, fuzzy msgid "Exporting audio" msgstr "Exportera session" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:437 #, fuzzy -msgid "Exporting Audio.." +msgid "Exporting Audio..." msgstr "Exportera session" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." +#: export_video_dialog.cc:562 +msgid "Encoding Video..." msgstr "" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 msgid "Transcoding failed." msgstr "" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 #, fuzzy msgid "Save Exported Video File" msgstr "Exportera till ljudfil(er)..." @@ -12940,33 +13210,37 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" -"\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" -"\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#~ msgid "slowest" +#~ msgstr "lÃ¥ngsammast" + +#~ msgid "slow" +#~ msgstr "lÃ¥ngsam" + +#~ msgid "fast" +#~ msgstr "snabb" + +#~ msgid "faster" +#~ msgstr "snabbare" + +#~ msgid "fastest" +#~ msgstr "snabbast" + +#~ msgid "What would you like to do ?" +#~ msgstr "Vad vill du göra?" + +#, fuzzy +#~ msgid "Failed to set session-framerate: " +#~ msgstr "Kopiera en fil till sessionsmappen" + #~ msgid "Connect" #~ msgstr "Anslut" @@ -15078,9 +15352,6 @@ msgstr "" #~ msgid "solo change" #~ msgstr "ändra solo" -#~ msgid "rec-enable change" -#~ msgstr "ändra inspelningsläge" - #~ msgid "mix group solo change" #~ msgstr "mixgrupp-solo-ändring" @@ -15135,13 +15406,6 @@ msgstr "" #~ msgid "Beats per bar" #~ msgstr "Slag per takt" -#~ msgid "" -#~ "Do you really want to remove track \"%1\" ?\n" -#~ "(cannot be undone)" -#~ msgstr "" -#~ "Vill du verkligen ta bort spÃ¥r \"%1\" ?\n" -#~ "(detta kan inte Ã¥ngras)" - #~ msgid "Add to Region list" #~ msgstr "Lägg till i regionlistan" diff --git a/gtk2_ardour/po/zh.po b/gtk2_ardour/po/zh.po index 13686f0270..292a11b18e 100644 --- a/gtk2_ardour/po/zh.po +++ b/gtk2_ardour/po/zh.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-01-03 08:29-0500\n" "Last-Translator: Rui-huai Zhang \n" "Language-Team: zrhzrh \n" @@ -373,7 +373,7 @@ msgstr "%1 èœå•å®šä¹‰æ–‡ä»¶æœªæ‰¾åˆ°" msgid "%1 will not work without a valid ardour.menus file" msgstr "" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:500 msgid "Add Track or Bus" msgstr "添加音轨或总线" @@ -413,8 +413,8 @@ msgstr "总线" msgid "Add:" msgstr "添加:" -#: add_route_dialog.cc:114 startup.cc:833 time_fx_dialog.cc:91 -#: add_video_dialog.cc:149 video_server_dialog.cc:109 +#: add_route_dialog.cc:114 startup.cc:841 time_fx_dialog.cc:91 +#: add_video_dialog.cc:150 video_server_dialog.cc:112 msgid "Options" msgstr "选项" @@ -428,21 +428,21 @@ msgid "Group:" msgstr "分组:" #: add_route_dialog.cc:215 add_route_dialog.cc:224 add_route_dialog.cc:298 -#: rc_option_editor.cc:1448 rc_option_editor.cc:1450 rc_option_editor.cc:1452 -#: rc_option_editor.cc:1470 rc_option_editor.cc:1472 rc_option_editor.cc:1480 -#: rc_option_editor.cc:1482 rc_option_editor.cc:1500 rc_option_editor.cc:1513 -#: rc_option_editor.cc:1515 rc_option_editor.cc:1517 rc_option_editor.cc:1548 -#: rc_option_editor.cc:1550 rc_option_editor.cc:1552 rc_option_editor.cc:1560 -#: rc_option_editor.cc:1568 rc_option_editor.cc:1576 +#: 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 msgid "Audio" msgstr "音频" #: 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:1699 -#: rc_option_editor.cc:1707 rc_option_editor.cc:1715 rc_option_editor.cc:1724 -#: rc_option_editor.cc:1732 rc_option_editor.cc:1740 rc_option_editor.cc:1748 -#: rc_option_editor.cc:1757 rc_option_editor.cc:1766 rc_option_editor.cc:1775 -#: rc_option_editor.cc:1783 rc_option_editor.cc:1791 +#: 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 msgid "MIDI" msgstr "MIDI" @@ -465,7 +465,7 @@ msgid "" msgstr "" #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1305 msgid "Normal" msgstr "普通" @@ -509,7 +509,7 @@ msgstr "八声é“" msgid "12 Channel" msgstr "å二声é“" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2131 msgid "Custom" msgstr "自定义" @@ -598,7 +598,7 @@ msgid "Track" msgstr "音轨" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 msgid "Show" msgstr "显示" @@ -606,96 +606,92 @@ msgstr "显示" msgid "Re-analyze data" msgstr "é‡æ–°åˆ†æžæ•°æ®" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 #, fuzzy msgid "audition" msgstr "监å¬" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 msgid "solo" msgstr "" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 #, fuzzy msgid "feedback" msgstr "å馈" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:187 speaker_dialog.cc:36 msgid "Speaker Configuration" msgstr "扬声器é…ç½®" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:188 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "主题管ç†" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:189 keyeditor.cc:53 msgid "Key Bindings" msgstr "按键绑定" -#: ardour_ui.cc:186 +#: ardour_ui.cc:190 msgid "Preferences" msgstr "首选项" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:191 ardour_ui.cc:196 #, fuzzy msgid "Add Tracks/Busses" msgstr "音轨/总线" -#: ardour_ui.cc:188 +#: ardour_ui.cc:192 msgid "About" msgstr "关于" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:193 location_ui.cc:1146 msgid "Locations" msgstr "ä½ç½®" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:194 route_params_ui.cc:58 route_params_ui.cc:606 msgid "Tracks and Busses" msgstr "音轨和总线" -#: ardour_ui.cc:191 +#: ardour_ui.cc:195 msgid "Properties" msgstr "属性" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:197 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "æ†ç»‘管ç†" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:198 big_clock_window.cc:35 msgid "Big Clock" msgstr "大时钟" -#: ardour_ui.cc:195 +#: ardour_ui.cc:199 #, fuzzy msgid "Audio Connections" msgstr "音频连结管ç†" -#: ardour_ui.cc:196 +#: ardour_ui.cc:200 #, fuzzy msgid "MIDI Connections" msgstr "MIDI连接管ç†" -#: ardour_ui.cc:198 +#: ardour_ui.cc:202 msgid "Errors" msgstr "错误" -#: ardour_ui.cc:299 -msgid "could not initialize %1." -msgstr "无法åˆå§‹åŒ– %1." - -#: ardour_ui.cc:394 +#: ardour_ui.cc:388 msgid "Starting audio engine" msgstr "å¯åŠ¨éŸ³é¢‘引擎" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:758 startup.cc:638 msgid "%1 is ready for use" msgstr "%1 准备就绪" -#: ardour_ui.cc:811 +#: ardour_ui.cc:806 #, fuzzy msgid "" "WARNING: Your system has a limit for maximum amount of locked memory. This " @@ -709,23 +705,23 @@ msgstr "" "\n" "此命令由 /etc/security/limits.conf 控制." -#: ardour_ui.cc:828 +#: ardour_ui.cc:823 msgid "Do not show this window again" msgstr "ä¸å†æ˜¾ç¤ºæ­¤çª—å£" -#: ardour_ui.cc:870 +#: ardour_ui.cc:865 msgid "Don't quit" msgstr "ä¸é€€å‡º" -#: ardour_ui.cc:871 +#: ardour_ui.cc:866 msgid "Just quit" msgstr "ä¸ä¿å­˜è€Œé€€å‡º" -#: ardour_ui.cc:872 +#: ardour_ui.cc:867 msgid "Save and quit" msgstr "ä¿å­˜å¹¶é€€å‡º" -#: ardour_ui.cc:882 +#: ardour_ui.cc:877 #, fuzzy msgid "" "%1 was unable to save your session.\n" @@ -735,16 +731,16 @@ msgid "" "\"Just quit\" option." msgstr "Ardour 无法ä¿å­˜æ­¤ä¼šè¯.\n" -#: ardour_ui.cc:913 +#: ardour_ui.cc:908 #, fuzzy msgid "Please wait while %1 cleans up..." msgstr "请等待,%1 载入å¯è§†åŒ–æ•°æ®" -#: ardour_ui.cc:930 +#: ardour_ui.cc:925 msgid "Unsaved Session" msgstr "未ä¿å­˜çš„会è¯" -#: ardour_ui.cc:951 +#: ardour_ui.cc:946 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -761,7 +757,7 @@ msgstr "" "\n" "你想干å—?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:949 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -778,76 +774,76 @@ msgstr "" "\n" "你想干å—?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:963 msgid "Prompter" msgstr "" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1049 msgid "disconnected" msgstr "å–消连接" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1056 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1060 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1078 export_video_dialog.cc:68 #, fuzzy msgid "File:" msgstr "文件开始:" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1082 msgid "BWF" msgstr "" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1085 #, fuzzy msgid "WAV" msgstr "WAVE" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1088 msgid "WAV64" msgstr "" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1091 session_option_editor.cc:197 msgid "CAF" msgstr "CAF" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1094 msgid "AIFF" msgstr "" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1097 msgid "iXML" msgstr "" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1100 msgid "RF64" msgstr "" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1108 msgid "32-float" msgstr "" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1111 msgid "24-int" msgstr "" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1114 msgid "16-int" msgstr "" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1133 #, c-format msgid "DSP: %5.1f%%" msgstr "" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1152 #, c-format msgid "" "Buffers: p:" @@ -855,33 +851,33 @@ msgid "" "\">%%%" msgstr "" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1188 msgid "Disk: Unknown" msgstr "" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1190 msgid "Disk: 24hrs+" msgstr "" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1208 msgid "Disk: >24 hrs" msgstr "" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1219 #, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1245 #, c-format msgid "Timecode|TC: %s" msgstr "" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1362 ardour_ui.cc:1371 startup.cc:1054 msgid "Recent Sessions" msgstr "最近的会è¯" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1451 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" @@ -889,27 +885,27 @@ msgstr "" "%1 未连接到 JACK.\n" "å†æ­¤æƒ…况下,你无法打开或关闭会è¯" -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1478 msgid "Open Session" msgstr "打开会è¯" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 -#: session_metadata_dialog.cc:729 startup.cc:1074 +#: ardour_ui.cc:1503 session_import_dialog.cc:169 +#: session_metadata_dialog.cc:729 startup.cc:1083 msgid "%1 sessions" msgstr "%1 会è¯" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1540 msgid "You cannot add a track without a session already loaded." msgstr "您åªèƒ½åœ¨å·²è½½å…¥çš„会è¯ä¸­æ·»åŠ éŸ³è½¨" -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1548 #, fuzzy msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "无法创建 %1 æ–°çš„MIDI音轨" msgstr[1] "无法创建 %1 æ–°çš„MIDI音轨" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1554 ardour_ui.cc:1615 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -920,25 +916,25 @@ msgstr "" "无法继续新建音轨或总线\n" "请ä¿å­˜ %1,é‡æ–°å¯åŠ¨JACK带æ¥æ›´å¤šçš„端å£.\n" -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1589 msgid "You cannot add a track or bus without a session already loaded." msgstr "您åªèƒ½åœ¨å·²è½½å…¥çš„会è¯æˆ–总线中添加音轨和总线" -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1598 #, fuzzy msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "无法新建音频音轨" msgstr[1] "无法新建音频音轨" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1607 #, fuzzy msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "无法新建 %1 新的音频总线" msgstr[1] "无法新建 %1 新的音频总线" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1724 #, fuzzy msgid "" "Please create one or more tracks before trying to record.\n" @@ -947,7 +943,7 @@ msgstr "" "在录音之å‰ï¼Œè¯·åˆ›å»ºè‡³å°‘一个音轨\n" "请查看会è¯èœå•." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2114 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" @@ -957,7 +953,7 @@ msgstr "" "\n" "%1" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2116 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -968,19 +964,19 @@ msgstr "" "原因是 %1 ä¸å¤Ÿå¿«.\n" "å°è¯•é‡å¯JACK,é‡æ–°è¿žæŽ¥å¹¶ä¸”ä¿å­˜ä¼šè¯." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2142 msgid "Unable to start the session running" msgstr "无法å¯åŠ¨ä¼šè¯" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2222 msgid "Take Snapshot" msgstr "å¿«ç…§" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2223 msgid "Name of new snapshot" msgstr "新建快照的å称" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2247 #, fuzzy msgid "" "To ensure compatibility with various systems\n" @@ -989,27 +985,27 @@ msgstr "" "为了确ä¿åœ¨ä¸åŒç³»ç»Ÿçš„兼容性\n" "快照文件åä¸è¦åŒ…å«å­—符 '/'" -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2259 msgid "Confirm Snapshot Overwrite" msgstr "确定覆盖快照" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2260 msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "已存在åŒåå¿«ç…§. 覆盖之?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2263 utils_videotl.cc:67 msgid "Overwrite" msgstr "覆盖" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2297 msgid "Rename Session" msgstr "é‡å‘½å会è¯" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2298 msgid "New session name" msgstr "新建快照的å称" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2312 ardour_ui.cc:2692 ardour_ui.cc:2737 #, fuzzy msgid "" "To ensure compatibility with various systems\n" @@ -1018,12 +1014,12 @@ msgstr "" "为了确ä¿åœ¨ä¸åŒç³»ç»Ÿçš„兼容性\n" "会è¯æ–‡ä»¶åä¸è¦åŒ…å«å­—符 '/'" -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2320 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "æ­¤å称已被å¦ä¸€ä¸ªæ–‡ä»¶å¤¹ä½¿ç”¨. 请å†å°è¯•ä¸€é." -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2329 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" @@ -1031,19 +1027,19 @@ msgstr "" "é‡å‘½å会è¯å¤±è´¥.\n" "从现在开始事情将会å˜å¾—乱七八糟" -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2440 msgid "Save Template" msgstr "ä¿å­˜æ¨¡æ¿..." -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2441 msgid "Name for template:" msgstr "模æ¿å:" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2442 msgid "-template" msgstr "-模æ¿" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2480 msgid "" "This session\n" "%1\n" @@ -1053,52 +1049,52 @@ msgstr "" "%1\n" "已存在. 打开它?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2490 msgid "Open Existing Session" msgstr "打开已存在的会è¯" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2728 msgid "There is no existing session at \"%1\"" msgstr " \"%1\" 没有会è¯æ–‡ä»¶" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2815 msgid "Please wait while %1 loads your session" msgstr "请等待 %1 载入会è¯" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2830 msgid "Port Registration Error" msgstr "端å£(port)注册错误" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2831 msgid "Click the Close button to try again." msgstr "å•å‡»å…³é—­æŒ‰é’®ï¼Œå†å°è¯•ä¸€é" -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2852 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "ä¼šè¯ \"%1 (å¿«ç…§ %2)\" 装载失败." -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2858 msgid "Loading Error" msgstr "装载错误" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2859 msgid "Click the Refresh button to try again." msgstr "å•å‡»åˆ·æ–°æŒ‰é’®,å†å°è¯•ä¸€é" -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2941 msgid "Could not create session in \"%1\"" msgstr "在 \"%1\" 无法创建会è¯" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3041 msgid "No files were ready for clean-up" msgstr "没有å¯ä»¥æ¸…空的文件" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3045 ardour_ui.cc:3055 ardour_ui.cc:3188 ardour_ui.cc:3195 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "清空" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3046 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1106,19 +1102,19 @@ msgid "" "require some unused files to continue to exist." msgstr "" -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3105 msgid "kilo" msgstr "" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3108 msgid "mega" msgstr "" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3111 msgid "giga" msgstr "" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3116 #, fuzzy msgid "" "The following file was deleted from %2,\n" @@ -1135,7 +1131,7 @@ msgstr[1] "" "%2,\n" "释放出 %3 %4 bytes çš„ç£ç›˜ç©ºé—´" -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3123 #, fuzzy msgid "" "The following file was not in use and \n" @@ -1178,11 +1174,11 @@ msgstr[1] "" "将会释放é¢å¤–çš„\n" "%3 %4bytes çš„ç£ç›˜ç©ºé—´.\n" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3183 msgid "Are you sure you want to clean-up?" msgstr "您确认è¦åˆ é™¤è¿™äº›æ–‡ä»¶å—" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3190 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" @@ -1192,81 +1188,81 @@ msgstr "" "如果你清空了, 所有的撤销/é‡å¤ä¿¡æ¯å°†ä¼šä¸¢å¤±.\n" "清空将会把所有未使用过的文件弄到 \"死亡\" ä½ç½®" -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3198 msgid "CleanupDialog" msgstr "清空对è¯æ¡†" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3228 msgid "Cleaned Files" msgstr "清除文件" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3245 msgid "deleted file" msgstr "删除文件" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3337 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3341 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3342 msgid "Do you really want to stop the Video Server?" msgstr "" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3345 #, fuzzy msgid "Yes, Stop It" msgstr "是, 销æ¯å®ƒ." -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3371 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3373 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3455 +#: ardour_ui.cc:3381 ardour_ui.cc:3471 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3405 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3410 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3443 msgid "Cannot launch the video-server" msgstr "" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3452 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3477 editor_audio_import.cc:629 +#: ardour_ui.cc:3497 editor_audio_import.cc:632 msgid "could not open %1" msgstr "无法打开%1" -#: ardour_ui.cc:3481 +#: ardour_ui.cc:3501 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3641 +#: ardour_ui.cc:3673 msgid "Recording was stopped because your system could not keep up." msgstr "您的系统无法继续, 录音åœæ­¢." -#: ardour_ui.cc:3670 +#: ardour_ui.cc:3702 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1279,7 +1275,7 @@ msgstr "" "\n" "确切地说, ç£ç›˜çš„读写速度无法跟上录音速度\n" -#: ardour_ui.cc:3689 +#: ardour_ui.cc:3721 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1292,11 +1288,11 @@ msgstr "" "\n" "确切地说, ç£ç›˜çš„读写速度无法跟上播放速度\n" -#: ardour_ui.cc:3729 +#: ardour_ui.cc:3761 msgid "Crash Recovery" msgstr "崩溃æ¢å¤" -#: ardour_ui.cc:3730 +#: ardour_ui.cc:3762 #, fuzzy msgid "" "This session appears to have been in the\n" @@ -1313,19 +1309,19 @@ msgstr "" "Ardourå¯ä»¥ä¸ºä½ æ¢å¤ä¸€äº›æ•æ‰åˆ°çš„音频\n" "你也å¯ä»¥å¿½ç•¥å®ƒ. 请你选择.\n" -#: ardour_ui.cc:3742 +#: ardour_ui.cc:3774 msgid "Ignore crash data" msgstr "忽略崩æ¯çš„æ•°æ®" -#: ardour_ui.cc:3743 +#: ardour_ui.cc:3775 msgid "Recover from crash" msgstr "æ¢å¤åˆ°å´©æºƒå‰" -#: ardour_ui.cc:3763 +#: ardour_ui.cc:3795 msgid "Sample Rate Mismatch" msgstr "采样率ä¸åŒ¹é…" -#: ardour_ui.cc:3764 +#: ardour_ui.cc:3796 #, fuzzy msgid "" "This session was created with a sample rate of %1 Hz, but\n" @@ -1336,23 +1332,23 @@ msgstr "" "\n" "当å‰éŸ³é¢‘引擎的采样率为 %2 Hz.\n" -#: ardour_ui.cc:3773 +#: ardour_ui.cc:3805 msgid "Do not load session" msgstr "ä¸è¦è£…载会è¯" -#: ardour_ui.cc:3774 +#: ardour_ui.cc:3806 msgid "Load session anyway" msgstr "转载会è¯" -#: ardour_ui.cc:3797 +#: ardour_ui.cc:3829 msgid "Could not disconnect from JACK" msgstr "无法断开JACK的连接" -#: ardour_ui.cc:3810 +#: ardour_ui.cc:3842 msgid "Could not reconnect to JACK" msgstr "无法é‡æ–°è¿žæŽ¥åˆ°JACK" -#: ardour_ui.cc:4084 +#: ardour_ui.cc:4116 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1375,64 +1371,69 @@ msgstr "用户界é¢: 无法设置编辑器." msgid "UI: cannot setup mixer" msgstr "用户界é¢: 无法设置混音器." -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +#, fuzzy +msgid "UI: cannot setup meterbridge" +msgstr "用户界é¢: 无法设置混音器." + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "从播放头播放" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "åœæ­¢å›žæ”¾" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 msgid "Toggle record" msgstr "出å‘录音" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "播放范围/选区" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "转至会è¯èµ·ç‚¹" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "转至会è¯ç»ˆç‚¹" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "播放循环范围" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" msgstr "" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "当åœæ­¢æ—¶è¿”回至最åŽä¸€æ¬¡å›žæ”¾èµ·ç‚¹" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 #, fuzzy msgid "Playhead follows Range Selections and Edits" msgstr "播放头到范围开始" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" msgstr "" -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" @@ -1440,11 +1441,11 @@ msgstr "" "当å¯ç”¨æ—¶ç›‘å¬å¼€å§‹.\n" "点击åœæ­¢ç›‘å¬." -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "" -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1452,7 +1453,7 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1460,27 +1461,32 @@ msgid "" "confirm; postfix the edit with '+' or '-' to enter delta times.\n" msgstr "" -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:147 +#, fuzzy +msgid "Reset Level Meter" +msgstr "é‡ç½®åŒ…络线" + +#: ardour_ui2.cc:179 msgid "[ERROR]: " msgstr "[错误]:" -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:181 msgid "[WARNING]: " msgstr "[警告]:" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:183 msgid "[INFO]: " msgstr "[ä¿¡æ¯]: " -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:247 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "自动返回" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:249 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: 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 @@ -1500,23 +1506,23 @@ msgstr "设置编辑器" msgid "Setup Mixer" msgstr "设置混音器" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "é‡æ–°è£…摘会è¯åŽ†å²" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:242 msgid "Don't close" msgstr "别关闭" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:243 msgid "Just close" msgstr "ä¸ä¿å­˜è€Œå…³é—­" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:244 msgid "Save and close" msgstr "ä¿å­˜å¹¶å…³é—­" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:340 msgid "This screen is not tall enough to display the mixer window" msgstr "" @@ -1529,7 +1535,7 @@ msgstr "会è¯" msgid "Sync" msgstr "åŒæ­¥" -#: ardour_ui_ed.cc:107 engine_dialog.cc:365 +#: ardour_ui_ed.cc:107 engine_dialog.cc:369 msgid "Options" msgstr "选项" @@ -1557,15 +1563,15 @@ msgstr "文件类型" msgid "Sample Format" msgstr "采样格å¼" -#: ardour_ui_ed.cc:114 rc_option_editor.cc:1818 rc_option_editor.cc:1831 +#: ardour_ui_ed.cc:114 rc_option_editor.cc:1826 rc_option_editor.cc:1839 msgid "Control Surfaces" msgstr "控制表é¢" -#: ardour_ui_ed.cc:115 rc_option_editor.cc:1550 +#: ardour_ui_ed.cc:115 rc_option_editor.cc:1558 msgid "Plugins" msgstr "æ’件" -#: ardour_ui_ed.cc:116 rc_option_editor.cc:1894 +#: ardour_ui_ed.cc:116 rc_option_editor.cc:1902 msgid "Metering" msgstr "" @@ -1581,7 +1587,7 @@ msgstr "" msgid "Denormal Handling" msgstr "" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "新建..." @@ -1624,8 +1630,8 @@ msgstr "å¿«ç…§..." msgid "Save As..." msgstr "å¦å­˜ä¸º..." -#: ardour_ui_ed.cc:153 editor_actions.cc:1710 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 +#: editor_snapshots.cc:123 mixer_strip.cc:1471 route_time_axis.cc:1485 msgid "Rename..." msgstr "é‡å‘½å..." @@ -1654,7 +1660,7 @@ msgid "Stem export..." msgstr "" #: ardour_ui_ed.cc:175 editor_export_audio.cc:63 export_dialog.cc:129 -#: export_video_dialog.cc:71 +#: export_video_dialog.cc:72 msgid "Export" msgstr "导出" @@ -1666,11 +1672,11 @@ msgstr "清空未使用的æº..." msgid "Flush Wastebasket" msgstr "清空回收站" -#: ardour_ui_ed.cc:189 keyeditor.cc:253 rc_option_editor.cc:1464 +#: 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:104 +#: ardour_ui_ed.cc:190 route_params_ui.cc:105 msgid "Latency" msgstr "延迟" @@ -1678,8 +1684,8 @@ msgstr "延迟" msgid "Reconnect" msgstr "é‡æ–°é“¾æŽ¥" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: 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 "å–消连接" @@ -1696,7 +1702,7 @@ msgstr "最大化编辑空间" msgid "Show Toolbars" msgstr "显示缩放工具æ " -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 #, fuzzy msgid "Window|Mixer" msgstr "窗å£" @@ -1706,28 +1712,33 @@ msgstr "窗å£" msgid "Toggle Editor+Mixer" msgstr "显示编辑器混音器" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:230 meterbridge.cc:236 +#, fuzzy +msgid "Window|Meterbridge" +msgstr "窗å£" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "MIDI示踪" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "èŠå¤©" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 #, fuzzy msgid "Help|Manual" msgstr "手册" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "å‚考" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "ä¿å­˜" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: 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 @@ -1737,100 +1748,100 @@ msgstr "ä¿å­˜" msgid "Transport" msgstr "" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "æš‚åœ" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "开始/æš‚åœ" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 msgid "Start/Continue/Stop" msgstr "开始/继续/æš‚åœ" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 msgid "Stop and Forget Capture" msgstr "æš‚åœå¹¶åºŸå¼ƒå½•éŸ³" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 msgid "Transition To Roll" msgstr "" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "循环播放范围" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 msgid "Play Selected Range" msgstr "播放已选择的范围" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 #, fuzzy msgid "Play Selection w/Preroll" msgstr "播放被选区域" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "å¯ç”¨å½•éŸ³" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 msgid "Start Recording" msgstr "开始录音" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "倒带" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "倒带(慢速)" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "倒带(快速)" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "å¿«è¿›" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "å¿«è¿›(慢速)" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "倒带(快速)" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "转到零点" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "转到起始ä½ç½®" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "转到末尾ä½ç½®" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "转到确切的本地时间" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "é”定时间指针" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 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 @@ -1839,126 +1850,126 @@ msgstr "é”定时间指针" msgid "Timecode" msgstr "时间ç " -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 msgid "Bars & Beats" msgstr "å°èŠ‚ & æ‹å­" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 msgid "Minutes & Seconds" msgstr "分&秒" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "采样" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 msgid "Punch In" msgstr "切入" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1905 route_ui.cc:137 #: time_info_box.cc:113 msgid "In" msgstr "" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 msgid "Punch Out" msgstr "切出" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "ýstup" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "切入/切出" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 msgid "In/Out" msgstr "å…¥/出" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "点击" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 msgid "Auto Input" msgstr "自动输入" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 msgid "Auto Play" msgstr "自动播放" -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "åŒæ­¥å¯åŠ¨åˆ°è§†é¢‘" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 msgid "Time Master" msgstr "时间主控" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 msgid "Toggle Record Enable Track %1" msgstr "" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "百分比" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "åŠéŸ³" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "å‘é€MTC" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "å‘é€MMC" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "使用MMC" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1710 msgid "Send MIDI Clock" msgstr "å‘é€MIDI时钟" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 msgid "Send MIDI Feedback" msgstr "å‘é€MIDIå馈" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 msgid "Wall Clock" msgstr "本地时间" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "盘空间" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 msgid "DSP" msgstr "æ•°å­—ä¿¡å·å¤„ç†" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 msgid "Buffers" msgstr "缓冲" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "JACK采样率和延迟" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 #, fuzzy msgid "Timecode Format" msgstr "时间ç æ¡†æž¶" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 msgid "File Format" msgstr "文件格å¼" @@ -1972,11 +1983,11 @@ msgstr "" msgid "Internal" msgstr "内部的" -#: ardour_ui_options.cc:473 +#: ardour_ui_options.cc:482 msgid "Enable/Disable external positional sync" msgstr "å¯ç”¨/ç¦ç”¨å¤–部ä½ç½®åŒæ­¥" -#: ardour_ui_options.cc:475 +#: ardour_ui_options.cc:484 msgid "Sync to JACK is not possible: video pull up/down is set" msgstr "" @@ -2007,7 +2018,7 @@ msgstr "节å¥" msgid "Meter" msgstr "标尺" -#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1030 +#: audio_clock.cc:1819 audio_streamview.cc:116 editor_actions.cc:1039 #: midi_region_view.cc:2991 session_metadata_dialog.cc:331 #: session_metadata_dialog.cc:379 session_metadata_dialog.cc:435 #: session_metadata_dialog.cc:716 @@ -2097,33 +2108,33 @@ msgid "hide track" msgstr "éšè—音轨" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:195 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 #, fuzzy msgid "Automation|Manual" msgstr "自动化" #: 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:1856 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: 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 msgid "Play" msgstr "播放" #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:201 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:204 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "" -#: automation_time_axis.cc:351 generic_pluginui.cc:468 +#: automation_time_axis.cc:351 generic_pluginui.cc:468 meter_patterns.cc:108 msgid "???" msgstr "???" @@ -2132,7 +2143,7 @@ msgid "clear automation" msgstr "清除自动化" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "éšè—" @@ -2153,7 +2164,7 @@ msgstr "离散" msgid "Linear" msgstr "先行" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "模å¼" @@ -2170,13 +2181,13 @@ msgstr "编辑æ†ç»‘" msgid "Direction:" msgstr "æ–¹å‘:" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:158 +#: mixer_strip.cc:2127 msgid "Input" msgstr "输入" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:163 mixer_strip.cc:2130 msgid "Output" msgstr "输出" @@ -2186,8 +2197,8 @@ msgid "Edit" msgstr "编辑" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2229 +#: route_time_axis.cc:713 msgid "Delete" msgstr "删除" @@ -2360,7 +2371,7 @@ msgstr "时间" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "长度" @@ -2607,17 +2618,17 @@ msgid "Ranges & Marks" msgstr "" #: 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:1327 -#: rc_option_editor.cc:1329 rc_option_editor.cc:1337 rc_option_editor.cc:1345 -#: rc_option_editor.cc:1365 rc_option_editor.cc:1377 rc_option_editor.cc:1379 +#: 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:1434 -#: rc_option_editor.cc:1438 +#: 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 msgid "Editor" msgstr "编辑器" #: editor.cc:1215 editor.cc:1225 editor.cc:4440 editor_actions.cc:130 -#: editor_actions.cc:1804 +#: editor_actions.cc:1813 msgid "Loop" msgstr "循环" @@ -2642,8 +2653,8 @@ msgstr "" msgid "Slow" msgstr "æ…¢" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1627 +#: sfdb_ui.cc:1736 msgid "Fast" msgstr "å¿«" @@ -2663,7 +2674,7 @@ msgstr "激活" msgid "Slowest" msgstr "最慢" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "程åºé”™è¯¯:" @@ -2780,7 +2791,7 @@ msgid "Select All in Track" msgstr "在音轨选择所有" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2237 msgid "Select All" msgstr "选择所有" @@ -2832,15 +2843,15 @@ msgstr "播放头和编辑点间选择范围" msgid "Select" msgstr "选择" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2222 msgid "Cut" msgstr "剪切" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2225 msgid "Copy" msgstr "å¤åˆ¶" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2233 msgid "Paste" msgstr "粘贴" @@ -2998,7 +3009,7 @@ msgstr "é‡åš" msgid "Redo (%1)" msgstr "é‡åš (%1)" -#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1785 +#: editor.cc:3286 editor.cc:3310 editor_actions.cc:106 editor_actions.cc:1794 msgid "Duplicate" msgstr "å¤åˆ¶" @@ -3025,8 +3036,8 @@ msgstr "删除播放列表" msgid "Keep Playlist" msgstr "ä¿æŒæ’­æ”¾åˆ—表" -#: editor.cc:3877 editor_audio_import.cc:579 editor_ops.cc:5856 -#: processor_box.cc:1990 processor_box.cc:2015 +#: editor.cc:3877 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 "å–消" @@ -3047,7 +3058,7 @@ msgstr "清除播放列表" msgid "Please wait while %1 loads visual data." msgstr "请等待,%1 载入å¯è§†åŒ–æ•°æ®" -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2253 msgid "Edit..." msgstr "编辑..." @@ -3096,7 +3107,7 @@ msgstr "" msgid "Position" msgstr "ä½ç½®" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "" @@ -3109,7 +3120,7 @@ msgstr "增益" msgid "Ranges" msgstr "范围" -#: editor_actions.cc:104 editor_actions.cc:1781 session_option_editor.cc:145 +#: editor_actions.cc:104 editor_actions.cc:1790 session_option_editor.cc:145 #: session_option_editor.cc:147 session_option_editor.cc:156 #: session_option_editor.cc:163 msgid "Fades" @@ -3147,7 +3158,7 @@ msgstr "MIDI选项" msgid "Misc Options" msgstr "其他选项" -#: editor_actions.cc:115 rc_option_editor.cc:1452 route_group_dialog.cc:48 +#: editor_actions.cc:115 rc_option_editor.cc:1460 route_group_dialog.cc:48 #: session_option_editor.cc:218 session_option_editor.cc:225 msgid "Monitoring" msgstr "监控中" @@ -3188,8 +3199,8 @@ msgstr "第二时钟" msgid "Separate" msgstr "分离" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1914 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "" @@ -3201,7 +3212,7 @@ msgstr "å­æ¡†æž¶" msgid "Timecode fps" msgstr "时间ç FPS" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "高度" @@ -3326,7 +3337,7 @@ msgstr "播放头到范围开始" msgid "Playhead to Range End" msgstr "播放头到范围结æŸ" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2239 msgid "Deselect All" msgstr "å选所有" @@ -3598,9 +3609,9 @@ msgstr "" msgid "Toggle Active" msgstr "" -#: editor_actions.cc:370 editor_actions.cc:1707 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1495 +#: route_time_axis.cc:710 msgid "Remove" msgstr "移除" @@ -3608,19 +3619,19 @@ msgstr "移除" msgid "Fit Selected Tracks" msgstr "" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1302 msgid "Largest" msgstr "最大的" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1303 msgid "Larger" msgstr "更大的" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1304 msgid "Large" msgstr "大" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1306 msgid "Small" msgstr "å°" @@ -3718,7 +3729,7 @@ msgstr "" msgid "Slide" msgstr "" -#: editor_actions.cc:478 editor_actions.cc:1728 editor_markers.cc:860 +#: editor_actions.cc:478 editor_actions.cc:1737 editor_markers.cc:860 #: editor_rulers.cc:386 location_ui.cc:56 msgid "Lock" msgstr "" @@ -3894,7 +3905,7 @@ msgstr "分:秒" msgid "Video Monitor" msgstr "监控中" -#: editor_actions.cc:549 rc_option_editor.cc:1834 +#: editor_actions.cc:549 rc_option_editor.cc:1842 msgid "Video" msgstr "" @@ -3905,7 +3916,7 @@ msgstr "上å‡åˆ°é¡¶" #: editor_actions.cc:554 #, fuzzy -msgid "Framenumber" +msgid "Frame number" msgstr "音轨åºå·" #: editor_actions.cc:555 @@ -3996,7 +4007,7 @@ msgstr "移除总线" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "导入" @@ -4037,293 +4048,293 @@ msgstr "载入èœå• %1" msgid "Could not find editor.bindings in search path %1" msgstr "" -#: editor_actions.cc:1019 editor_actions.cc:1415 editor_actions.cc:1426 -#: editor_actions.cc:1479 editor_actions.cc:1490 editor_actions.cc:1537 -#: editor_actions.cc:1547 editor_regions.cc:1561 +#: editor_actions.cc:1028 editor_actions.cc:1424 editor_actions.cc:1435 +#: editor_actions.cc:1488 editor_actions.cc:1499 editor_actions.cc:1546 +#: editor_actions.cc:1556 editor_regions.cc:1561 msgid "programming error: %1: %2" msgstr "程åºé”™è¯¯: %1: %2" -#: editor_actions.cc:1713 +#: editor_actions.cc:1722 msgid "Raise" msgstr "上å‡" -#: editor_actions.cc:1716 +#: editor_actions.cc:1725 msgid "Raise to Top" msgstr "上å‡åˆ°é¡¶" -#: editor_actions.cc:1719 gtk-custom-ruler.c:132 +#: editor_actions.cc:1728 gtk-custom-ruler.c:132 msgid "Lower" msgstr "" -#: editor_actions.cc:1722 +#: editor_actions.cc:1731 msgid "Lower to Bottom" msgstr "" -#: editor_actions.cc:1725 +#: editor_actions.cc:1734 msgid "Move to Original Position" msgstr "" -#: editor_actions.cc:1730 +#: editor_actions.cc:1739 msgid "Lock to Video" msgstr "" -#: editor_actions.cc:1735 editor_markers.cc:867 +#: editor_actions.cc:1744 editor_markers.cc:867 msgid "Glue to Bars and Beats" msgstr "" -#: editor_actions.cc:1740 +#: editor_actions.cc:1749 msgid "Remove Sync" msgstr "移除åŒæ­¥" -#: editor_actions.cc:1743 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1904 route_time_axis.cc:209 msgid "Mute" msgstr "é™éŸ³" -#: editor_actions.cc:1746 +#: editor_actions.cc:1755 msgid "Normalize..." msgstr "标准化..." -#: editor_actions.cc:1749 +#: editor_actions.cc:1758 msgid "Reverse" msgstr "å转" -#: editor_actions.cc:1752 +#: editor_actions.cc:1761 msgid "Make Mono Regions" msgstr "" -#: editor_actions.cc:1755 +#: editor_actions.cc:1764 msgid "Boost Gain" msgstr "æ高增益" -#: editor_actions.cc:1758 +#: editor_actions.cc:1767 msgid "Cut Gain" msgstr "" -#: editor_actions.cc:1761 +#: editor_actions.cc:1770 msgid "Pitch Shift..." msgstr "基音转移" -#: editor_actions.cc:1764 +#: editor_actions.cc:1773 msgid "Transpose..." msgstr "" -#: editor_actions.cc:1767 +#: editor_actions.cc:1776 msgid "Opaque" msgstr "ä¸é€æ˜Žåº¦" -#: editor_actions.cc:1771 editor_regions.cc:116 +#: editor_actions.cc:1780 editor_regions.cc:116 msgid "Fade In" msgstr "æ·¡å…¥" -#: editor_actions.cc:1776 editor_regions.cc:117 +#: editor_actions.cc:1785 editor_regions.cc:117 msgid "Fade Out" msgstr "淡出" -#: editor_actions.cc:1791 +#: editor_actions.cc:1800 msgid "Multi-Duplicate..." msgstr "多å¤åˆ¶..." -#: editor_actions.cc:1796 +#: editor_actions.cc:1805 msgid "Fill Track" msgstr "填充音轨" -#: editor_actions.cc:1800 editor_markers.cc:955 +#: editor_actions.cc:1809 editor_markers.cc:955 msgid "Set Loop Range" msgstr "设置循环范围" -#: editor_actions.cc:1807 +#: editor_actions.cc:1816 msgid "Set Punch" msgstr "设置Punch" -#: editor_actions.cc:1811 +#: editor_actions.cc:1820 #, fuzzy msgid "Add Single Range Marker" msgstr "添加一个范围标记" -#: editor_actions.cc:1816 +#: editor_actions.cc:1825 #, fuzzy msgid "Add Range Marker Per Region" msgstr "添加范围标记" -#: editor_actions.cc:1820 +#: editor_actions.cc:1829 #, fuzzy msgid "Snap Position To Grid" msgstr "对é½åˆ°ç½‘络" -#: editor_actions.cc:1823 +#: editor_actions.cc:1832 msgid "Close Gaps" msgstr "" -#: editor_actions.cc:1826 +#: editor_actions.cc:1835 msgid "Rhythm Ferret..." msgstr "" -#: editor_actions.cc:1829 +#: editor_actions.cc:1838 msgid "Export..." msgstr "导出..." -#: editor_actions.cc:1835 +#: editor_actions.cc:1844 msgid "Separate Under" msgstr "" -#: editor_actions.cc:1839 +#: editor_actions.cc:1848 msgid "Set Fade In Length" msgstr "设置淡入长度" -#: editor_actions.cc:1840 +#: editor_actions.cc:1849 msgid "Set Fade Out Length" msgstr "设置淡出长度" -#: editor_actions.cc:1841 +#: editor_actions.cc:1850 msgid "Set Tempo from Region = Bar" msgstr "从区域设置节å¥=å°èŠ‚" -#: editor_actions.cc:1846 +#: editor_actions.cc:1855 msgid "Split at Percussion Onsets" msgstr "" -#: editor_actions.cc:1851 +#: editor_actions.cc:1860 msgid "List Editor..." msgstr "编辑列表" -#: editor_actions.cc:1854 +#: editor_actions.cc:1863 msgid "Properties..." msgstr "属性..." -#: editor_actions.cc:1858 +#: editor_actions.cc:1867 msgid "Bounce (with processing)" msgstr "" -#: editor_actions.cc:1859 +#: editor_actions.cc:1868 msgid "Bounce (without processing)" msgstr "" -#: editor_actions.cc:1860 +#: editor_actions.cc:1869 msgid "Combine" msgstr "" -#: editor_actions.cc:1861 +#: editor_actions.cc:1870 msgid "Uncombine" msgstr "" -#: editor_actions.cc:1863 +#: editor_actions.cc:1872 msgid "Spectral Analysis..." msgstr "频谱分æž..." -#: editor_actions.cc:1865 +#: editor_actions.cc:1874 msgid "Reset Envelope" msgstr "é‡ç½®åŒ…络线" -#: editor_actions.cc:1867 +#: editor_actions.cc:1876 msgid "Reset Gain" msgstr "预设增益" -#: editor_actions.cc:1872 +#: editor_actions.cc:1881 msgid "Envelope Active" msgstr "激活包络线" -#: editor_actions.cc:1876 +#: editor_actions.cc:1885 #, fuzzy msgid "Quantize..." msgstr "é‡åŒ–" -#: editor_actions.cc:1877 editor_actions.cc:1878 +#: editor_actions.cc:1886 editor_actions.cc:1887 msgid "Insert Patch Change..." msgstr "" -#: editor_actions.cc:1879 +#: editor_actions.cc:1888 msgid "Unlink from other copies" msgstr "" -#: editor_actions.cc:1880 +#: editor_actions.cc:1889 msgid "Strip Silence..." msgstr "" -#: editor_actions.cc:1881 +#: editor_actions.cc:1890 msgid "Set Range Selection" msgstr "" -#: editor_actions.cc:1883 +#: editor_actions.cc:1892 msgid "Nudge Later" msgstr "" -#: editor_actions.cc:1884 +#: editor_actions.cc:1893 msgid "Nudge Earlier" msgstr "" -#: editor_actions.cc:1889 +#: editor_actions.cc:1898 msgid "Nudge Later by Capture Offset" msgstr "" -#: editor_actions.cc:1896 +#: editor_actions.cc:1905 msgid "Nudge Earlier by Capture Offset" msgstr "" -#: editor_actions.cc:1900 +#: editor_actions.cc:1909 msgid "Trim to Loop" msgstr "" -#: editor_actions.cc:1901 +#: editor_actions.cc:1910 msgid "Trim to Punch" msgstr "" -#: editor_actions.cc:1903 +#: editor_actions.cc:1912 msgid "Trim to Previous" msgstr "" -#: editor_actions.cc:1904 +#: editor_actions.cc:1913 msgid "Trim to Next" msgstr "" -#: editor_actions.cc:1911 +#: editor_actions.cc:1920 msgid "Insert Region From Region List" msgstr "" -#: editor_actions.cc:1917 +#: editor_actions.cc:1926 msgid "Set Sync Position" msgstr "设置åŒæ­¥ä½ç½®" -#: editor_actions.cc:1918 +#: editor_actions.cc:1927 msgid "Place Transient" msgstr "" -#: editor_actions.cc:1919 +#: editor_actions.cc:1928 msgid "Split" msgstr "" -#: editor_actions.cc:1920 +#: editor_actions.cc:1929 msgid "Trim Start at Edit Point" msgstr "" -#: editor_actions.cc:1921 +#: editor_actions.cc:1930 msgid "Trim End at Edit Point" msgstr "" -#: editor_actions.cc:1926 +#: editor_actions.cc:1935 msgid "Align Start" msgstr "" -#: editor_actions.cc:1933 +#: editor_actions.cc:1942 msgid "Align Start Relative" msgstr "" -#: editor_actions.cc:1937 +#: editor_actions.cc:1946 msgid "Align End" msgstr "" -#: editor_actions.cc:1942 +#: editor_actions.cc:1951 msgid "Align End Relative" msgstr "" -#: editor_actions.cc:1949 +#: editor_actions.cc:1958 msgid "Align Sync" msgstr "" -#: editor_actions.cc:1956 +#: editor_actions.cc:1965 msgid "Align Sync Relative" msgstr "" -#: editor_actions.cc:1960 editor_actions.cc:1963 +#: editor_actions.cc:1969 editor_actions.cc:1972 msgid "Choose Top..." msgstr "" @@ -4351,32 +4362,32 @@ msgstr "" "此会è¯å·²ç»å­˜åœ¨ä¸€ä¸ªå为 %1 çš„æºæ–‡ä»¶. 你想把 %2 作为一个新的æºå¯¼å…¥è¿›æ¥, 或跳过" "它?" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "å–消导入" -#: editor_audio_import.cc:541 +#: editor_audio_import.cc:543 msgid "Editor: cannot open file \"%1\", (%2)" msgstr "编辑器: 无法打开文件 \"%1\", (%2)" -#: editor_audio_import.cc:549 +#: editor_audio_import.cc:551 msgid "Cancel entire import" msgstr "å–消全部导入" -#: editor_audio_import.cc:550 +#: editor_audio_import.cc:552 msgid "Don't embed it" msgstr "ä¸åµŒå…¥ä¹‹" -#: editor_audio_import.cc:551 +#: editor_audio_import.cc:553 msgid "Embed all without questions" msgstr "嵌入所有, ä¸æé—®" -#: editor_audio_import.cc:554 editor_audio_import.cc:583 +#: editor_audio_import.cc:556 editor_audio_import.cc:585 #: export_format_dialog.cc:58 msgid "Sample rate" msgstr "采样率" -#: editor_audio_import.cc:555 editor_audio_import.cc:584 +#: editor_audio_import.cc:557 editor_audio_import.cc:586 msgid "" "%1\n" "This audiofile's sample rate doesn't match the session sample rate!" @@ -4384,7 +4395,7 @@ msgstr "" "%1\n" "此音频文件的采样率与会è¯çš„采样率ä¸åŒ¹é…!" -#: editor_audio_import.cc:580 +#: editor_audio_import.cc:582 msgid "Embed it anyway" msgstr "嵌入之, ä¸ç®¡äº†" @@ -4421,32 +4432,32 @@ msgstr "å¤åˆ¶èŠ‚å¥æ ‡è®°" msgid "move tempo mark" msgstr "移动节å¥æ ‡è®°" -#: editor_drag.cc:2544 +#: editor_drag.cc:2545 msgid "change fade in length" msgstr "改å˜æ¸å…¥é•¿åº¦" -#: editor_drag.cc:2662 +#: editor_drag.cc:2663 msgid "change fade out length" msgstr "改å˜æ¸å‡ºé•¿åº¦" -#: editor_drag.cc:3017 +#: editor_drag.cc:3018 msgid "move marker" msgstr "移动标记" -#: editor_drag.cc:3580 +#: editor_drag.cc:3581 msgid "An error occurred while executing time stretch operation" msgstr "当执行时间延伸æ“作时出现错误" -#: editor_drag.cc:4010 +#: editor_drag.cc:4011 #, fuzzy msgid "programming_error: %1" msgstr "程åºé”™è¯¯: %1" -#: editor_drag.cc:4080 editor_markers.cc:680 +#: editor_drag.cc:4081 editor_markers.cc:680 msgid "new range marker" msgstr "新范围标记" -#: editor_drag.cc:4761 +#: editor_drag.cc:4762 msgid "rubberband selection" msgstr "" @@ -4524,7 +4535,7 @@ msgid "Sharing Solo?" msgstr "" #: editor_route_groups.cc:103 midi_time_axis.cc:1504 midi_time_axis.cc:1507 -#: midi_time_axis.cc:1510 mixer_strip.cc:1902 +#: midi_time_axis.cc:1510 mixer_strip.cc:1903 msgid "Rec" msgstr "" @@ -4601,7 +4612,7 @@ msgid "end" msgstr "结æŸ" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "添加标记" @@ -4610,7 +4621,7 @@ msgstr "添加标记" msgid "range" msgstr "范围" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "移除标记" @@ -4691,8 +4702,8 @@ msgstr "é‡å‘½å标记" msgid "Rename Range" msgstr "é‡å‘½å范围" -#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1781 +#: processor_box.cc:2235 route_time_axis.cc:982 route_ui.cc:1540 msgid "Rename" msgstr "é‡å‘½å" @@ -4833,7 +4844,7 @@ msgstr "移动区域到原始ä½ç½®" msgid "Rename Region" msgstr "é‡å‘½å区域" -#: editor_ops.cc:2372 processor_box.cc:1766 route_ui.cc:1533 +#: editor_ops.cc:2372 processor_box.cc:1779 route_ui.cc:1538 msgid "New name:" msgstr "æ–°åå­—:" @@ -4999,7 +5010,7 @@ msgstr "" "(这个æ“作有æ¯ç­æ€§, ä¸èƒ½æ’¤é”€!)" #: editor_ops.cc:4509 editor_ops.cc:6512 editor_regions.cc:460 -#: editor_snapshots.cc:158 route_ui.cc:1477 +#: editor_snapshots.cc:158 route_ui.cc:1482 msgid "No, do nothing." msgstr "ä¸, 什么都ä¸åš." @@ -5189,11 +5200,11 @@ msgstr "" msgid "close region gaps" msgstr "关闭区间空白" -#: editor_ops.cc:6461 route_ui.cc:1451 +#: editor_ops.cc:6461 route_ui.cc:1456 msgid "That would be bad news ...." msgstr "" -#: editor_ops.cc:6466 route_ui.cc:1456 +#: editor_ops.cc:6466 route_ui.cc:1461 msgid "" "Removing the master or monitor bus is such a bad idea\n" "that %1 is not going to allow it.\n" @@ -5207,7 +5218,7 @@ msgstr "" msgid "tracks" msgstr "音轨" -#: editor_ops.cc:6485 route_ui.cc:1817 +#: editor_ops.cc:6485 route_ui.cc:1822 msgid "track" msgstr "音轨" @@ -5215,7 +5226,7 @@ msgstr "音轨" msgid "busses" msgstr "总线" -#: editor_ops.cc:6491 route_ui.cc:1817 +#: editor_ops.cc:6491 route_ui.cc:1822 msgid "bus" msgstr "总线" @@ -5257,7 +5268,7 @@ msgstr "" msgid "Yes, remove them." msgstr "是的, 移除他们." -#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1478 +#: editor_ops.cc:6516 editor_snapshots.cc:159 route_ui.cc:1483 msgid "Yes, remove it." msgstr "使得, 移除它." @@ -5329,7 +5340,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1954 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "" @@ -5347,8 +5358,9 @@ msgstr "" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:759 +#: mixer_strip.cc:1931 meter_strip.cc:320 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "" @@ -5418,7 +5430,8 @@ msgstr "音轨/总线" msgid "Track/Bus visible ?" msgstr "音轨/总线" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1945 meter_strip.cc:334 +#: route_time_axis.cc:2407 msgid "A" msgstr "" @@ -5427,7 +5440,7 @@ msgstr "" msgid "Track/Bus active ?" msgstr "音轨/总线" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1932 msgid "I" msgstr "" @@ -5436,7 +5449,7 @@ msgstr "" msgid "MIDI input enabled" msgstr "\t%1 MIDI inputs\n" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1930 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "" @@ -5451,7 +5464,7 @@ msgstr "å¯ç”¨å½•éŸ³" msgid "Muted" msgstr "é™éŸ³" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1941 meter_strip.cc:330 msgid "S" msgstr "" @@ -5464,7 +5477,7 @@ msgstr "独å¥..." msgid "SI" msgstr "" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:353 rc_option_editor.cc:1880 #, fuzzy msgid "Solo Isolated" msgstr "Solo隔离" @@ -5752,141 +5765,145 @@ msgid "192000Hz" msgstr "192000 Hz" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 -#: engine_dialog.cc:552 midi_channel_selector.cc:163 +#: 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:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:538 msgid "None" msgstr "" -#: engine_dialog.cc:128 engine_dialog.cc:553 +#: engine_dialog.cc:128 engine_dialog.cc:563 msgid "Triangular" msgstr "三角形" -#: engine_dialog.cc:129 engine_dialog.cc:555 +#: engine_dialog.cc:129 engine_dialog.cc:565 msgid "Rectangular" msgstr "矩形" -#: engine_dialog.cc:130 engine_dialog.cc:557 +#: engine_dialog.cc:130 engine_dialog.cc:567 msgid "Shaped" msgstr "形状" -#: engine_dialog.cc:158 engine_dialog.cc:473 engine_dialog.cc:964 +#: engine_dialog.cc:158 engine_dialog.cc:483 engine_dialog.cc:974 msgid "Playback/recording on 1 device" msgstr "在设备1 播放/录音" -#: engine_dialog.cc:159 engine_dialog.cc:477 engine_dialog.cc:530 -#: engine_dialog.cc:967 +#: engine_dialog.cc:159 engine_dialog.cc:487 engine_dialog.cc:540 +#: engine_dialog.cc:977 msgid "Playback/recording on 2 devices" msgstr "在设备2 播放/录音" -#: engine_dialog.cc:160 engine_dialog.cc:493 engine_dialog.cc:970 +#: engine_dialog.cc:160 engine_dialog.cc:503 engine_dialog.cc:980 msgid "Playback only" msgstr "仅播放" -#: engine_dialog.cc:161 engine_dialog.cc:495 engine_dialog.cc:973 +#: engine_dialog.cc:161 engine_dialog.cc:505 engine_dialog.cc:983 msgid "Recording only" msgstr "仅录音" -#: engine_dialog.cc:170 engine_dialog.cc:571 +#: engine_dialog.cc:171 engine_dialog.cc:448 +msgid "coremidi" +msgstr "" + +#: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" msgstr "" -#: engine_dialog.cc:171 engine_dialog.cc:573 +#: engine_dialog.cc:174 engine_dialog.cc:583 msgid "raw" msgstr "" -#: engine_dialog.cc:177 +#: engine_dialog.cc:181 msgid "Driver:" msgstr "驱动:" -#: engine_dialog.cc:182 +#: engine_dialog.cc:186 #, fuzzy msgid "Audio Interface:" msgstr "接å£:" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:191 sfdb_ui.cc:147 sfdb_ui.cc:260 sfdb_ui.cc:265 msgid "Sample rate:" msgstr "采样率:" -#: engine_dialog.cc:192 +#: engine_dialog.cc:196 msgid "Buffer size:" msgstr "缓冲区大å°:" -#: engine_dialog.cc:198 +#: engine_dialog.cc:202 msgid "Number of buffers:" msgstr "缓冲区数é‡:" -#: engine_dialog.cc:205 +#: engine_dialog.cc:209 msgid "Approximate latency:" msgstr "大约延迟:" -#: engine_dialog.cc:218 +#: engine_dialog.cc:222 msgid "Audio mode:" msgstr "音频模å¼:" -#: engine_dialog.cc:280 engine_dialog.cc:404 +#: engine_dialog.cc:284 engine_dialog.cc:408 msgid "Ignore" msgstr "忽略" -#: engine_dialog.cc:288 +#: engine_dialog.cc:292 msgid "Client timeout" msgstr "客户端超时" -#: engine_dialog.cc:295 +#: engine_dialog.cc:299 msgid "Number of ports:" msgstr "端å£æ•°é‡:" -#: engine_dialog.cc:300 +#: engine_dialog.cc:304 msgid "MIDI driver:" msgstr "MIDI驱动:" -#: engine_dialog.cc:306 +#: engine_dialog.cc:310 msgid "Dither:" msgstr "" -#: engine_dialog.cc:315 +#: engine_dialog.cc:319 msgid "" "No JACK server found anywhere on this system. Please install JACK and restart" msgstr "" "No JACK server found anywhere on this system. Please install JACK and restart" -#: engine_dialog.cc:323 +#: engine_dialog.cc:327 msgid "Server:" msgstr "æœåŠ¡å™¨:" -#: engine_dialog.cc:335 +#: engine_dialog.cc:339 msgid "Input device:" msgstr "输入设备:" -#: engine_dialog.cc:339 +#: engine_dialog.cc:343 msgid "Output device:" msgstr "输出设备:" -#: engine_dialog.cc:344 +#: engine_dialog.cc:348 msgid "Hardware input latency:" msgstr "硬件输入延迟:" -#: engine_dialog.cc:347 engine_dialog.cc:353 +#: engine_dialog.cc:351 engine_dialog.cc:357 msgid "samples" msgstr "采样" -#: engine_dialog.cc:350 +#: engine_dialog.cc:354 msgid "Hardware output latency:" msgstr "硬件输出延迟:" -#: engine_dialog.cc:364 +#: engine_dialog.cc:368 msgid "Device" msgstr "设备" -#: engine_dialog.cc:366 +#: engine_dialog.cc:370 msgid "Advanced" msgstr "高级" -#: engine_dialog.cc:643 +#: engine_dialog.cc:653 msgid "cannot open JACK rc file %1 to store parameters" msgstr "无法打开JACKçš„rc文件%1æ¥å‚¨å­˜å‚æ•°" -#: engine_dialog.cc:777 +#: engine_dialog.cc:787 msgid "" "You do not have any audio devices capable of\n" "simultaneous playback and recording.\n" @@ -5903,31 +5920,31 @@ msgid "" "%1 and choose the relevant device then." msgstr "" -#: engine_dialog.cc:790 +#: engine_dialog.cc:800 msgid "No suitable audio devices" msgstr "没有åˆé€‚的音频设备" -#: engine_dialog.cc:1007 +#: engine_dialog.cc:1017 msgid "JACK appears to be missing from the %1 bundle" msgstr "JACK%1" -#: engine_dialog.cc:1077 +#: engine_dialog.cc:1087 msgid "You need to choose an audio device first." msgstr "你需è¦å…ˆé€‰æ‹©ä¸€ä¸ªéŸ³é¢‘设备" -#: engine_dialog.cc:1094 +#: engine_dialog.cc:1104 msgid "Audio device \"%1\" not known on this computer." msgstr "电脑无法识别音频设备 %1" -#: engine_dialog.cc:1246 +#: engine_dialog.cc:1256 msgid "AudioSetup value for %1 is missing data" msgstr "" -#: engine_dialog.cc:1325 +#: engine_dialog.cc:1335 msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:145 msgid "Channels:" msgstr "通é“:" @@ -6086,9 +6103,9 @@ msgid "Folder:" msgstr "文件:" #: export_filename_selector.cc:37 session_import_dialog.cc:44 -#: transcode_video_dialog.cc:58 video_server_dialog.cc:44 -#: video_server_dialog.cc:46 export_video_dialog.cc:68 -#: export_video_dialog.cc:70 +#: transcode_video_dialog.cc:59 video_server_dialog.cc:45 +#: video_server_dialog.cc:47 export_video_dialog.cc:69 +#: export_video_dialog.cc:71 msgid "Browse" msgstr "æµè§ˆ" @@ -6212,6 +6229,13 @@ msgstr "FLAC选项" msgid "Broadcast Wave options" msgstr "广播Wave (Broadcast Wave) 选项" +#: export_format_selector.cc:136 +#, fuzzy +msgid "Do you really want to remove the format?" +msgstr "" +"你确定移除快照 \"%1\"?\n" +"(ä¸å¯æ’¤é”€)" + #: export_preset_selector.cc:28 msgid "Preset" msgstr "预设" @@ -6224,6 +6248,13 @@ msgstr "" "被选中的预设载入ä¸æˆåŠŸ!\n" "是ä¸æ˜¯å…¶å¼•ç”¨çš„çš„æ ¼å¼è¢«åˆ é™¤äº†?" +#: export_preset_selector.cc:156 +#, fuzzy +msgid "Do you really want to remove this preset?" +msgstr "" +"你确定移除快照 \"%1\"?\n" +"(ä¸å¯æ’¤é”€)" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "显示时间:" @@ -6236,36 +6267,49 @@ msgstr "到" msgid "Range" msgstr "范围" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 +#, fuzzy +msgid "curl error %1 (%2)" +msgstr "程åºé”™è¯¯: %1 (%2)" + +#: sfdb_freesound_mootcher.cc:266 +msgid "getSoundResourceFile: There is no valid root in the xml file" +msgstr "" + +#: sfdb_freesound_mootcher.cc:271 +msgid "getSoundResourceFile: root = %1, != response" +msgstr "" + +#: sfdb_freesound_mootcher.cc:410 +msgid "%1" +msgstr "" + +#: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" msgstr "" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:112 gain_meter.cc:913 msgid "Fader automation mode" msgstr "" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:113 gain_meter.cc:914 msgid "Fader automation type" msgstr "" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:122 gain_meter.cc:795 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "" -#: gain_meter.cc:334 -msgid "-Inf" -msgstr "" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:762 mixer_strip.cc:1948 meter_strip.cc:337 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:765 panner_ui.cc:560 msgid "T" msgstr "" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:768 panner_ui.cc:563 msgid "W" msgstr "" @@ -6277,7 +6321,7 @@ msgstr "预设" msgid "Switches" msgstr "" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2212 msgid "Controls" msgstr "控制" @@ -6305,68 +6349,68 @@ msgstr "音频连结管ç†" msgid "MIDI Connection Manager" msgstr "MIDI连接管ç†" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "" -#: group_tabs.cc:306 +#: group_tabs.cc:308 msgid "Selection..." msgstr "" -#: group_tabs.cc:307 +#: group_tabs.cc:309 msgid "Record Enabled..." msgstr "å¯ç”¨å½•éŸ³..." -#: group_tabs.cc:308 +#: group_tabs.cc:310 msgid "Soloed..." msgstr "独å¥..." -#: group_tabs.cc:314 +#: group_tabs.cc:316 #, fuzzy msgid "Create New Group ..." msgstr "新群组" -#: group_tabs.cc:315 +#: group_tabs.cc:317 msgid "Create New Group From" msgstr "" -#: group_tabs.cc:318 +#: group_tabs.cc:320 #, fuzzy msgid "Edit Group..." msgstr "新群组" -#: group_tabs.cc:319 +#: group_tabs.cc:321 #, fuzzy msgid "Collect Group" msgstr "没有群组" -#: group_tabs.cc:320 +#: group_tabs.cc:322 #, fuzzy msgid "Remove Group" msgstr "移除总线" -#: group_tabs.cc:323 +#: group_tabs.cc:325 #, fuzzy msgid "Remove Subgroup Bus" msgstr "移除总线" -#: group_tabs.cc:325 +#: group_tabs.cc:327 msgid "Add New Subgroup Bus" msgstr "" -#: group_tabs.cc:327 +#: group_tabs.cc:329 msgid "Add New Aux Bus (pre-fader)" msgstr "" -#: group_tabs.cc:328 +#: group_tabs.cc:330 msgid "Add New Aux Bus (post-fader)" msgstr "" -#: group_tabs.cc:334 +#: group_tabs.cc:336 msgid "Enable All Groups" msgstr "" -#: group_tabs.cc:335 +#: group_tabs.cc:337 #, fuzzy msgid "Disable All Groups" msgstr "ç¦ç”¨æ‰€æœ‰" @@ -6461,11 +6505,11 @@ msgstr "导入文件: %2 çš„ %1" msgid "I/O selector" msgstr "输入/输出 选择器" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "%1 输入" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "%1 输出" @@ -6545,7 +6589,7 @@ msgstr[1] "采样" msgid "Reset" msgstr "预设" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1755 msgid "programming error: %1 (%2)" msgstr "程åºé”™è¯¯: %1 (%2)" @@ -6573,68 +6617,68 @@ msgstr "" msgid "Pre-Emphasis" msgstr "" -#: location_ui.cc:310 +#: location_ui.cc:314 #, fuzzy msgid "Remove this range" msgstr "忘记此范围" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 #, fuzzy msgid "Set range start from playhead location" msgstr "从播放头设置范围标记" -#: location_ui.cc:316 +#: location_ui.cc:320 #, fuzzy msgid "Set range end from playhead location" msgstr "从区间选择设置范围" -#: location_ui.cc:320 +#: location_ui.cc:324 #, fuzzy msgid "Remove this marker" msgstr "忘记这个标记" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 #, fuzzy msgid "Set marker time from playhead location" msgstr "从区间选择设置范围" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "无法在会è¯å¼€å§‹æ”¾ç½®CD标记" -#: location_ui.cc:708 +#: location_ui.cc:720 msgid "New Marker" msgstr "新标记" -#: location_ui.cc:709 +#: location_ui.cc:721 msgid "New Range" msgstr "新范围" -#: location_ui.cc:722 +#: location_ui.cc:734 msgid "Loop/Punch Ranges" msgstr "循环/Punch 范围" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "标记(包括CD索引)" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "范围(包括CD轨é“区间)" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "添加范围标记" @@ -6719,45 +6763,49 @@ msgstr "" "然åŽè¿žæŽ¥åˆ°%1, 或者现在退出%1.\n" "现在你没办法ä¿å­˜ä¼šè¯, 因为你的连接信æ¯å¯èƒ½ä¼šä¸¢å¤±.\n" -#: main.cc:491 +#: main.cc:487 msgid " (built using " msgstr "" -#: main.cc:494 +#: main.cc:490 msgid " and GCC version " msgstr "" -#: main.cc:504 +#: main.cc:500 msgid "Copyright (C) 1999-2012 Paul Davis" msgstr "" -#: main.cc:505 +#: main.cc:501 msgid "" "Some portions Copyright (C) Steve Harris, Ari Johnson, Brett Viren, Joel " "Baker, Robin Gareus" msgstr "" -#: main.cc:507 +#: main.cc:503 msgid "%1 comes with ABSOLUTELY NO WARRANTY" msgstr "" -#: main.cc:508 +#: main.cc:504 msgid "not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." msgstr "" -#: main.cc:509 +#: main.cc:505 msgid "This is free software, and you are welcome to redistribute it " msgstr "" -#: main.cc:510 +#: main.cc:506 msgid "under certain conditions; see the source for copying conditions." msgstr "" -#: main.cc:519 +#: main.cc:513 +msgid "could not initialize %1." +msgstr "无法åˆå§‹åŒ– %1." + +#: main.cc:522 msgid "Cannot xinstall SIGPIPE error handler" msgstr "" -#: main.cc:525 +#: main.cc:528 #, fuzzy msgid "could not create %1 GUI" msgstr "无法创建Ardour用户图形界é¢" @@ -6766,7 +6814,7 @@ msgstr "无法创建Ardour用户图形界é¢" msgid "Display delta to edit cursor" msgstr "" -#: marker.cc:251 video_image_frame.cc:120 +#: marker.cc:251 video_image_frame.cc:121 #, fuzzy msgid "MarkerText" msgstr "标记" @@ -7282,7 +7330,7 @@ msgstr "点击选择一个é¢å¤–的文件夹" msgid "Missing Plugins" msgstr "丢失æ’件" -#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:59 +#: missing_plugin_dialog.cc:33 transcode_video_dialog.cc:60 msgid "OK" msgstr "OK" @@ -7362,223 +7410,236 @@ msgstr "载入èœå• %1" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:1721 msgid "pre" msgstr "" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 -#: rc_option_editor.cc:1873 +#: mixer_strip.cc:95 mixer_strip.cc:123 mixer_strip.cc:354 mixer_strip.cc:1300 +#: rc_option_editor.cc:1881 #, fuzzy msgid "Comments" msgstr "注释" -#: mixer_strip.cc:145 +#: mixer_strip.cc:147 msgid "Click to toggle the width of this mixer strip." msgstr "" -#: mixer_strip.cc:147 +#: mixer_strip.cc:149 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:154 +#: mixer_strip.cc:156 #, fuzzy msgid "Hide this mixer strip" msgstr "éšè—此音轨" -#: mixer_strip.cc:165 +#: mixer_strip.cc:167 #, fuzzy msgid "Click to select metering point" msgstr "选择测é‡ç‚¹" -#: mixer_strip.cc:171 +#: mixer_strip.cc:173 msgid "tupni" msgstr "" -#: mixer_strip.cc:190 +#: mixer_strip.cc:192 msgid "Isolate Solo" msgstr "" -#: mixer_strip.cc:199 +#: mixer_strip.cc:201 msgid "Lock Solo Status" msgstr "" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:203 mixer_strip.cc:1926 msgid "lock" msgstr "" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:204 mixer_strip.cc:1925 msgid "iso" msgstr "" -#: mixer_strip.cc:256 +#: mixer_strip.cc:258 msgid "Mix group" msgstr "" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:351 rc_option_editor.cc:1878 #, fuzzy msgid "Phase Invert" msgstr "å转" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:352 rc_option_editor.cc:1879 route_ui.cc:1218 msgid "Solo Safe" msgstr "Solo安全" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:355 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "组" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:356 rc_option_editor.cc:1882 #, fuzzy msgid "Meter Point" msgstr "编辑点" -#: mixer_strip.cc:466 +#: mixer_strip.cc:470 msgid "Enable/Disable MIDI input" msgstr "å¯ç”¨/ç¦ç”¨MIDI输入" -#: mixer_strip.cc:616 +#: mixer_strip.cc:622 msgid "" "Aux\n" "Sends" msgstr "" -#: mixer_strip.cc:640 +#: mixer_strip.cc:646 msgid "Snd" msgstr "" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:701 mixer_strip.cc:829 processor_box.cc:2154 msgid "Not connected to JACK - no I/O changes are possible" msgstr "" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1096 msgid "INPUT to %1" msgstr "" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1099 msgid "OUTPUT from %1" msgstr "" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1174 msgid "Disconnected" msgstr "失去连接" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1303 #, fuzzy msgid "*Comments*" msgstr "注释" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1310 #, fuzzy msgid "Cmt" msgstr "剪切" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1313 msgid "*Cmt*" msgstr "" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1319 msgid "Click to Add/Edit Comments" msgstr "" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1358 msgid ": comment editor" msgstr ": 注释编辑器" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1435 msgid "Grp" msgstr "组" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1438 msgid "~G" msgstr "~G" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1467 msgid "Comments..." msgstr "注释..." -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1469 msgid "Save As Template..." msgstr "ä¿å­˜ä¸ºæ¨¡æ¿..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1475 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "å¯ç”¨(Active)" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1482 msgid "Adjust Latency..." msgstr "调整延迟..." -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1485 msgid "Protect Against Denormals" msgstr "" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1491 route_time_axis.cc:435 msgid "Remote Control ID..." msgstr "" -#: mixer_strip.cc:1716 mixer_strip.cc:1740 +#: mixer_strip.cc:1717 mixer_strip.cc:1741 msgid "in" msgstr "" -#: mixer_strip.cc:1724 +#: mixer_strip.cc:1725 msgid "post" msgstr "" -#: mixer_strip.cc:1728 +#: mixer_strip.cc:1729 msgid "out" msgstr "" -#: mixer_strip.cc:1733 +#: mixer_strip.cc:1734 msgid "custom" msgstr "" -#: mixer_strip.cc:1744 +#: mixer_strip.cc:1745 msgid "pr" msgstr "" -#: mixer_strip.cc:1748 +#: mixer_strip.cc:1749 msgid "po" msgstr "" -#: mixer_strip.cc:1752 +#: mixer_strip.cc:1753 msgid "o" msgstr "" -#: mixer_strip.cc:1757 +#: mixer_strip.cc:1758 msgid "c" msgstr "" -#: mixer_strip.cc:1905 route_ui.cc:138 +#: mixer_strip.cc:1906 route_ui.cc:143 msgid "Disk" msgstr "" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1918 monitor_section.cc:63 msgid "AFL" msgstr "" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1921 monitor_section.cc:64 msgid "PFL" msgstr "" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1933 msgid "D" msgstr "" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1953 msgid "i" msgstr "" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2128 msgid "Pre-fader" msgstr "" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2129 #, fuzzy msgid "Post-fader" msgstr "交å‰æ·¡å…¥æ·¡å‡º" +#: mixer_strip.cc:2166 meter_strip.cc:728 +msgid "Change all in Group to %1" +msgstr "" + +#: mixer_strip.cc:2168 meter_strip.cc:730 +#, fuzzy +msgid "Change all to %1" +msgstr "é€šé“ %1" + +#: mixer_strip.cc:2170 meter_strip.cc:732 +msgid "Change same track-type to %1" +msgstr "" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "" @@ -7587,10 +7648,67 @@ msgstr "" msgid "-all-" msgstr "" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "" +#: meter_strip.cc:764 +msgid "Variable height" +msgstr "" + +#: meter_strip.cc:765 +#, fuzzy +msgid "Short" +msgstr "短" + +#: meter_strip.cc:766 +msgid "Tall" +msgstr "" + +#: meter_strip.cc:767 +msgid "Grande" +msgstr "" + +#: meter_strip.cc:768 +msgid "Venti" +msgstr "" + +#: meter_patterns.cc:81 +msgid "Peak" +msgstr "" + +#: meter_patterns.cc:84 +msgid "RMS + Peak" +msgstr "" + +#: meter_patterns.cc:87 +msgid "IEC1/DIN" +msgstr "" + +#: meter_patterns.cc:90 +msgid "IEC1/Nordic" +msgstr "" + +#: meter_patterns.cc:93 +msgid "IEC2/BBC" +msgstr "" + +#: meter_patterns.cc:96 +msgid "IEC2/EBU" +msgstr "" + +#: meter_patterns.cc:99 +msgid "K20" +msgstr "" + +#: meter_patterns.cc:102 +msgid "K14" +msgstr "" + +#: meter_patterns.cc:105 +msgid "VU" +msgstr "" + #: monitor_section.cc:62 msgid "SiP" msgstr "" @@ -7962,7 +8080,7 @@ msgstr "" msgid "Panner (2D)" msgstr "" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "" @@ -8135,7 +8253,7 @@ msgstr "æ ¹æ®ç±»åˆ«" msgid "Eh? LADSPA plugins don't have editors!" msgstr "呃?LADSPAæ’件没有编辑器" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " @@ -8146,83 +8264,95 @@ msgstr "未知类型编辑器æ’件 (æ示: 此版本的Ardour没有VST支æŒ)" msgid "unknown type of editor-supplying plugin" msgstr "未知类型编辑器æ’件" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 #, fuzzy msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " "version of %1)" msgstr "未知类型编辑器æ’件 (æ示: 此版本的Ardour没有LinuxVST支æŒ)" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "增添" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 #, fuzzy msgid "Description" msgstr "æ–¹å‘:" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 msgid "Plugin analysis" msgstr "æ’件分æž" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 #, fuzzy msgid "Save a new preset" msgstr "新预设的å称" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" msgstr "å•å‡»æ¥å…许此æ’件接å—键盘事件, 这样å­å°±å¯ä»¥æ­£å¸¸åœ°ä½¿ç”¨ %1 å¿«æ·é”®" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "å•å‡»æ¥å¯ç”¨/ç¦ç”¨æ­¤æ’件" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 #, fuzzy msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "延迟 (%1 采样)" msgstr[1] "延迟 (%1 采样)" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "延迟 (%1 毫秒)" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 msgid "Edit Latency" msgstr "Upravit prodlevu" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "未找到æ’件预设%1" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "å•å‡»æ¥å…许正常地使用 %1 å¿«æ·é”®" @@ -8327,77 +8457,79 @@ msgstr "检测中..." msgid "Port Insert " msgstr "æ’入端å£" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:331 port_matrix.cc:357 msgid "Sources" msgstr "æº" -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:332 port_matrix.cc:358 msgid "Destinations" msgstr "目的地" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:440 port_matrix.cc:448 #, c-format msgid "Add %s %s" msgstr "增加 %s %s" -#: port_matrix.cc:435 +#: port_matrix.cc:456 #, c-format msgid "Rename '%s'..." msgstr "é‡å‘½å '%s'..." -#: port_matrix.cc:451 +#: port_matrix.cc:472 msgid "Remove all" msgstr "移除所有" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:492 port_matrix.cc:504 #, c-format msgid "%s all" msgstr "%s 所有" -#: port_matrix.cc:506 +#: port_matrix.cc:527 msgid "Rescan" msgstr "é‡æ–°æ‰«æ" -#: port_matrix.cc:508 +#: port_matrix.cc:529 msgid "Show individual ports" msgstr "显示å„个端å£" -#: port_matrix.cc:514 +#: port_matrix.cc:535 msgid "Flip" msgstr "" -#: port_matrix.cc:702 +#: port_matrix.cc:723 #, fuzzy msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." msgstr "此端å£ä¸å¯ç§»é™¤, 作为音轨或总线的第一个æ’件, ä¸æŽ¥å—新的输入数目." -#: port_matrix.cc:705 +#: port_matrix.cc:726 msgid "Cannot add port" msgstr "" -#: port_matrix.cc:727 +#: port_matrix.cc:748 msgid "Port removal not allowed" msgstr "ä¸å…许端å£ç§»é™¤" -#: port_matrix.cc:728 +#: port_matrix.cc:749 +#, fuzzy msgid "" -"This port cannot be removed, as the first plugin in the track or buss cannot " -"accept the new number of inputs." +"This port cannot be removed.\n" +"Either the first plugin in the track or buss cannot accept\n" +"the new number of inputs or the last plugin has more outputs." msgstr "此端å£ä¸å¯ç§»é™¤, 作为音轨或总线的第一个æ’件, ä¸æŽ¥å—新的输入数目." -#: port_matrix.cc:945 +#: port_matrix.cc:966 #, c-format msgid "Remove '%s'" msgstr "移除 '%s'" -#: port_matrix.cc:960 +#: port_matrix.cc:981 #, c-format msgid "%s all from '%s'" msgstr "%s 所有, 从 '%s'" -#: port_matrix.cc:1026 +#: port_matrix.cc:1047 msgid "channel" msgstr "声é“" @@ -8409,53 +8541,53 @@ msgstr "没有连接的端å£" msgid "There are no %1 ports to connect." msgstr "没有 %1 端å£å¯è¿žæŽ¥." -#: processor_box.cc:255 +#: processor_box.cc:256 msgid "" "%1\n" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" -#: processor_box.cc:258 +#: processor_box.cc:259 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" -#: processor_box.cc:371 +#: processor_box.cc:372 #, fuzzy msgid "Show All Controls" msgstr "显示所有的自动化" -#: processor_box.cc:375 +#: processor_box.cc:376 #, fuzzy msgid "Hide All Controls" msgstr "éšè—所有自动化" -#: processor_box.cc:464 +#: processor_box.cc:465 #, fuzzy msgid "on" msgstr "完æˆ" -#: processor_box.cc:464 rc_option_editor.cc:1903 rc_option_editor.cc:1917 +#: processor_box.cc:465 rc_option_editor.cc:1911 rc_option_editor.cc:1925 msgid "off" msgstr "" -#: processor_box.cc:729 +#: processor_box.cc:742 msgid "" "Right-click to add/remove/edit\n" "plugins,inserts,sends and more" msgstr "" -#: processor_box.cc:1184 processor_box.cc:1578 +#: processor_box.cc:1197 processor_box.cc:1591 msgid "Plugin Incompatibility" msgstr "æ’件ä¸åŒ¹é…" -#: processor_box.cc:1187 +#: processor_box.cc:1200 msgid "You attempted to add the plugin \"%1\" in slot %2.\n" msgstr "" -#: processor_box.cc:1193 +#: processor_box.cc:1206 msgid "" "\n" "This plugin has:\n" @@ -8463,41 +8595,41 @@ msgstr "" "\n" "æ­¤æ’件:\n" -#: processor_box.cc:1196 +#: processor_box.cc:1209 #, fuzzy msgid "\t%1 MIDI input\n" msgid_plural "\t%1 MIDI inputs\n" msgstr[0] "\t%1 MIDI inputs\n" msgstr[1] "\t%1 MIDI inputs\n" -#: processor_box.cc:1200 +#: processor_box.cc:1213 #, fuzzy msgid "\t%1 audio input\n" msgid_plural "\t%1 audio inputs\n" msgstr[0] "\t%1 audio inputs\n" msgstr[1] "\t%1 audio inputs\n" -#: processor_box.cc:1203 +#: processor_box.cc:1216 msgid "" "\n" "but at the insertion point, there are:\n" msgstr "" -#: processor_box.cc:1206 +#: processor_box.cc:1219 #, fuzzy msgid "\t%1 MIDI channel\n" msgid_plural "\t%1 MIDI channels\n" msgstr[0] "\t%1 MIDI channels\n" msgstr[1] "\t%1 MIDI channels\n" -#: processor_box.cc:1210 +#: processor_box.cc:1223 #, fuzzy msgid "\t%1 audio channel\n" msgid_plural "\t%1 audio channels\n" msgstr[0] "\t%1 audio channels\n" msgstr[1] "\t%1 audio channels\n" -#: processor_box.cc:1213 +#: processor_box.cc:1226 msgid "" "\n" "%1 is unable to insert this plugin here.\n" @@ -8505,37 +8637,37 @@ msgstr "" "\n" "%1 无法å†æ¬¡æ’å…¥æ’件." -#: processor_box.cc:1249 +#: processor_box.cc:1262 msgid "Cannot set up new send: %1" msgstr "" -#: processor_box.cc:1581 +#: processor_box.cc:1594 msgid "" "You cannot reorder these plugins/sends/inserts\n" "in that way because the inputs and\n" "outputs will not work correctly." msgstr "" -#: processor_box.cc:1765 +#: processor_box.cc:1778 msgid "Rename Processor" msgstr "é‡å‘½å处ç†å™¨" -#: processor_box.cc:1796 +#: processor_box.cc:1809 msgid "At least 100 IO objects exist with a name like %1 - name not changed" msgstr "至少有100个IO(输入输出)对象存在ç€è¿™æ ·çš„%1çš„å称 -å称没有改å˜" -#: processor_box.cc:1930 +#: processor_box.cc:1943 msgid "plugin insert constructor failed" msgstr "" -#: processor_box.cc:1941 +#: processor_box.cc:1954 msgid "" "Copying the set of processors on the clipboard failed,\n" "probably because the I/O configuration of the plugins\n" "could not match the configuration of this track." msgstr "" -#: processor_box.cc:1987 +#: processor_box.cc:2000 msgid "" "Do you really want to remove all processors from %1?\n" "(this cannot be undone)" @@ -8543,72 +8675,72 @@ msgstr "" "你真想è¦ç§»é™¤æ‰€æœ‰å¤„ç†å™¨ä»Ž %1?\n" "(æ­¤æ“作ä¸å¯æ’¤é”€)" -#: processor_box.cc:1991 processor_box.cc:2016 +#: processor_box.cc:2004 processor_box.cc:2029 msgid "Yes, remove them all" msgstr "确定移除所有" -#: processor_box.cc:1993 processor_box.cc:2018 +#: processor_box.cc:2006 processor_box.cc:2031 msgid "Remove processors" msgstr "移除处ç†å™¨" -#: processor_box.cc:2008 +#: processor_box.cc:2021 msgid "" "Do you really want to remove all pre-fader processors from %1?\n" "(this cannot be undone)" msgstr "" -#: processor_box.cc:2011 +#: processor_box.cc:2024 msgid "" "Do you really want to remove all post-fader processors from %1?\n" "(this cannot be undone)" msgstr "" -#: processor_box.cc:2198 +#: processor_box.cc:2200 msgid "New Plugin" msgstr "æ–°æ’件" -#: processor_box.cc:2201 +#: processor_box.cc:2203 msgid "New Insert" msgstr "æ–°æ’å…¥" -#: processor_box.cc:2204 +#: processor_box.cc:2206 msgid "New External Send ..." msgstr "" -#: processor_box.cc:2208 +#: processor_box.cc:2210 msgid "New Aux Send ..." msgstr "" -#: processor_box.cc:2212 +#: processor_box.cc:2214 msgid "Clear (all)" msgstr "清除(所有)" -#: processor_box.cc:2214 +#: processor_box.cc:2216 msgid "Clear (pre-fader)" msgstr "" -#: processor_box.cc:2216 +#: processor_box.cc:2218 msgid "Clear (post-fader)" msgstr "" -#: processor_box.cc:2242 +#: processor_box.cc:2244 msgid "Activate All" msgstr "激活所有" -#: processor_box.cc:2244 +#: processor_box.cc:2246 #, fuzzy msgid "Deactivate All" msgstr "å–消激活所有" -#: processor_box.cc:2246 +#: processor_box.cc:2248 msgid "A/B Plugins" msgstr "A/B æ’件" -#: processor_box.cc:2255 +#: processor_box.cc:2257 msgid "Edit with generic controls..." msgstr "" -#: processor_box.cc:2531 +#: processor_box.cc:2557 msgid "%1: %2 (by %3)" msgstr "" @@ -8768,7 +8900,7 @@ msgstr "" 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 " -"the video-server is runing locally" +"the video-server is running locally" msgstr "" #: rc_option_editor.cc:836 @@ -8861,7 +8993,7 @@ msgstr "" msgid "Click gain level" msgstr "å•å‡»éŸ³é¢‘文件:" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "自动化" @@ -9043,93 +9175,97 @@ msgstr "当音频区域移除时移除相应自动化" msgid "Show meters on tracks in the editor" msgstr "在编辑器的音轨显示仪表" -#: rc_option_editor.cc:1320 +#: rc_option_editor.cc:1321 +msgid "Display master-meter in the toolbar" +msgstr "" + +#: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" msgstr "" -#: rc_option_editor.cc:1321 +#: rc_option_editor.cc:1329 #, fuzzy msgid "whenever they overlap in time" msgstr "缩短已存在的新音符" -#: rc_option_editor.cc:1322 +#: rc_option_editor.cc:1330 msgid "only if they have identical length, position and origin" msgstr "" -#: rc_option_editor.cc:1332 +#: rc_option_editor.cc:1340 msgid "Make rubberband selection rectangle snap to the grid" msgstr "" -#: rc_option_editor.cc:1340 +#: rc_option_editor.cc:1348 msgid "Show waveforms in regions" msgstr "显示区域的波形" -#: rc_option_editor.cc:1348 +#: rc_option_editor.cc:1356 #, fuzzy msgid "Show gain envelopes in audio regions" msgstr "显示区域的波形" -#: rc_option_editor.cc:1349 +#: rc_option_editor.cc:1357 msgid "in all modes" msgstr "" -#: rc_option_editor.cc:1350 +#: rc_option_editor.cc:1358 msgid "only in region gain mode" msgstr "" -#: rc_option_editor.cc:1357 +#: rc_option_editor.cc:1365 msgid "Waveform scale" msgstr "波形标尺" -#: rc_option_editor.cc:1362 +#: rc_option_editor.cc:1370 msgid "linear" msgstr "先行" -#: rc_option_editor.cc:1363 +#: rc_option_editor.cc:1371 msgid "logarithmic" msgstr "对数" -#: rc_option_editor.cc:1369 +#: rc_option_editor.cc:1377 msgid "Waveform shape" msgstr "波形形状" -#: rc_option_editor.cc:1374 +#: rc_option_editor.cc:1382 msgid "traditional" msgstr "传统的" -#: rc_option_editor.cc:1375 +#: rc_option_editor.cc:1383 msgid "rectified" msgstr "æ•´æµçš„" -#: rc_option_editor.cc:1382 +#: rc_option_editor.cc:1390 msgid "Show waveforms for audio while it is being recorded" msgstr "在录制音频的时候显示波形" -#: rc_option_editor.cc:1390 +#: rc_option_editor.cc:1398 msgid "Show zoom toolbar" msgstr "显示缩放工具æ " -#: rc_option_editor.cc:1398 +#: rc_option_editor.cc:1406 msgid "Color regions using their track's color" msgstr "" -#: rc_option_editor.cc:1406 +#: rc_option_editor.cc:1414 msgid "Update editor window during drags of the summary" msgstr "" -#: rc_option_editor.cc:1414 +#: rc_option_editor.cc:1422 msgid "Synchronise editor and mixer track order" msgstr "" -#: rc_option_editor.cc:1422 +#: rc_option_editor.cc:1430 msgid "Synchronise editor and mixer selection" msgstr "" -#: rc_option_editor.cc:1429 +#: rc_option_editor.cc:1437 msgid "Name new markers" msgstr "命å新标签" -#: rc_option_editor.cc:1435 +#: rc_option_editor.cc:1443 msgid "" "If enabled, popup a dialog when a new marker is created to allow its name to " "be set as it is created.\n" @@ -9137,339 +9273,424 @@ msgid "" "You can always rename markers by right-clicking on them" msgstr "" -#: rc_option_editor.cc:1441 +#: rc_option_editor.cc:1449 msgid "Auto-scroll editor window when dragging near its edges" msgstr "" -#: rc_option_editor.cc:1448 +#: rc_option_editor.cc:1456 msgid "Buffering" msgstr "缓冲中" -#: rc_option_editor.cc:1456 +#: rc_option_editor.cc:1464 msgid "Record monitoring handled by" msgstr "" -#: rc_option_editor.cc:1467 +#: rc_option_editor.cc:1475 msgid "ardour" msgstr "ardour" -#: rc_option_editor.cc:1468 +#: rc_option_editor.cc:1476 msgid "audio hardware" msgstr "音频硬件" -#: rc_option_editor.cc:1475 +#: rc_option_editor.cc:1483 msgid "Tape machine mode" msgstr "ç£å¸¦æœºæ¨¡å¼" -#: rc_option_editor.cc:1480 +#: rc_option_editor.cc:1488 msgid "Connection of tracks and busses" msgstr "音轨和总线的连接" -#: rc_option_editor.cc:1485 +#: rc_option_editor.cc:1493 msgid "Auto-connect master/monitor busses" msgstr "自动连接 主控/监视 总线" -#: rc_option_editor.cc:1492 +#: rc_option_editor.cc:1500 msgid "Connect track inputs" msgstr "链接音轨输入" -#: rc_option_editor.cc:1497 +#: rc_option_editor.cc:1505 msgid "automatically to physical inputs" msgstr "自动物ç†æ•°å…¥" -#: rc_option_editor.cc:1498 rc_option_editor.cc:1511 +#: rc_option_editor.cc:1506 rc_option_editor.cc:1519 msgid "manually" msgstr "手动" -#: rc_option_editor.cc:1504 +#: rc_option_editor.cc:1512 msgid "Connect track and bus outputs" msgstr "链接音轨和总线的输出" -#: rc_option_editor.cc:1509 +#: rc_option_editor.cc:1517 msgid "automatically to physical outputs" msgstr "自动物ç†æ•°å‡º" -#: rc_option_editor.cc:1510 +#: rc_option_editor.cc:1518 msgid "automatically to master bus" msgstr "自动化主控总线" -#: rc_option_editor.cc:1515 +#: rc_option_editor.cc:1523 msgid "Denormals" msgstr "异常" -#: rc_option_editor.cc:1520 +#: rc_option_editor.cc:1528 msgid "Use DC bias to protect against denormals" msgstr "使用å压直æµæ”¾ç½®å¼‚常" -#: rc_option_editor.cc:1527 +#: rc_option_editor.cc:1535 msgid "Processor handling" msgstr "处ç†å™¨å¤„ç†" -#: rc_option_editor.cc:1532 +#: rc_option_editor.cc:1540 msgid "no processor handling" msgstr "无处ç†å™¨å¤„ç†" -#: rc_option_editor.cc:1537 +#: rc_option_editor.cc:1545 msgid "use FlushToZero" msgstr "" -#: rc_option_editor.cc:1541 +#: rc_option_editor.cc:1549 msgid "use DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1545 +#: rc_option_editor.cc:1553 msgid "use FlushToZero and DenormalsAreZero" msgstr "" -#: rc_option_editor.cc:1555 +#: rc_option_editor.cc:1563 #, fuzzy msgid "Silence plugins when the transport is stopped" msgstr "当è¿è¾“åœæ­¢æ—¶åœæ­¢æ’件" -#: rc_option_editor.cc:1563 +#: rc_option_editor.cc:1571 msgid "Make new plugins active" msgstr "å¯ç”¨æ–°æ’件" -#: rc_option_editor.cc:1571 +#: rc_option_editor.cc:1579 msgid "Enable automatic analysis of audio" msgstr "å¯ç”¨éŸ³é¢‘自动分æž" -#: rc_option_editor.cc:1579 +#: rc_option_editor.cc:1587 msgid "Replicate missing region channels" msgstr "å¤åˆ¶é—失的区域通é“" -#: rc_option_editor.cc:1586 rc_option_editor.cc:1601 rc_option_editor.cc:1613 -#: rc_option_editor.cc:1625 rc_option_editor.cc:1637 rc_option_editor.cc:1641 -#: rc_option_editor.cc:1649 rc_option_editor.cc:1657 rc_option_editor.cc:1665 -#: rc_option_editor.cc:1667 rc_option_editor.cc:1675 rc_option_editor.cc:1683 -#: rc_option_editor.cc:1691 +#: 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 msgid "Solo / mute" msgstr "独å¥/é™éŸ³" -#: rc_option_editor.cc:1589 +#: rc_option_editor.cc:1597 msgid "Solo-in-place mute cut (dB)" msgstr "" -#: rc_option_editor.cc:1596 +#: rc_option_editor.cc:1604 msgid "Solo controls are Listen controls" msgstr "" -#: rc_option_editor.cc:1605 +#: rc_option_editor.cc:1613 msgid "Listen Position" msgstr "" -#: rc_option_editor.cc:1610 +#: rc_option_editor.cc:1618 msgid "after-fader (AFL)" msgstr "" -#: rc_option_editor.cc:1611 +#: rc_option_editor.cc:1619 msgid "pre-fader (PFL)" msgstr "" -#: rc_option_editor.cc:1617 +#: rc_option_editor.cc:1625 msgid "PFL signals come from" msgstr "" -#: rc_option_editor.cc:1622 +#: rc_option_editor.cc:1630 msgid "before pre-fader processors" msgstr "" -#: rc_option_editor.cc:1623 +#: rc_option_editor.cc:1631 msgid "pre-fader but after pre-fader processors" msgstr "" -#: rc_option_editor.cc:1629 +#: rc_option_editor.cc:1637 msgid "AFL signals come from" msgstr "" -#: rc_option_editor.cc:1634 +#: rc_option_editor.cc:1642 msgid "immediately post-fader" msgstr "" -#: rc_option_editor.cc:1635 +#: rc_option_editor.cc:1643 msgid "after post-fader processors (before pan)" msgstr "" -#: rc_option_editor.cc:1644 +#: rc_option_editor.cc:1652 msgid "Exclusive solo" msgstr "执行solo" -#: rc_option_editor.cc:1652 +#: rc_option_editor.cc:1660 msgid "Show solo muting" msgstr "" -#: rc_option_editor.cc:1660 +#: rc_option_editor.cc:1668 msgid "Soloing overrides muting" msgstr "" -#: rc_option_editor.cc:1665 +#: rc_option_editor.cc:1673 msgid "Default track / bus muting options" msgstr "默认 音轨/总线 é™éŸ³é€‰é¡¹" -#: rc_option_editor.cc:1670 +#: rc_option_editor.cc:1678 msgid "Mute affects pre-fader sends" msgstr "" -#: rc_option_editor.cc:1678 +#: rc_option_editor.cc:1686 msgid "Mute affects post-fader sends" msgstr "" -#: rc_option_editor.cc:1686 +#: rc_option_editor.cc:1694 msgid "Mute affects control outputs" msgstr "" -#: rc_option_editor.cc:1694 +#: rc_option_editor.cc:1702 msgid "Mute affects main outputs" msgstr " ovlivní hlavní výstupy" -#: rc_option_editor.cc:1710 +#: rc_option_editor.cc:1718 msgid "Send MIDI Time Code" msgstr "å‘é€MIDI时间ç " -#: rc_option_editor.cc:1718 +#: rc_option_editor.cc:1726 msgid "Percentage either side of normal transport speed to transmit MTC" msgstr "" -#: rc_option_editor.cc:1727 +#: rc_option_editor.cc:1735 msgid "Obey MIDI Machine Control commands" msgstr "éµå®ˆMIDI机器控制命令(MTC commands)" -#: rc_option_editor.cc:1735 +#: rc_option_editor.cc:1743 msgid "Send MIDI Machine Control commands" msgstr "å‘é€MIDI机器控制命令(MTC commands)" -#: rc_option_editor.cc:1743 +#: rc_option_editor.cc:1751 msgid "Send MIDI control feedback" msgstr "å‘é€MIDI控制å馈" -#: rc_option_editor.cc:1751 +#: rc_option_editor.cc:1759 msgid "Inbound MMC device ID" msgstr "å‘内的MMC设备ID" -#: rc_option_editor.cc:1760 +#: rc_option_editor.cc:1768 msgid "Outbound MMC device ID" msgstr "å‘外的MMC设备ID" -#: rc_option_editor.cc:1769 +#: rc_option_editor.cc:1777 msgid "Initial program change" msgstr "åˆå§‹ç¨‹åºæ”¹å˜" -#: rc_option_editor.cc:1778 +#: rc_option_editor.cc:1786 msgid "Display first MIDI bank/program as 0" msgstr "" -#: rc_option_editor.cc:1786 +#: rc_option_editor.cc:1794 msgid "Never display periodic MIDI messages (MTC, MIDI Clock)" msgstr "" -#: rc_option_editor.cc:1794 +#: rc_option_editor.cc:1802 #, fuzzy msgid "Sound MIDI notes as they are selected" msgstr "没有选择MIDI通é“" -#: rc_option_editor.cc:1802 rc_option_editor.cc:1812 rc_option_editor.cc:1814 +#: rc_option_editor.cc:1810 rc_option_editor.cc:1820 rc_option_editor.cc:1822 #, fuzzy msgid "User interaction" msgstr "区域æ“作" -#: rc_option_editor.cc:1805 +#: rc_option_editor.cc:1813 msgid "" "Use translations of %1 messages\n" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" -#: rc_option_editor.cc:1812 +#: rc_option_editor.cc:1820 msgid "Keyboard" msgstr "键盘" -#: rc_option_editor.cc:1822 +#: rc_option_editor.cc:1830 msgid "Control surface remote ID" msgstr "控制表é¢ç§»åŠ¨çš„ID" -#: rc_option_editor.cc:1827 +#: rc_option_editor.cc:1835 msgid "assigned by user" msgstr "由用户指定" -#: rc_option_editor.cc:1828 +#: rc_option_editor.cc:1836 msgid "follows order of mixer" msgstr "混音器的如下顺åº" -#: rc_option_editor.cc:1829 +#: rc_option_editor.cc:1837 msgid "follows order of editor" msgstr "编辑器的如下顺åº" -#: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 -#: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: 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 #, fuzzy msgid "Preferences|GUI" msgstr "首选项" -#: rc_option_editor.cc:1841 +#: rc_option_editor.cc:1849 msgid "Graphically indicate mouse pointer hovering over various widgets" msgstr "" -#: rc_option_editor.cc:1849 +#: rc_option_editor.cc:1857 msgid "Show tooltips if mouse hovers over a control" msgstr "" -#: rc_option_editor.cc:1859 +#: rc_option_editor.cc:1867 msgid "GUI" msgstr "" -#: rc_option_editor.cc:1862 +#: rc_option_editor.cc:1870 msgid "update transport clock display every 40ms instead of every 100ms" msgstr "" -#: rc_option_editor.cc:1879 +#: rc_option_editor.cc:1887 #, fuzzy msgid "Mixer Strip" msgstr "混音器" -#: rc_option_editor.cc:1889 +#: rc_option_editor.cc:1897 msgid "Use narrow strips in the mixer by default" msgstr "" -#: rc_option_editor.cc:1898 -msgid "Meter hold time" -msgstr "" +#: rc_option_editor.cc:1906 +#, fuzzy +msgid "Peak hold time" +msgstr "峰阈值" -#: rc_option_editor.cc:1904 +#: rc_option_editor.cc:1912 msgid "short" msgstr "短" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1913 msgid "medium" msgstr "中" -#: rc_option_editor.cc:1906 +#: rc_option_editor.cc:1914 msgid "long" msgstr "é•¿" -#: rc_option_editor.cc:1912 -msgid "Meter fall-off" +#: rc_option_editor.cc:1920 +#, fuzzy +msgid "DPM fall-off" +msgstr "标尺衰å‡" + +#: rc_option_editor.cc:1926 +msgid "slowest [6.6dB/sec]" msgstr "" -#: rc_option_editor.cc:1918 -msgid "slowest" -msgstr "最慢" +#: rc_option_editor.cc:1927 +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" +msgstr "" -#: rc_option_editor.cc:1919 -msgid "slow" -msgstr "æ…¢" +#: rc_option_editor.cc:1928 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "" -#: rc_option_editor.cc:1921 -msgid "fast" -msgstr "å¿«" +#: rc_option_editor.cc:1929 +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "" + +#: rc_option_editor.cc:1930 +msgid "medium [20dB/sec]" +msgstr "" -#: rc_option_editor.cc:1922 -msgid "faster" -msgstr "较快" +#: rc_option_editor.cc:1931 +msgid "fast [32dB/sec]" +msgstr "" -#: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "最快" +#: rc_option_editor.cc:1932 +msgid "faster [46dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1933 +msgid "fastest [70dB/sec]" +msgstr "" + +#: rc_option_editor.cc:1939 +msgid "Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1944 rc_option_editor.cc:1960 +msgid "-24dBFS (SMPTE US: 4dBu = -20dBFS)" +msgstr "" + +#: rc_option_editor.cc:1945 rc_option_editor.cc:1961 +msgid "-20dBFS (SMPTE RP.0155)" +msgstr "" + +#: rc_option_editor.cc:1946 rc_option_editor.cc:1962 +msgid "-18dBFS (EBU, BBC)" +msgstr "" + +#: rc_option_editor.cc:1947 rc_option_editor.cc:1963 +msgid "-15dBFS (DIN)" +msgstr "" + +#: rc_option_editor.cc:1949 +msgid "" +"Configure meter-marks and color-knee point for dBFS scale DPM, set reference " +"level for IEC1/Nordic, IEC2 PPM and VU meter." +msgstr "" + +#: rc_option_editor.cc:1955 +msgid "IEC1/DIN Meter line-up level; 0dBu" +msgstr "" + +#: rc_option_editor.cc:1965 +msgid "Reference level for IEC1/DIN meter." +msgstr "" + +#: rc_option_editor.cc:1971 +msgid "VU Meter standard" +msgstr "" + +#: rc_option_editor.cc:1976 +msgid "0VU = -2dBu (France)" +msgstr "" + +#: rc_option_editor.cc:1977 +msgid "0VU = 0dBu (North America, Australia)" +msgstr "" + +#: rc_option_editor.cc:1978 +msgid "0VU = +4dBu (standard)" +msgstr "" + +#: rc_option_editor.cc:1979 +msgid "0VU = +8dBu" +msgstr "" + +#: rc_option_editor.cc:1985 +#, fuzzy +msgid "Peak threshold [dBFS]" +msgstr "峰阈值" + +#: rc_option_editor.cc:1993 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" + +#: rc_option_editor.cc:2000 +msgid "LED meter style" +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -9479,11 +9700,11 @@ msgstr "监å¬æ­¤åŒºåŸŸ" msgid "Position:" msgstr "ä½ç½®:" -#: region_editor.cc:90 add_video_dialog.cc:169 +#: region_editor.cc:90 add_video_dialog.cc:170 msgid "End:" msgstr "终点:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:139 msgid "Length:" msgstr "长度:" @@ -9507,23 +9728,23 @@ msgstr "æº:" msgid "Source:" msgstr "æº:" -#: region_editor.cc:167 +#: region_editor.cc:166 msgid "Region '%1'" msgstr "区域 '%1'" -#: region_editor.cc:274 +#: region_editor.cc:273 msgid "change region start position" msgstr "改å˜åŒºåŸŸå¼€å§‹ä½ç½®" -#: region_editor.cc:290 +#: region_editor.cc:289 msgid "change region end position" msgstr "改å˜åŒºåŸŸç»“æŸä½ç½®" -#: region_editor.cc:310 +#: region_editor.cc:309 msgid "change region length" msgstr "改å˜åŒºåŸŸé•¿åº¦" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 msgid "change region sync point" msgstr "改å˜åŒºåŸŸåŒæ­¥ç‚¹" @@ -9723,318 +9944,318 @@ msgid "" "A route group of this name already exists. Please use a different name." msgstr "" -#: route_params_ui.cc:82 +#: route_params_ui.cc:83 msgid "Tracks/Busses" msgstr "音轨/总线" -#: route_params_ui.cc:101 +#: route_params_ui.cc:102 msgid "Inputs" msgstr "输入" -#: route_params_ui.cc:102 +#: route_params_ui.cc:103 msgid "Outputs" msgstr "输出" -#: route_params_ui.cc:103 +#: route_params_ui.cc:104 msgid "Plugins, Inserts & Sends" msgstr "" -#: route_params_ui.cc:211 +#: route_params_ui.cc:208 msgid "route display list item for renamed route not found!" msgstr "" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:255 route_params_ui.cc:283 #, c-format msgid "Playback delay: % samples" msgstr "回放延迟: % 采样" -#: route_params_ui.cc:478 +#: route_params_ui.cc:475 msgid "NO TRACK" msgstr "没有音轨" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:613 route_params_ui.cc:614 msgid "No Track or Bus Selected" msgstr "没有选择音轨或总线" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "录音(å³é”®å•æ­¥è°ƒæ•´)" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "录制" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 msgid "Route Group" msgstr "" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 #, fuzzy msgid "MIDI Controllers and Automation" msgstr "MIDI控制输入" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 msgid "Show All Automation" msgstr "显示所有的自动化" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 msgid "Show Existing Automation" msgstr "显示已有的自动化" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 msgid "Hide All Automation" msgstr "éšè—所有自动化" -#: route_time_axis.cc:396 +#: route_time_axis.cc:405 #, fuzzy msgid "Processor automation" msgstr "清除自动化" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 msgid "Color..." msgstr "颜色..." -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "é‡å " -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 msgid "Layers" msgstr "层" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 msgid "Automatic (based on I/O connections)" msgstr "自动的(基于I/O连接)" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 msgid "(Currently: Existing Material)" msgstr "(当å‰ï¼šçŽ°æœ‰ææ–™)" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 msgid "(Currently: Capture Time)" msgstr "(当å‰ï¼šæ•èŽ·æ—¶é—´)" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 msgid "Align With Existing Material" msgstr "与已有æ料对é½" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 msgid "Align With Capture Time" msgstr "与æ•èŽ·æ—¶é—´å¯¹é½" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 msgid "Alignment" msgstr "对é½" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 msgid "Normal Mode" msgstr "一般模å¼" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 msgid "Tape Mode" msgstr "ç£å¸¦æ¨¡å¼" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 msgid "Non-Layered Mode" msgstr "éžåº•å±‚模å¼" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "播放列表" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 msgid "Rename Playlist" msgstr "é‡å‘½å播放列表" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 msgid "New name for playlist:" msgstr "新的播放列表å称" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 msgid "New Copy Playlist" msgstr "æ–°æ‹·è´æ’­æ”¾åˆ—表" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 msgid "Name for new playlist:" msgstr "新播放列表å" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 msgid "New Playlist" msgstr "新的播放列表" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 msgid "You cannot create a track with that name as it is reserved for %1" msgstr "无法创建音轨,因为" -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 msgid "New Copy..." msgstr "æ–°æ‹·è´" -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 msgid "New Take" msgstr "" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 msgid "Copy Take" msgstr "" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "清除当å‰" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 msgid "Select From All..." msgstr "选择所有" -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "底层" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 msgid "Remove \"%1\"" msgstr "移除 \"%1\"" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "程åºé”™è¯¯ï¼šåº•å±‚å‚考指针对ä¸ä¸€è‡´" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 msgid "After-fade listen (AFL)" msgstr "" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 msgid "Pre-fade listen (PFL)" msgstr "" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "" -#: route_ui.cc:114 +#: route_ui.cc:119 msgid "Mute this track" msgstr "é™éŸ³æ­¤éŸ³è½¨" -#: route_ui.cc:118 +#: route_ui.cc:123 msgid "Mute other (non-soloed) tracks" msgstr "é™éŸ³å…¶ä»–(éžsoloçš„)音轨" -#: route_ui.cc:124 +#: route_ui.cc:129 msgid "Enable recording on this track" msgstr "在此音轨å¯ç”¨å½•éŸ³" -#: route_ui.cc:128 +#: route_ui.cc:133 msgid "make mixer strips show sends to this bus" msgstr "" -#: route_ui.cc:133 +#: route_ui.cc:138 msgid "Monitor input" msgstr "监å¬è¾“å…¥" -#: route_ui.cc:139 +#: route_ui.cc:144 msgid "Monitor playback" msgstr "监å¬å›žæ”¾" -#: route_ui.cc:586 +#: route_ui.cc:591 msgid "Not connected to JACK - cannot engage record" msgstr "" -#: route_ui.cc:781 +#: route_ui.cc:786 msgid "Step Entry" msgstr "" -#: route_ui.cc:854 +#: route_ui.cc:859 msgid "Assign all tracks (prefader)" msgstr "" -#: route_ui.cc:858 +#: route_ui.cc:863 msgid "Assign all tracks and buses (prefader)" msgstr "" -#: route_ui.cc:862 +#: route_ui.cc:867 msgid "Assign all tracks (postfader)" msgstr "" -#: route_ui.cc:866 +#: route_ui.cc:871 msgid "Assign all tracks and buses (postfader)" msgstr "" -#: route_ui.cc:870 +#: route_ui.cc:875 msgid "Assign selected tracks (prefader)" msgstr "" -#: route_ui.cc:874 +#: route_ui.cc:879 msgid "Assign selected tracks and buses (prefader)" msgstr "" -#: route_ui.cc:877 +#: route_ui.cc:882 msgid "Assign selected tracks (postfader)" msgstr "" -#: route_ui.cc:881 +#: route_ui.cc:886 msgid "Assign selected tracks and buses (postfader)" msgstr "" -#: route_ui.cc:884 +#: route_ui.cc:889 msgid "Copy track/bus gains to sends" msgstr "" -#: route_ui.cc:885 +#: route_ui.cc:890 msgid "Set sends gain to -inf" msgstr "" -#: route_ui.cc:886 +#: route_ui.cc:891 msgid "Set sends gain to 0dB" msgstr "" -#: route_ui.cc:1206 +#: route_ui.cc:1211 msgid "Solo Isolate" msgstr "Solo隔离" -#: route_ui.cc:1235 +#: route_ui.cc:1240 msgid "Pre Fader" msgstr "" -#: route_ui.cc:1241 +#: route_ui.cc:1246 msgid "Post Fader" msgstr "" -#: route_ui.cc:1247 +#: route_ui.cc:1252 msgid "Control Outs" msgstr "" -#: route_ui.cc:1253 +#: route_ui.cc:1258 msgid "Main Outs" msgstr "" -#: route_ui.cc:1385 +#: route_ui.cc:1390 msgid "Color Selection" msgstr "颜色选择" -#: route_ui.cc:1472 +#: route_ui.cc:1477 msgid "" "Do you really want to remove track \"%1\" ?\n" "\n" @@ -10048,7 +10269,7 @@ msgstr "" "\n" "(此动作ä¸å¯æ’¤é”€, 而且此会è¯æ–‡ä»¶å°†ä¼šè¢«é‡æ–°å†™å…¥!)" -#: route_ui.cc:1474 +#: route_ui.cc:1479 msgid "" "Do you really want to remove bus \"%1\" ?\n" "\n" @@ -10058,15 +10279,15 @@ msgstr "" "\n" "(此动作ä¸å¯æ’¤é”€, 而且此会è¯æ–‡ä»¶å°†ä¼šè¢«é‡æ–°å†™å…¥!)" -#: route_ui.cc:1482 +#: route_ui.cc:1487 msgid "Remove track" msgstr "移除音轨" -#: route_ui.cc:1484 +#: route_ui.cc:1489 msgid "Remove bus" msgstr "移除总线" -#: route_ui.cc:1511 +#: route_ui.cc:1516 msgid "" "The use of colons (':') is discouraged in track and bus names.\n" "Do you want to use this new name?" @@ -10074,47 +10295,47 @@ msgstr "" "ä¸å»ºè®®ä½¿ç”¨ ':' 作为音轨和总线å称.\n" "你确定使用这个å称?" -#: route_ui.cc:1515 +#: route_ui.cc:1520 msgid "Use the new name" msgstr "使用新å称" -#: route_ui.cc:1516 +#: route_ui.cc:1521 msgid "Re-edit the name" msgstr "é‡æ–°ç¼–辑å称" -#: route_ui.cc:1529 +#: route_ui.cc:1534 msgid "Rename Track" msgstr "é‡å‘½å音轨" -#: route_ui.cc:1531 +#: route_ui.cc:1536 msgid "Rename Bus" msgstr "é‡å‘½å总线" -#: route_ui.cc:1690 +#: route_ui.cc:1695 msgid " latency" msgstr " 延迟" -#: route_ui.cc:1703 +#: route_ui.cc:1708 msgid "Cannot create route template directory %1" msgstr "无法创建模æ¿æ ¹ç›®å½•%1" -#: route_ui.cc:1709 +#: route_ui.cc:1714 msgid "Save As Template" msgstr "å¦å­˜ä¸ºæ¨¡æ¿" -#: route_ui.cc:1710 +#: route_ui.cc:1715 msgid "Template name:" msgstr "模æ¿å称:" -#: route_ui.cc:1783 +#: route_ui.cc:1788 msgid "Remote Control ID" msgstr "移除控制ID" -#: route_ui.cc:1793 +#: route_ui.cc:1798 msgid "Remote control ID:" msgstr "移除控制ID:" -#: route_ui.cc:1807 +#: route_ui.cc:1812 msgid "" "The remote control ID of %1 is: %2\n" "\n" @@ -10122,17 +10343,17 @@ msgid "" "The remote control ID of %3 cannot be changed." msgstr "" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the master bus" msgstr "创建主控总线" -#: route_ui.cc:1811 +#: route_ui.cc:1816 #, fuzzy msgid "the monitor bus" msgstr "创建主控总线" -#: route_ui.cc:1813 +#: route_ui.cc:1818 msgid "" "The remote control ID of %6 is: %3\n" "\n" @@ -10143,23 +10364,23 @@ msgid "" "change this%5" msgstr "" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the mixer" msgstr "混音师" -#: route_ui.cc:1816 +#: route_ui.cc:1821 #, fuzzy msgid "the editor" msgstr "高度" -#: route_ui.cc:1871 +#: route_ui.cc:1876 msgid "" "Left-click to invert (phase reverse) channel %1 of this track. Right-click " "to show menu." msgstr "" -#: route_ui.cc:1873 +#: route_ui.cc:1878 msgid "Click to show a menu of channels for inversion (phase reverse)" msgstr "" @@ -10660,51 +10881,107 @@ msgstr "" msgid "Glue new regions to bars and beats" msgstr "" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +#, fuzzy +msgid "Meterbridge" +msgstr "标尺" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "" + +#: session_option_editor.cc:279 +#, fuzzy +msgid "Show Midi Tracks" +msgstr "显示所有MIDI轨" + +#: session_option_editor.cc:286 +#, fuzzy +msgid "Show Busses" +msgstr "总线" + +#: session_option_editor.cc:293 +#, fuzzy +msgid "Include Master Bus" +msgstr "创建主控总线" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "" + +#: session_option_editor.cc:302 +#, fuzzy +msgid "Rec-enable Button" +msgstr "å¯ç”¨å½•éŸ³" + +#: session_option_editor.cc:309 +#, fuzzy +msgid "Mute Button" +msgstr "+按钮" + +#: session_option_editor.cc:316 +#, fuzzy +msgid "Solo Button" +msgstr "独å¥/é™éŸ³" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "" + +#: session_option_editor.cc:325 +#, fuzzy +msgid "Track Name" +msgstr "音轨/总线" + +#: sfdb_ui.cc:86 sfdb_ui.cc:106 sfdb_ui.cc:115 msgid "as new tracks" msgstr "" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:88 sfdb_ui.cc:108 msgid "to selected tracks" msgstr "" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to region list" msgstr "" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "as new tape tracks" msgstr "" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:96 msgid "programming error: unknown import mode string %1" msgstr "程åºé”™è¯¯: 未知的导入模å¼å­—符串 %1" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:123 msgid "Auto-play" msgstr "自动播放" -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:129 sfdb_ui.cc:236 msgid "Sound File Information" msgstr "声音文件信æ¯" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:141 msgid "Timestamp:" msgstr "时间戳:" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:143 msgid "Format:" msgstr "æ ¼å¼:" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:182 sfdb_ui.cc:526 msgid "Tags:" msgstr "标签:" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:319 msgid "Auditioning of MIDI files is not yet supported" msgstr "æš‚ä¸æ”¯æŒç›‘å¬MIDI文件" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:326 msgid "Could not read file: %1 (%2)." msgstr "无法读å–文件: %1 (%2)." @@ -10733,11 +11010,11 @@ msgstr "音频文件" msgid "MIDI files" msgstr "MIDI文件" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:458 add_video_dialog.cc:132 msgid "All files" msgstr "所有文件" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:477 add_video_dialog.cc:143 msgid "Browse Files" msgstr "æµè§ˆæ–‡ä»¶" @@ -10745,179 +11022,167 @@ msgstr "æµè§ˆæ–‡ä»¶" msgid "Paths" msgstr "路径" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:515 msgid "Search Tags" msgstr "æœç´¢æ ‡ç­¾" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:531 #, fuzzy msgid "Sort:" msgstr "æ•´ç†" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:539 #, fuzzy msgid "Longest" msgstr "最大的" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:540 #, fuzzy msgid "Shortest" msgstr "å¿«æ·é”®" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:541 #, fuzzy msgid "Newest" msgstr "最慢" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:542 msgid "Oldest" msgstr "" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:543 msgid "Most downloaded" msgstr "" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:544 #, fuzzy msgid "Least downloaded" msgstr "开始下载" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:545 msgid "Highest rated" msgstr "" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:546 msgid "Lowest rated" msgstr "" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:551 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:555 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:567 #, fuzzy msgid "ID" msgstr "MIDI" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:568 add_video_dialog.cc:84 #, fuzzy msgid "Filename" msgstr "é‡å‘½å" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:570 #, fuzzy msgid "Duration" msgstr "æŒç»­æ—¶é—´(秒)" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:571 #, fuzzy msgid "Size" msgstr "最大化尺寸" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:572 #, fuzzy msgid "Samplerate" msgstr "采样率" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:573 msgid "License" msgstr "" -#: sfdb_ui.cc:594 +#: sfdb_ui.cc:591 msgid "Search Freesound" msgstr "寻找自由的声音" -#: sfdb_ui.cc:615 +#: sfdb_ui.cc:611 msgid "Press to import selected files and close this window" msgstr "" -#: sfdb_ui.cc:616 +#: sfdb_ui.cc:612 msgid "Press to import selected files and leave this window open" msgstr "" -#: sfdb_ui.cc:617 +#: sfdb_ui.cc:613 msgid "Press to close this window without importing any files" msgstr "" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:809 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "SoundFileBrowser: 无法标记化字符串" -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1009 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "" msgstr[1] "" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1014 msgid "No more results available" msgstr "" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1078 msgid "B" msgstr "" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1080 msgid "kB" msgstr "" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1082 sfdb_ui.cc:1084 msgid "MB" msgstr "" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1086 msgid "GB" msgstr "" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "" - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "" -msgstr[1] "" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1298 sfdb_ui.cc:1606 sfdb_ui.cc:1656 sfdb_ui.cc:1674 msgid "one track per file" msgstr "1音轨/1文件" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1301 sfdb_ui.cc:1657 sfdb_ui.cc:1675 msgid "one track per channel" msgstr "1音轨/1声é“" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1309 sfdb_ui.cc:1659 sfdb_ui.cc:1676 msgid "sequence files" msgstr "顺åºæ–‡ä»¶" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1312 sfdb_ui.cc:1664 msgid "all files in one track" msgstr "所有文件在一个音轨上" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1313 sfdb_ui.cc:1658 msgid "merge files" msgstr "åˆå¹¶æ–‡ä»¶" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1661 msgid "one region per file" msgstr "1区域/1文件" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1322 sfdb_ui.cc:1662 msgid "one region per channel" msgstr "1区域/1声é“" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1327 sfdb_ui.cc:1663 sfdb_ui.cc:1677 msgid "all files in one region" msgstr "所有文件在一个区域" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1394 msgid "" "One or more of the selected files\n" "cannot be used by %1" @@ -10925,58 +11190,58 @@ msgstr "" "一个或多个所选文件\n" "ä¸èƒ½è¢«ç”¨äºŽ %1" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1534 msgid "Copy files to session" msgstr "å¤åˆ¶æ–‡ä»¶åˆ°ä¼šè¯" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1551 sfdb_ui.cc:1714 msgid "file timestamp" msgstr "文件时间戳" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1552 sfdb_ui.cc:1716 msgid "edit point" msgstr "编辑点" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1553 sfdb_ui.cc:1718 msgid "playhead" msgstr "播放头" -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1554 msgid "session start" msgstr "开始会è¯" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1559 msgid "Add files as ..." msgstr "" -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1581 #, fuzzy msgid "Insert at" msgstr "æ’入于:" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1594 #, fuzzy msgid "Mapping" msgstr "共享中" -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1612 #, fuzzy msgid "Conversion quality" msgstr "采样率转æ¢è´¨é‡" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1624 sfdb_ui.cc:1730 msgid "Best" msgstr "最佳质é‡" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1625 sfdb_ui.cc:1732 msgid "Good" msgstr "高质é‡" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1626 sfdb_ui.cc:1734 msgid "Quick" msgstr "速度优先" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1628 msgid "Fastest" msgstr "最快" @@ -11067,21 +11332,21 @@ msgstr "我想è¦å…³äºŽè¿™ä¸ªä¼šè¯çš„更多选项" #: startup.cc:194 msgid "" -"Welcome to this BETA release of Ardour 3.0\n" +"Welcome to this BETA release of Ardour %1\n" "\n" -"Ardour 3.0 has been released for Linux but because of the lack of testers,\n" +"Ardour %1 has been released for Linux but because of the lack of testers,\n" "it is still at the beta stage on OS X. So, a few guidelines:\n" "\n" "1) Please do NOT use this software with the expectation that it is " "stable or reliable\n" " though it may be so, depending on your workflow.\n" -"3) Please do NOT use the forums at ardour.org to report issues.\n" -"4) Please DO use the bugtracker at http://tracker.ardour.org/ to " +"2) Please do NOT use the forums at ardour.org to report issues.\n" +"3) Please DO use the bugtracker at http://tracker.ardour.org/ to " "report issues\n" -" making sure to note the product version number as 3.0-beta.\n" -"5) Please DO use the ardour-users mailing list to discuss ideas and " +" making sure to note the product version number as %1-beta.\n" +"4) Please DO use the ardour-users mailing list to discuss ideas and " "pass on comments.\n" -"6) Please DO join us on IRC for real time discussions about ardour3. " +"5) Please DO join us on IRC for real time discussions about ardour3. " "You\n" " can get there directly from Ardour via the Help->Chat menu option.\n" "\n" @@ -11213,10 +11478,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "你想干什么?" - #: startup.cc:729 msgid "Open" msgstr "打开 " @@ -11229,84 +11490,84 @@ msgstr "会è¯å称:" msgid "Create session folder in:" msgstr "在创建会è¯æ–‡ä»¶å¤¹:" -#: startup.cc:813 +#: startup.cc:821 msgid "Select folder for session" msgstr "为会è¯é€‰æ‹©ä¸€ä¸ªæ–‡ä»¶å¤¹" -#: startup.cc:845 +#: startup.cc:853 msgid "Use this template" msgstr "使用此模æ¿" -#: startup.cc:848 +#: startup.cc:856 msgid "no template" msgstr "没有模æ¿" -#: startup.cc:876 +#: startup.cc:884 msgid "Use an existing session as a template:" msgstr "使用一个存在的会è¯å½“作模æ¿" -#: startup.cc:888 +#: startup.cc:896 msgid "Select template" msgstr "选择模æ¿" -#: startup.cc:914 +#: startup.cc:922 msgid "New Session" msgstr "新会è¯" -#: startup.cc:1068 +#: startup.cc:1077 msgid "Select session file" msgstr "选择会è¯æ–‡ä»¶" -#: startup.cc:1084 +#: startup.cc:1093 msgid "Browse:" msgstr "æµè§ˆ:" -#: startup.cc:1093 +#: startup.cc:1102 msgid "Select a session" msgstr "选择一个会è¯" -#: startup.cc:1119 startup.cc:1120 startup.cc:1121 +#: startup.cc:1129 startup.cc:1130 startup.cc:1131 msgid "channels" msgstr "声é“" -#: startup.cc:1135 +#: startup.cc:1145 msgid "Busses" msgstr "总线" -#: startup.cc:1136 +#: startup.cc:1146 msgid "Inputs" msgstr "输入" -#: startup.cc:1137 +#: startup.cc:1147 msgid "Outputs" msgstr "输出" -#: startup.cc:1145 +#: startup.cc:1155 msgid "Create master bus" msgstr "创建主控总线" -#: startup.cc:1155 +#: startup.cc:1165 #, fuzzy msgid "Automatically connect to physical inputs" msgstr "自动连接物ç†è¾“å…¥" -#: startup.cc:1162 startup.cc:1221 +#: startup.cc:1172 startup.cc:1231 msgid "Use only" msgstr "仅使用" -#: startup.cc:1215 +#: startup.cc:1225 msgid "Automatically connect outputs" msgstr "自动连接到输出" -#: startup.cc:1237 +#: startup.cc:1247 msgid "... to master bus" msgstr "... 到主控总线" -#: startup.cc:1247 +#: startup.cc:1257 msgid "... to physical outputs" msgstr "... 到物ç†è¾“出" -#: startup.cc:1297 +#: startup.cc:1307 msgid "Advanced Session Options" msgstr "高级会è¯é€‰é¡¹" @@ -11991,19 +12252,19 @@ msgstr "é…置文件 %1 还没ä¿å­˜" msgid "bad XPM header %1" msgstr "" -#: utils.cc:292 +#: utils.cc:292 utils.cc:324 msgid "missing RGBA style for \"%1\"" msgstr "" -#: utils.cc:544 +#: utils.cc:591 msgid "cannot find XPM file for %1" msgstr "" -#: utils.cc:570 +#: utils.cc:617 msgid "cannot find icon image for %1 using %2" msgstr "" -#: utils.cc:585 +#: utils.cc:632 msgid "Caught exception while loading icon named %1" msgstr "" @@ -12011,84 +12272,86 @@ msgstr "" msgid "VerboseCanvasCursor" msgstr "" -#: add_video_dialog.cc:54 +#: add_video_dialog.cc:55 #, fuzzy msgid "Set Video Track" msgstr "添加音频音轨" -#: add_video_dialog.cc:62 +#: add_video_dialog.cc:63 #, fuzzy msgid "Launch External Video Monitor" msgstr "监控中" -#: add_video_dialog.cc:63 +#: add_video_dialog.cc:64 msgid "Adjust Session Framerate to Match Video Framerate" msgstr "" -#: add_video_dialog.cc:65 +#: add_video_dialog.cc:66 msgid "Reload docroot" msgstr "" -#: add_video_dialog.cc:110 add_video_dialog.cc:114 +#: add_video_dialog.cc:111 add_video_dialog.cc:115 msgid "VideoServerIndex" msgstr "" -#: add_video_dialog.cc:128 +#: add_video_dialog.cc:129 #, fuzzy msgid "Video files" msgstr "音频文件" -#: add_video_dialog.cc:163 +#: add_video_dialog.cc:164 #, fuzzy msgid "Video Information" msgstr "声音文件信æ¯" -#: add_video_dialog.cc:166 +#: add_video_dialog.cc:167 #, fuzzy msgid "Start:" msgstr "开始" -#: add_video_dialog.cc:172 +#: add_video_dialog.cc:173 #, fuzzy msgid "Frame rate:" msgstr "采样率:" -#: add_video_dialog.cc:175 +#: add_video_dialog.cc:176 msgid "Aspect Ratio:" msgstr "" -#: add_video_dialog.cc:653 +#: add_video_dialog.cc:654 msgid " %1 fps" msgstr "" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 msgid "Export Successful: %1" msgstr "" -#: video_timeline.cc:467 +#: video_timeline.cc:469 msgid "" "Parsing video file info failed. Is the Video Server running? Is the file " "readable by the Video Server? Does the docroot match? Is it a video file?" msgstr "" -#: video_timeline.cc:501 -msgid "Failed to set session-framerate: " -msgstr "" - -#: video_timeline.cc:501 -msgid " does not have a corresponding option setting in Ardour." +#: video_timeline.cc:507 +msgid "" +"Failed to set session-framerate: '%1' does not have a corresponding option " +"setting in %2." msgstr "" -#: video_timeline.cc:507 +#: video_timeline.cc:515 msgid "" -"Video file's framerate is not equal to Ardour session timecode's framerate: " +"Video file's framerate is not equal to %1 session timecode's framerate: '%2' " +"vs '%3'" msgstr "" -#: video_timeline.cc:508 -msgid " vs " +#: video_timeline.cc:588 +msgid "" +"Video-server docroot mismatch. %1: '%2', video-server: '%3'. This usually " +"means that the video server was not started by ardour and uses a different " +"document-root." msgstr "" -#: video_timeline.cc:690 +#: video_timeline.cc:737 msgid "" "Video-monitor 'xjadeo' was not found. Please install http://xjadeo.sf.net/ " "(a custom path to xjadeo can be specified by setting the XJREMOTE " @@ -12096,18 +12359,18 @@ msgid "" "xjadeo's remote-control interface 'xjremote')." msgstr "" -#: video_monitor.cc:282 +#: video_monitor.cc:281 #, fuzzy msgid "Video Monitor: File Not Found." msgstr "监控中" -#: transcode_ffmpeg.cc:71 +#: transcode_ffmpeg.cc:73 msgid "" "No ffprobe or ffmpeg executables could be found on this system.\n" "Video import and export is not possible until you install those tools.\n" -"Ardour requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" +"%1 requires ffmpeg and ffprobe from ffmpeg.org - version 1.1 or newer.\n" "\n" -"The tools are included with the Ardour releases from ardour.org and also " +"The tools are included with the %1 releases from ardour.org and also " "available with the video-server at http://x42.github.com/harvid/\n" "\n" "Important: the files need to be installed in $PATH and named ffmpeg_harvid " @@ -12117,378 +12380,387 @@ msgid "" "ffprobe to ffprobe_harvid.\n" msgstr "" -#: transcode_video_dialog.cc:55 +#: transcode_video_dialog.cc:56 #, fuzzy msgid "Transcode/Import Video File " msgstr "导出为音频文件..." -#: transcode_video_dialog.cc:57 +#: transcode_video_dialog.cc:58 #, fuzzy msgid "Output File:" msgstr "输出设备:" -#: transcode_video_dialog.cc:60 export_video_dialog.cc:72 +#: transcode_video_dialog.cc:61 export_video_dialog.cc:73 msgid "Abort" msgstr "" -#: transcode_video_dialog.cc:62 +#: transcode_video_dialog.cc:63 #, fuzzy msgid "Height = " msgstr "高度" -#: transcode_video_dialog.cc:65 +#: transcode_video_dialog.cc:66 msgid "Manual Override" msgstr "" -#: transcode_video_dialog.cc:69 -msgid "Debug Mode: Print ffmpeg Command and Output to stdout." +#: transcode_video_dialog.cc:70 export_video_dialog.cc:89 +msgid "Debug Mode: Print ffmpeg command and output to stdout." msgstr "" -#: transcode_video_dialog.cc:106 +#: transcode_video_dialog.cc:107 #, fuzzy msgid "File Information" msgstr "声音文件信æ¯" -#: transcode_video_dialog.cc:112 +#: transcode_video_dialog.cc:113 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: transcode_video_dialog.cc:119 +#: transcode_video_dialog.cc:120 msgid "" "File-info can not be read. Most likely '%1' is not a valid video-file or an " "unsupported video codec or format." msgstr "" -#: transcode_video_dialog.cc:133 +#: transcode_video_dialog.cc:134 msgid "FPS:" msgstr "" -#: transcode_video_dialog.cc:135 +#: transcode_video_dialog.cc:136 #, fuzzy msgid "Duration:" msgstr "æŒç»­æ—¶é—´(秒)" -#: transcode_video_dialog.cc:137 +#: transcode_video_dialog.cc:138 msgid "Codec:" msgstr "" -#: transcode_video_dialog.cc:139 +#: transcode_video_dialog.cc:140 msgid "Geometry:" msgstr "" -#: transcode_video_dialog.cc:154 +#: transcode_video_dialog.cc:155 #, fuzzy msgid "??" msgstr "???" -#: transcode_video_dialog.cc:175 +#: transcode_video_dialog.cc:176 #, fuzzy msgid "Import Settings" msgstr "选项" -#: transcode_video_dialog.cc:180 +#: transcode_video_dialog.cc:181 msgid "Do Not Import Video" msgstr "" -#: transcode_video_dialog.cc:181 +#: transcode_video_dialog.cc:182 msgid "Reference From Current Location" msgstr "" -#: transcode_video_dialog.cc:183 +#: transcode_video_dialog.cc:184 #, fuzzy msgid "Import/Transcode Video to Session" msgstr "从会è¯å¯¼å…¥" -#: transcode_video_dialog.cc:197 +#: transcode_video_dialog.cc:198 msgid "Scale Video: Width = " msgstr "" -#: transcode_video_dialog.cc:204 +#: transcode_video_dialog.cc:205 msgid "Original Width" msgstr "" -#: transcode_video_dialog.cc:219 +#: transcode_video_dialog.cc:220 msgid "Bitrate (KBit/s):" msgstr "" -#: transcode_video_dialog.cc:224 +#: transcode_video_dialog.cc:225 #, fuzzy msgid "Extract Audio:" msgstr "导出音频" -#: transcode_video_dialog.cc:344 +#: transcode_video_dialog.cc:345 #, fuzzy msgid "Extracting Audio.." msgstr "导出音频" -#: transcode_video_dialog.cc:347 +#: transcode_video_dialog.cc:348 msgid "Audio Extraction Failed." msgstr "" -#: transcode_video_dialog.cc:373 +#: transcode_video_dialog.cc:374 msgid "Transcoding Video.." msgstr "" -#: transcode_video_dialog.cc:407 +#: transcode_video_dialog.cc:408 #, fuzzy msgid "Transcoding Failed." msgstr "å¼€å¯ç¿»è¯‘功能" -#: transcode_video_dialog.cc:490 +#: transcode_video_dialog.cc:491 #, fuzzy msgid "Save Transcoded Video File" msgstr "导出为音频文件..." -#: video_server_dialog.cc:42 +#: video_server_dialog.cc:43 msgid "Launch Video Server" msgstr "" -#: video_server_dialog.cc:43 +#: video_server_dialog.cc:44 msgid "Server Executable:" msgstr "" -#: video_server_dialog.cc:45 +#: video_server_dialog.cc:46 #, fuzzy msgid "Server Docroot:" msgstr "æœåŠ¡å™¨:" -#: video_server_dialog.cc:51 +#: video_server_dialog.cc:52 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." msgstr "" -#: video_server_dialog.cc:90 +#: video_server_dialog.cc:92 msgid "" "The external video server 'harvid' can not be found. The tool is included " -"with the Ardour releases from ardour.org, alternatively you can download it " -"from http://x42.github.com/harvid/ or acquire it from your distribution." +"with the %1 releases from ardour.org, alternatively you can download it from " +"http://x42.github.com/harvid/ or acquire it from your distribution." msgstr "" -#: video_server_dialog.cc:117 +#: video_server_dialog.cc:120 msgid "Listen Address:" msgstr "" -#: video_server_dialog.cc:122 +#: video_server_dialog.cc:125 msgid "Listen Port:" msgstr "" -#: video_server_dialog.cc:127 +#: video_server_dialog.cc:130 #, fuzzy msgid "Cache Size:" msgstr "最大化尺寸" -#: video_server_dialog.cc:132 +#: video_server_dialog.cc:136 msgid "" -"Ardour relies on an external Video Server for the videotimeline.\n" +"%1 relies on an external Video Server for the videotimeline.\n" "The server configured in Edit -> Prefereces -> Video is not reachable.\n" "Do you want ardour to launch 'harvid' on this machine?" msgstr "" -#: video_server_dialog.cc:171 +#: video_server_dialog.cc:176 msgid "Set Video Server Executable" msgstr "" -#: video_server_dialog.cc:191 +#: video_server_dialog.cc:196 msgid "Server docroot" msgstr "" -#: utils_videotl.cc:52 +#: utils_videotl.cc:53 msgid "Destination is outside Video Server's docroot. " msgstr "" -#: utils_videotl.cc:53 +#: utils_videotl.cc:54 msgid "" "The destination file path is outside of the Video Server's docroot. The file " "will not be readable by the Video Server. Do you still want to continue?" msgstr "" -#: utils_videotl.cc:56 +#: utils_videotl.cc:57 msgid "Continue" msgstr "" -#: utils_videotl.cc:62 +#: utils_videotl.cc:63 #, fuzzy msgid "Confirm Overwrite" msgstr "确定覆盖快照" -#: utils_videotl.cc:63 +#: utils_videotl.cc:64 #, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "已存在åŒåå¿«ç…§. 覆盖之?" -#: utils_videotl.cc:73 utils_videotl.cc:89 +#: utils_videotl.cc:74 utils_videotl.cc:90 #, fuzzy msgid "Cannot create video folder \"%1\" (%2)" msgstr "无法创建用户Ardour文件夹 %1 (%2)" -#: export_video_dialog.cc:65 +#: export_video_dialog.cc:66 #, fuzzy msgid "Export Video File " msgstr "导出为音频文件..." -#: export_video_dialog.cc:69 +#: export_video_dialog.cc:70 #, fuzzy msgid "Video:" msgstr "开始" -#: export_video_dialog.cc:73 +#: export_video_dialog.cc:74 msgid "Scale Video (W x H):" msgstr "" -#: export_video_dialog.cc:78 +#: export_video_dialog.cc:79 msgid "Set Aspect Ratio:" msgstr "" -#: export_video_dialog.cc:79 +#: export_video_dialog.cc:80 #, fuzzy msgid "Normalize Audio" msgstr "标准化到:" -#: export_video_dialog.cc:80 +#: export_video_dialog.cc:81 msgid "2 Pass Encoding" msgstr "" -#: export_video_dialog.cc:81 +#: export_video_dialog.cc:82 msgid "Codec Optimizations:" msgstr "" -#: export_video_dialog.cc:83 +#: export_video_dialog.cc:84 msgid "Deinterlace" msgstr "" -#: export_video_dialog.cc:84 +#: export_video_dialog.cc:85 msgid "Use [2] B-frames (MPEG 2 or 4 only)" msgstr "" -#: export_video_dialog.cc:85 +#: export_video_dialog.cc:86 msgid "Override FPS (Default is to retain FPS from the input video file):" msgstr "" -#: export_video_dialog.cc:86 +#: export_video_dialog.cc:87 #, fuzzy msgid "Include Session Metadata" msgstr "标记会è¯å…ƒæ•°æ®" -#: export_video_dialog.cc:88 -msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout." -msgstr "" - -#: export_video_dialog.cc:106 +#: export_video_dialog.cc:107 msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " -"is not possible until you install those tools. See the Log widow for more " +"is not possible until you install those tools. See the Log window for more " "information." msgstr "" -#: export_video_dialog.cc:116 +#: export_video_dialog.cc:117 #, fuzzy msgid "Output:" msgstr "输出" -#: export_video_dialog.cc:126 +#: export_video_dialog.cc:127 #, fuzzy msgid "Input:" msgstr "输入" -#: export_video_dialog.cc:137 +#: export_video_dialog.cc:138 #, fuzzy msgid "Audio:" msgstr "音频" -#: export_video_dialog.cc:139 +#: export_video_dialog.cc:140 #, fuzzy msgid "Master Bus" msgstr "创建主控总线" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:145 +msgid "from the %1 session's start to the session's end" +msgstr "" + +#: export_video_dialog.cc:149 +msgid "from 00:00:00:00 to the video's end" +msgstr "" + +#: export_video_dialog.cc:151 +msgid "from the video's start to the video's end" +msgstr "" + +#: export_video_dialog.cc:184 #, fuzzy msgid "Settings:" msgstr "目的地" -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:192 #, fuzzy msgid "Range:" msgstr "范围" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:195 #, fuzzy msgid "Preset:" msgstr "预设" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:198 #, fuzzy msgid "Video Codec:" msgstr "文件:" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:201 #, fuzzy msgid "Video KBit/s:" msgstr "开始" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:204 #, fuzzy msgid "Audio Codec:" msgstr "音频模å¼:" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:207 #, fuzzy msgid "Audio KBit/s:" msgstr "音频文件" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:210 #, fuzzy msgid "Audio Samplerate:" msgstr "采样率:" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:387 #, fuzzy msgid "Normalizing audio" msgstr "归一化值" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:391 #, fuzzy msgid "Exporting audio" msgstr "导出音频" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:437 #, fuzzy -msgid "Exporting Audio.." +msgid "Exporting Audio..." msgstr "导出音频" -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:494 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:523 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 -msgid "Encoding Video.." -msgstr "" +#: export_video_dialog.cc:562 +#, fuzzy +msgid "Encoding Video..." +msgstr "å¼€å¯ç¿»è¯‘功能" -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:581 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:679 msgid "Encoding Video.. Pass 1/2" msgstr "" -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:691 msgid "Encoding Video.. Pass 2/2" msgstr "" -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:779 #, fuzzy msgid "Transcoding failed." msgstr "å¼€å¯ç¿»è¯‘功能" -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:948 export_video_dialog.cc:968 #, fuzzy msgid "Save Exported Video File" msgstr "导出为音频文件..." @@ -12506,33 +12778,33 @@ msgstr "" msgid "Video Export Info" msgstr "" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" -"\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" -"\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#~ msgid "slowest" +#~ msgstr "最慢" + +#~ msgid "slow" +#~ msgstr "æ…¢" + +#~ msgid "fast" +#~ msgstr "å¿«" + +#~ msgid "faster" +#~ msgstr "较快" + +#~ msgid "fastest" +#~ msgstr "最快" + +#~ msgid "What would you like to do ?" +#~ msgstr "你想干什么?" + #~ msgid "Connect" #~ msgstr "连接" diff --git a/libs/ardour/butler.cc b/libs/ardour/butler.cc index a948c185b8..89b2cc1303 100644 --- a/libs/ardour/butler.cc +++ b/libs/ardour/butler.cc @@ -401,6 +401,7 @@ Butler::empty_pool_trash () void Butler::drop_references () { + cerr << "Butler drops pool trash\n"; SessionEvent::pool->set_trash (0); } diff --git a/libs/ardour/po/cs.po b/libs/ardour/po/cs.po index f273712cc9..a273642491 100644 --- a/libs/ardour/po/cs.po +++ b/libs/ardour/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-09 09:28-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-06-13 22:47+0200\n" "Last-Translator: Pavel Fric \n" "Language-Team: Czech \n" @@ -30,58 +30,58 @@ msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" "AudioDiskstream %1: není žádný seznam skladeb, který by bylo lze kopírovat!" -#: audio_diskstream.cc:823 audio_diskstream.cc:833 +#: audio_diskstream.cc:848 audio_diskstream.cc:858 msgid "" "AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3" msgstr "" "AudioDiskstream %1: PÅ™i doplňování nelze Äíst %2 ze seznamu skladeb u snímku " "%3" -#: audio_diskstream.cc:989 +#: audio_diskstream.cc:1014 msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "AudioDiskstream %1: Nelze Äíst %2 ze seznamu skladeb u snímku %3" -#: audio_diskstream.cc:1358 audio_diskstream.cc:1375 +#: audio_diskstream.cc:1383 audio_diskstream.cc:1400 msgid "AudioDiskstream %1: cannot write to disk" msgstr "AudioDiskstream %1: Nelze zapisovat na disk" -#: audio_diskstream.cc:1418 +#: audio_diskstream.cc:1443 msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" msgstr "AudioDiskstream %1: Zachycená data nelze zapisovat na disk!" -#: audio_diskstream.cc:1512 +#: audio_diskstream.cc:1537 msgid "%1: could not create region for complete audio file" msgstr "%1: NepodaÅ™ilo se vytvoÅ™it oblast pro úplný zvukový soubor" -#: audio_diskstream.cc:1546 +#: audio_diskstream.cc:1571 msgid "AudioDiskstream: could not create region for captured audio!" msgstr "" "AudioDiskstream: NepodaÅ™ilo se vytvoÅ™it oblast pro zaznamenaný zvukový " "materiál!" -#: audio_diskstream.cc:1654 +#: audio_diskstream.cc:1679 msgid "programmer error: %1" msgstr "Chyba v programování: %1" -#: audio_diskstream.cc:1880 +#: audio_diskstream.cc:1905 msgid "AudioDiskstream: channel %1 out of range" msgstr "AudioDiskstream: Kanál %1 pÅ™ekroÄení rozsahu" -#: audio_diskstream.cc:1894 midi_diskstream.cc:1196 +#: audio_diskstream.cc:1919 midi_diskstream.cc:1210 msgid "%1:%2 new capture file not initialized correctly" msgstr "%1:%2 nový záznamový soubor neinicializován správnÄ›" -#: audio_diskstream.cc:2175 +#: audio_diskstream.cc:2200 msgid "%1: cannot restore pending capture source file %2" msgstr "%1: Nelze obnovit pÅ™edběžný záznamový zdrojový soubor %2" -#: audio_diskstream.cc:2197 +#: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "" "%1: Seznam obsahuje nesprávný poÄet pÅ™edběžných zdrojů - vÅ¡echny jsou " "pÅ™ehlíženy" -#: audio_diskstream.cc:2221 +#: audio_diskstream.cc:2246 msgid "%1: cannot create whole-file region from pending capture sources" msgstr "" "%1: Z pÅ™edběžných záznamových zdrojů nelze vytvoÅ™it žádnou oblast pro úplný " @@ -133,8 +133,8 @@ msgstr "Seznamy zvukových skladeb (nepoužívané)" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 -#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 -#: rb_effect.cc:332 session.cc:2464 session.cc:2497 session.cc:3642 +#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643 +#: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "Chyba v programování: %1" @@ -215,7 +215,7 @@ msgstr "" msgid "Connect session to engine" msgstr "Spojit sezení se strojem" -#: audioengine.cc:844 +#: audioengine.cc:843 msgid "" "a port with the name \"%1\" already exists: check for duplicated track/bus " "names" @@ -223,7 +223,7 @@ msgstr "" "Přípojka s názvem \"%1\" již existuje: Prověřte na zdvojené názvy stop/" "sbÄ›rnic" -#: audioengine.cc:846 session.cc:1697 +#: audioengine.cc:845 session.cc:1698 msgid "" "No more JACK ports are available. You will need to stop %1 and restart JACK " "with more ports if you need this many tracks." @@ -231,35 +231,35 @@ msgstr "" "Nejsou dostupné další přípojky JACK. Pokud potÅ™ebujete tolik stop, musíte " "zastavit %1 a spustit JACK znovu s více přípojkami." -#: audioengine.cc:849 +#: audioengine.cc:848 msgid "AudioEngine: cannot register port \"%1\": %2" msgstr "AudioEngine: Nelze zaregistrovat přípojku \"%1\": %2" -#: audioengine.cc:879 +#: audioengine.cc:878 msgid "unable to create port: %1" msgstr "Nelze vytvoÅ™it přípojku: %1" -#: audioengine.cc:933 +#: audioengine.cc:932 msgid "connect called before engine was started" msgstr "Zavolání connect (spojení) pÅ™ed spuÅ¡tÄ›ním stroje" -#: audioengine.cc:959 +#: audioengine.cc:958 msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" msgstr "AudioEngine: Nelze spojit %1 (%2) s %3 (%4)" -#: audioengine.cc:974 audioengine.cc:1005 +#: audioengine.cc:973 audioengine.cc:1004 msgid "disconnect called before engine was started" msgstr "Zavolání disconnect (odpojení) pÅ™ed spuÅ¡tÄ›ním stroje" -#: audioengine.cc:1053 +#: audioengine.cc:1052 msgid "get_port_by_name() called before engine was started" msgstr "Zavolání get_port_by_name() pÅ™ed spuÅ¡tÄ›ním stroje" -#: audioengine.cc:1105 +#: audioengine.cc:1104 msgid "get_ports called before engine was started" msgstr "Zavolání get_ports pÅ™ed spuÅ¡tÄ›ním stroje" -#: audioengine.cc:1428 +#: audioengine.cc:1427 msgid "failed to connect to JACK" msgstr "NepodaÅ™ilo se spojit se s JACK" @@ -462,7 +462,7 @@ msgstr "Nelze nalézt takt CPU (MHz) v /proc/cpuinfo" msgid "audio" msgstr "Zvuk" -#: data_type.cc:28 session.cc:1639 session.cc:1642 +#: data_type.cc:28 session.cc:1640 session.cc:1643 msgid "MIDI" msgstr "MIDI" @@ -577,7 +577,7 @@ msgstr "Trojúhelníkový" msgid "Rectangular" msgstr "Obdélníkový" -#: export_formats.cc:52 session.cc:4853 session.cc:4869 +#: export_formats.cc:52 session.cc:4861 session.cc:4877 msgid "None" msgstr "Žádný" @@ -629,70 +629,66 @@ msgstr "PÅ™i zápisu souboru TOC/CUE se vyskytla chyba:%1" msgid "Cannot convert %1 to Latin-1 text" msgstr "Nelze pÅ™evést %1 na kódování Latin-1" -#: export_profile_manager.cc:94 +#: export_profile_manager.cc:93 msgid "Searching for export formats in %1" msgstr "Hledání vyvádÄ›cích formátů v %1" -#: export_profile_manager.cc:100 +#: export_profile_manager.cc:99 msgid "Unable to create export format directory %1: %2" msgstr "Nelze vytvoÅ™it adresář %1 pro vyvádÄ›cí formáty: %2" -#: export_profile_manager.cc:258 +#: export_profile_manager.cc:257 msgid "Unable to remove export preset %1: %2" msgstr "Nelze odstranit pÅ™ednastavení vyvádÄ›ní %1: %2" -#: export_profile_manager.cc:348 +#: export_profile_manager.cc:347 msgid "Selection" msgstr "VýbÄ›r" -#: export_profile_manager.cc:466 -msgid "Session" -msgstr "Sezení" - -#: export_profile_manager.cc:587 +#: export_profile_manager.cc:600 msgid "Unable to rename export format %1 to %2: %3" msgstr "Nelze pÅ™ejmenovat vyvádÄ›cí formát %1 na %2: %3" -#: export_profile_manager.cc:619 +#: export_profile_manager.cc:632 msgid "Unable to remove export profile %1: %2" msgstr "Nelze odstranit vyvádÄ›cí profil %1: %2" -#: export_profile_manager.cc:636 +#: export_profile_manager.cc:649 msgid "empty format" msgstr "Prázdný formát" -#: export_profile_manager.cc:805 +#: export_profile_manager.cc:818 msgid "No timespan has been selected!" msgstr "Nebyl vybrán žádný Äasový úsek!" -#: export_profile_manager.cc:809 +#: export_profile_manager.cc:822 msgid "No channels have been selected!" msgstr "Nebyly vybrány žádné kanály!" -#: export_profile_manager.cc:813 +#: export_profile_manager.cc:826 msgid "Some channels are empty" msgstr "NÄ›které kanály jsou prázdné" -#: export_profile_manager.cc:846 +#: export_profile_manager.cc:859 msgid "No format selected!" msgstr "Nebyl vybrán žádný formát!" -#: export_profile_manager.cc:848 +#: export_profile_manager.cc:861 msgid "All channels are empty!" msgstr "VÅ¡echny kanály jsou prázdné!" -#: export_profile_manager.cc:850 +#: export_profile_manager.cc:863 msgid "One or more of the selected formats is not compatible with this system!" msgstr "Jeden nebo více formátu není sluÄitelný s tímto systémem!" -#: export_profile_manager.cc:853 +#: export_profile_manager.cc:866 msgid "" "%1 supports only %2 channels, but you have %3 channels in your channel " "configuration" msgstr "" "% podporuje jen %2 kanály, ale ve vaÅ¡em nastavení kanálů se nachází %3 kanál" -#: file_source.cc:198 session_state.cc:2887 +#: file_source.cc:198 session_state.cc:2891 msgid "" "there are already 1000 files with names like %1; versioning discontinued" msgstr "Je již 1000 souborů s názvem, jako je %1; verzování skonÄeno" @@ -794,25 +790,25 @@ msgstr "Nelze urÄit nynÄ›jší pracovní adresář (%1)" msgid "unknown file type for session %1" msgstr "Neznámý typ souboru pro sezení %1" -#: globals.cc:204 +#: globals.cc:205 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" "NepodaÅ™ilo se nastavit systémové omezení pro otevÅ™ené soubory na \"neomezeno" "\"" -#: globals.cc:206 +#: globals.cc:207 msgid "Could not set system open files limit to %1" msgstr "NepodaÅ™ilo se nastavit systémové omezení pro otevÅ™ené soubory na %1" -#: globals.cc:210 +#: globals.cc:211 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "VaÅ¡e systémové nastavení omezuje %1 na jen %2 otevÅ™ené soubory" -#: globals.cc:214 +#: globals.cc:215 msgid "Could not get system open files limit (%1)" msgstr "NepodaÅ™ilo se dostat systémové omezení pro otevÅ™ené soubory (%1)" -#: globals.cc:267 +#: globals.cc:266 msgid "Loading configuration" msgstr "Nahrává se nastavení" @@ -948,15 +944,15 @@ msgstr "%s vstup" msgid "%s out" msgstr "%s výstup" -#: io.cc:1534 session.cc:493 session.cc:522 +#: io.cc:1534 session.cc:494 session.cc:523 msgid "mono" msgstr "Mono" -#: io.cc:1536 session.cc:506 session.cc:536 +#: io.cc:1536 session.cc:507 session.cc:537 msgid "L" msgstr "L" -#: io.cc:1536 session.cc:508 session.cc:538 +#: io.cc:1536 session.cc:509 session.cc:539 msgid "R" msgstr "P" @@ -965,20 +961,20 @@ msgstr "P" msgid "%d" msgstr "%d" -#: ladspa_plugin.cc:87 +#: ladspa_plugin.cc:88 msgid "LADSPA: module has no descriptor function." msgstr "LADSPA: Modul nemá žádnou funkci popisu" -#: ladspa_plugin.cc:92 +#: ladspa_plugin.cc:93 msgid "LADSPA: plugin has gone away since discovery!" msgstr "LADSPA: Přídavný modul už není více nalezitelný!" -#: ladspa_plugin.cc:99 +#: ladspa_plugin.cc:100 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" "LADSPA: \"%1\" nemůže být použit, neboÅ¥ nedÄ›lá žádný \"inplace processing\"" -#: ladspa_plugin.cc:296 +#: ladspa_plugin.cc:297 msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " "in the plugin design, and presets may be invalid" @@ -986,35 +982,35 @@ msgstr "" "Å patné Äíslo parametru pro přídavný modul \"%1\". To může znaÄit zmÄ›nu v " "návrhupřídavného modulu, a pÅ™ednastavení jsou případnÄ› neplatná" -#: ladspa_plugin.cc:373 ladspa_plugin.cc:418 +#: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" msgstr "Å patný uzel poslán LadspaPlugin::set_state" -#: ladspa_plugin.cc:386 ladspa_plugin.cc:431 +#: ladspa_plugin.cc:391 ladspa_plugin.cc:440 msgid "LADSPA: no ladspa port number" msgstr "LADSPA: Žádné Äíslo přípojky LADSPA" -#: ladspa_plugin.cc:392 ladspa_plugin.cc:437 +#: ladspa_plugin.cc:397 ladspa_plugin.cc:446 msgid "LADSPA: no ladspa port data" msgstr "LADSPA: Žádná data přípojky LADSPA" -#: ladspa_plugin.cc:707 +#: ladspa_plugin.cc:717 msgid "LADSPA: cannot load module from \"%1\"" msgstr "LADSPA: Nelze nahrát modul z \"%1\"" -#: ladspa_plugin.cc:817 +#: ladspa_plugin.cc:827 msgid "Could not locate HOME. Preset not removed." msgstr "NepodaÅ™ilo se najít HOME. PÅ™ednastavení neodstranÄ›no." -#: ladspa_plugin.cc:854 ladspa_plugin.cc:860 +#: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" msgstr "NepodaÅ™ilo se vytvoÅ™it %1. PÅ™ednastavení neuloženo. (%2)" -#: ladspa_plugin.cc:867 +#: ladspa_plugin.cc:877 msgid "Error saving presets file %1." msgstr "Chyba pÅ™i ukládání souboru s pÅ™ednastavením %1." -#: ladspa_plugin.cc:905 +#: ladspa_plugin.cc:915 msgid "Could not locate HOME. Preset not saved." msgstr "NepodaÅ™ilo se najít HOME. PÅ™ednastavení neuloženo." @@ -1054,7 +1050,7 @@ msgstr "Locations: Pokus o použití neznámé polohy jako vybrané polohy" msgid "incorrect XML mode passed to Locations::set_state" msgstr "Nesprávný uzel XML pÅ™edán dál Locations::set_state" -#: location.cc:842 session.cc:4354 session_state.cc:1110 +#: location.cc:842 session.cc:4362 session_state.cc:1114 msgid "session" msgstr "Sezení" @@ -1138,23 +1134,23 @@ msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" "MidiDiskstream %1: není žádný seznam skladeb, který by bylo lze kopírovat!" -#: midi_diskstream.cc:685 +#: midi_diskstream.cc:699 msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "MidiDiskstream %1: Nelze Äíst %2 ze seznamu skladeb u snímku %3" -#: midi_diskstream.cc:820 +#: midi_diskstream.cc:834 msgid "MidiDiskstream %1: cannot write to disk" msgstr "MidiDiskstream %1: Nelze zapisovat na disk" -#: midi_diskstream.cc:854 +#: midi_diskstream.cc:868 msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "MidiDiskstream %1: Zachycená data nelze zapisovat na disk!" -#: midi_diskstream.cc:941 +#: midi_diskstream.cc:955 msgid "%1: could not create region for complete midi file" msgstr "%1: NepodaÅ™ilo se vytvoÅ™it oblast pro úplný soubor MIDI" -#: midi_diskstream.cc:978 +#: midi_diskstream.cc:992 msgid "MidiDiskstream: could not create region for captured midi!" msgstr "" "MidiDiskstream: NepodaÅ™ilo se vytvoÅ™it oblast pro zaznamenaný materiál MIDI!" @@ -1353,23 +1349,35 @@ msgstr "Žádné ID seznamu skladeb v XML zdroje seznamu skladeb!" msgid "Could not construct playlist for PlaylistSource from session data!" msgstr "NepodaÅ™ilo se sestavit seznam skladeb ze zdrojových dat sezení!" -#: plugin_insert.cc:599 +#: plugin.cc:324 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin.cc:398 +msgid "" +"Saving plugin settings is not supported in this build of %1. Consider paying " +"for the full version" +msgstr "" + +#: plugin_insert.cc:598 msgid "programming error: " msgstr "Chyba v programování:" -#: plugin_insert.cc:908 +#: plugin_insert.cc:926 msgid "XML node describing plugin is missing the `type' field" msgstr "Uzlu XML k popisu přídavného modulu chybí pole \"type\"" -#: plugin_insert.cc:923 +#: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" msgstr "Neznámý typ přídavného modulu %1 ve vkládacím stavu přídavného modulu" -#: plugin_insert.cc:951 +#: plugin_insert.cc:969 msgid "Plugin has no unique ID field" msgstr "Přídavný modul nemá žádné pole pro jedineÄné ID" -#: plugin_insert.cc:960 +#: plugin_insert.cc:978 msgid "" "Found a reference to a plugin (\"%1\") that is unknown.\n" "Perhaps it was removed or moved since it was last used." @@ -1377,15 +1385,15 @@ msgstr "" "Nalezen odkaz na neznámý přídavný modul (\"%1\").\n" "Snad byl od posledního použití odstranÄ›n nebo pÅ™esunut." -#: plugin_insert.cc:1076 +#: plugin_insert.cc:1094 msgid "PluginInsert: Auto: no ladspa port number" msgstr "PluginInsert: Auto: Žádné Äíslo přípojky LADSPA" -#: plugin_insert.cc:1083 +#: plugin_insert.cc:1101 msgid "PluginInsert: Auto: port id out of range" msgstr "PluginInsert: Auto: PÅ™ekroÄení rozsahu ID přípojky" -#: plugin_insert.cc:1119 +#: plugin_insert.cc:1137 msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "" "PluginInsert: automatizovatelný prvek ovládání %1 nenalezen - pÅ™ehlíží se" @@ -1536,24 +1544,24 @@ msgstr "Zavedení: Chyba v src_new() : %1" msgid "return %1" msgstr "Vrácená hodnota: %1" -#: route.cc:1100 route.cc:2550 +#: route.cc:1105 route.cc:2581 msgid "unknown Processor type \"%1\"; ignored" msgstr "Neznámý typ procesoru \"%1\"; pÅ™ehlíží se" -#: route.cc:1112 +#: route.cc:1117 msgid "processor could not be created. Ignored." msgstr "Procesor se nepodaÅ™ilo vytvoÅ™it. PÅ™ehlíží se." -#: route.cc:1983 route.cc:2203 +#: route.cc:2007 route.cc:2234 msgid "Bad node sent to Route::set_state() [%1]" msgstr "Å patný uzel poslán Route::set_state() [%1]" -#: route.cc:2042 +#: route.cc:2067 msgid "Pannable state found for route (%1) without a panner!" msgstr "" "Nalezen stav cíle vyvážení pro cestu (%1), aniž by bylo nalezeno vyvážení!" -#: route.cc:2106 route.cc:2110 route.cc:2317 route.cc:2321 +#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" "Å patnÄ› utvoÅ™ený Å™etÄ›zec znaků pro klÃ­Ä poÅ™adí roztřídÄ›ní v souboru sezení! " @@ -1583,104 +1591,104 @@ msgstr "Poslání (send) %1" msgid "programming error: send created using role %1" msgstr "Chyba v programování: Poslání vytvoÅ™eno pomocí role %1" -#: session.cc:346 +#: session.cc:347 msgid "Set block size and sample rate" msgstr "Nastavit velikost bloku a vzorkovací kmitoÄet" -#: session.cc:351 +#: session.cc:352 msgid "Using configuration" msgstr "Používané nastavení" -#: session.cc:376 +#: session.cc:377 msgid "LTC In" msgstr "Vstup LTC" -#: session.cc:377 +#: session.cc:378 msgid "LTC Out" msgstr "Výstup LTC" -#: session.cc:403 +#: session.cc:404 msgid "LTC-in" msgstr "Vstup LTC" -#: session.cc:404 +#: session.cc:405 msgid "LTC-out" msgstr "Výstup LTC" -#: session.cc:433 +#: session.cc:434 msgid "could not setup Click I/O" msgstr "NepodaÅ™ilo se nastavit vstup/výstup metronomu" -#: session.cc:460 +#: session.cc:461 msgid "cannot setup Click I/O" msgstr "Nelze nastavit vstup/výstup metronomu" -#: session.cc:463 +#: session.cc:464 msgid "Compute I/O Latencies" msgstr "VypoÄítat prodlevy vstupu/výstupu" -#: session.cc:469 +#: session.cc:470 msgid "Set up standard connections" msgstr "Nastavit standardní spojení" -#: session.cc:490 +#: session.cc:491 #, c-format msgid "out %" msgstr "Výstup %" -#: session.cc:504 +#: session.cc:505 #, c-format msgid "out %+%" msgstr "Výstup %+%" -#: session.cc:519 +#: session.cc:520 #, c-format msgid "in %" msgstr "Vstup %" -#: session.cc:533 +#: session.cc:534 #, c-format msgid "in %+%" msgstr "Vstup %+%" -#: session.cc:569 +#: session.cc:570 msgid "Setup signal flow and plugins" msgstr "Nastavit signálový tok a přídavné moduly" -#: session.cc:613 +#: session.cc:614 msgid "Connect to engine" msgstr "Spojit se strojem" -#: session.cc:644 +#: session.cc:645 msgid "cannot connect master output %1 to %2" msgstr "Nelze spojit hlavní výstup %1 s %2" -#: session.cc:703 +#: session.cc:704 msgid "monitor" msgstr "Sledování" -#: session.cc:748 +#: session.cc:749 msgid "cannot connect control input %1 to %2" msgstr "Nelze spojit vstup ovládání %1 s %2" -#: session.cc:768 +#: session.cc:769 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "UpÅ™ednostňovaný vstup/výstup pro sledovací sbÄ›rnici (%1) nelze najít" -#: session.cc:799 +#: session.cc:800 msgid "cannot connect control output %1 to %2" msgstr "Nelze spojit výstup ovládání %1 s %2" -#: session.cc:863 +#: session.cc:864 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "Nelze vytvoÅ™it poslechový systém: Žádný poslech oblastí není možný" -#: session.cc:1042 +#: session.cc:1043 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "" "Sezení: Tuto polohu nelze pro automatický pÅ™epis použít (ZaÄátek <= Konec) " -#: session.cc:1082 +#: session.cc:1083 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" @@ -1688,83 +1696,83 @@ msgstr "" "Tuto polohu nelze pro automatickou smyÄku použít, protože nemá žádnou, nebo " "má zápornou délku" -#: session.cc:1395 +#: session.cc:1396 msgid "feedback loop setup between %1 and %2" msgstr "SmyÄka zpÄ›tné vazby rozpoznána mezi %1 a %2" -#: session.cc:1691 +#: session.cc:1692 msgid "Session: could not create new midi track." msgstr "Sezení: NepodaÅ™ilo se vytvoÅ™it novou stopu MIDI" -#: session.cc:1874 session.cc:1877 +#: session.cc:1875 session.cc:1878 msgid "Audio" msgstr "Zvuk" -#: session.cc:1901 session.cc:1909 session.cc:1986 session.cc:1994 +#: session.cc:1902 session.cc:1910 session.cc:1987 session.cc:1995 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "Nelze nastavit %1 nastavení vstup/%2 výstup pro novou zvukovou stopu" -#: session.cc:1932 +#: session.cc:1933 msgid "Session: could not create new audio track." msgstr "Sezení: NepodaÅ™ilo se vytvoÅ™it novou zvukovou stopu" -#: session.cc:1964 session.cc:1967 +#: session.cc:1965 session.cc:1968 msgid "Bus" msgstr "SbÄ›rnice" -#: session.cc:2017 +#: session.cc:2018 msgid "Session: could not create new audio route." msgstr "Sezení: NepodaÅ™ilo se vytvoÅ™it novou zvukovou cestu" -#: session.cc:2076 session.cc:2086 +#: session.cc:2077 session.cc:2087 msgid "Session: UINT_MAX routes? impossible!" msgstr "Sezení: Cesty UINT_MAX? Nemožné!" -#: session.cc:2108 +#: session.cc:2109 msgid "Session: cannot create track/bus from template description" msgstr "Sezení: Nelze vytvoÅ™it stopu/sbÄ›rnici z popisu pÅ™edlohy" -#: session.cc:2134 +#: session.cc:2135 msgid "Session: could not create new route from template" msgstr "Sezení: NepodaÅ™ilo se vytvoÅ™it novou cestu z pÅ™edlohy" -#: session.cc:2163 +#: session.cc:2164 msgid "Adding new tracks/busses failed" msgstr "Chyba pÅ™i pÅ™idávání nové stopy/sbÄ›rnice" -#: session.cc:3264 +#: session.cc:3265 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "OSUDOVà CHYBA! NepodaÅ™ilo se najít vhodnou verzi %1 pro pÅ™ejmenování" -#: session.cc:3384 session.cc:3442 +#: session.cc:3385 session.cc:3443 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "Již je %1 nahrávek pro %2, což je příliÅ¡ mnoho." -#: session.cc:3832 +#: session.cc:3833 msgid "send ID %1 appears to be in use already" msgstr "Zdá se, že ID poslání (send) %1, se již používá" -#: session.cc:3844 +#: session.cc:3845 msgid "aux send ID %1 appears to be in use already" msgstr "Zdá se, že ID pomocného-poslání (aux-send) %1, se již používá" -#: session.cc:3856 +#: session.cc:3857 msgid "return ID %1 appears to be in use already" msgstr "Zdá se, že ID vrácení (return) %1, se již používá" -#: session.cc:3868 +#: session.cc:3869 msgid "insert ID %1 appears to be in use already" msgstr "Zdá se, že ID vložení (insert) %1, se již používá" -#: session.cc:3995 +#: session.cc:3996 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "Nelze zapsat oblast s Konec <= ZaÄátek (napÅ™. %1 <= %2)" -#: session.cc:4024 +#: session.cc:4025 msgid "too many bounced versions of playlist \"%1\"" msgstr "PříliÅ¡ mnoho odhozených verzí seznamu skladeb \"%1\"" -#: session.cc:4034 +#: session.cc:4035 msgid "cannot create new audio file \"%1\" for %2" msgstr "Nelze vytvoÅ™it nový zvukový soubor \"%1\" pro %2" @@ -1815,7 +1823,7 @@ msgstr "%1: Polohu souboru %2 nelze vyhledat pro vyvedení" msgid "Export ended unexpectedly: %1" msgstr "Vyvedení skonÄilo neoÄekávanÄ›: %1" -#: session_ltc.cc:219 +#: session_ltc.cc:222 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." @@ -1823,11 +1831,11 @@ msgstr "" "Kodér LTC: Neplatná rychlost snímkování - Kódování LTC je pro zbývající Äást " "tohoto sezení zakázáno." -#: session_midi.cc:427 +#: session_midi.cc:428 msgid "Session: could not send full MIDI time code" msgstr "Sezení: NepodaÅ™ilo se poslat úplný Äasový kód MIDI" -#: session_midi.cc:519 +#: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "Sezení: Nelze poslat quarter-frame MTC (%1)" @@ -1835,11 +1843,11 @@ msgstr "Sezení: Nelze poslat quarter-frame MTC (%1)" msgid "Session: cannot create Playlist from XML description." msgstr "Sezení: Nelze vytvoÅ™it seznam skladeb z popisu XML" -#: session_process.cc:135 +#: session_process.cc:133 msgid "Session: error in no roll for %1" msgstr "Sezení: Chyba v no_roll pro %1" -#: session_process.cc:1160 +#: session_process.cc:1158 msgid "Programming error: illegal event type in process_event (%1)" msgstr "Chyba v programování: Neplatný typ události v process_event (%1)" @@ -1920,7 +1928,7 @@ msgstr "NepodaÅ™ilo se pÅ™ejmenovat snímek obrazovky %1 na %2 (%3)" msgid "Could not remove session file at path \"%1\" (%2)" msgstr "NepodaÅ™ilo se odstranit soubor se sezením v cestÄ› \"%1\" (%2)" -#: session_state.cc:759 +#: session_state.cc:761 msgid "" "the %1 audio engine is not connected and state saving would lose all I/O " "connections. Session not saved" @@ -1928,134 +1936,134 @@ msgstr "" "Zvukový stroj %1 není spojen, a pÅ™i ukládání stavu by doÅ¡lo ke ztrátÄ› vÅ¡ech " "spojení vstup/výstup. Sezení neuloženo" -#: session_state.cc:808 +#: session_state.cc:812 msgid "state could not be saved to %1" msgstr "Stav se do %1 uložit nepodaÅ™ilo" -#: session_state.cc:810 session_state.cc:821 +#: session_state.cc:814 session_state.cc:825 msgid "Could not remove temporary session file at path \"%1\" (%2)" msgstr "NepodaÅ™ilo se odstranit doÄasný soubor se sezením v cestÄ› \"%1\" (%2)" -#: session_state.cc:818 +#: session_state.cc:822 msgid "could not rename temporary session file %1 to %2" msgstr "NepodaÅ™ilo se pÅ™ejmenovat doÄasný soubor se sezením %1 na %2" -#: session_state.cc:886 +#: session_state.cc:890 msgid "%1: session file \"%2\" doesn't exist!" msgstr "%1: Soubor se sezením \"%2\" neexistuje!" -#: session_state.cc:898 +#: session_state.cc:902 msgid "Could not understand session file %1" msgstr "NepodaÅ™ilo se porozumÄ›t souboru se sezením\"%1\"" -#: session_state.cc:907 +#: session_state.cc:911 msgid "Session file %1 is not a session" msgstr "Soubor se sezením %1 není sezením" -#: session_state.cc:1204 +#: session_state.cc:1208 msgid "programming error: Session: incorrect XML node sent to set_state()" msgstr "Chyba v programování: Sezení: Nesprávný uzel XML poslán set_state()" -#: session_state.cc:1253 +#: session_state.cc:1257 msgid "Session: XML state has no options section" msgstr "Sezení: XML nemá žádnou Äást \"options\"" -#: session_state.cc:1258 +#: session_state.cc:1262 msgid "Session: XML state has no metadata section" msgstr "Sezení: XML nemá žádnou Äást \"metadata\"" -#: session_state.cc:1269 +#: session_state.cc:1273 msgid "Session: XML state has no sources section" msgstr "Sezení: XML nemá žádnou Äást \"sources\"" -#: session_state.cc:1276 +#: session_state.cc:1280 msgid "Session: XML state has no Tempo Map section" msgstr "Sezení: XML nemá žádnou Äást \"Tempo Map\"" -#: session_state.cc:1283 +#: session_state.cc:1287 msgid "Session: XML state has no locations section" msgstr "Sezení: XML nemá žádnou Äást \"locations\"" -#: session_state.cc:1309 +#: session_state.cc:1313 msgid "Session: XML state has no Regions section" msgstr "Sezení: XML nemá žádnou Äást \"Regions\"" -#: session_state.cc:1316 +#: session_state.cc:1320 msgid "Session: XML state has no playlists section" msgstr "Sezení: XML nemá žádnou Äást \"playlists\"" -#: session_state.cc:1336 +#: session_state.cc:1340 msgid "Session: XML state has no bundles section" msgstr "Sezení: XML nemá žádnou Äást \"bundles\"" -#: session_state.cc:1348 +#: session_state.cc:1352 msgid "Session: XML state has no diskstreams section" msgstr "Sezení: XML nemá žádnou Äást \"diskstreams\"" -#: session_state.cc:1356 +#: session_state.cc:1360 msgid "Session: XML state has no routes section" msgstr "Sezení: XML nemá žádnou Äást \"routes\"" -#: session_state.cc:1368 +#: session_state.cc:1372 msgid "Session: XML state has no route groups section" msgstr "Sezení: XML nemá žádnou Äást \"route groups\"" -#: session_state.cc:1377 +#: session_state.cc:1381 msgid "Session: XML state has no edit groups section" msgstr "Sezení: XML nemá žádnou Äást \"edit groups\"" -#: session_state.cc:1384 +#: session_state.cc:1388 msgid "Session: XML state has no mix groups section" msgstr "Sezení: XML nemá žádnou Äást \"mix groups\"" -#: session_state.cc:1392 +#: session_state.cc:1396 msgid "Session: XML state has no click section" msgstr "Sezení: XML nemá žádnou Äást \"click\"" -#: session_state.cc:1440 +#: session_state.cc:1444 msgid "Session: cannot create Route from XML description." msgstr "Sezení: Nelze vytvoÅ™it cestu z popisu XML" -#: session_state.cc:1444 +#: session_state.cc:1448 msgid "Loaded track/bus %1" msgstr "Byla nahrána stopa/sbÄ›rnice %1" -#: session_state.cc:1542 +#: session_state.cc:1546 msgid "Could not find diskstream for route" msgstr "NepodaÅ™ilo se najít Diskstream pro cestu" -#: session_state.cc:1596 +#: session_state.cc:1600 msgid "Session: cannot create Region from XML description." msgstr "Sezení: Nelze vytvoÅ™it oblast z popisu XML" -#: session_state.cc:1600 +#: session_state.cc:1604 msgid "Can not load state for region '%1'" msgstr "Nelze nahrát stav pro oblast '%1'" -#: session_state.cc:1636 +#: session_state.cc:1640 msgid "Regions in compound description not found (ID's %1 and %2): ignored" msgstr "Oblasti ve spojeném popisu nenalezeny (ID %1 a %2): pÅ™ehlíží se" -#: session_state.cc:1664 +#: session_state.cc:1668 msgid "Nested source has no ID info in session file! (ignored)" msgstr "" "VnoÅ™ený zdroj nemá v souboru se sezením žádné informace ID! (pÅ™ehlíží se)" -#: session_state.cc:1676 +#: session_state.cc:1680 msgid "Cannot reconstruct nested source for region %1" msgstr "Nelze obnovit vnoÅ™ený zdroj pro oblast %1" -#: session_state.cc:1738 +#: session_state.cc:1742 msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" msgstr "Sezení: Uzel XML k popisu zvukové oblasti je neúplný (chybí zdroj)" -#: session_state.cc:1746 session_state.cc:1767 session_state.cc:1787 +#: session_state.cc:1750 session_state.cc:1771 session_state.cc:1791 msgid "" "Session: XMLNode describing a AudioRegion references an unknown source id =%1" msgstr "" "Sezení: Uzel XML k popisu zvukové oblasti odkazuje na ID neznámého zdroje =%1" -#: session_state.cc:1752 session_state.cc:1773 session_state.cc:1793 +#: session_state.cc:1756 session_state.cc:1777 session_state.cc:1797 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" @@ -2063,7 +2071,7 @@ msgstr "" "Sezení: Uzel XML k popisu zvukové oblasti odkazuje na ID nezvukového zdroje =" "%1" -#: session_state.cc:1816 +#: session_state.cc:1820 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" @@ -2071,23 +2079,23 @@ msgstr "" "Sezení: Uzlu XML k popisu zvukové oblasti chybí nÄ›které hlavní zdroje; " "pÅ™ehlíží se" -#: session_state.cc:1850 +#: session_state.cc:1854 msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" msgstr "Sezení: Uzel XML k popisu oblasti MIDI je neúplný (chybí zdroj)" -#: session_state.cc:1858 +#: session_state.cc:1862 msgid "" "Session: XMLNode describing a MidiRegion references an unknown source id =%1" msgstr "" "Sezení: Uzel XML k popisu oblasti MIDI odkazuje na ID neznámého zdroje =%1" -#: session_state.cc:1864 +#: session_state.cc:1868 msgid "" "Session: XMLNode describing a MidiRegion references a non-midi source id =%1" msgstr "" "Sezení: Uzel XML k popisu oblasti MIDI odkazuje na ID ne-MIDI zdroje =%1" -#: session_state.cc:1932 +#: session_state.cc:1936 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" @@ -2095,110 +2103,110 @@ msgstr "" "Nelze vytvoÅ™it nový soubor z názvu oblasti \"%1\" s ident = \"%2\": Je " "příliÅ¡ mnoho souborů s podobnými názvy" -#: session_state.cc:1955 +#: session_state.cc:1959 msgid "Session: cannot create Source from XML description." msgstr "Sezení: Nelze vytvoÅ™it zdroj z popisu XML" -#: session_state.cc:1989 +#: session_state.cc:1993 msgid "A sound file is missing. It will be replaced by silence." msgstr "Chybí zvukový soubor. Bude nahrazen tichem." -#: session_state.cc:2012 +#: session_state.cc:2016 msgid "Found a sound file that cannot be used by %1. Talk to the progammers." msgstr "" "Byl nalezen zvukový soubor, který není použitelný %1. Promluvte si s " "programátory." -#: session_state.cc:2029 +#: session_state.cc:2033 msgid "Could not create templates directory \"%1\" (%2)" msgstr "NepodaÅ™ilo se vytvoÅ™it adresář s pÅ™edlohami \"%1\" (%2)" -#: session_state.cc:2042 +#: session_state.cc:2046 msgid "Template \"%1\" already exists - new version not created" msgstr "PÅ™edloha \"%1\" již existuje - nová verze nebyla vytvoÅ™ena" -#: session_state.cc:2048 +#: session_state.cc:2052 msgid "Could not create directory for Session template\"%1\" (%2)" msgstr "NepodaÅ™ilo se vytvoÅ™it adresář pro pÅ™edlohu sezení \"%1\" (%2)" -#: session_state.cc:2058 +#: session_state.cc:2062 msgid "template not saved" msgstr "PÅ™edloha neuložena" -#: session_state.cc:2068 +#: session_state.cc:2072 msgid "Could not create directory for Session template plugin state\"%1\" (%2)" msgstr "" "NepodaÅ™ilo se vytvoÅ™it adresář pro stav přídavného modulu pÅ™edlohy sezení " "\"%1\" (%2)" -#: session_state.cc:2263 +#: session_state.cc:2267 msgid "Unknown node \"%1\" found in Bundles list from session file" msgstr "Nalezen neznámý uzel \"%1\" v seznamu svazků souboru sezení" -#: session_state.cc:2805 session_state.cc:2811 +#: session_state.cc:2809 session_state.cc:2815 msgid "Cannot expand path %1 (%2)" msgstr "Nelze rozšířit cestu %1 (%2)" -#: session_state.cc:2864 +#: session_state.cc:2868 msgid "Session: cannot create dead file folder \"%1\" (%2)" msgstr "Sezení: Nelze vytvoÅ™it odpadkový koÅ¡ pro zahozen soubory \"%1\" (%2)" -#: session_state.cc:2903 +#: session_state.cc:2907 msgid "cannot rename unused file source from %1 to %2 (%3)" msgstr "Nelze pÅ™ejmenovat nepoužívaný souborový zdroj z %1 na %2 (%3)" -#: session_state.cc:2921 +#: session_state.cc:2925 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "Nelze odstranit vrcholový soubor %1 pro %2 (%3)" -#: session_state.cc:3223 +#: session_state.cc:3227 msgid "could not backup old history file, current history not saved" msgstr "" "NepodaÅ™ilo se vytvoÅ™it zálohu starého souboru se seznamem Äinností, nynÄ›jší " "historie neuložena" -#: session_state.cc:3236 +#: session_state.cc:3240 msgid "history could not be saved to %1" msgstr "NepodaÅ™ilo se uložit seznam Äinností do %1" -#: session_state.cc:3239 +#: session_state.cc:3243 msgid "Could not remove history file at path \"%1\" (%2)" msgstr "" "NepodaÅ™ilo se odstranit soubor se seznamem Äinností v cestÄ› \"%1\" (%2)" -#: session_state.cc:3243 +#: session_state.cc:3247 msgid "could not restore history file from backup %1 (%2)" msgstr "NepodaÅ™ilo se obnovit soubor se seznamem Äinností ze zálohy %1 (%2)" -#: session_state.cc:3268 +#: session_state.cc:3272 msgid "%1: no history file \"%2\" for this session." msgstr "%1: Žádný soubor se seznamem Äinností \"%2\" pro toto sezení." -#: session_state.cc:3274 +#: session_state.cc:3278 msgid "Could not understand session history file \"%1\"" msgstr "NepodaÅ™ilo se porozumÄ›t souboru se seznamem Äinností sezení \"%1\"" -#: session_state.cc:3316 +#: session_state.cc:3320 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "NepodaÅ™ilo se najít MidiSource pro NoteDiffCommand" -#: session_state.cc:3327 +#: session_state.cc:3331 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "NepodaÅ™ilo se najít MidiSource pro SysExDiffCommand" -#: session_state.cc:3338 +#: session_state.cc:3342 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "NepodaÅ™ilo se najít MidiSource pro PatchChangeDiffCommand" -#: session_state.cc:3346 +#: session_state.cc:3350 msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "NepodaÅ™ilo se rozpoznat žádný příkaz v uzlu XML \"%1\"." -#: session_state.cc:3598 +#: session_state.cc:3602 msgid "Session: unknown diskstream type in XML" msgstr "Sezení: Neznámý typ Diskstream v XML" -#: session_state.cc:3603 +#: session_state.cc:3607 msgid "Session: could not load diskstream via XML state" msgstr "Sezení: NepodaÅ™ilo se nahrát Diskstream pomocí stavu XML" @@ -2210,7 +2218,7 @@ msgstr "Neznámý stav transportu JACK v Sync-Callback" msgid "Cannot loop - no loop range defined" msgstr "Nelze pÅ™ehrávat ve smyÄce - Nestanovena žádná oblast smyÄky" -#: session_transport.cc:727 +#: session_transport.cc:728 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" @@ -2218,7 +2226,7 @@ msgstr "" "Souvislé pÅ™ehrávání ve smyÄce není možné, dokud %1 používá transport JACK.\n" "DoporuÄuje se zmÄ›na volby v nastavení" -#: session_transport.cc:1092 +#: session_transport.cc:1094 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2369,7 +2377,7 @@ msgid "attempt to write a non-writable audio file source (%1)" msgstr "" "Pokus o zápis zvukového zdrojového souboru chránÄ›ného proti zápisu (%1)" -#: sndfilesource.cc:396 utils.cc:497 utils.cc:521 utils.cc:535 utils.cc:554 +#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 msgid "programming error: %1 %2" msgstr "Chyba v programování: %1 %2" @@ -2634,14 +2642,17 @@ msgstr "M-Clock" msgid "LTC" msgstr "LTC" -#: utils.cc:589 +#: utils.cc:599 msgid "programming error: unknown native header format: %1" msgstr "Chyba v programování: neznámý nativní formát hlaviÄky: %1" -#: utils.cc:604 +#: utils.cc:614 msgid "cannot open directory %1 (%2)" msgstr "Nelze otevřít adresář %1 (%2)" +#~ msgid "Session" +#~ msgstr "Sezení" + #~ msgid "midi" #~ msgstr "midi" diff --git a/libs/ardour/po/de.po b/libs/ardour/po/de.po index 564cafd434..cedb65f3de 100644 --- a/libs/ardour/po/de.po +++ b/libs/ardour/po/de.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-07-17 11:09+0200\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-07-23 15:04+0200\n" "Last-Translator: Edgar Aichinger \n" "Language-Team: German \n" @@ -31,58 +31,58 @@ msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" "AudioDiskstream %1: es gibt keine Wiedergabeliste, die kopiert werden kann!" -#: audio_diskstream.cc:823 audio_diskstream.cc:833 +#: audio_diskstream.cc:848 audio_diskstream.cc:858 msgid "" "AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3" msgstr "" "AudioDiskstream %1: Kann während des Befüllens %2 nicht aus Wiedergabeliste " "bei Frame %3 lesen" -#: audio_diskstream.cc:989 +#: audio_diskstream.cc:1014 msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" "AudioDiskstream %1: Kann %2 nicht aus Wiedergabeliste bei Frame %3 lesen" -#: audio_diskstream.cc:1358 audio_diskstream.cc:1375 +#: audio_diskstream.cc:1383 audio_diskstream.cc:1400 msgid "AudioDiskstream %1: cannot write to disk" msgstr "AudioDiskstream %1: Kann nicht auf Disk schreiben" -#: audio_diskstream.cc:1418 +#: audio_diskstream.cc:1443 msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" msgstr "AudioDiskstream %1: Kann aufgenommene Daten nicht auf Disk schreiben!" -#: audio_diskstream.cc:1512 +#: audio_diskstream.cc:1537 msgid "%1: could not create region for complete audio file" msgstr "%1: konnte keine Region für die komplette Audiodatei erzeugen" -#: audio_diskstream.cc:1546 +#: audio_diskstream.cc:1571 msgid "AudioDiskstream: could not create region for captured audio!" msgstr "" "AudioDiskstream: konnte keine Region für das aufgenommene Audiomaterial " "erzeugen!" -#: audio_diskstream.cc:1654 +#: audio_diskstream.cc:1679 msgid "programmer error: %1" msgstr "Programmierfehler: %1" -#: audio_diskstream.cc:1880 +#: audio_diskstream.cc:1905 msgid "AudioDiskstream: channel %1 out of range" msgstr "AudioDiskstream: Kanal %1 Bereichsüberschreitung" -#: audio_diskstream.cc:1894 midi_diskstream.cc:1196 +#: audio_diskstream.cc:1919 midi_diskstream.cc:1210 msgid "%1:%2 new capture file not initialized correctly" msgstr "%1:%2 neue Aufnahmedatei nicht korrekt initialisiert" -#: audio_diskstream.cc:2175 +#: audio_diskstream.cc:2200 msgid "%1: cannot restore pending capture source file %2" msgstr "%1: kann vorläufige Aufnahme-Quelldatei %2 nicht wiederherstellen" -#: audio_diskstream.cc:2197 +#: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "" "%1: Liste enthält falsche Anzahl vorläufiger Quellen - alle werden ignoriert" -#: audio_diskstream.cc:2221 +#: audio_diskstream.cc:2246 msgid "%1: cannot create whole-file region from pending capture sources" msgstr "" "%1: kann aus vorläufigen Aufnahmequellen keine Region für die komplette " @@ -136,7 +136,7 @@ msgstr "Audio-Wiedergabelisten (unbenutzt)" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 -#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 +#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643 #: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" @@ -316,8 +316,8 @@ msgstr "AudioSource: kann Pfad für Peaks (b) \"%1\" nicht öffnen (%2)" msgid "" "AudioSource[%1]: peak read - cannot read %2 samples at offset %3 of %4 (%5)" msgstr "" -"AudioSource[%1]: peak read - kann %2 Samples bei Offset %3 von %4 nicht " -"lesen(%5)" +"AudioSource[%1]: peak read - kann %2 Samples bei Offset %3 von %4 nicht lesen" +"(%5)" #: audiosource.cc:667 msgid "%1: could not write read raw data for peak computation (%2)" @@ -582,7 +582,7 @@ msgstr "Dreieck" msgid "Rectangular" msgstr "Rechteck" -#: export_formats.cc:52 session.cc:4854 session.cc:4870 +#: export_formats.cc:52 session.cc:4861 session.cc:4877 msgid "None" msgstr "Kein" @@ -800,24 +800,24 @@ msgstr "kann momentanes Arbeitsverzeichnis nicht bestimmen (%1)" msgid "unknown file type for session %1" msgstr "Unbekannter Dateityp für Projekt %1" -#: globals.cc:204 +#: globals.cc:205 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" "Konnte die Systemgrenze für offene Dateien nicht auf \"unbeschränkt\" setzen" -#: globals.cc:206 +#: globals.cc:207 msgid "Could not set system open files limit to %1" msgstr "Konnte die Systemgrenze für offene Dateien nicht auf %1 setzen" -#: globals.cc:210 +#: globals.cc:211 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "Ihre Systemkonfiguration beschränkt %1 auf nur %2 offene Dateien" -#: globals.cc:214 +#: globals.cc:215 msgid "Could not get system open files limit (%1)" msgstr "Konnte die Grenze für offene Dateien nicht erhalten (%1)" -#: globals.cc:267 +#: globals.cc:266 msgid "Loading configuration" msgstr "Lade Konfiguration" @@ -1063,7 +1063,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "unkorrekter XML-Modus an Locations::set_state weitergereicht" -#: location.cc:842 session.cc:4355 session_state.cc:1114 +#: location.cc:842 session.cc:4362 session_state.cc:1114 msgid "session" msgstr "Projekt" @@ -1149,25 +1149,25 @@ msgstr "MidiDiskstream: Wiedergabeliste \"%1\" ist keine MIDI-Wiedergabeliste" msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "MidiDiskstream %1: es gibt keine Wiedergabeliste zum Kopieren!" -#: midi_diskstream.cc:685 +#: midi_diskstream.cc:699 msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" "MidiDiskstream %1: kann %2 nicht von Wiedergabeliste bei Frame %3 lesen" -#: midi_diskstream.cc:820 +#: midi_diskstream.cc:834 msgid "MidiDiskstream %1: cannot write to disk" msgstr "MidiDiskstream %1: kann nicht auf Disk schreiben" -#: midi_diskstream.cc:854 +#: midi_diskstream.cc:868 msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" "MidiDiskstream \"%1\": kann aufgenommene Daten nicht auf Disk schreiben!" -#: midi_diskstream.cc:941 +#: midi_diskstream.cc:955 msgid "%1: could not create region for complete midi file" msgstr "%1: konnte Region für die komplette MIDI-Datei nicht erzeugen" -#: midi_diskstream.cc:978 +#: midi_diskstream.cc:992 msgid "MidiDiskstream: could not create region for captured midi!" msgstr "MidiDiskstream: konnte Region für aufgenommenes MIDI nicht erzeugen" @@ -1384,23 +1384,23 @@ msgstr "" "Das Speichern von Pluginpresets werden in diesem %1-Binärpaket nicht " "unterstützt. Erwägen Sie, für die Vollversion zu bezahlen" -#: plugin_insert.cc:599 +#: plugin_insert.cc:598 msgid "programming error: " msgstr "Programmierfehler:" -#: plugin_insert.cc:914 +#: plugin_insert.cc:926 msgid "XML node describing plugin is missing the `type' field" msgstr "Dem XML-Knoten zur Beschreibung des Plugins fehlt das \"type\"-Feld" -#: plugin_insert.cc:929 +#: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" msgstr "Unbekannter Plugintyp %1 im Einfüge-Status des Plugins" -#: plugin_insert.cc:957 +#: plugin_insert.cc:969 msgid "Plugin has no unique ID field" msgstr "Das Plugin hat kein Feld für die eindeutige ID" -#: plugin_insert.cc:966 +#: plugin_insert.cc:978 msgid "" "Found a reference to a plugin (\"%1\") that is unknown.\n" "Perhaps it was removed or moved since it was last used." @@ -1408,15 +1408,15 @@ msgstr "" "Referenz auf ein unbekanntes Plugin (\"%1\") gefunden.\n" "Vielleicht wurde es seit der letzten Verwendung entfernt oder verschoben." -#: plugin_insert.cc:1082 +#: plugin_insert.cc:1094 msgid "PluginInsert: Auto: no ladspa port number" msgstr "PluginInsert: Auto: keine LADSPA Portnummer" -#: plugin_insert.cc:1089 +#: plugin_insert.cc:1101 msgid "PluginInsert: Auto: port id out of range" msgstr "PluginInsert: Auto: Port-ID Bereichsüberschreitung" -#: plugin_insert.cc:1125 +#: plugin_insert.cc:1137 msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "" "PluginInsert: automatisierbares Kontrollelement %1 nicht gefunden - ignoriert" @@ -1566,23 +1566,23 @@ msgstr "Import: Fehler in src_new() : %1" msgid "return %1" msgstr "Rückgabewert: %1" -#: route.cc:1101 route.cc:2557 +#: route.cc:1105 route.cc:2581 msgid "unknown Processor type \"%1\"; ignored" msgstr "unbekannter Prozessortyp \"%1\"; ignoriert" -#: route.cc:1113 +#: route.cc:1117 msgid "processor could not be created. Ignored." msgstr "Prozessor konnte nicht erzeugt werden. Ignoriert." -#: route.cc:1986 route.cc:2210 +#: route.cc:2007 route.cc:2234 msgid "Bad node sent to Route::set_state() [%1]" msgstr "Schlechter Knoten an Route::set_state() gesendet [%1]" -#: route.cc:2045 +#: route.cc:2067 msgid "Pannable state found for route (%1) without a panner!" msgstr "Pannerziel-Status für Route (%1) ohne Panner gefunden!" -#: route.cc:2113 route.cc:2117 route.cc:2324 route.cc:2328 +#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" "schlecht geformte Zeichenkette für den Schlüssel der Sortierreihenfolge in " @@ -1853,7 +1853,7 @@ msgstr "%1: kann für Export nicht Dateiposition %2 aufsuchen" msgid "Export ended unexpectedly: %1" msgstr "Export endet unerwartet: %1" -#: session_ltc.cc:220 +#: session_ltc.cc:222 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." @@ -1861,11 +1861,11 @@ msgstr "" "LTC-Kodierer: ungültige Framerate - das Kodieren von LTC wird für den " "restlichen Teil dieses Projekts ausgesetzt." -#: session_midi.cc:427 +#: session_midi.cc:428 msgid "Session: could not send full MIDI time code" msgstr "Session: konnte vollständigen MIDI-Timecode nicht senden" -#: session_midi.cc:519 +#: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "Session: kann quarter-frame MTC-Nachricht nicht senden (%1)" @@ -2262,7 +2262,7 @@ msgstr "Unbekannter JACK-Transportstatus im Sync-Callback" msgid "Cannot loop - no loop range defined" msgstr "Kann nicht loopen - kein Schleifenbereich definieert" -#: session_transport.cc:727 +#: session_transport.cc:728 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" @@ -2271,7 +2271,7 @@ msgstr "" "benutzt.\n" "Ändern Sie die Konfigurationsoption" -#: session_transport.cc:1092 +#: session_transport.cc:1094 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" diff --git a/libs/ardour/po/el.po b/libs/ardour/po/el.po index ab1195e237..f91985f16b 100644 --- a/libs/ardour/po/el.po +++ b/libs/ardour/po/el.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour 0.664.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2007-04-16 00:38+0200\n" "Last-Translator: Klearchos Gourgourinis \n" "Language-Team: Hellenic(Greek)\n" @@ -29,59 +29,59 @@ msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" "AudioDiskstream %1: δεν υπάÏχει λίστα αναπαÏ/γής για να γίνει αντιγÏαφή!" -#: audio_diskstream.cc:823 audio_diskstream.cc:833 +#: audio_diskstream.cc:848 audio_diskstream.cc:858 msgid "" "AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3" msgstr "" "AudioDiskstream %1: κατα την αναγόμωση, δεν μπόÏεσα να διαβάσω %2 από τη " "λίστα αναπαÏ/γής στο frame %3" -#: audio_diskstream.cc:989 +#: audio_diskstream.cc:1014 msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" "AudioDiskstream %1: δεν μπόÏεσα να διαβάσω %2 από τη λίστα αναπαÏ/γής στο " "frame %3" -#: audio_diskstream.cc:1358 audio_diskstream.cc:1375 +#: audio_diskstream.cc:1383 audio_diskstream.cc:1400 msgid "AudioDiskstream %1: cannot write to disk" msgstr "AudioDiskstream %1: δεν μποÏÏŽ να γÏάψω στο δίσκο" -#: audio_diskstream.cc:1418 +#: audio_diskstream.cc:1443 msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" "AudioDiskstream \"%1\": αδÏνατη η εκκαθάÏιση δειγματοληπτικών δεδομένων στο " "δίσκο!" -#: audio_diskstream.cc:1512 +#: audio_diskstream.cc:1537 msgid "%1: could not create region for complete audio file" msgstr "%1: δεν μπόÏεσα να δημιουÏγήσω πεÏιοχή για ολόκληÏο audio file" -#: audio_diskstream.cc:1546 +#: audio_diskstream.cc:1571 msgid "AudioDiskstream: could not create region for captured audio!" msgstr "" "AudioDiskstream: δεν μπόÏεσα να δημιουÏγήσω πεÏιοχή για δειγματοληψίες!" -#: audio_diskstream.cc:1654 +#: audio_diskstream.cc:1679 msgid "programmer error: %1" msgstr "σφάλμα Ï€ÏογÏαμματιστή: %1" -#: audio_diskstream.cc:1880 +#: audio_diskstream.cc:1905 msgid "AudioDiskstream: channel %1 out of range" msgstr "AudioDiskstream: κανάλι %1 εκτός διαστήματος" -#: audio_diskstream.cc:1894 midi_diskstream.cc:1196 +#: audio_diskstream.cc:1919 midi_diskstream.cc:1210 msgid "%1:%2 new capture file not initialized correctly" msgstr "%1:%2 νέα δειγματοληψία δεν εκκινήθη σωστά" -#: audio_diskstream.cc:2175 +#: audio_diskstream.cc:2200 msgid "%1: cannot restore pending capture source file %2" msgstr "%1: δεν μποÏÏŽ να ανοίξω το αÏχείο %2 από την απαιτοÏμενη πηγή" -#: audio_diskstream.cc:2197 +#: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "%1: ετυπώθη λανθασμένος αÏιθμός απαιτοÏμενων πηγών - αγνοήθηκαν όλες" -#: audio_diskstream.cc:2221 +#: audio_diskstream.cc:2246 msgid "%1: cannot create whole-file region from pending capture sources" msgstr "" "%1: αδÏνατη η δημιουÏγία ακέÏαιας πεÏιοχής από τις απαιτοÏμενες πηγές " @@ -131,7 +131,7 @@ msgstr "" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 -#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 +#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643 #: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" @@ -212,49 +212,49 @@ msgstr "" msgid "Connect session to engine" msgstr "" -#: audioengine.cc:844 +#: audioengine.cc:843 msgid "" "a port with the name \"%1\" already exists: check for duplicated track/bus " "names" msgstr "" -#: audioengine.cc:846 session.cc:1698 +#: audioengine.cc:845 session.cc:1698 msgid "" "No more JACK ports are available. You will need to stop %1 and restart JACK " "with more ports if you need this many tracks." msgstr "" -#: audioengine.cc:849 +#: audioengine.cc:848 #, fuzzy msgid "AudioEngine: cannot register port \"%1\": %2" msgstr "IO: δεν μποÏεί να καταχώÏηθεί η θÏÏα εισόδου %1" -#: audioengine.cc:879 +#: audioengine.cc:878 msgid "unable to create port: %1" msgstr "" -#: audioengine.cc:933 +#: audioengine.cc:932 msgid "connect called before engine was started" msgstr "η σÏνδεση εκλήθη Ï€Ïιν να εκκινηθεί η engine" -#: audioengine.cc:959 +#: audioengine.cc:958 msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" msgstr "AudioEngine: αδÏνατη η σÏνδεση %1 (%2) σε %3 (%4)" -#: audioengine.cc:974 audioengine.cc:1005 +#: audioengine.cc:973 audioengine.cc:1004 msgid "disconnect called before engine was started" msgstr "η αποσÏνδεση εκλήθη Ï€Ïιν να εκκινηθεί η engine" -#: audioengine.cc:1053 +#: audioengine.cc:1052 #, fuzzy msgid "get_port_by_name() called before engine was started" msgstr "η Ïουτίνα get_port_by_name() εκλήθη Ï€Ïιν να εκκινηθεί η engine" -#: audioengine.cc:1105 +#: audioengine.cc:1104 msgid "get_ports called before engine was started" msgstr "η Ïουτίνα get_ports εκλήθη Ï€Ïιν να εκκινηθεί η engine" -#: audioengine.cc:1428 +#: audioengine.cc:1427 msgid "failed to connect to JACK" msgstr "Αποτυχία συνδέσεως με τον JACK" @@ -574,7 +574,7 @@ msgstr "" msgid "Rectangular" msgstr "" -#: export_formats.cc:52 session.cc:4854 session.cc:4870 +#: export_formats.cc:52 session.cc:4861 session.cc:4877 msgid "None" msgstr "" @@ -796,25 +796,25 @@ msgstr "δεν μποÏÏŽ να καθοÏίσω τον Ï„Ïέχοντα ÎµÎ½ÎµÏ msgid "unknown file type for session %1" msgstr "άγνωστος Ï„Ïπος αÏχείου για την συνεδÏία %1" -#: globals.cc:204 +#: globals.cc:205 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:206 +#: globals.cc:207 #, fuzzy msgid "Could not set system open files limit to %1" msgstr "αδÏνατη η επαναφοÏά του state file από backup %1" -#: globals.cc:210 +#: globals.cc:211 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:214 +#: globals.cc:215 #, fuzzy msgid "Could not get system open files limit (%1)" msgstr "%1: δεν μπόÏεσα να γÏάψω δεδομένα του αÏχείου peak (%2)" -#: globals.cc:267 +#: globals.cc:266 #, fuzzy msgid "Loading configuration" msgstr "Ανάκληση αÏχείου Ïυθμίσεων χÏήστη %1" @@ -975,21 +975,21 @@ msgstr "" msgid "%d" msgstr "" -#: ladspa_plugin.cc:87 +#: ladspa_plugin.cc:88 msgid "LADSPA: module has no descriptor function." msgstr "LADSPA: το module δεν έχει ενδεικτική λειτουÏγία." -#: ladspa_plugin.cc:92 +#: ladspa_plugin.cc:93 msgid "LADSPA: plugin has gone away since discovery!" msgstr "LADSPA: το plugin την 'κοπάνισε' μετά την ανακάλυψη του!" -#: ladspa_plugin.cc:99 +#: ladspa_plugin.cc:100 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" "LADSPA: \"%1\" δεν μποÏεί να χÏησιμοποιηθεί, εφ'όσον δεν μποÏεί να κάνει επι " "τόπου επεξεÏγασία" -#: ladspa_plugin.cc:296 +#: ladspa_plugin.cc:297 #, fuzzy msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " @@ -999,36 +999,36 @@ msgstr "" "ενδείκνυται αλλαγή στο σχεδιασμό του plugin, και οι Ïυθμίσεις ίσως να είναι " "άκυÏες" -#: ladspa_plugin.cc:373 ladspa_plugin.cc:418 +#: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" msgstr "Κακός κόμβος εστάλη στο LadspaPlugin::set_state" -#: ladspa_plugin.cc:386 ladspa_plugin.cc:431 +#: ladspa_plugin.cc:391 ladspa_plugin.cc:440 msgid "LADSPA: no ladspa port number" msgstr "LADSPA: κανείς αÏιθμός θÏÏας ladspa" -#: ladspa_plugin.cc:392 ladspa_plugin.cc:437 +#: ladspa_plugin.cc:397 ladspa_plugin.cc:446 msgid "LADSPA: no ladspa port data" msgstr "LADSPA: κανένα δεδομένο θÏÏας ladspa" -#: ladspa_plugin.cc:707 +#: ladspa_plugin.cc:717 msgid "LADSPA: cannot load module from \"%1\"" msgstr "LADSPA: δεν μποÏÏŽ να φοÏτώσω module από \"%1\"" -#: ladspa_plugin.cc:817 +#: ladspa_plugin.cc:827 #, fuzzy msgid "Could not locate HOME. Preset not removed." msgstr "Δεν μπόÏεσα να βÏÏŽ το HOME. ΠÏο-ÏÏθμιση δεν αποθηκεÏθηκε." -#: ladspa_plugin.cc:854 ladspa_plugin.cc:860 +#: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" msgstr "Δεν μπόÏεσα να δημιουÏγήσω το %1. ΠÏο-ÏÏθμιση δεν αποθηκεÏθηκε. (%2)" -#: ladspa_plugin.cc:867 +#: ladspa_plugin.cc:877 msgid "Error saving presets file %1." msgstr "Σφάλμα στην αποθήκευση αÏχείου Ï€Ïο-Ïυθμίσεων %1." -#: ladspa_plugin.cc:905 +#: ladspa_plugin.cc:915 msgid "Could not locate HOME. Preset not saved." msgstr "Δεν μπόÏεσα να βÏÏŽ το HOME. ΠÏο-ÏÏθμιση δεν αποθηκεÏθηκε." @@ -1071,7 +1071,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "λανθασμένο XML mode πέÏασε στις Τοποθεσίες::set_state" -#: location.cc:842 session.cc:4355 session_state.cc:1114 +#: location.cc:842 session.cc:4362 session_state.cc:1114 msgid "session" msgstr "" @@ -1146,31 +1146,31 @@ msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" "AudioDiskstream %1: δεν υπάÏχει λίστα αναπαÏ/γής για να γίνει αντιγÏαφή!" -#: midi_diskstream.cc:685 +#: midi_diskstream.cc:699 #, fuzzy msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" "AudioDiskstream %1: δεν μπόÏεσα να διαβάσω %2 από τη λίστα αναπαÏ/γής στο " "frame %3" -#: midi_diskstream.cc:820 +#: midi_diskstream.cc:834 #, fuzzy msgid "MidiDiskstream %1: cannot write to disk" msgstr "AudioDiskstream %1: δεν μποÏÏŽ να γÏάψω στο δίσκο" -#: midi_diskstream.cc:854 +#: midi_diskstream.cc:868 #, fuzzy msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" "AudioDiskstream \"%1\": αδÏνατη η εκκαθάÏιση δειγματοληπτικών δεδομένων στο " "δίσκο!" -#: midi_diskstream.cc:941 +#: midi_diskstream.cc:955 #, fuzzy msgid "%1: could not create region for complete midi file" msgstr "%1: δεν μπόÏεσα να δημιουÏγήσω πεÏιοχή για ολόκληÏο audio file" -#: midi_diskstream.cc:978 +#: midi_diskstream.cc:992 #, fuzzy msgid "MidiDiskstream: could not create region for captured midi!" msgstr "" @@ -1385,24 +1385,36 @@ msgstr "" msgid "Could not construct playlist for PlaylistSource from session data!" msgstr "" -#: plugin_insert.cc:599 +#: plugin.cc:324 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin.cc:398 +msgid "" +"Saving plugin settings is not supported in this build of %1. Consider paying " +"for the full version" +msgstr "" + +#: plugin_insert.cc:598 msgid "programming error: " msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: " -#: plugin_insert.cc:908 +#: plugin_insert.cc:926 #, fuzzy msgid "XML node describing plugin is missing the `type' field" msgstr "Στον κόμβο XML που πεÏιγÏάφει το insert λείπει το πεδίο `type'" -#: plugin_insert.cc:923 +#: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" msgstr "άγνωστος Ï„Ïπος plugin %1 στην κατάσταση εισαχθέντων plugins" -#: plugin_insert.cc:951 +#: plugin_insert.cc:969 msgid "Plugin has no unique ID field" msgstr "" -#: plugin_insert.cc:960 +#: plugin_insert.cc:978 msgid "" "Found a reference to a plugin (\"%1\") that is unknown.\n" "Perhaps it was removed or moved since it was last used." @@ -1410,15 +1422,15 @@ msgstr "" "ΕυÏέθη μια αναφοÏά σε plugin (\"%1\") που είναι άγνωστο.\n" "Ίσως έχει διαγÏαφεί ή μετακινηθεί από την τελευταία του χÏήση." -#: plugin_insert.cc:1076 +#: plugin_insert.cc:1094 msgid "PluginInsert: Auto: no ladspa port number" msgstr "PluginInsert: Auto: χωÏίς αÏιθμό θÏÏας ladspa" -#: plugin_insert.cc:1083 +#: plugin_insert.cc:1101 msgid "PluginInsert: Auto: port id out of range" msgstr "PluginInsert: Auto: το id θÏÏας είναι εκτός πεδίου" -#: plugin_insert.cc:1119 +#: plugin_insert.cc:1137 #, fuzzy msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "αβέβαιο συμβάν Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï ÎµÏ…Ïέθηκε (και αγνοήθηκε)" @@ -1577,25 +1589,25 @@ msgstr "Εισαγωγή: src_new() απέτυχε : %1" msgid "return %1" msgstr "" -#: route.cc:1100 route.cc:2550 +#: route.cc:1105 route.cc:2581 #, fuzzy msgid "unknown Processor type \"%1\"; ignored" msgstr "άγνωστος Ï„Ïπος Λήψης(Insert) \"%1\"... αγνοήθηκε" -#: route.cc:1112 +#: route.cc:1117 #, fuzzy msgid "processor could not be created. Ignored." msgstr "εισαγωγή δεν μπόÏεσε να δημιουÏγηθεί. Αγνοήθηκε." -#: route.cc:1983 route.cc:2203 +#: route.cc:2007 route.cc:2234 msgid "Bad node sent to Route::set_state() [%1]" msgstr "Κακός κόμβος εστάλη στο Route::set_state() [%1]" -#: route.cc:2042 +#: route.cc:2067 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2106 route.cc:2110 route.cc:2317 route.cc:2321 +#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" "δÏσμοÏφη γÏαμμή ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Ï„Î±Î¾Î¹Î½Î¿Î¼Î®ÏƒÎµÏ‰Ï‚ στο αÏχείο καταστάσεως ! [%1] ... " @@ -1865,17 +1877,17 @@ msgstr "%1: δεν μποÏÏŽ να αναζητήσω στο %2 για εξαγ msgid "Export ended unexpectedly: %1" msgstr "" -#: session_ltc.cc:220 +#: session_ltc.cc:222 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." msgstr "" -#: session_midi.cc:427 +#: session_midi.cc:428 msgid "Session: could not send full MIDI time code" msgstr "ΣυνεδÏία: δεν μπόÏεσα να στείλω ολόκληÏο MIDI time code" -#: session_midi.cc:519 +#: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "ΣυνεδÏία: δεν μποÏÏŽ να στείλω τέταÏτο-frame MTC μήνυμα (%1)" @@ -1883,11 +1895,11 @@ msgstr "ΣυνεδÏία: δεν μποÏÏŽ να στείλω τέταÏτο-fra msgid "Session: cannot create Playlist from XML description." msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω την Playlist από την XML πεÏιγÏαφή." -#: session_process.cc:135 +#: session_process.cc:133 msgid "Session: error in no roll for %1" msgstr "ΣυνεδÏία: σφάλμα στο no roll για %1" -#: session_process.cc:1160 +#: session_process.cc:1158 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" "Σφάλμα Ï€ÏογÏαμματισμοÏ: παÏάνομος Ï„Ïπος συμβάντος στο process_event (%1)" @@ -2303,7 +2315,7 @@ msgstr "Άγνωστη κατάσταση του JACK transport %1 στην αν msgid "Cannot loop - no loop range defined" msgstr "Δεν γίνεται loop - κανένα διάστημα loop δεν Ï€ÏοσδιοÏίστηκε" -#: session_transport.cc:727 +#: session_transport.cc:728 #, fuzzy msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" @@ -2313,7 +2325,7 @@ msgstr "" "transport.\n" "ΣυνιστοÏμε την αλλαγή των διαμοÏφωμένων Ïυθμίσεων" -#: session_transport.cc:1092 +#: session_transport.cc:1094 #, fuzzy msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " @@ -2468,7 +2480,7 @@ msgstr "SndFileSource: δεν μποÏοÏσα να αναζητήσω στο fr msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:497 utils.cc:521 utils.cc:535 utils.cc:554 +#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 msgid "programming error: %1 %2" msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1 %2" @@ -2730,12 +2742,12 @@ msgstr "" msgid "LTC" msgstr "" -#: utils.cc:589 +#: utils.cc:599 #, fuzzy msgid "programming error: unknown native header format: %1" msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: άγνωστος Ï„Ïπος Redirect εδημιουÏγήθη!" -#: utils.cc:604 +#: utils.cc:614 #, fuzzy msgid "cannot open directory %1 (%2)" msgstr "δεν μποÏÏŽ να ανοίξω το Ï€Ïόσφατο αÏχείο συνεδÏίας %1 (%2)" diff --git a/libs/ardour/po/es.po b/libs/ardour/po/es.po index 0f0e1be1f6..8d1697ea1f 100644 --- a/libs/ardour/po/es.po +++ b/libs/ardour/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: \n" "Last-Translator: Pablo Fernández \n" "Language-Team: Grupo de Traducción al Español \n" @@ -32,57 +32,57 @@ msgstr "" msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!" msgstr "AudioDiskstream %1: ¡No hay ninguna lista de reproducción para copiar!" -#: audio_diskstream.cc:823 audio_diskstream.cc:833 +#: audio_diskstream.cc:848 audio_diskstream.cc:858 msgid "" "AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3" msgstr "" "AudioDiskstream %1: al rellenar, no se puede leer %2 de la lista de " "reproducción en el cuadro %3." -#: audio_diskstream.cc:989 +#: audio_diskstream.cc:1014 msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" "AudioDiskstream %1: no se puede leer %2 de la lista de reproducción en el " "cuadro %3." -#: audio_diskstream.cc:1358 audio_diskstream.cc:1375 +#: audio_diskstream.cc:1383 audio_diskstream.cc:1400 msgid "AudioDiskstream %1: cannot write to disk" msgstr "AudioDiskstream %1: no se puede escribir en el disco." -#: audio_diskstream.cc:1418 +#: audio_diskstream.cc:1443 msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -#: audio_diskstream.cc:1512 +#: audio_diskstream.cc:1537 msgid "%1: could not create region for complete audio file" msgstr "%1: no se pudo crear la región para el archivo de audio completo" -#: audio_diskstream.cc:1546 +#: audio_diskstream.cc:1571 msgid "AudioDiskstream: could not create region for captured audio!" msgstr "AudioDiskstream: ¡No se pudo crear región para el audio capturado!" -#: audio_diskstream.cc:1654 +#: audio_diskstream.cc:1679 msgid "programmer error: %1" msgstr "error de programador: %1" -#: audio_diskstream.cc:1880 +#: audio_diskstream.cc:1905 msgid "AudioDiskstream: channel %1 out of range" msgstr "AudioDiskstream: canal %1 fuera de rango" -#: audio_diskstream.cc:1894 midi_diskstream.cc:1196 +#: audio_diskstream.cc:1919 midi_diskstream.cc:1210 msgid "%1:%2 new capture file not initialized correctly" msgstr "%1:%2 archivo de captura nuevo no inicializado correctamente" -#: audio_diskstream.cc:2175 +#: audio_diskstream.cc:2200 msgid "%1: cannot restore pending capture source file %2" msgstr "%1: no se puede restaurar el archivo de captura pendiente %2" -#: audio_diskstream.cc:2197 +#: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "" "%1: cantidad listada de fuentes pendientes incorrecta - se ignorarán todas" -#: audio_diskstream.cc:2221 +#: audio_diskstream.cc:2246 msgid "%1: cannot create whole-file region from pending capture sources" msgstr "" "%1: no se puede crear la región del archivo entero desde las fuentes de " @@ -130,7 +130,7 @@ msgstr "" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 -#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 +#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643 #: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" @@ -210,7 +210,7 @@ msgstr "" msgid "Connect session to engine" msgstr "Conectar sesión al motor" -#: audioengine.cc:844 +#: audioengine.cc:843 msgid "" "a port with the name \"%1\" already exists: check for duplicated track/bus " "names" @@ -218,7 +218,7 @@ msgstr "" "ya existe un puerto con el nombre \"%1\": compruebe si hay nombres de pistas/" "buses duplicados" -#: audioengine.cc:846 session.cc:1698 +#: audioengine.cc:845 session.cc:1698 msgid "" "No more JACK ports are available. You will need to stop %1 and restart JACK " "with more ports if you need this many tracks." @@ -226,35 +226,35 @@ msgstr "" "JACK no dispone de más puertos. Debes salir de %1 y reiniciar JACK con más " "puertos si necesitas tantas pistas." -#: audioengine.cc:849 +#: audioengine.cc:848 msgid "AudioEngine: cannot register port \"%1\": %2" msgstr "AudioEngine: no se puede registrar el puerto \"%1\": %2" -#: audioengine.cc:879 +#: audioengine.cc:878 msgid "unable to create port: %1" msgstr "Incapaz de crear puerto: %1" -#: audioengine.cc:933 +#: audioengine.cc:932 msgid "connect called before engine was started" msgstr "conexión invocada antes de que se inicie el motor" -#: audioengine.cc:959 +#: audioengine.cc:958 msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" msgstr "AudioEngine: no se puede conectar %1 (%2) a %3 (%4)" -#: audioengine.cc:974 audioengine.cc:1005 +#: audioengine.cc:973 audioengine.cc:1004 msgid "disconnect called before engine was started" msgstr "desconexión invocada antes de que se inicie el motor" -#: audioengine.cc:1053 +#: audioengine.cc:1052 msgid "get_port_by_name() called before engine was started" msgstr "get_port_by_name() invocada antes de que se inicie el motor" -#: audioengine.cc:1105 +#: audioengine.cc:1104 msgid "get_ports called before engine was started" msgstr "get_ports invocada antes de que se inicie el motor" -#: audioengine.cc:1428 +#: audioengine.cc:1427 msgid "failed to connect to JACK" msgstr "falló la conexión a JACK" @@ -568,7 +568,7 @@ msgstr "" msgid "Rectangular" msgstr "" -#: export_formats.cc:52 session.cc:4854 session.cc:4870 +#: export_formats.cc:52 session.cc:4861 session.cc:4877 msgid "None" msgstr "" @@ -776,23 +776,23 @@ msgstr "" msgid "unknown file type for session %1" msgstr "tipo de archivo desconocido para la sesión %1" -#: globals.cc:204 +#: globals.cc:205 msgid "Could not set system open files limit to \"unlimited\"" msgstr "No se pudo establecer el límite de archivos abiertos a \"unlimited\"" -#: globals.cc:206 +#: globals.cc:207 msgid "Could not set system open files limit to %1" msgstr "No se pudo establecer el límite de archivos abiertos a \"unlimited\"" -#: globals.cc:210 +#: globals.cc:211 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:214 +#: globals.cc:215 msgid "Could not get system open files limit (%1)" msgstr "No se pudo obtener el límite de archivos abiertos del sistema (%1) " -#: globals.cc:267 +#: globals.cc:266 msgid "Loading configuration" msgstr "Cargando configuración" @@ -944,53 +944,53 @@ msgstr "" msgid "%d" msgstr "" -#: ladspa_plugin.cc:87 +#: ladspa_plugin.cc:88 msgid "LADSPA: module has no descriptor function." msgstr "" -#: ladspa_plugin.cc:92 +#: ladspa_plugin.cc:93 msgid "LADSPA: plugin has gone away since discovery!" msgstr "" -#: ladspa_plugin.cc:99 +#: ladspa_plugin.cc:100 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" -#: ladspa_plugin.cc:296 +#: ladspa_plugin.cc:297 msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " "in the plugin design, and presets may be invalid" msgstr "" -#: ladspa_plugin.cc:373 ladspa_plugin.cc:418 +#: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" msgstr "" -#: ladspa_plugin.cc:386 ladspa_plugin.cc:431 +#: ladspa_plugin.cc:391 ladspa_plugin.cc:440 msgid "LADSPA: no ladspa port number" msgstr "" -#: ladspa_plugin.cc:392 ladspa_plugin.cc:437 +#: ladspa_plugin.cc:397 ladspa_plugin.cc:446 msgid "LADSPA: no ladspa port data" msgstr "" -#: ladspa_plugin.cc:707 +#: ladspa_plugin.cc:717 msgid "LADSPA: cannot load module from \"%1\"" msgstr "" -#: ladspa_plugin.cc:817 +#: ladspa_plugin.cc:827 msgid "Could not locate HOME. Preset not removed." msgstr "" -#: ladspa_plugin.cc:854 ladspa_plugin.cc:860 +#: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" msgstr "No se pudo crear %1. El preset no se guardó. (%2)" -#: ladspa_plugin.cc:867 +#: ladspa_plugin.cc:877 msgid "Error saving presets file %1." msgstr "Error al guardar el archivo de preset %1." -#: ladspa_plugin.cc:905 +#: ladspa_plugin.cc:915 msgid "Could not locate HOME. Preset not saved." msgstr "" @@ -1030,7 +1030,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4355 session_state.cc:1114 +#: location.cc:842 session.cc:4362 session_state.cc:1114 msgid "session" msgstr "sesión" @@ -1107,23 +1107,23 @@ msgstr "" msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" -#: midi_diskstream.cc:685 +#: midi_diskstream.cc:699 msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" -#: midi_diskstream.cc:820 +#: midi_diskstream.cc:834 msgid "MidiDiskstream %1: cannot write to disk" msgstr "" -#: midi_diskstream.cc:854 +#: midi_diskstream.cc:868 msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -#: midi_diskstream.cc:941 +#: midi_diskstream.cc:955 msgid "%1: could not create region for complete midi file" msgstr "" -#: midi_diskstream.cc:978 +#: midi_diskstream.cc:992 msgid "MidiDiskstream: could not create region for captured midi!" msgstr "" @@ -1317,23 +1317,35 @@ msgstr "" msgid "Could not construct playlist for PlaylistSource from session data!" msgstr "" -#: plugin_insert.cc:599 +#: plugin.cc:324 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin.cc:398 +msgid "" +"Saving plugin settings is not supported in this build of %1. Consider paying " +"for the full version" +msgstr "" + +#: plugin_insert.cc:598 msgid "programming error: " msgstr "error de programación:" -#: plugin_insert.cc:908 +#: plugin_insert.cc:926 msgid "XML node describing plugin is missing the `type' field" msgstr "" -#: plugin_insert.cc:923 +#: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" msgstr "Tipo de plugin desconocido %1 en estado de inserción de plugins" -#: plugin_insert.cc:951 +#: plugin_insert.cc:969 msgid "Plugin has no unique ID field" msgstr "El plugin no tiene un campo de ID único." -#: plugin_insert.cc:960 +#: plugin_insert.cc:978 msgid "" "Found a reference to a plugin (\"%1\") that is unknown.\n" "Perhaps it was removed or moved since it was last used." @@ -1341,15 +1353,15 @@ msgstr "" "Se encontró una referencia a un plugin (\"%1\") que no se conoce.\n" "Quizás se suprimió o se movió desde la última vez que fue usado." -#: plugin_insert.cc:1076 +#: plugin_insert.cc:1094 msgid "PluginInsert: Auto: no ladspa port number" msgstr "" -#: plugin_insert.cc:1083 +#: plugin_insert.cc:1101 msgid "PluginInsert: Auto: port id out of range" msgstr "" -#: plugin_insert.cc:1119 +#: plugin_insert.cc:1137 msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "" @@ -1494,23 +1506,23 @@ msgstr "" msgid "return %1" msgstr "retorno %1" -#: route.cc:1100 route.cc:2550 +#: route.cc:1105 route.cc:2581 msgid "unknown Processor type \"%1\"; ignored" msgstr "" -#: route.cc:1112 +#: route.cc:1117 msgid "processor could not be created. Ignored." msgstr "" -#: route.cc:1983 route.cc:2203 +#: route.cc:2007 route.cc:2234 msgid "Bad node sent to Route::set_state() [%1]" msgstr "" -#: route.cc:2042 +#: route.cc:2067 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2106 route.cc:2110 route.cc:2317 route.cc:2321 +#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" @@ -1763,17 +1775,17 @@ msgstr "" msgid "Export ended unexpectedly: %1" msgstr "" -#: session_ltc.cc:220 +#: session_ltc.cc:222 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." msgstr "" -#: session_midi.cc:427 +#: session_midi.cc:428 msgid "Session: could not send full MIDI time code" msgstr "" -#: session_midi.cc:519 +#: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1781,11 +1793,11 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "" -#: session_process.cc:135 +#: session_process.cc:133 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1160 +#: session_process.cc:1158 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" @@ -2141,13 +2153,13 @@ msgstr "" msgid "Cannot loop - no loop range defined" msgstr "No se puede reproducir en bucle - no se definió un rango de bucle." -#: session_transport.cc:727 +#: session_transport.cc:728 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1092 +#: session_transport.cc:1094 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2290,7 +2302,7 @@ msgstr "" msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:497 utils.cc:521 utils.cc:535 utils.cc:554 +#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 msgid "programming error: %1 %2" msgstr "error de programación: %1 %2" @@ -2536,11 +2548,11 @@ msgstr "" msgid "LTC" msgstr "LTC" -#: utils.cc:589 +#: utils.cc:599 msgid "programming error: unknown native header format: %1" msgstr "" -#: utils.cc:604 +#: utils.cc:614 msgid "cannot open directory %1 (%2)" msgstr "" diff --git a/libs/ardour/po/it.po b/libs/ardour/po/it.po index 81ee353562..e750eee71a 100644 --- a/libs/ardour/po/it.po +++ b/libs/ardour/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour 0.664.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2003-05-21 12:50+0500\n" "Last-Translator: Filippo Pappalardo \n" "Language-Team: Italian\n" @@ -29,60 +29,60 @@ msgstr "" msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!" msgstr "DiskStream %1: non esiste alcuna playlist di cui fare una copia!" -#: audio_diskstream.cc:823 audio_diskstream.cc:833 +#: audio_diskstream.cc:848 audio_diskstream.cc:858 #, fuzzy msgid "" "AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3" msgstr "DiskStream %1: impossibile leggere %2 dalla playlista al frame %3" -#: audio_diskstream.cc:989 +#: audio_diskstream.cc:1014 #, fuzzy msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "DiskStream %1: impossibile leggere %2 dalla playlista al frame %3" -#: audio_diskstream.cc:1358 audio_diskstream.cc:1375 +#: audio_diskstream.cc:1383 audio_diskstream.cc:1400 #, fuzzy msgid "AudioDiskstream %1: cannot write to disk" msgstr "DiskStream %1: impossibile scrivere sul disco" -#: audio_diskstream.cc:1418 +#: audio_diskstream.cc:1443 #, fuzzy msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" msgstr "DiskStream \"%1\": impossibile scaricare i dati acquisiti sul disco!" -#: audio_diskstream.cc:1512 +#: audio_diskstream.cc:1537 msgid "%1: could not create region for complete audio file" msgstr "%1: impossibile creare una regione per il file audio completo" -#: audio_diskstream.cc:1546 +#: audio_diskstream.cc:1571 #, fuzzy msgid "AudioDiskstream: could not create region for captured audio!" msgstr "DiskStream: impossibile creare una regione per l'audio registrato!" -#: audio_diskstream.cc:1654 +#: audio_diskstream.cc:1679 #, fuzzy msgid "programmer error: %1" msgstr "errore di programmazione: %1" -#: audio_diskstream.cc:1880 +#: audio_diskstream.cc:1905 #, fuzzy msgid "AudioDiskstream: channel %1 out of range" msgstr "DiskStream: canale fuori margine" -#: audio_diskstream.cc:1894 midi_diskstream.cc:1196 +#: audio_diskstream.cc:1919 midi_diskstream.cc:1210 msgid "%1:%2 new capture file not initialized correctly" msgstr "%1:%2 nuovo file di registrazione non è stato avviato correttamente" -#: audio_diskstream.cc:2175 +#: audio_diskstream.cc:2200 #, fuzzy msgid "%1: cannot restore pending capture source file %2" msgstr "Import: impossibile aprire il file audio di input \"%1\"" -#: audio_diskstream.cc:2197 +#: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "" -#: audio_diskstream.cc:2221 +#: audio_diskstream.cc:2246 #, fuzzy msgid "%1: cannot create whole-file region from pending capture sources" msgstr "Playlist: impossibile creare la Regione dal file di stato" @@ -131,7 +131,7 @@ msgstr "" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 -#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 +#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643 #: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" @@ -209,51 +209,51 @@ msgstr "" msgid "Connect session to engine" msgstr "" -#: audioengine.cc:844 +#: audioengine.cc:843 msgid "" "a port with the name \"%1\" already exists: check for duplicated track/bus " "names" msgstr "" -#: audioengine.cc:846 session.cc:1698 +#: audioengine.cc:845 session.cc:1698 msgid "" "No more JACK ports are available. You will need to stop %1 and restart JACK " "with more ports if you need this many tracks." msgstr "" -#: audioengine.cc:849 +#: audioengine.cc:848 #, fuzzy msgid "AudioEngine: cannot register port \"%1\": %2" msgstr "IO: impossibile registrare la porta %1" -#: audioengine.cc:879 +#: audioengine.cc:878 msgid "unable to create port: %1" msgstr "" -#: audioengine.cc:933 +#: audioengine.cc:932 msgid "connect called before engine was started" msgstr "richiesta di connessione avvenuta prima dell'avvio dell'applicazione" -#: audioengine.cc:959 +#: audioengine.cc:958 msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" msgstr "" -#: audioengine.cc:974 audioengine.cc:1005 +#: audioengine.cc:973 audioengine.cc:1004 msgid "disconnect called before engine was started" msgstr "" "richiesta di disconnessione avvenuta prima dell'avvio dell'applicazione" -#: audioengine.cc:1053 +#: audioengine.cc:1052 #, fuzzy msgid "get_port_by_name() called before engine was started" msgstr "" "richiesta get_port_by_name() avvenuta prima dell'avvio dell'applicazione" -#: audioengine.cc:1105 +#: audioengine.cc:1104 msgid "get_ports called before engine was started" msgstr "richiesta di get_ports avvenuta prima dell'avvio dell'applicazione" -#: audioengine.cc:1428 +#: audioengine.cc:1427 msgid "failed to connect to JACK" msgstr "" @@ -572,7 +572,7 @@ msgstr "" msgid "Rectangular" msgstr "" -#: export_formats.cc:52 session.cc:4854 session.cc:4870 +#: export_formats.cc:52 session.cc:4861 session.cc:4877 msgid "None" msgstr "" @@ -797,25 +797,25 @@ msgstr "impossibile determinare la cartella di lavoro corrente (%1)" msgid "unknown file type for session %1" msgstr "tipo di fle sconosciuto per la sessione %1" -#: globals.cc:204 +#: globals.cc:205 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:206 +#: globals.cc:207 #, fuzzy msgid "Could not set system open files limit to %1" msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)" -#: globals.cc:210 +#: globals.cc:211 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:214 +#: globals.cc:215 #, fuzzy msgid "Could not get system open files limit (%1)" msgstr "IO: impossibile registrare la porta %1" -#: globals.cc:267 +#: globals.cc:266 #, fuzzy msgid "Loading configuration" msgstr "Ardour: impossibile la lettura del file di configurazione \"%1\"" @@ -972,54 +972,54 @@ msgstr "" msgid "%d" msgstr "" -#: ladspa_plugin.cc:87 +#: ladspa_plugin.cc:88 msgid "LADSPA: module has no descriptor function." msgstr "LADSPA: il modulo non ha alcuna funzione descriptor." -#: ladspa_plugin.cc:92 +#: ladspa_plugin.cc:93 msgid "LADSPA: plugin has gone away since discovery!" msgstr "LADSPA: il plugin è stato rimosso" -#: ladspa_plugin.cc:99 +#: ladspa_plugin.cc:100 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" -#: ladspa_plugin.cc:296 +#: ladspa_plugin.cc:297 msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " "in the plugin design, and presets may be invalid" msgstr "" -#: ladspa_plugin.cc:373 ladspa_plugin.cc:418 +#: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" msgstr "" -#: ladspa_plugin.cc:386 ladspa_plugin.cc:431 +#: ladspa_plugin.cc:391 ladspa_plugin.cc:440 msgid "LADSPA: no ladspa port number" msgstr "" -#: ladspa_plugin.cc:392 ladspa_plugin.cc:437 +#: ladspa_plugin.cc:397 ladspa_plugin.cc:446 msgid "LADSPA: no ladspa port data" msgstr "" -#: ladspa_plugin.cc:707 +#: ladspa_plugin.cc:717 msgid "LADSPA: cannot load module from \"%1\"" msgstr "LADPSA: impossibile caricare il modulo da \"%1\"" -#: ladspa_plugin.cc:817 +#: ladspa_plugin.cc:827 #, fuzzy msgid "Could not locate HOME. Preset not removed." msgstr "impossibile localizzare HOME. Preset non salvato." -#: ladspa_plugin.cc:854 ladspa_plugin.cc:860 +#: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" msgstr "Impossibile creare %1 . Preset non salvato. (%2)" -#: ladspa_plugin.cc:867 +#: ladspa_plugin.cc:877 msgid "Error saving presets file %1." msgstr "Errore nel salvare il file di preset %1." -#: ladspa_plugin.cc:905 +#: ladspa_plugin.cc:915 msgid "Could not locate HOME. Preset not saved." msgstr "impossibile localizzare HOME. Preset non salvato." @@ -1060,7 +1060,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4355 session_state.cc:1114 +#: location.cc:842 session.cc:4362 session_state.cc:1114 msgid "session" msgstr "" @@ -1134,27 +1134,27 @@ msgstr "DiskStream %1: impossibile leggere %2 dalla playlista al frame %3" msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "DiskStream %1: non esiste alcuna playlist di cui fare una copia!" -#: midi_diskstream.cc:685 +#: midi_diskstream.cc:699 #, fuzzy msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "DiskStream %1: impossibile leggere %2 dalla playlista al frame %3" -#: midi_diskstream.cc:820 +#: midi_diskstream.cc:834 #, fuzzy msgid "MidiDiskstream %1: cannot write to disk" msgstr "DiskStream %1: impossibile scrivere sul disco" -#: midi_diskstream.cc:854 +#: midi_diskstream.cc:868 #, fuzzy msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "DiskStream \"%1\": impossibile scaricare i dati acquisiti sul disco!" -#: midi_diskstream.cc:941 +#: midi_diskstream.cc:955 #, fuzzy msgid "%1: could not create region for complete midi file" msgstr "%1: impossibile creare una regione per il file audio completo" -#: midi_diskstream.cc:978 +#: midi_diskstream.cc:992 #, fuzzy msgid "MidiDiskstream: could not create region for captured midi!" msgstr "DiskStream: impossibile creare una regione per l'audio registrato!" @@ -1360,24 +1360,36 @@ msgstr "" msgid "Could not construct playlist for PlaylistSource from session data!" msgstr "" -#: plugin_insert.cc:599 +#: plugin.cc:324 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin.cc:398 +msgid "" +"Saving plugin settings is not supported in this build of %1. Consider paying " +"for the full version" +msgstr "" + +#: plugin_insert.cc:598 msgid "programming error: " msgstr "errore di programmazione: " -#: plugin_insert.cc:908 +#: plugin_insert.cc:926 #, fuzzy msgid "XML node describing plugin is missing the `type' field" msgstr "Il nodo XML descrivente l'insert manca del campo `type'" -#: plugin_insert.cc:923 +#: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" msgstr "" -#: plugin_insert.cc:951 +#: plugin_insert.cc:969 msgid "Plugin has no unique ID field" msgstr "" -#: plugin_insert.cc:960 +#: plugin_insert.cc:978 msgid "" "Found a reference to a plugin (\"%1\") that is unknown.\n" "Perhaps it was removed or moved since it was last used." @@ -1385,15 +1397,15 @@ msgstr "" "Trovato un riferimento ad un plugin (\"%1\") sconosciuto.\n" "Forse stato rimosso o spostato dall'ultima volta che lo si e' usato" -#: plugin_insert.cc:1076 +#: plugin_insert.cc:1094 msgid "PluginInsert: Auto: no ladspa port number" msgstr "" -#: plugin_insert.cc:1083 +#: plugin_insert.cc:1101 msgid "PluginInsert: Auto: port id out of range" msgstr "" -#: plugin_insert.cc:1119 +#: plugin_insert.cc:1137 msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "" @@ -1551,25 +1563,25 @@ msgstr "" msgid "return %1" msgstr "" -#: route.cc:1100 route.cc:2550 +#: route.cc:1105 route.cc:2581 #, fuzzy msgid "unknown Processor type \"%1\"; ignored" msgstr "impossibile creare la cartella per la sessione %1; ignorato" -#: route.cc:1112 +#: route.cc:1117 #, fuzzy msgid "processor could not be created. Ignored." msgstr "Sessione: impossibile creare un nuovo route" -#: route.cc:1983 route.cc:2203 +#: route.cc:2007 route.cc:2234 msgid "Bad node sent to Route::set_state() [%1]" msgstr "" -#: route.cc:2042 +#: route.cc:2067 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2106 route.cc:2110 route.cc:2317 route.cc:2321 +#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" @@ -1834,17 +1846,17 @@ msgstr "" msgid "Export ended unexpectedly: %1" msgstr "" -#: session_ltc.cc:220 +#: session_ltc.cc:222 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." msgstr "" -#: session_midi.cc:427 +#: session_midi.cc:428 msgid "Session: could not send full MIDI time code" msgstr "" -#: session_midi.cc:519 +#: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1852,11 +1864,11 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "Sessione: impossibile creare Playlist dalla descrizione XML" -#: session_process.cc:135 +#: session_process.cc:133 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1160 +#: session_process.cc:1158 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" @@ -2271,13 +2283,13 @@ msgstr "" msgid "Cannot loop - no loop range defined" msgstr "" -#: session_transport.cc:727 +#: session_transport.cc:728 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1092 +#: session_transport.cc:1094 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2426,7 +2438,7 @@ msgstr "FileSource: impossibile aprire \"%1\": (%2)" msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:497 utils.cc:521 utils.cc:535 utils.cc:554 +#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 #, fuzzy msgid "programming error: %1 %2" msgstr "errore di programmazione: %1" @@ -2681,11 +2693,11 @@ msgstr "" msgid "LTC" msgstr "" -#: utils.cc:589 +#: utils.cc:599 msgid "programming error: unknown native header format: %1" msgstr "" -#: utils.cc:604 +#: utils.cc:614 #, fuzzy msgid "cannot open directory %1 (%2)" msgstr "impossibile accedere al file di sessione recente %1 (%2)" diff --git a/libs/ardour/po/nn.po b/libs/ardour/po/nn.po index f0fb196641..3b45310771 100644 --- a/libs/ardour/po/nn.po +++ b/libs/ardour/po/nn.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2011-09-13 22:43+0100\n" "Last-Translator: Eivind ØdegÃ¥rd \n" "Language-Team: Nynorsk \n" @@ -32,54 +32,54 @@ msgstr "Lyd-diskstraum: Spelelista \"%1\" er ikkje ei lydspeleliste" msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!" msgstr "Lyd-diskstraum %1: det finst inga speleliste Ã¥ kopiera!" -#: audio_diskstream.cc:823 audio_diskstream.cc:833 +#: audio_diskstream.cc:848 audio_diskstream.cc:858 msgid "" "AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3" msgstr "" "Lyd-diskstraum %1: greidde ikkje lesa %2 frÃ¥ spelelista, ramme %3, ved " "attfylling" -#: audio_diskstream.cc:989 +#: audio_diskstream.cc:1014 msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "Lyd-diskstraum %1: greidde ikkje lesa %2 frÃ¥ spelelista, ramme %3" -#: audio_diskstream.cc:1358 audio_diskstream.cc:1375 +#: audio_diskstream.cc:1383 audio_diskstream.cc:1400 msgid "AudioDiskstream %1: cannot write to disk" msgstr "Lyd-diskstraum %1: greidde ikkje skriva til disk" -#: audio_diskstream.cc:1418 +#: audio_diskstream.cc:1443 msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" msgstr "Lyd-diskstraum \"%1\": greier ikkje skriva opptaket til disken!" -#: audio_diskstream.cc:1512 +#: audio_diskstream.cc:1537 msgid "%1: could not create region for complete audio file" msgstr "%1: greidde ikkje laga bolk for heil lydfil" -#: audio_diskstream.cc:1546 +#: audio_diskstream.cc:1571 msgid "AudioDiskstream: could not create region for captured audio!" msgstr "Lyd-diskstraum: greidde ikkje laga bolk frÃ¥ opptaket!" -#: audio_diskstream.cc:1654 +#: audio_diskstream.cc:1679 msgid "programmer error: %1" msgstr "Programmerarfeil: %1" -#: audio_diskstream.cc:1880 +#: audio_diskstream.cc:1905 msgid "AudioDiskstream: channel %1 out of range" msgstr "Lyd-diskstraum: kanal %1 utanfor rekkjevidd" -#: audio_diskstream.cc:1894 midi_diskstream.cc:1196 +#: audio_diskstream.cc:1919 midi_diskstream.cc:1210 msgid "%1:%2 new capture file not initialized correctly" msgstr "%1: ny opptaksfil %2 vart ikkje pÃ¥byrja rett" -#: audio_diskstream.cc:2175 +#: audio_diskstream.cc:2200 msgid "%1: cannot restore pending capture source file %2" msgstr "%1: greidde ikkje henta fram att den ventande opptakskjeldefila %2" -#: audio_diskstream.cc:2197 +#: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "%1: feil tal pÃ¥ ventande kjelder pÃ¥ lista - ser bort frÃ¥ alle" -#: audio_diskstream.cc:2221 +#: audio_diskstream.cc:2246 msgid "%1: cannot create whole-file region from pending capture sources" msgstr "%1: greidde ikkje laga heilfilbolk frÃ¥ ventande opptakskjelder" @@ -125,7 +125,7 @@ msgstr "Lydspelelister (ubrukte)" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 -#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 +#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643 #: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" @@ -207,7 +207,7 @@ msgstr "" msgid "Connect session to engine" msgstr "Kople økta til maskin" -#: audioengine.cc:844 +#: audioengine.cc:843 msgid "" "a port with the name \"%1\" already exists: check for duplicated track/bus " "names" @@ -215,7 +215,7 @@ msgstr "" "ein port med namnet \"%1\" finst frÃ¥ før: sjekk opp dublettar i namn pÃ¥ spor " "eller bussar" -#: audioengine.cc:846 session.cc:1698 +#: audioengine.cc:845 session.cc:1698 #, fuzzy msgid "" "No more JACK ports are available. You will need to stop %1 and restart JACK " @@ -224,35 +224,35 @@ msgstr "" "Det finst ikkje fleire JACK-portar. Du mÃ¥ stoppa %1 og starta JACK pÃ¥ nytt " "med nok portar viss du treng sÃ¥ mange spor." -#: audioengine.cc:849 +#: audioengine.cc:848 msgid "AudioEngine: cannot register port \"%1\": %2" msgstr "AudioEngine: greier ikkje registrera porten \"%1\": %2" -#: audioengine.cc:879 +#: audioengine.cc:878 msgid "unable to create port: %1" msgstr "greidde ikkje laga port: %1" -#: audioengine.cc:933 +#: audioengine.cc:932 msgid "connect called before engine was started" msgstr "tilkoplinga vart oppkalla frø tenaren starta" -#: audioengine.cc:959 +#: audioengine.cc:958 msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" msgstr "Lydmaskineri: Klarte ikkje kopla %1 (%2) til %3 (%4)." -#: audioengine.cc:974 audioengine.cc:1005 +#: audioengine.cc:973 audioengine.cc:1004 msgid "disconnect called before engine was started" msgstr "frÃ¥koplinga vart oppkalla før tenaren starta" -#: audioengine.cc:1053 +#: audioengine.cc:1052 msgid "get_port_by_name() called before engine was started" msgstr "get_port_by_name() vart oppkalla før tenaren starta" -#: audioengine.cc:1105 +#: audioengine.cc:1104 msgid "get_ports called before engine was started" msgstr "get_ports vart oppkalla før tenaren starta" -#: audioengine.cc:1428 +#: audioengine.cc:1427 msgid "failed to connect to JACK" msgstr "greidde ikkje kopla til JACK" @@ -577,7 +577,7 @@ msgstr "Trekant" msgid "Rectangular" msgstr "Firkant" -#: export_formats.cc:52 session.cc:4854 session.cc:4870 +#: export_formats.cc:52 session.cc:4861 session.cc:4877 msgid "None" msgstr "Ingen" @@ -795,23 +795,23 @@ msgstr "greier ikkje avgjera kva som er arbeidsmappa no (%1)" msgid "unknown file type for session %1" msgstr "ukjend filtype for økta %1" -#: globals.cc:204 +#: globals.cc:205 msgid "Could not set system open files limit to \"unlimited\"" msgstr "Greidde ikkje setja systemgrensa for opne filer til \"uavgrensa\"" -#: globals.cc:206 +#: globals.cc:207 msgid "Could not set system open files limit to %1" msgstr "Greidde ikkje setja grensa for opne systemfiler til %1" -#: globals.cc:210 +#: globals.cc:211 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:214 +#: globals.cc:215 msgid "Could not get system open files limit (%1)" msgstr "Greidde ikkje fÃ¥ tak i grensa for opne systemfiler (%1)" -#: globals.cc:267 +#: globals.cc:266 msgid "Loading configuration" msgstr "Lastar oppsettet" @@ -966,20 +966,20 @@ msgstr "H" msgid "%d" msgstr "%d" -#: ladspa_plugin.cc:87 +#: ladspa_plugin.cc:88 msgid "LADSPA: module has no descriptor function." msgstr "LADSPA: modulen har ingen skildringsfunksjon" -#: ladspa_plugin.cc:92 +#: ladspa_plugin.cc:93 msgid "LADSPA: plugin has gone away since discovery!" msgstr "LADSPA: tilleggsprogrammet har vorte borte sidan det vart oppdaga!" -#: ladspa_plugin.cc:99 +#: ladspa_plugin.cc:100 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" "LADSPA: kan ikkje bruka \"%1\", sidan han ikkje kan prosessera pÃ¥ staden" -#: ladspa_plugin.cc:296 +#: ladspa_plugin.cc:297 #, fuzzy msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " @@ -989,35 +989,35 @@ msgstr "" "tyda pÃ¥ feil i korleis tilleggsprogrammet er utforma, og at eventuelle " "ferdigprogram kan vera ugyldige." -#: ladspa_plugin.cc:373 ladspa_plugin.cc:418 +#: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" msgstr "Feil punkt sendt til LadspaPlugin::set_state" -#: ladspa_plugin.cc:386 ladspa_plugin.cc:431 +#: ladspa_plugin.cc:391 ladspa_plugin.cc:440 msgid "LADSPA: no ladspa port number" msgstr "LADSPA: ikkje noko Ladspa-portnummer" -#: ladspa_plugin.cc:392 ladspa_plugin.cc:437 +#: ladspa_plugin.cc:397 ladspa_plugin.cc:446 msgid "LADSPA: no ladspa port data" msgstr "LADSPA: ingen portdata" -#: ladspa_plugin.cc:707 +#: ladspa_plugin.cc:717 msgid "LADSPA: cannot load module from \"%1\"" msgstr "LADSPA: greier ikkje lasta modul frÃ¥ \"%1\"" -#: ladspa_plugin.cc:817 +#: ladspa_plugin.cc:827 msgid "Could not locate HOME. Preset not removed." msgstr "Greidde ikkje finna heimemappa. Har ikkje fjera ferdigoppsett." -#: ladspa_plugin.cc:854 ladspa_plugin.cc:860 +#: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" msgstr "Greidde ikkje laga %1. Har ikkje lagra ferdigoppsett. (%2)" -#: ladspa_plugin.cc:867 +#: ladspa_plugin.cc:877 msgid "Error saving presets file %1." msgstr "Feil med Ã¥ lagra ferdigoppsettfila %1." -#: ladspa_plugin.cc:905 +#: ladspa_plugin.cc:915 msgid "Could not locate HOME. Preset not saved." msgstr "Greidde ikkje finna heimemappa. Har ikkje lagra ferdigoppsett." @@ -1057,7 +1057,7 @@ msgstr "Stader: forsøk pÃ¥ Ã¥ bruka ukjend stad som vald stad" msgid "incorrect XML mode passed to Locations::set_state" msgstr "feil XML-modus send til Locations::set_state" -#: location.cc:842 session.cc:4355 session_state.cc:1114 +#: location.cc:842 session.cc:4362 session_state.cc:1114 msgid "session" msgstr "økt" @@ -1140,23 +1140,23 @@ msgstr "MIDI-diskstraum: Spelelista \"%1\" er ikkje ei midispeleliste" msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "MIDI-diskstraum %1: det finst inga speleliste Ã¥ kopiera!" -#: midi_diskstream.cc:685 +#: midi_diskstream.cc:699 msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "MIDI-diskstraum %1: greidde ikkje lesa %2 frÃ¥ spelelista, ramme %3" -#: midi_diskstream.cc:820 +#: midi_diskstream.cc:834 msgid "MidiDiskstream %1: cannot write to disk" msgstr "MIDI-diskstraum %1: greidde ikkje skriva til disk" -#: midi_diskstream.cc:854 +#: midi_diskstream.cc:868 msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "MIDI-diskstraum \"%1\": greier ikkje skriva opptaket til disken!" -#: midi_diskstream.cc:941 +#: midi_diskstream.cc:955 msgid "%1: could not create region for complete midi file" msgstr "%1: greidde ikkje laga bolk for heil midifil" -#: midi_diskstream.cc:978 +#: midi_diskstream.cc:992 msgid "MidiDiskstream: could not create region for captured midi!" msgstr "MIDI-diskstraum: greidde ikkje laga bolk frÃ¥ midi-opptaket!" @@ -1355,23 +1355,41 @@ msgstr "Fann ingen speleliste-ID i PlaylistSource-XML!" msgid "Could not construct playlist for PlaylistSource from session data!" msgstr "Greidde ikkje byggja speleliste for PlaylistSource frÃ¥ øktdata!" -#: plugin_insert.cc:599 +#: plugin.cc:324 +#, fuzzy +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" +"Du kan ikkje lagra førehandsoppsett for AudioUnit i denne versjonen av " +"Ardour. Du bør vurdera Ã¥ betala for ein nyare verjson" + +#: plugin.cc:398 +#, fuzzy +msgid "" +"Saving plugin settings is not supported in this build of %1. Consider paying " +"for the full version" +msgstr "" +"Du kan ikkje lagra AudioUnit-innstillingar i denne versjonen av Ardour. Du " +"bør vurdera Ã¥ betala for ein nyare verjson" + +#: plugin_insert.cc:598 msgid "programming error: " msgstr "programmeringsfeil: " -#: plugin_insert.cc:908 +#: plugin_insert.cc:926 msgid "XML node describing plugin is missing the `type' field" msgstr "XML-punktet som skildrar utvidinga manglar 'type'-feltet" -#: plugin_insert.cc:923 +#: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" msgstr "ukjent programtilleggstype %1 i innpluggingstilstanden" -#: plugin_insert.cc:951 +#: plugin_insert.cc:969 msgid "Plugin has no unique ID field" msgstr "Innstikket har ikkje noko eige ID-felt" -#: plugin_insert.cc:960 +#: plugin_insert.cc:978 msgid "" "Found a reference to a plugin (\"%1\") that is unknown.\n" "Perhaps it was removed or moved since it was last used." @@ -1379,15 +1397,15 @@ msgstr "" "Fann ein referanse til det ukjende tilleggsprogrammet \"%1\".\n" "Kanskje det har vorte fjerna eller flytt sidan sist det vart brukt." -#: plugin_insert.cc:1076 +#: plugin_insert.cc:1094 msgid "PluginInsert: Auto: no ladspa port number" msgstr "PluginInsert:Auto: ikkje noko ladspa-portnummer" -#: plugin_insert.cc:1083 +#: plugin_insert.cc:1101 msgid "PluginInsert: Auto: port id out of range" msgstr "PluginInsert: Auto: port-id utanfor rekkjevidd" -#: plugin_insert.cc:1119 +#: plugin_insert.cc:1137 msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "" "PluginInsert: fann ikkje den automasjonsferdige kontrollen %1, sÃ¥g bort frÃ¥ " @@ -1541,23 +1559,23 @@ msgstr "Import: src_new()-funkjsonen lukkast ikkje: %1" msgid "return %1" msgstr "retur %1" -#: route.cc:1100 route.cc:2550 +#: route.cc:1105 route.cc:2581 msgid "unknown Processor type \"%1\"; ignored" msgstr "\"%1\" er ein ukjend prosesseringstype, hoppa over" -#: route.cc:1112 +#: route.cc:1117 msgid "processor could not be created. Ignored." msgstr "greidde ikkje laga prosessering. Hoppa over." -#: route.cc:1983 route.cc:2203 +#: route.cc:2007 route.cc:2234 msgid "Bad node sent to Route::set_state() [%1]" msgstr "Feil punkt sendt til Route::set_state()-funksjonen [%1]" -#: route.cc:2042 +#: route.cc:2067 msgid "Pannable state found for route (%1) without a panner!" msgstr "Fann panoreringsstatus for ruta (%1) utan panorering!" -#: route.cc:2106 route.cc:2110 route.cc:2317 route.cc:2321 +#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "feilforma tingingsnykjelstreng i tilstandsfil! [%1] ... hoppa over." @@ -1821,17 +1839,17 @@ msgstr "%1: greier ikkje finna %2 for eksportering" msgid "Export ended unexpectedly: %1" msgstr "" -#: session_ltc.cc:220 +#: session_ltc.cc:222 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." msgstr "" -#: session_midi.cc:427 +#: session_midi.cc:428 msgid "Session: could not send full MIDI time code" msgstr "Økt: greidde ikke senda full MIDI-tidskode" -#: session_midi.cc:519 +#: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "Økt: greidde ikkje senda kvartramme-MTC-melding (%1)" @@ -1839,11 +1857,11 @@ msgstr "Økt: greidde ikkje senda kvartramme-MTC-melding (%1)" msgid "Session: cannot create Playlist from XML description." msgstr "Økt: greier ikkje laga speleliste ut frÃ¥ XML-skildringa." -#: session_process.cc:135 +#: session_process.cc:133 msgid "Session: error in no roll for %1" msgstr "Økt: feil pÃ¥ ingen rull for %1" -#: session_process.cc:1160 +#: session_process.cc:1158 msgid "Programming error: illegal event type in process_event (%1)" msgstr "Programmeringsfeil: ulovleg handlingstype i process-event (%1)" @@ -2225,7 +2243,7 @@ msgstr "Ukjend JACK-transporttilstand %1 i synk-tilbakekallet" msgid "Cannot loop - no loop range defined" msgstr "Greidde ikkje spela i lykkje - du har ikkje gjeve noko lykkjeomrÃ¥de" -#: session_transport.cc:727 +#: session_transport.cc:728 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" @@ -2233,7 +2251,7 @@ msgstr "" "Samanhengande lykkjespeling er ikkje støtta nÃ¥r %1 bruker JACK-transporten.\n" "Me rÃ¥r til at du endrar innstillingane." -#: session_transport.cc:1092 +#: session_transport.cc:1094 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2384,7 +2402,7 @@ msgstr "SndFileSource: @ %1 greidde ikkje lesa %2 i %3 (%4) (len = %5)" msgid "attempt to write a non-writable audio file source (%1)" msgstr "prøvde Ã¥ skriva til ei ikkje-skrivbar lydkjeldefil (%1)" -#: sndfilesource.cc:396 utils.cc:497 utils.cc:521 utils.cc:535 utils.cc:554 +#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 msgid "programming error: %1 %2" msgstr "programmeringsfeil: %1 %2" @@ -2650,11 +2668,11 @@ msgstr "MIDI-klokke" msgid "LTC" msgstr "MTC" -#: utils.cc:589 +#: utils.cc:599 msgid "programming error: unknown native header format: %1" msgstr "programmeringsfeil: ukjent opphavleg hovudformat: \"%1\"" -#: utils.cc:604 +#: utils.cc:614 msgid "cannot open directory %1 (%2)" msgstr "greier ikkje opna mappa %1 (%2)" @@ -3267,13 +3285,6 @@ msgstr "greier ikkje opna mappa %1 (%2)" #~ msgid "AUPlugin: render callback called illegally!" #~ msgstr "AUPlugin: oppteiknings-tilbakekall pÃ¥kalla ulovleg!" -#~ msgid "" -#~ "Saving AudioUnit settings is not supported in this build of Ardour. " -#~ "Consider paying for a newer version" -#~ msgstr "" -#~ "Du kan ikkje lagra AudioUnit-innstillingar i denne versjonen av Ardour. " -#~ "Du bør vurdera Ã¥ betala for ein nyare verjson" - #~ msgid "Bad node sent to AUPlugin::set_state" #~ msgstr "Feil punkt sendt til AUPlugin::set_state" @@ -3297,13 +3308,6 @@ msgstr "greier ikkje opna mappa %1 (%2)" #~ msgid "Saving plugin state to %1 failed" #~ msgstr "Greidde ikkje lagra innstikkstatus til %1" -#~ msgid "" -#~ "Saving AudioUnit presets is not supported in this build of Ardour. " -#~ "Consider paying for a newer version" -#~ msgstr "" -#~ "Du kan ikkje lagra førehandsoppsett for AudioUnit i denne versjonen av " -#~ "Ardour. Du bør vurdera Ã¥ betala for ein nyare verjson" - #~ msgid "Discovering AudioUnit plugins (could take some time ...)" #~ msgstr "Finn AudioUnit-innstikk (dette kan ta litt tid...)" diff --git a/libs/ardour/po/pl.po b/libs/ardour/po/pl.po index cb14bc358f..a75f44c7f9 100644 --- a/libs/ardour/po/pl.po +++ b/libs/ardour/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2008-04-10 10:51+0100\n" "Last-Translator: Piotr Zaryk \n" "Language-Team: Polish \n" @@ -28,52 +28,52 @@ msgstr "" msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" -#: audio_diskstream.cc:823 audio_diskstream.cc:833 +#: audio_diskstream.cc:848 audio_diskstream.cc:858 msgid "" "AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3" msgstr "" -#: audio_diskstream.cc:989 +#: audio_diskstream.cc:1014 msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" -#: audio_diskstream.cc:1358 audio_diskstream.cc:1375 +#: audio_diskstream.cc:1383 audio_diskstream.cc:1400 msgid "AudioDiskstream %1: cannot write to disk" msgstr "" -#: audio_diskstream.cc:1418 +#: audio_diskstream.cc:1443 msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -#: audio_diskstream.cc:1512 +#: audio_diskstream.cc:1537 msgid "%1: could not create region for complete audio file" msgstr "" -#: audio_diskstream.cc:1546 +#: audio_diskstream.cc:1571 msgid "AudioDiskstream: could not create region for captured audio!" msgstr "" -#: audio_diskstream.cc:1654 +#: audio_diskstream.cc:1679 msgid "programmer error: %1" msgstr "bÅ‚Ä…d programisty: %1" -#: audio_diskstream.cc:1880 +#: audio_diskstream.cc:1905 msgid "AudioDiskstream: channel %1 out of range" msgstr "" -#: audio_diskstream.cc:1894 midi_diskstream.cc:1196 +#: audio_diskstream.cc:1919 midi_diskstream.cc:1210 msgid "%1:%2 new capture file not initialized correctly" msgstr "" -#: audio_diskstream.cc:2175 +#: audio_diskstream.cc:2200 msgid "%1: cannot restore pending capture source file %2" msgstr "" -#: audio_diskstream.cc:2197 +#: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "" -#: audio_diskstream.cc:2221 +#: audio_diskstream.cc:2246 msgid "%1: cannot create whole-file region from pending capture sources" msgstr "" @@ -119,7 +119,7 @@ msgstr "" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 -#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 +#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643 #: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" @@ -195,47 +195,47 @@ msgstr "" msgid "Connect session to engine" msgstr "" -#: audioengine.cc:844 +#: audioengine.cc:843 msgid "" "a port with the name \"%1\" already exists: check for duplicated track/bus " "names" msgstr "" -#: audioengine.cc:846 session.cc:1698 +#: audioengine.cc:845 session.cc:1698 msgid "" "No more JACK ports are available. You will need to stop %1 and restart JACK " "with more ports if you need this many tracks." msgstr "" -#: audioengine.cc:849 +#: audioengine.cc:848 msgid "AudioEngine: cannot register port \"%1\": %2" msgstr "" -#: audioengine.cc:879 +#: audioengine.cc:878 msgid "unable to create port: %1" msgstr "" -#: audioengine.cc:933 +#: audioengine.cc:932 msgid "connect called before engine was started" msgstr "" -#: audioengine.cc:959 +#: audioengine.cc:958 msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" msgstr "" -#: audioengine.cc:974 audioengine.cc:1005 +#: audioengine.cc:973 audioengine.cc:1004 msgid "disconnect called before engine was started" msgstr "" -#: audioengine.cc:1053 +#: audioengine.cc:1052 msgid "get_port_by_name() called before engine was started" msgstr "" -#: audioengine.cc:1105 +#: audioengine.cc:1104 msgid "get_ports called before engine was started" msgstr "" -#: audioengine.cc:1428 +#: audioengine.cc:1427 msgid "failed to connect to JACK" msgstr "nie udaÅ‚o siÄ™ poÅ‚Ä…czyć z JACK" @@ -532,7 +532,7 @@ msgstr "" msgid "Rectangular" msgstr "" -#: export_formats.cc:52 session.cc:4854 session.cc:4870 +#: export_formats.cc:52 session.cc:4861 session.cc:4877 msgid "None" msgstr "" @@ -739,23 +739,23 @@ msgstr "" msgid "unknown file type for session %1" msgstr "" -#: globals.cc:204 +#: globals.cc:205 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:206 +#: globals.cc:207 msgid "Could not set system open files limit to %1" msgstr "" -#: globals.cc:210 +#: globals.cc:211 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:214 +#: globals.cc:215 msgid "Could not get system open files limit (%1)" msgstr "" -#: globals.cc:267 +#: globals.cc:266 msgid "Loading configuration" msgstr "" @@ -907,53 +907,53 @@ msgstr "" msgid "%d" msgstr "" -#: ladspa_plugin.cc:87 +#: ladspa_plugin.cc:88 msgid "LADSPA: module has no descriptor function." msgstr "" -#: ladspa_plugin.cc:92 +#: ladspa_plugin.cc:93 msgid "LADSPA: plugin has gone away since discovery!" msgstr "" -#: ladspa_plugin.cc:99 +#: ladspa_plugin.cc:100 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" -#: ladspa_plugin.cc:296 +#: ladspa_plugin.cc:297 msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " "in the plugin design, and presets may be invalid" msgstr "" -#: ladspa_plugin.cc:373 ladspa_plugin.cc:418 +#: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" msgstr "" -#: ladspa_plugin.cc:386 ladspa_plugin.cc:431 +#: ladspa_plugin.cc:391 ladspa_plugin.cc:440 msgid "LADSPA: no ladspa port number" msgstr "" -#: ladspa_plugin.cc:392 ladspa_plugin.cc:437 +#: ladspa_plugin.cc:397 ladspa_plugin.cc:446 msgid "LADSPA: no ladspa port data" msgstr "" -#: ladspa_plugin.cc:707 +#: ladspa_plugin.cc:717 msgid "LADSPA: cannot load module from \"%1\"" msgstr "" -#: ladspa_plugin.cc:817 +#: ladspa_plugin.cc:827 msgid "Could not locate HOME. Preset not removed." msgstr "" -#: ladspa_plugin.cc:854 ladspa_plugin.cc:860 +#: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" msgstr "" -#: ladspa_plugin.cc:867 +#: ladspa_plugin.cc:877 msgid "Error saving presets file %1." msgstr "" -#: ladspa_plugin.cc:905 +#: ladspa_plugin.cc:915 msgid "Could not locate HOME. Preset not saved." msgstr "" @@ -993,7 +993,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4355 session_state.cc:1114 +#: location.cc:842 session.cc:4362 session_state.cc:1114 msgid "session" msgstr "" @@ -1065,23 +1065,23 @@ msgstr "" msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" -#: midi_diskstream.cc:685 +#: midi_diskstream.cc:699 msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" -#: midi_diskstream.cc:820 +#: midi_diskstream.cc:834 msgid "MidiDiskstream %1: cannot write to disk" msgstr "" -#: midi_diskstream.cc:854 +#: midi_diskstream.cc:868 msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -#: midi_diskstream.cc:941 +#: midi_diskstream.cc:955 msgid "%1: could not create region for complete midi file" msgstr "" -#: midi_diskstream.cc:978 +#: midi_diskstream.cc:992 msgid "MidiDiskstream: could not create region for captured midi!" msgstr "" @@ -1280,37 +1280,49 @@ msgstr "" msgid "Could not construct playlist for PlaylistSource from session data!" msgstr "" -#: plugin_insert.cc:599 +#: plugin.cc:324 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin.cc:398 +msgid "" +"Saving plugin settings is not supported in this build of %1. Consider paying " +"for the full version" +msgstr "" + +#: plugin_insert.cc:598 msgid "programming error: " msgstr "" -#: plugin_insert.cc:908 +#: plugin_insert.cc:926 msgid "XML node describing plugin is missing the `type' field" msgstr "" -#: plugin_insert.cc:923 +#: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" msgstr "" -#: plugin_insert.cc:951 +#: plugin_insert.cc:969 msgid "Plugin has no unique ID field" msgstr "" -#: plugin_insert.cc:960 +#: plugin_insert.cc:978 msgid "" "Found a reference to a plugin (\"%1\") that is unknown.\n" "Perhaps it was removed or moved since it was last used." msgstr "" -#: plugin_insert.cc:1076 +#: plugin_insert.cc:1094 msgid "PluginInsert: Auto: no ladspa port number" msgstr "" -#: plugin_insert.cc:1083 +#: plugin_insert.cc:1101 msgid "PluginInsert: Auto: port id out of range" msgstr "" -#: plugin_insert.cc:1119 +#: plugin_insert.cc:1137 msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "" @@ -1450,23 +1462,23 @@ msgstr "" msgid "return %1" msgstr "" -#: route.cc:1100 route.cc:2550 +#: route.cc:1105 route.cc:2581 msgid "unknown Processor type \"%1\"; ignored" msgstr "" -#: route.cc:1112 +#: route.cc:1117 msgid "processor could not be created. Ignored." msgstr "" -#: route.cc:1983 route.cc:2203 +#: route.cc:2007 route.cc:2234 msgid "Bad node sent to Route::set_state() [%1]" msgstr "" -#: route.cc:2042 +#: route.cc:2067 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2106 route.cc:2110 route.cc:2317 route.cc:2321 +#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" @@ -1720,17 +1732,17 @@ msgstr "" msgid "Export ended unexpectedly: %1" msgstr "" -#: session_ltc.cc:220 +#: session_ltc.cc:222 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." msgstr "" -#: session_midi.cc:427 +#: session_midi.cc:428 msgid "Session: could not send full MIDI time code" msgstr "" -#: session_midi.cc:519 +#: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1738,11 +1750,11 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "" -#: session_process.cc:135 +#: session_process.cc:133 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1160 +#: session_process.cc:1158 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" @@ -2110,13 +2122,13 @@ msgstr "" msgid "Cannot loop - no loop range defined" msgstr "" -#: session_transport.cc:727 +#: session_transport.cc:728 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1092 +#: session_transport.cc:1094 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2262,7 +2274,7 @@ msgstr "" msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:497 utils.cc:521 utils.cc:535 utils.cc:554 +#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 msgid "programming error: %1 %2" msgstr "" @@ -2512,11 +2524,11 @@ msgstr "" msgid "LTC" msgstr "MTC" -#: utils.cc:589 +#: utils.cc:599 msgid "programming error: unknown native header format: %1" msgstr "" -#: utils.cc:604 +#: utils.cc:614 #, fuzzy msgid "cannot open directory %1 (%2)" msgstr "nie można otworzyć pliku dźwiÄ™kowego metronomu %1 (%2)" diff --git a/libs/ardour/po/ru.po b/libs/ardour/po/ru.po index 81ed0e47c5..740f8a4929 100644 --- a/libs/ardour/po/ru.po +++ b/libs/ardour/po/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-14 03:23+0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-06-14 02:14+0300\n" "Last-Translator: ÐлекÑандр Прокудин \n" "Language-Team: руÑÑкий <>\n" @@ -32,52 +32,52 @@ msgstr "" msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" -#: audio_diskstream.cc:823 audio_diskstream.cc:833 +#: audio_diskstream.cc:848 audio_diskstream.cc:858 msgid "" "AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3" msgstr "" -#: audio_diskstream.cc:989 +#: audio_diskstream.cc:1014 msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" -#: audio_diskstream.cc:1358 audio_diskstream.cc:1375 +#: audio_diskstream.cc:1383 audio_diskstream.cc:1400 msgid "AudioDiskstream %1: cannot write to disk" msgstr "" -#: audio_diskstream.cc:1418 +#: audio_diskstream.cc:1443 msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -#: audio_diskstream.cc:1512 +#: audio_diskstream.cc:1537 msgid "%1: could not create region for complete audio file" msgstr "" -#: audio_diskstream.cc:1546 +#: audio_diskstream.cc:1571 msgid "AudioDiskstream: could not create region for captured audio!" msgstr "" -#: audio_diskstream.cc:1654 +#: audio_diskstream.cc:1679 msgid "programmer error: %1" msgstr "" -#: audio_diskstream.cc:1880 +#: audio_diskstream.cc:1905 msgid "AudioDiskstream: channel %1 out of range" msgstr "" -#: audio_diskstream.cc:1894 midi_diskstream.cc:1196 +#: audio_diskstream.cc:1919 midi_diskstream.cc:1210 msgid "%1:%2 new capture file not initialized correctly" msgstr "" -#: audio_diskstream.cc:2175 +#: audio_diskstream.cc:2200 msgid "%1: cannot restore pending capture source file %2" msgstr "" -#: audio_diskstream.cc:2197 +#: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "" -#: audio_diskstream.cc:2221 +#: audio_diskstream.cc:2246 msgid "%1: cannot create whole-file region from pending capture sources" msgstr "" @@ -123,7 +123,7 @@ msgstr "" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 -#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 +#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643 #: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" @@ -203,47 +203,47 @@ msgstr "" msgid "Connect session to engine" msgstr "" -#: audioengine.cc:844 +#: audioengine.cc:843 msgid "" "a port with the name \"%1\" already exists: check for duplicated track/bus " "names" msgstr "" -#: audioengine.cc:846 session.cc:1698 +#: audioengine.cc:845 session.cc:1698 msgid "" "No more JACK ports are available. You will need to stop %1 and restart JACK " "with more ports if you need this many tracks." msgstr "" -#: audioengine.cc:849 +#: audioengine.cc:848 msgid "AudioEngine: cannot register port \"%1\": %2" msgstr "AudioEngine: cannot register port \"%1\": %2" -#: audioengine.cc:879 +#: audioengine.cc:878 msgid "unable to create port: %1" msgstr "" -#: audioengine.cc:933 +#: audioengine.cc:932 msgid "connect called before engine was started" msgstr "" -#: audioengine.cc:959 +#: audioengine.cc:958 msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" msgstr "" -#: audioengine.cc:974 audioengine.cc:1005 +#: audioengine.cc:973 audioengine.cc:1004 msgid "disconnect called before engine was started" msgstr "" -#: audioengine.cc:1053 +#: audioengine.cc:1052 msgid "get_port_by_name() called before engine was started" msgstr "" -#: audioengine.cc:1105 +#: audioengine.cc:1104 msgid "get_ports called before engine was started" msgstr "" -#: audioengine.cc:1428 +#: audioengine.cc:1427 msgid "failed to connect to JACK" msgstr "" @@ -541,7 +541,7 @@ msgstr "Треугольное" msgid "Rectangular" msgstr "ПрÑмоугольное" -#: export_formats.cc:52 session.cc:4854 session.cc:4870 +#: export_formats.cc:52 session.cc:4861 session.cc:4877 msgid "None" msgstr "Ðет" @@ -746,23 +746,23 @@ msgstr "" msgid "unknown file type for session %1" msgstr "" -#: globals.cc:204 +#: globals.cc:205 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:206 +#: globals.cc:207 msgid "Could not set system open files limit to %1" msgstr "" -#: globals.cc:210 +#: globals.cc:211 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:214 +#: globals.cc:215 msgid "Could not get system open files limit (%1)" msgstr "" -#: globals.cc:267 +#: globals.cc:266 msgid "Loading configuration" msgstr "" @@ -914,53 +914,53 @@ msgstr "" msgid "%d" msgstr "" -#: ladspa_plugin.cc:87 +#: ladspa_plugin.cc:88 msgid "LADSPA: module has no descriptor function." msgstr "" -#: ladspa_plugin.cc:92 +#: ladspa_plugin.cc:93 msgid "LADSPA: plugin has gone away since discovery!" msgstr "" -#: ladspa_plugin.cc:99 +#: ladspa_plugin.cc:100 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" -#: ladspa_plugin.cc:296 +#: ladspa_plugin.cc:297 msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " "in the plugin design, and presets may be invalid" msgstr "" -#: ladspa_plugin.cc:373 ladspa_plugin.cc:418 +#: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" msgstr "" -#: ladspa_plugin.cc:386 ladspa_plugin.cc:431 +#: ladspa_plugin.cc:391 ladspa_plugin.cc:440 msgid "LADSPA: no ladspa port number" msgstr "" -#: ladspa_plugin.cc:392 ladspa_plugin.cc:437 +#: ladspa_plugin.cc:397 ladspa_plugin.cc:446 msgid "LADSPA: no ladspa port data" msgstr "" -#: ladspa_plugin.cc:707 +#: ladspa_plugin.cc:717 msgid "LADSPA: cannot load module from \"%1\"" msgstr "" -#: ladspa_plugin.cc:817 +#: ladspa_plugin.cc:827 msgid "Could not locate HOME. Preset not removed." msgstr "" -#: ladspa_plugin.cc:854 ladspa_plugin.cc:860 +#: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" msgstr "" -#: ladspa_plugin.cc:867 +#: ladspa_plugin.cc:877 msgid "Error saving presets file %1." msgstr "" -#: ladspa_plugin.cc:905 +#: ladspa_plugin.cc:915 msgid "Could not locate HOME. Preset not saved." msgstr "" @@ -1000,7 +1000,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4355 session_state.cc:1114 +#: location.cc:842 session.cc:4362 session_state.cc:1114 msgid "session" msgstr "" @@ -1076,23 +1076,23 @@ msgstr "" msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" -#: midi_diskstream.cc:685 +#: midi_diskstream.cc:699 msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" -#: midi_diskstream.cc:820 +#: midi_diskstream.cc:834 msgid "MidiDiskstream %1: cannot write to disk" msgstr "" -#: midi_diskstream.cc:854 +#: midi_diskstream.cc:868 msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -#: midi_diskstream.cc:941 +#: midi_diskstream.cc:955 msgid "%1: could not create region for complete midi file" msgstr "" -#: midi_diskstream.cc:978 +#: midi_diskstream.cc:992 msgid "MidiDiskstream: could not create region for captured midi!" msgstr "" @@ -1286,37 +1286,49 @@ msgstr "" msgid "Could not construct playlist for PlaylistSource from session data!" msgstr "" -#: plugin_insert.cc:599 +#: plugin.cc:324 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin.cc:398 +msgid "" +"Saving plugin settings is not supported in this build of %1. Consider paying " +"for the full version" +msgstr "" + +#: plugin_insert.cc:598 msgid "programming error: " msgstr "ошибка программы: " -#: plugin_insert.cc:908 +#: plugin_insert.cc:926 msgid "XML node describing plugin is missing the `type' field" msgstr "" -#: plugin_insert.cc:923 +#: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" msgstr "" -#: plugin_insert.cc:951 +#: plugin_insert.cc:969 msgid "Plugin has no unique ID field" msgstr "" -#: plugin_insert.cc:960 +#: plugin_insert.cc:978 msgid "" "Found a reference to a plugin (\"%1\") that is unknown.\n" "Perhaps it was removed or moved since it was last used." msgstr "" -#: plugin_insert.cc:1076 +#: plugin_insert.cc:1094 msgid "PluginInsert: Auto: no ladspa port number" msgstr "" -#: plugin_insert.cc:1083 +#: plugin_insert.cc:1101 msgid "PluginInsert: Auto: port id out of range" msgstr "" -#: plugin_insert.cc:1119 +#: plugin_insert.cc:1137 msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "" @@ -1459,23 +1471,23 @@ msgstr "" msgid "return %1" msgstr "" -#: route.cc:1100 route.cc:2550 +#: route.cc:1105 route.cc:2581 msgid "unknown Processor type \"%1\"; ignored" msgstr "" -#: route.cc:1112 +#: route.cc:1117 msgid "processor could not be created. Ignored." msgstr "" -#: route.cc:1983 route.cc:2203 +#: route.cc:2007 route.cc:2234 msgid "Bad node sent to Route::set_state() [%1]" msgstr "" -#: route.cc:2042 +#: route.cc:2067 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2106 route.cc:2110 route.cc:2317 route.cc:2321 +#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" @@ -1728,17 +1740,17 @@ msgstr "" msgid "Export ended unexpectedly: %1" msgstr "" -#: session_ltc.cc:220 +#: session_ltc.cc:222 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." msgstr "" -#: session_midi.cc:427 +#: session_midi.cc:428 msgid "Session: could not send full MIDI time code" msgstr "" -#: session_midi.cc:519 +#: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1746,11 +1758,11 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "" -#: session_process.cc:135 +#: session_process.cc:133 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1160 +#: session_process.cc:1158 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" @@ -2103,13 +2115,13 @@ msgstr "" msgid "Cannot loop - no loop range defined" msgstr "" -#: session_transport.cc:727 +#: session_transport.cc:728 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1092 +#: session_transport.cc:1094 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2253,7 +2265,7 @@ msgstr "" msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:497 utils.cc:521 utils.cc:535 utils.cc:554 +#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 msgid "programming error: %1 %2" msgstr "programming error: %1 %2" @@ -2499,11 +2511,11 @@ msgstr "" msgid "LTC" msgstr "LTC" -#: utils.cc:589 +#: utils.cc:599 msgid "programming error: unknown native header format: %1" msgstr "programming error: unknown native header format: %1" -#: utils.cc:604 +#: utils.cc:614 msgid "cannot open directory %1 (%2)" msgstr "cannot open directory %1 (%2)" diff --git a/libs/ardour/po/sv.po b/libs/ardour/po/sv.po index 4987189bd3..79b8499686 100644 --- a/libs/ardour/po/sv.po +++ b/libs/ardour/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2006-10-03 01:09+GMT+1\n" "Last-Translator: Petter Sundlöf \n" "Language-Team: Swedish \n" @@ -28,52 +28,52 @@ msgstr "" msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" -#: audio_diskstream.cc:823 audio_diskstream.cc:833 +#: audio_diskstream.cc:848 audio_diskstream.cc:858 msgid "" "AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3" msgstr "" -#: audio_diskstream.cc:989 +#: audio_diskstream.cc:1014 msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" -#: audio_diskstream.cc:1358 audio_diskstream.cc:1375 +#: audio_diskstream.cc:1383 audio_diskstream.cc:1400 msgid "AudioDiskstream %1: cannot write to disk" msgstr "" -#: audio_diskstream.cc:1418 +#: audio_diskstream.cc:1443 msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -#: audio_diskstream.cc:1512 +#: audio_diskstream.cc:1537 msgid "%1: could not create region for complete audio file" msgstr "" -#: audio_diskstream.cc:1546 +#: audio_diskstream.cc:1571 msgid "AudioDiskstream: could not create region for captured audio!" msgstr "" -#: audio_diskstream.cc:1654 +#: audio_diskstream.cc:1679 msgid "programmer error: %1" msgstr "" -#: audio_diskstream.cc:1880 +#: audio_diskstream.cc:1905 msgid "AudioDiskstream: channel %1 out of range" msgstr "" -#: audio_diskstream.cc:1894 midi_diskstream.cc:1196 +#: audio_diskstream.cc:1919 midi_diskstream.cc:1210 msgid "%1:%2 new capture file not initialized correctly" msgstr "" -#: audio_diskstream.cc:2175 +#: audio_diskstream.cc:2200 msgid "%1: cannot restore pending capture source file %2" msgstr "" -#: audio_diskstream.cc:2197 +#: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "" -#: audio_diskstream.cc:2221 +#: audio_diskstream.cc:2246 msgid "%1: cannot create whole-file region from pending capture sources" msgstr "" @@ -119,7 +119,7 @@ msgstr "" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 -#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 +#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643 #: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" @@ -198,48 +198,48 @@ msgstr "" msgid "Connect session to engine" msgstr "Ansluter till ljudmotorn" -#: audioengine.cc:844 +#: audioengine.cc:843 msgid "" "a port with the name \"%1\" already exists: check for duplicated track/bus " "names" msgstr "" -#: audioengine.cc:846 session.cc:1698 +#: audioengine.cc:845 session.cc:1698 msgid "" "No more JACK ports are available. You will need to stop %1 and restart JACK " "with more ports if you need this many tracks." msgstr "" -#: audioengine.cc:849 +#: audioengine.cc:848 #, fuzzy msgid "AudioEngine: cannot register port \"%1\": %2" msgstr "AudioEngine: kan inte ansluta %1 (%2) till %3 (%4)" -#: audioengine.cc:879 +#: audioengine.cc:878 msgid "unable to create port: %1" msgstr "" -#: audioengine.cc:933 +#: audioengine.cc:932 msgid "connect called before engine was started" msgstr "" -#: audioengine.cc:959 +#: audioengine.cc:958 msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" msgstr "AudioEngine: kan inte ansluta %1 (%2) till %3 (%4)" -#: audioengine.cc:974 audioengine.cc:1005 +#: audioengine.cc:973 audioengine.cc:1004 msgid "disconnect called before engine was started" msgstr "" -#: audioengine.cc:1053 +#: audioengine.cc:1052 msgid "get_port_by_name() called before engine was started" msgstr "" -#: audioengine.cc:1105 +#: audioengine.cc:1104 msgid "get_ports called before engine was started" msgstr "" -#: audioengine.cc:1428 +#: audioengine.cc:1427 msgid "failed to connect to JACK" msgstr "" @@ -537,7 +537,7 @@ msgstr "" msgid "Rectangular" msgstr "" -#: export_formats.cc:52 session.cc:4854 session.cc:4870 +#: export_formats.cc:52 session.cc:4861 session.cc:4877 msgid "None" msgstr "" @@ -744,23 +744,23 @@ msgstr "" msgid "unknown file type for session %1" msgstr "" -#: globals.cc:204 +#: globals.cc:205 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:206 +#: globals.cc:207 msgid "Could not set system open files limit to %1" msgstr "" -#: globals.cc:210 +#: globals.cc:211 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:214 +#: globals.cc:215 msgid "Could not get system open files limit (%1)" msgstr "" -#: globals.cc:267 +#: globals.cc:266 msgid "Loading configuration" msgstr "" @@ -915,53 +915,53 @@ msgstr "" msgid "%d" msgstr "" -#: ladspa_plugin.cc:87 +#: ladspa_plugin.cc:88 msgid "LADSPA: module has no descriptor function." msgstr "" -#: ladspa_plugin.cc:92 +#: ladspa_plugin.cc:93 msgid "LADSPA: plugin has gone away since discovery!" msgstr "" -#: ladspa_plugin.cc:99 +#: ladspa_plugin.cc:100 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" -#: ladspa_plugin.cc:296 +#: ladspa_plugin.cc:297 msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " "in the plugin design, and presets may be invalid" msgstr "" -#: ladspa_plugin.cc:373 ladspa_plugin.cc:418 +#: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" msgstr "" -#: ladspa_plugin.cc:386 ladspa_plugin.cc:431 +#: ladspa_plugin.cc:391 ladspa_plugin.cc:440 msgid "LADSPA: no ladspa port number" msgstr "" -#: ladspa_plugin.cc:392 ladspa_plugin.cc:437 +#: ladspa_plugin.cc:397 ladspa_plugin.cc:446 msgid "LADSPA: no ladspa port data" msgstr "" -#: ladspa_plugin.cc:707 +#: ladspa_plugin.cc:717 msgid "LADSPA: cannot load module from \"%1\"" msgstr "" -#: ladspa_plugin.cc:817 +#: ladspa_plugin.cc:827 msgid "Could not locate HOME. Preset not removed." msgstr "" -#: ladspa_plugin.cc:854 ladspa_plugin.cc:860 +#: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" msgstr "" -#: ladspa_plugin.cc:867 +#: ladspa_plugin.cc:877 msgid "Error saving presets file %1." msgstr "" -#: ladspa_plugin.cc:905 +#: ladspa_plugin.cc:915 msgid "Could not locate HOME. Preset not saved." msgstr "" @@ -1001,7 +1001,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4355 session_state.cc:1114 +#: location.cc:842 session.cc:4362 session_state.cc:1114 msgid "session" msgstr "" @@ -1073,23 +1073,23 @@ msgstr "" msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" -#: midi_diskstream.cc:685 +#: midi_diskstream.cc:699 msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" -#: midi_diskstream.cc:820 +#: midi_diskstream.cc:834 msgid "MidiDiskstream %1: cannot write to disk" msgstr "" -#: midi_diskstream.cc:854 +#: midi_diskstream.cc:868 msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -#: midi_diskstream.cc:941 +#: midi_diskstream.cc:955 msgid "%1: could not create region for complete midi file" msgstr "" -#: midi_diskstream.cc:978 +#: midi_diskstream.cc:992 msgid "MidiDiskstream: could not create region for captured midi!" msgstr "" @@ -1283,37 +1283,49 @@ msgstr "" msgid "Could not construct playlist for PlaylistSource from session data!" msgstr "" -#: plugin_insert.cc:599 +#: plugin.cc:324 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin.cc:398 +msgid "" +"Saving plugin settings is not supported in this build of %1. Consider paying " +"for the full version" +msgstr "" + +#: plugin_insert.cc:598 msgid "programming error: " msgstr "" -#: plugin_insert.cc:908 +#: plugin_insert.cc:926 msgid "XML node describing plugin is missing the `type' field" msgstr "" -#: plugin_insert.cc:923 +#: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" msgstr "" -#: plugin_insert.cc:951 +#: plugin_insert.cc:969 msgid "Plugin has no unique ID field" msgstr "" -#: plugin_insert.cc:960 +#: plugin_insert.cc:978 msgid "" "Found a reference to a plugin (\"%1\") that is unknown.\n" "Perhaps it was removed or moved since it was last used." msgstr "" -#: plugin_insert.cc:1076 +#: plugin_insert.cc:1094 msgid "PluginInsert: Auto: no ladspa port number" msgstr "" -#: plugin_insert.cc:1083 +#: plugin_insert.cc:1101 msgid "PluginInsert: Auto: port id out of range" msgstr "" -#: plugin_insert.cc:1119 +#: plugin_insert.cc:1137 msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "" @@ -1453,23 +1465,23 @@ msgstr "" msgid "return %1" msgstr "" -#: route.cc:1100 route.cc:2550 +#: route.cc:1105 route.cc:2581 msgid "unknown Processor type \"%1\"; ignored" msgstr "" -#: route.cc:1112 +#: route.cc:1117 msgid "processor could not be created. Ignored." msgstr "" -#: route.cc:1983 route.cc:2203 +#: route.cc:2007 route.cc:2234 msgid "Bad node sent to Route::set_state() [%1]" msgstr "" -#: route.cc:2042 +#: route.cc:2067 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2106 route.cc:2110 route.cc:2317 route.cc:2321 +#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" @@ -1722,17 +1734,17 @@ msgstr "" msgid "Export ended unexpectedly: %1" msgstr "" -#: session_ltc.cc:220 +#: session_ltc.cc:222 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." msgstr "" -#: session_midi.cc:427 +#: session_midi.cc:428 msgid "Session: could not send full MIDI time code" msgstr "" -#: session_midi.cc:519 +#: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1740,11 +1752,11 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "" -#: session_process.cc:135 +#: session_process.cc:133 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1160 +#: session_process.cc:1158 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" @@ -2095,13 +2107,13 @@ msgstr "" msgid "Cannot loop - no loop range defined" msgstr "" -#: session_transport.cc:727 +#: session_transport.cc:728 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1092 +#: session_transport.cc:1094 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2244,7 +2256,7 @@ msgstr "" msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:497 utils.cc:521 utils.cc:535 utils.cc:554 +#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 msgid "programming error: %1 %2" msgstr "" @@ -2490,11 +2502,11 @@ msgstr "" msgid "LTC" msgstr "" -#: utils.cc:589 +#: utils.cc:599 msgid "programming error: unknown native header format: %1" msgstr "" -#: utils.cc:604 +#: utils.cc:614 msgid "cannot open directory %1 (%2)" msgstr "" diff --git a/libs/ardour/po/zh.po b/libs/ardour/po/zh.po index 07620505a1..84582f2487 100644 --- a/libs/ardour/po/zh.po +++ b/libs/ardour/po/zh.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-11 08:49-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2012-08-26 13:43+0800\n" "Last-Translator: Rui-huai Zhang \n" "Language-Team: zrhzrh \n" @@ -29,52 +29,52 @@ msgstr "" msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" -#: audio_diskstream.cc:823 audio_diskstream.cc:833 +#: audio_diskstream.cc:848 audio_diskstream.cc:858 msgid "" "AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3" msgstr "" -#: audio_diskstream.cc:989 +#: audio_diskstream.cc:1014 msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" -#: audio_diskstream.cc:1358 audio_diskstream.cc:1375 +#: audio_diskstream.cc:1383 audio_diskstream.cc:1400 msgid "AudioDiskstream %1: cannot write to disk" msgstr "音频ç£ç›˜æµ %1: 无法å¸å…¥åˆ°ç¡¬ç›˜" -#: audio_diskstream.cc:1418 +#: audio_diskstream.cc:1443 msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -#: audio_diskstream.cc:1512 +#: audio_diskstream.cc:1537 msgid "%1: could not create region for complete audio file" msgstr "" -#: audio_diskstream.cc:1546 +#: audio_diskstream.cc:1571 msgid "AudioDiskstream: could not create region for captured audio!" msgstr "" -#: audio_diskstream.cc:1654 +#: audio_diskstream.cc:1679 msgid "programmer error: %1" msgstr "程åºé”™è¯¯: %1" -#: audio_diskstream.cc:1880 +#: audio_diskstream.cc:1905 msgid "AudioDiskstream: channel %1 out of range" msgstr "音频ç£ç›˜æµ: å£°é“ %1 超出范围" -#: audio_diskstream.cc:1894 midi_diskstream.cc:1196 +#: audio_diskstream.cc:1919 midi_diskstream.cc:1210 msgid "%1:%2 new capture file not initialized correctly" msgstr "" -#: audio_diskstream.cc:2175 +#: audio_diskstream.cc:2200 msgid "%1: cannot restore pending capture source file %2" msgstr "" -#: audio_diskstream.cc:2197 +#: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "" -#: audio_diskstream.cc:2221 +#: audio_diskstream.cc:2246 msgid "%1: cannot create whole-file region from pending capture sources" msgstr "" @@ -120,7 +120,7 @@ msgstr "音频播放列表(未使用)" #: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529 #: midi_playlist_source.cc:144 midi_playlist_source.cc:152 -#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:644 +#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643 #: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" @@ -200,47 +200,47 @@ msgstr "" msgid "Connect session to engine" msgstr "连接会è¯åˆ°å¼•æ“Ž" -#: audioengine.cc:844 +#: audioengine.cc:843 msgid "" "a port with the name \"%1\" already exists: check for duplicated track/bus " "names" msgstr "" -#: audioengine.cc:846 session.cc:1698 +#: audioengine.cc:845 session.cc:1698 msgid "" "No more JACK ports are available. You will need to stop %1 and restart JACK " "with more ports if you need this many tracks." msgstr "" -#: audioengine.cc:849 +#: audioengine.cc:848 msgid "AudioEngine: cannot register port \"%1\": %2" msgstr "" -#: audioengine.cc:879 +#: audioengine.cc:878 msgid "unable to create port: %1" msgstr "无法创建端å£: %1" -#: audioengine.cc:933 +#: audioengine.cc:932 msgid "connect called before engine was started" msgstr "" -#: audioengine.cc:959 +#: audioengine.cc:958 msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" msgstr "音频引擎: 无法连接 %1 (%2) 到 %3 (%4)" -#: audioengine.cc:974 audioengine.cc:1005 +#: audioengine.cc:973 audioengine.cc:1004 msgid "disconnect called before engine was started" msgstr "" -#: audioengine.cc:1053 +#: audioengine.cc:1052 msgid "get_port_by_name() called before engine was started" msgstr "" -#: audioengine.cc:1105 +#: audioengine.cc:1104 msgid "get_ports called before engine was started" msgstr "" -#: audioengine.cc:1428 +#: audioengine.cc:1427 msgid "failed to connect to JACK" msgstr "连接JACK失败" @@ -537,7 +537,7 @@ msgstr "三角形" msgid "Rectangular" msgstr "长方形" -#: export_formats.cc:52 session.cc:4854 session.cc:4870 +#: export_formats.cc:52 session.cc:4861 session.cc:4877 msgid "None" msgstr "" @@ -748,23 +748,23 @@ msgstr "" msgid "unknown file type for session %1" msgstr "" -#: globals.cc:204 +#: globals.cc:205 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:206 +#: globals.cc:207 msgid "Could not set system open files limit to %1" msgstr "" -#: globals.cc:210 +#: globals.cc:211 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:214 +#: globals.cc:215 msgid "Could not get system open files limit (%1)" msgstr "" -#: globals.cc:267 +#: globals.cc:266 msgid "Loading configuration" msgstr "载入é…ç½®" @@ -917,19 +917,19 @@ msgstr "" msgid "%d" msgstr "" -#: ladspa_plugin.cc:87 +#: ladspa_plugin.cc:88 msgid "LADSPA: module has no descriptor function." msgstr "LADSPA: 模å—没有æ述符函数." -#: ladspa_plugin.cc:92 +#: ladspa_plugin.cc:93 msgid "LADSPA: plugin has gone away since discovery!" msgstr "LADSPA: 当å‘现æ’件时, æ’件已ç»ä¸è§äº†." -#: ladspa_plugin.cc:99 +#: ladspa_plugin.cc:100 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" -#: ladspa_plugin.cc:296 +#: ladspa_plugin.cc:297 #, fuzzy msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " @@ -937,35 +937,35 @@ msgid "" msgstr "" "æ’件\"%1\"使用éžæ³•å‚æ•°æ•°é‡. è¿™å¯èƒ½æ„味ç€æ’件的设计有所å˜åŠ¨, 而且预设失效了." -#: ladspa_plugin.cc:373 ladspa_plugin.cc:418 +#: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" msgstr "å的符å·å‘é€è‡³ LadspaPlugin::set_state" -#: ladspa_plugin.cc:386 ladspa_plugin.cc:431 +#: ladspa_plugin.cc:391 ladspa_plugin.cc:440 msgid "LADSPA: no ladspa port number" msgstr "LADSPA: 没有 ladspa 端å£æ•°é‡" -#: ladspa_plugin.cc:392 ladspa_plugin.cc:437 +#: ladspa_plugin.cc:397 ladspa_plugin.cc:446 msgid "LADSPA: no ladspa port data" msgstr "LADSPA: 没有LADSPA端å£æ•°æ®" -#: ladspa_plugin.cc:707 +#: ladspa_plugin.cc:717 msgid "LADSPA: cannot load module from \"%1\"" msgstr "LADSPA: 无法从 \"%1\" 载入模å—" -#: ladspa_plugin.cc:817 +#: ladspa_plugin.cc:827 msgid "Could not locate HOME. Preset not removed." msgstr "无法定ä½HOME. 预设没被移除." -#: ladspa_plugin.cc:854 ladspa_plugin.cc:860 +#: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" msgstr "ä¸èƒ½åˆ›å»º %1. 预设没ä¿å­˜. (%2)" -#: ladspa_plugin.cc:867 +#: ladspa_plugin.cc:877 msgid "Error saving presets file %1." msgstr "" -#: ladspa_plugin.cc:905 +#: ladspa_plugin.cc:915 msgid "Could not locate HOME. Preset not saved." msgstr "无法定ä½HOME. 预设没ä¿å­˜." @@ -1005,7 +1005,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4355 session_state.cc:1114 +#: location.cc:842 session.cc:4362 session_state.cc:1114 msgid "session" msgstr "会è¯" @@ -1077,23 +1077,23 @@ msgstr "" msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" -#: midi_diskstream.cc:685 +#: midi_diskstream.cc:699 msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" msgstr "" -#: midi_diskstream.cc:820 +#: midi_diskstream.cc:834 msgid "MidiDiskstream %1: cannot write to disk" msgstr "MIDIç£ç›˜æµ %1: 无法写入硬盘" -#: midi_diskstream.cc:854 +#: midi_diskstream.cc:868 msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -#: midi_diskstream.cc:941 +#: midi_diskstream.cc:955 msgid "%1: could not create region for complete midi file" msgstr "" -#: midi_diskstream.cc:978 +#: midi_diskstream.cc:992 msgid "MidiDiskstream: could not create region for captured midi!" msgstr "" @@ -1287,37 +1287,49 @@ msgstr "" msgid "Could not construct playlist for PlaylistSource from session data!" msgstr "" -#: plugin_insert.cc:599 +#: plugin.cc:324 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin.cc:398 +msgid "" +"Saving plugin settings is not supported in this build of %1. Consider paying " +"for the full version" +msgstr "" + +#: plugin_insert.cc:598 msgid "programming error: " msgstr "程åºé”™è¯¯:" -#: plugin_insert.cc:908 +#: plugin_insert.cc:926 msgid "XML node describing plugin is missing the `type' field" msgstr "" -#: plugin_insert.cc:923 +#: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" msgstr "" -#: plugin_insert.cc:951 +#: plugin_insert.cc:969 msgid "Plugin has no unique ID field" msgstr "" -#: plugin_insert.cc:960 +#: plugin_insert.cc:978 msgid "" "Found a reference to a plugin (\"%1\") that is unknown.\n" "Perhaps it was removed or moved since it was last used." msgstr "" -#: plugin_insert.cc:1076 +#: plugin_insert.cc:1094 msgid "PluginInsert: Auto: no ladspa port number" msgstr "" -#: plugin_insert.cc:1083 +#: plugin_insert.cc:1101 msgid "PluginInsert: Auto: port id out of range" msgstr "" -#: plugin_insert.cc:1119 +#: plugin_insert.cc:1137 msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "" @@ -1457,23 +1469,23 @@ msgstr "导入: src_new() 失败 : %1" msgid "return %1" msgstr "返回 %1" -#: route.cc:1100 route.cc:2550 +#: route.cc:1105 route.cc:2581 msgid "unknown Processor type \"%1\"; ignored" msgstr "" -#: route.cc:1112 +#: route.cc:1117 msgid "processor could not be created. Ignored." msgstr "" -#: route.cc:1983 route.cc:2203 +#: route.cc:2007 route.cc:2234 msgid "Bad node sent to Route::set_state() [%1]" msgstr "æŸå的符å·å‘é€è‡³ Route::set_state() [%1]" -#: route.cc:2042 +#: route.cc:2067 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2106 route.cc:2110 route.cc:2317 route.cc:2321 +#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" @@ -1727,17 +1739,17 @@ msgstr "" msgid "Export ended unexpectedly: %1" msgstr "" -#: session_ltc.cc:220 +#: session_ltc.cc:222 msgid "" "LTC encoder: invalid framerate - LTC encoding is disabled for the remainder " "of this session." msgstr "" -#: session_midi.cc:427 +#: session_midi.cc:428 msgid "Session: could not send full MIDI time code" msgstr "" -#: session_midi.cc:519 +#: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1745,11 +1757,11 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "会è¯: 无法从XMLæ述符创建播放列表." -#: session_process.cc:135 +#: session_process.cc:133 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1160 +#: session_process.cc:1158 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" @@ -2112,13 +2124,13 @@ msgstr "" msgid "Cannot loop - no loop range defined" msgstr "" -#: session_transport.cc:727 +#: session_transport.cc:728 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1092 +#: session_transport.cc:1094 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2261,7 +2273,7 @@ msgstr "" msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:497 utils.cc:521 utils.cc:535 utils.cc:554 +#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 msgid "programming error: %1 %2" msgstr "程åºé”™è¯¯: %1 %2" @@ -2511,11 +2523,11 @@ msgstr "MIDI时钟" msgid "LTC" msgstr "MTC" -#: utils.cc:589 +#: utils.cc:599 msgid "programming error: unknown native header format: %1" msgstr "" -#: utils.cc:604 +#: utils.cc:614 msgid "cannot open directory %1 (%2)" msgstr "无法打开目录 %1 (%2)" diff --git a/libs/gtkmm2ext/po/cs.po b/libs/gtkmm2ext/po/cs.po index afff193f8e..fa282e4ed5 100644 --- a/libs/gtkmm2ext/po/cs.po +++ b/libs/gtkmm2ext/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-04-09 09:28-0400\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-06-13 22:33+0200\n" "Last-Translator: Pavel Fric \n" "Language-Team: Czech \n" @@ -75,15 +75,14 @@ msgstr "Alt" msgid "Meta" msgstr "Meta" -#: keyboard.cc:134 keyboard.cc:523 +#: keyboard.cc:139 keyboard.cc:531 msgid "Unknown" msgstr "Neznámý" -#: keyboard.cc:534 +#: keyboard.cc:542 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" -"Soubor s pÅ™iÅ™azením kláves \"%2\"se nepodaÅ™ilo najít, nebo " -"obsahuje chyby." +"Soubor s pÅ™iÅ™azením kláves \"%2\"se nepodaÅ™ilo najít, nebo obsahuje chyby." #: tearoff.cc:57 msgid "Click to tear this into its own window" @@ -96,4 +95,3 @@ msgstr "KlepnÄ›te pro ukotvení do hlavního okna" #: textviewer.cc:34 msgid "Close" msgstr "Zavřít" - diff --git a/libs/gtkmm2ext/po/de.po b/libs/gtkmm2ext/po/de.po index b803d2e600..4c032c8b15 100644 --- a/libs/gtkmm2ext/po/de.po +++ b/libs/gtkmm2ext/po/de.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-05 19:32+0100\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-02-05 19:50+0100\n" "Last-Translator: Edgar Aichinger \n" "Language-Team: German \n" @@ -77,11 +77,11 @@ msgstr "Alt" msgid "Meta" msgstr "Meta" -#: keyboard.cc:134 keyboard.cc:523 +#: keyboard.cc:139 keyboard.cc:531 msgid "Unknown" msgstr "Unbekannt" -#: keyboard.cc:534 +#: keyboard.cc:542 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" "Die Tastenkürzel-Datei \"%1\" konnte nicht gefunden werden oder enthält " @@ -98,4 +98,3 @@ msgstr "Klicken, um an das Hauptfenster anzudocken" #: textviewer.cc:34 msgid "Close" msgstr "Schließen" - diff --git a/libs/gtkmm2ext/po/el.po b/libs/gtkmm2ext/po/el.po index 99334ea004..62b4303bbf 100644 --- a/libs/gtkmm2ext/po/el.po +++ b/libs/gtkmm2ext/po/el.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.99beta23\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-03 11:35-0500\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2005-01-11\n" "Last-Translator: Muadibas\n" "Language-Team: Hellenic(Greek) \n" @@ -72,11 +72,11 @@ msgstr "" msgid "Meta" msgstr "" -#: keyboard.cc:134 keyboard.cc:523 +#: keyboard.cc:139 keyboard.cc:531 msgid "Unknown" msgstr "" -#: keyboard.cc:534 +#: keyboard.cc:542 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" diff --git a/libs/gtkmm2ext/po/es.po b/libs/gtkmm2ext/po/es.po index 83f1910c3f..220c7501ee 100644 --- a/libs/gtkmm2ext/po/es.po +++ b/libs/gtkmm2ext/po/es.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gtkmm2ext\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-09 12:26+0100\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-02-09 16:21+0100\n" "Last-Translator: Pablo Fernández \n" "Language-Team: Spanish\n" @@ -53,17 +53,11 @@ msgstr "Lo siento %1, no puedo hacer eso" msgid "Command" msgstr "" -#: keyboard.cc:69 -#: keyboard.cc:72 -#: keyboard.cc:85 -#: keyboard.cc:89 +#: keyboard.cc:69 keyboard.cc:72 keyboard.cc:85 keyboard.cc:89 msgid "Control" msgstr "" -#: keyboard.cc:70 -#: keyboard.cc:73 -#: keyboard.cc:87 -#: keyboard.cc:90 +#: keyboard.cc:70 keyboard.cc:73 keyboard.cc:87 keyboard.cc:90 msgid "Key|Shift" msgstr "" @@ -79,14 +73,15 @@ msgstr "" msgid "Meta" msgstr "" -#: keyboard.cc:134 -#: keyboard.cc:523 +#: keyboard.cc:139 keyboard.cc:531 msgid "Unknown" msgstr "" -#: keyboard.cc:534 +#: keyboard.cc:542 msgid "key bindings file not found at \"%2\" or contains errors." -msgstr "El archivo de combinaciones de teclado no se encontró en \"%2\" o contiene errores." +msgstr "" +"El archivo de combinaciones de teclado no se encontró en \"%2\" o contiene " +"errores." #: tearoff.cc:57 msgid "Click to tear this into its own window" diff --git a/libs/gtkmm2ext/po/fr.po b/libs/gtkmm2ext/po/fr.po index 6535007132..b9ad99d844 100644 --- a/libs/gtkmm2ext/po/fr.po +++ b/libs/gtkmm2ext/po/fr.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-03 11:35-0500\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2011-06-13 00:30+0200\n" "Language-Team: American English \n" "Language: en_US\n" @@ -71,11 +71,11 @@ msgstr "Alt" msgid "Meta" msgstr "Meta" -#: keyboard.cc:134 keyboard.cc:523 +#: keyboard.cc:139 keyboard.cc:531 msgid "Unknown" msgstr "Inconnu" -#: keyboard.cc:534 +#: keyboard.cc:542 #, fuzzy msgid "key bindings file not found at \"%2\" or contains errors." msgstr "Raccourcis clavier pour %1 introuvable dans \"%1\" ou corrompu." diff --git a/libs/gtkmm2ext/po/nn.po b/libs/gtkmm2ext/po/nn.po index 43907a4525..7e3d72bed1 100644 --- a/libs/gtkmm2ext/po/nn.po +++ b/libs/gtkmm2ext/po/nn.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-03 11:35-0500\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2013-01-01 20:30+0100\n" "Last-Translator: Eivind ØdegÃ¥rd \n" "Language-Team: Nynorsk \n" @@ -76,11 +76,11 @@ msgstr "" msgid "Meta" msgstr "" -#: keyboard.cc:134 keyboard.cc:523 +#: keyboard.cc:139 keyboard.cc:531 msgid "Unknown" msgstr "Ukjend" -#: keyboard.cc:534 +#: keyboard.cc:542 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" diff --git a/libs/gtkmm2ext/po/pl.po b/libs/gtkmm2ext/po/pl.po index a102ccdb2d..da5720a331 100644 --- a/libs/gtkmm2ext/po/pl.po +++ b/libs/gtkmm2ext/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libgtkmm2ext\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-03 11:35-0500\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2008-04-10 10:54+0100\n" "Last-Translator: Piotr Zaryk \n" "Language-Team: Polish \n" @@ -71,11 +71,11 @@ msgstr "" msgid "Meta" msgstr "" -#: keyboard.cc:134 keyboard.cc:523 +#: keyboard.cc:139 keyboard.cc:531 msgid "Unknown" msgstr "" -#: keyboard.cc:534 +#: keyboard.cc:542 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" diff --git a/libs/gtkmm2ext/po/pt.po b/libs/gtkmm2ext/po/pt.po index f72dd54d86..3c0633240d 100644 --- a/libs/gtkmm2ext/po/pt.po +++ b/libs/gtkmm2ext/po/pt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gtkmm2ext\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-03 11:35-0500\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2004-05-17 20:36+0200\n" "Last-Translator: Chris Ross \n" "Language-Team: Portuguese\n" @@ -72,11 +72,11 @@ msgstr "" msgid "Meta" msgstr "" -#: keyboard.cc:134 keyboard.cc:523 +#: keyboard.cc:139 keyboard.cc:531 msgid "Unknown" msgstr "" -#: keyboard.cc:534 +#: keyboard.cc:542 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" diff --git a/libs/gtkmm2ext/po/ru.po b/libs/gtkmm2ext/po/ru.po index 6e0c91cb5c..6be73a3b88 100644 --- a/libs/gtkmm2ext/po/ru.po +++ b/libs/gtkmm2ext/po/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gtkmm2ext\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-03 11:35-0500\n" +"POT-Creation-Date: 2013-08-15 15:09-0400\n" "PO-Revision-Date: 2012-12-31 01:38+0300\n" "Last-Translator: ÐлекÑандр Прокудин \n" "Language-Team: руÑÑкий <>\n" @@ -78,11 +78,11 @@ msgstr "Alt" msgid "Meta" msgstr "Meta" -#: keyboard.cc:134 keyboard.cc:523 +#: keyboard.cc:139 keyboard.cc:531 msgid "Unknown" msgstr "ÐеизвеÑтно" -#: keyboard.cc:534 +#: keyboard.cc:542 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" -- cgit v1.2.3 From 4cdb018cae8580581359274d6397779b79263bdc Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 25 Aug 2013 15:54:43 +0200 Subject: free memory of external plugins on GUI close (major mem leak). There is at least one known plugin that has a problem with this (custom thread race condition) but it also crashes in other hosts: http://www.drumgizmo.org/wiki/doku.php?id=bugs&do=showcaselink&showid=8&project=drumgizmo tested to be working with various nedko, falktx and x42 plugins --- gtk2_ardour/lv2_plugin_ui.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc index f9b15714f6..6f22ce5182 100644 --- a/gtk2_ardour/lv2_plugin_ui.cc +++ b/gtk2_ardour/lv2_plugin_ui.cc @@ -116,6 +116,10 @@ LV2PluginUI::on_external_ui_closed(void* controller) LV2PluginUI* me = (LV2PluginUI*)controller; me->_screen_update_connection.disconnect(); me->_external_ui_ptr = NULL; +#if 1 + suil_instance_free((SuilInstance*)me->_inst); + me->_inst = NULL; +#endif } void @@ -450,9 +454,12 @@ LV2PluginUI::on_window_hide() if (_external_ui_ptr) { LV2_EXTERNAL_UI_HIDE(_external_ui_ptr); - //slv2_ui_instance_get_descriptor(_inst)->cleanup(_inst); - //_external_ui_ptr = NULL; - //_screen_update_connection.disconnect(); + _screen_update_connection.disconnect(); + _external_ui_ptr = NULL; +#if 1 + suil_instance_free((SuilInstance*)_inst); + _inst = NULL; +#endif } else { lv2ui_free(); } -- cgit v1.2.3 From 1d972d05c5e889e4358d18ec6ba0c8e2e11a64e4 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 25 Aug 2013 16:20:27 +0200 Subject: add LV2 support for kx:external-ui# the ABI of http://kxstudio.sf.net/ns/lv2ext/external-ui# is identical to http://lv2plug.in/ns/extensions/ui#external It just adds a distinction between #Host and #Widget for cosmetic reasons. Sadly some newer plugins are released with only support for kxstudio URI :( --- gtk2_ardour/lv2_external_ui.h | 2 ++ gtk2_ardour/lv2_plugin_ui.cc | 9 +++++++-- gtk2_ardour/lv2_plugin_ui.h | 1 + libs/ardour/lv2_plugin.cc | 11 +++++++++-- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/lv2_external_ui.h b/gtk2_ardour/lv2_external_ui.h index 19fa912f04..9f404e6d9a 100644 --- a/gtk2_ardour/lv2_external_ui.h +++ b/gtk2_ardour/lv2_external_ui.h @@ -37,6 +37,8 @@ /** UI extension suitable for out-of-process UIs */ #define LV2_EXTERNAL_UI_URI "http://lv2plug.in/ns/extensions/ui#external" +#define LV2_EXTERNAL_UI_KX__Host "http://kxstudio.sf.net/ns/lv2ext/external-ui#Host" + #ifdef __cplusplus extern "C" { #endif diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc index 6f22ce5182..168f2d6798 100644 --- a/gtk2_ardour/lv2_plugin_ui.cc +++ b/gtk2_ardour/lv2_plugin_ui.cc @@ -171,6 +171,7 @@ LV2PluginUI::output_update() //cout << "output_update" << endl; if (_external_ui_ptr) { LV2_EXTERNAL_UI_RUN(_external_ui_ptr); + if (!_external_ui_ptr) return; // ui was closed here } /* FIXME only works with control output ports (which is all we support now anyway) */ @@ -222,12 +223,16 @@ LV2PluginUI::lv2ui_instantiate(const std::string& title) _external_ui_feature.URI = LV2_EXTERNAL_UI_URI; _external_ui_feature.data = &_external_ui_host; + _external_kxui_feature.URI = LV2_EXTERNAL_UI_KX__Host; + _external_kxui_feature.data = &_external_ui_host; + ++features_count; features = (LV2_Feature**)malloc( - sizeof(LV2_Feature*) * (features_count + 1)); - for (size_t i = 0; i < features_count - 1; ++i) { + sizeof(LV2_Feature*) * (features_count + 2)); + for (size_t i = 0; i < features_count - 2; ++i) { features[i] = features_src[i]; } + features[features_count - 2] = &_external_kxui_feature; features[features_count - 1] = &_external_ui_feature; features[features_count] = NULL; } else { diff --git a/gtk2_ardour/lv2_plugin_ui.h b/gtk2_ardour/lv2_plugin_ui.h index edb90cb154..40e3890e1c 100644 --- a/gtk2_ardour/lv2_plugin_ui.h +++ b/gtk2_ardour/lv2_plugin_ui.h @@ -78,6 +78,7 @@ class LV2PluginUI : public PlugUIBase, public Gtk::VBox std::vector _controllables; struct lv2_external_ui_host _external_ui_host; LV2_Feature _external_ui_feature; + LV2_Feature _external_kxui_feature; struct lv2_external_ui* _external_ui_ptr; LV2_Feature _parent_feature; Gtk::Window* _win_ptr; diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index 484965e8f4..c6e9b89e5b 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -142,6 +142,7 @@ public: LilvNode* time_Position; LilvNode* ui_GtkUI; LilvNode* ui_external; + LilvNode* ui_externalkx; private: bool _bundle_checked; @@ -561,11 +562,15 @@ LV2Plugin::init(const void* c_plugin, framecnt_t rate) if (!_impl->ui) { LILV_FOREACH(uis, i, uis) { const LilvUI* ui = lilv_uis_get(uis, i); - if (lilv_ui_is_a(ui, _world.ui_external)) { + if (lilv_ui_is_a(ui, _world.ui_externalkx)) { _impl->ui = ui; _impl->ui_type = _world.ui_external; break; } + if (lilv_ui_is_a(ui, _world.ui_external)) { + _impl->ui = ui; + _impl->ui_type = _world.ui_external; + } } } } @@ -613,7 +618,7 @@ LV2Plugin::is_external_ui() const if (!_impl->ui) { return false; } - return lilv_ui_is_a(_impl->ui, _world.ui_external); + return lilv_ui_is_a(_impl->ui, _world.ui_external) || lilv_ui_is_a(_impl->ui, _world.ui_externalkx); } bool @@ -1950,10 +1955,12 @@ LV2World::LV2World() time_Position = lilv_new_uri(world, LV2_TIME__Position); ui_GtkUI = lilv_new_uri(world, LV2_UI__GtkUI); ui_external = lilv_new_uri(world, "http://lv2plug.in/ns/extensions/ui#external"); + ui_externalkx = lilv_new_uri(world, "http://kxstudio.sf.net/ns/lv2ext/external-ui#Widget"); } LV2World::~LV2World() { + lilv_node_free(ui_externalkx); lilv_node_free(ui_external); lilv_node_free(ui_GtkUI); lilv_node_free(time_Position); -- cgit v1.2.3 From 486483366926e45c8236c26915dd417d8bb404dd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 27 Aug 2013 20:55:15 +0200 Subject: fix vari-speed phase (when used for calculation only) and clarify an old comment. --- libs/ardour/interpolation.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libs/ardour/interpolation.cc b/libs/ardour/interpolation.cc index fccc805cb0..bccaa45553 100644 --- a/libs/ardour/interpolation.cc +++ b/libs/ardour/interpolation.cc @@ -135,17 +135,18 @@ CubicInterpolation::interpolate (int channel, framecnt_t nframes, Sample *input, inm1 = input[i]; } - } else { - - /* not sure that this is ever utilized - it implies that one of the input/output buffers is missing */ + i = floor(distance); + phase[channel] = distance - floor(distance); + } else { + /* used to calculate play-distance with acceleration (silent roll) + * (use same algorithm as real playback for identical rounding/floor'ing) + */ for (framecnt_t outsample = 0; outsample < nframes; ++outsample) { distance += _speed + acceleration; } + i = floor(distance); } - i = floor(distance); - phase[channel] = distance - floor(distance); - return i; } -- cgit v1.2.3 From 03c26762e6c602b0d815d074384b71abf773ee37 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 29 Aug 2013 13:05:11 +0200 Subject: update external plugin UI handling amend to 4cdb018 and 1d972d0 override ui_closed() behavior for lv2ui:external Keep UI around and do not re-instantiate, but simply show it again. (this is against the original specs but was agreed upon by various authors and the previous behavior or Ardour.) kx:external-ui are cleaned up after ui_closed(). --- gtk2_ardour/lv2_plugin_ui.cc | 70 ++++++++++++++++++++++++++--------------- gtk2_ardour/lv2_plugin_ui.h | 1 + libs/ardour/ardour/lv2_plugin.h | 1 + libs/ardour/lv2_plugin.cc | 9 ++++++ 4 files changed, 55 insertions(+), 26 deletions(-) diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc index 168f2d6798..ed783b0886 100644 --- a/gtk2_ardour/lv2_plugin_ui.cc +++ b/gtk2_ardour/lv2_plugin_ui.cc @@ -113,13 +113,13 @@ LV2PluginUI::update_timeout() void LV2PluginUI::on_external_ui_closed(void* controller) { + //printf("LV2PluginUI::on_external_ui_closed\n"); LV2PluginUI* me = (LV2PluginUI*)controller; me->_screen_update_connection.disconnect(); - me->_external_ui_ptr = NULL; -#if 1 - suil_instance_free((SuilInstance*)me->_inst); - me->_inst = NULL; -#endif + if (me->_lv2->is_external_kx() /* called from plugin's UI_RUN() */) { + // plugin is free()d in parent function - LV2PluginUI::output_update() + me->_external_ui_ptr = NULL; + } } void @@ -171,7 +171,19 @@ LV2PluginUI::output_update() //cout << "output_update" << endl; if (_external_ui_ptr) { LV2_EXTERNAL_UI_RUN(_external_ui_ptr); - if (!_external_ui_ptr) return; // ui was closed here + if (_lv2->is_external_kx() && !_external_ui_ptr) { + // clean up external UI if it closes itself via + // on_external_ui_closed() during run() + //printf("LV2PluginUI::output_update -- UI was closed\n"); + _screen_update_connection.disconnect(); + _message_update_connection.disconnect(); + if (_inst) { + suil_instance_free((SuilInstance*)_inst); + } + _inst = NULL; + _external_ui_ptr = NULL; + return; + } } /* FIXME only works with control output ports (which is all we support now anyway) */ @@ -269,6 +281,10 @@ LV2PluginUI::lv2ui_instantiate(const std::string& title) ? NS_UI "external" : NS_UI "GtkUI"; + if (_lv2->has_message_output()) { + _lv2->enable_ui_emmission(); + } + const LilvUI* ui = (const LilvUI*)_lv2->c_ui(); _inst = suil_instance_new( ui_host, @@ -331,8 +347,7 @@ LV2PluginUI::lv2ui_instantiate(const std::string& title) } if (_lv2->has_message_output()) { - _lv2->enable_ui_emmission(); - ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect( + _message_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect( sigc::mem_fun(*this, &LV2PluginUI::update_timeout)); } } @@ -359,17 +374,7 @@ LV2PluginUI::~LV2PluginUI () delete[] _values; } - /* Close and delete GUI. */ - lv2ui_free(); - - _screen_update_connection.disconnect(); - - if (_lv2->is_external_ui()) { - /* External UI is no longer valid. - on_window_hide() will not try to use it if is NULL. - */ - _external_ui_ptr = NULL; - } + on_window_hide(); } int @@ -432,7 +437,15 @@ LV2PluginUI::on_window_show(const std::string& title) if (_lv2->is_external_ui()) { if (_external_ui_ptr) { + _screen_update_connection.disconnect(); + _message_update_connection.disconnect(); LV2_EXTERNAL_UI_SHOW(_external_ui_ptr); + _screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect + (sigc::mem_fun(*this, &LV2PluginUI::output_update)); + if (_lv2->has_message_output()) { + _message_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect( + sigc::mem_fun(*this, &LV2PluginUI::update_timeout)); + } return false; } lv2ui_instantiate(title); @@ -440,10 +453,15 @@ LV2PluginUI::on_window_show(const std::string& title) return false; } - LV2_EXTERNAL_UI_SHOW(_external_ui_ptr); _screen_update_connection.disconnect(); + _message_update_connection.disconnect(); + LV2_EXTERNAL_UI_SHOW(_external_ui_ptr); _screen_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect - (sigc::mem_fun(*this, &LV2PluginUI::output_update)); + (sigc::mem_fun(*this, &LV2PluginUI::output_update)); + if (_lv2->has_message_output()) { + _message_update_connection = ARDOUR_UI::instance()->SuperRapidScreenUpdate.connect( + sigc::mem_fun(*this, &LV2PluginUI::update_timeout)); + } return false; } else { lv2ui_instantiate("gtk2gui"); @@ -455,16 +473,16 @@ LV2PluginUI::on_window_show(const std::string& title) void LV2PluginUI::on_window_hide() { - //cout << "on_window_hide" << endl; flush(cout); + //printf("LV2PluginUI::on_window_hide\n"); + _message_update_connection.disconnect(); - if (_external_ui_ptr) { - LV2_EXTERNAL_UI_HIDE(_external_ui_ptr); + if (_lv2->is_external_ui()) { + if (!_external_ui_ptr) { return; } _screen_update_connection.disconnect(); + LV2_EXTERNAL_UI_HIDE(_external_ui_ptr); _external_ui_ptr = NULL; -#if 1 suil_instance_free((SuilInstance*)_inst); _inst = NULL; -#endif } else { lv2ui_free(); } diff --git a/gtk2_ardour/lv2_plugin_ui.h b/gtk2_ardour/lv2_plugin_ui.h index 40e3890e1c..a39386a7e0 100644 --- a/gtk2_ardour/lv2_plugin_ui.h +++ b/gtk2_ardour/lv2_plugin_ui.h @@ -71,6 +71,7 @@ class LV2PluginUI : public PlugUIBase, public Gtk::VBox boost::shared_ptr _lv2; std::vector _output_ports; sigc::connection _screen_update_connection; + sigc::connection _message_update_connection; Gtk::Widget* _gui_widget; /** a box containing the focus, bypass, delete, save / add preset buttons etc. */ Gtk::HBox _ardour_buttons_box; diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h index 4cd34b3026..56aa9dc7cf 100644 --- a/libs/ardour/ardour/lv2_plugin.h +++ b/libs/ardour/ardour/lv2_plugin.h @@ -75,6 +75,7 @@ class LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee const void* c_ui_type(); bool is_external_ui () const; + bool is_external_kx () const; bool ui_is_resizable () const; const char* port_symbol (uint32_t port) const; diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index c6e9b89e5b..e056b55d9d 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -621,6 +621,15 @@ LV2Plugin::is_external_ui() const return lilv_ui_is_a(_impl->ui, _world.ui_external) || lilv_ui_is_a(_impl->ui, _world.ui_externalkx); } +bool +LV2Plugin::is_external_kx() const +{ + if (!_impl->ui) { + return false; + } + return lilv_ui_is_a(_impl->ui, _world.ui_externalkx); +} + bool LV2Plugin::ui_is_resizable () const { -- cgit v1.2.3 From 2172700144a1b9d13c87bceb5be60f7632f640c4 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 29 Aug 2013 17:36:52 +0200 Subject: protect meters against weird float values --- libs/ardour/iec1ppmdsp.cc | 4 ++-- libs/ardour/iec2ppmdsp.cc | 4 ++-- libs/ardour/kmeterdsp.cc | 6 ++++-- libs/ardour/vumeterdsp.cc | 6 ++++-- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/libs/ardour/iec1ppmdsp.cc b/libs/ardour/iec1ppmdsp.cc index bed825048f..47e953f1ab 100644 --- a/libs/ardour/iec1ppmdsp.cc +++ b/libs/ardour/iec1ppmdsp.cc @@ -45,8 +45,8 @@ void Iec1ppmdsp::process (float *p, int n) { float z1, z2, m, t; - z1 = _z1; - z2 = _z2; + z1 = _z1 > 20 ? 20 : (_z1 < 0 ? 0 : _z1); + z1 = _z2 > 20 ? 20 : (_z2 < 0 ? 0 : _z2); m = _res ? 0: _m; _res = false; diff --git a/libs/ardour/iec2ppmdsp.cc b/libs/ardour/iec2ppmdsp.cc index 76862cccd2..bb934166fc 100644 --- a/libs/ardour/iec2ppmdsp.cc +++ b/libs/ardour/iec2ppmdsp.cc @@ -45,8 +45,8 @@ void Iec2ppmdsp::process (float *p, int n) { float z1, z2, m, t; - z1 = _z1; - z2 = _z2; + z1 = _z1 > 20 ? 20 : (_z1 < 0 ? 0 : _z1); + z1 = _z2 > 20 ? 20 : (_z2 < 0 ? 0 : _z2); m = _res ? 0: _m; _res = false; diff --git a/libs/ardour/kmeterdsp.cc b/libs/ardour/kmeterdsp.cc index 181378cf76..35c95c2daf 100644 --- a/libs/ardour/kmeterdsp.cc +++ b/libs/ardour/kmeterdsp.cc @@ -52,8 +52,8 @@ void Kmeterdsp::process (float *p, int n) float s, z1, z2; // Get filter state. - z1 = _z1; - z2 = _z2; + z1 = _z1 > 50 ? 50 : (_z1 < 0 ? 0 : _z1); + z2 = _z2 > 50 ? 50 : (_z2 < 0 ? 0 : _z2); // Perform filtering. The second filter is evaluated // only every 4th sample - this is just an optimisation. @@ -75,6 +75,8 @@ void Kmeterdsp::process (float *p, int n) z2 += 4 * _omega * (z1 - z2); // Update second filter. } + if (isnan(z1)) z1 = 0; + if (isnan(z2)) z2 = 0; // Save filter state. The added constants avoid denormals. _z1 = z1 + 1e-20f; _z2 = z2 + 1e-20f; diff --git a/libs/ardour/vumeterdsp.cc b/libs/ardour/vumeterdsp.cc index 67d48f6c54..a3d0ec23c1 100644 --- a/libs/ardour/vumeterdsp.cc +++ b/libs/ardour/vumeterdsp.cc @@ -43,8 +43,8 @@ void Vumeterdsp::process (float *p, int n) { float z1, z2, m, t1, t2; - z1 = _z1; - z2 = _z2; + z1 = _z1 > 20 ? 20 : (_z1 < -20 ? -20 : _z1); + z2 = _z2 > 20 ? 20 : (_z2 < -20 ? -20 : _z2); m = _res ? 0: _m; _res = false; @@ -64,6 +64,8 @@ void Vumeterdsp::process (float *p, int n) if (z2 > m) m = z2; } + if (isnan(z1)) z1 = 0; + if (isnan(z2)) z2 = 0; _z1 = z1; _z2 = z2 + 1e-10f; _m = m; -- cgit v1.2.3 From 14f5557bec6fbf07fb1907c380997a46c8f2e393 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 29 Aug 2013 18:46:03 +0200 Subject: fix typo in IEC-meter 'weird-float' protection. --- libs/ardour/iec1ppmdsp.cc | 2 +- libs/ardour/iec2ppmdsp.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/ardour/iec1ppmdsp.cc b/libs/ardour/iec1ppmdsp.cc index 47e953f1ab..79a572da1c 100644 --- a/libs/ardour/iec1ppmdsp.cc +++ b/libs/ardour/iec1ppmdsp.cc @@ -46,7 +46,7 @@ void Iec1ppmdsp::process (float *p, int n) float z1, z2, m, t; z1 = _z1 > 20 ? 20 : (_z1 < 0 ? 0 : _z1); - z1 = _z2 > 20 ? 20 : (_z2 < 0 ? 0 : _z2); + z2 = _z2 > 20 ? 20 : (_z2 < 0 ? 0 : _z2); m = _res ? 0: _m; _res = false; diff --git a/libs/ardour/iec2ppmdsp.cc b/libs/ardour/iec2ppmdsp.cc index bb934166fc..caca744c52 100644 --- a/libs/ardour/iec2ppmdsp.cc +++ b/libs/ardour/iec2ppmdsp.cc @@ -46,7 +46,7 @@ void Iec2ppmdsp::process (float *p, int n) float z1, z2, m, t; z1 = _z1 > 20 ? 20 : (_z1 < 0 ? 0 : _z1); - z1 = _z2 > 20 ? 20 : (_z2 < 0 ? 0 : _z2); + z2 = _z2 > 20 ? 20 : (_z2 < 0 ? 0 : _z2); m = _res ? 0: _m; _res = false; -- cgit v1.2.3 From dd0a1cd846a49f9724e310ebcb992a1a3f7977de Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 31 Aug 2013 20:37:02 +0200 Subject: fix keyboard interaction with volume knobs (monitor section) --- libs/gtkmm2ext/motionfeedback.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/gtkmm2ext/motionfeedback.cc b/libs/gtkmm2ext/motionfeedback.cc index 44fb3e5f47..474ca3431c 100644 --- a/libs/gtkmm2ext/motionfeedback.cc +++ b/libs/gtkmm2ext/motionfeedback.cc @@ -298,7 +298,7 @@ MotionFeedback::pixwin_key_press_event (GdkEventKey *ev) case GDK_Page_Down: retval = true; - _controllable->set_value (adjust (multiplier * page_inc)); + _controllable->set_value (adjust (-multiplier * page_inc)); break; case GDK_Up: @@ -308,7 +308,7 @@ MotionFeedback::pixwin_key_press_event (GdkEventKey *ev) case GDK_Down: retval = true; - _controllable->set_value (adjust (multiplier * step_inc)); + _controllable->set_value (adjust (-multiplier * step_inc)); break; case GDK_Home: -- cgit v1.2.3 From 66292718a1bde5d333b63c07c19d8d0d187cfc2e Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 1 Sep 2013 03:19:13 +0200 Subject: improve scroll and drag behaviour of volume-controller knob --- gtk2_ardour/volume_controller.cc | 54 ++++++++++++++++++++++++++++++++++++++-- libs/gtkmm2ext/motionfeedback.cc | 4 +-- 2 files changed, 54 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/volume_controller.cc b/gtk2_ardour/volume_controller.cc index 27fd705978..6db3bc7d7a 100644 --- a/gtk2_ardour/volume_controller.cc +++ b/gtk2_ardour/volume_controller.cc @@ -142,7 +142,6 @@ VolumeController::adjust (double control_delta) double v; if (!_linear) { - /* we map back into the linear/fractional slider position, * because this kind of control goes all the way down * to -inf dB, and we want this occur in a reasonable way in @@ -150,7 +149,7 @@ VolumeController::adjust (double control_delta) * gain coefficient domain (or dB domain), the lower end of the * control range (getting close to -inf dB) takes forever. */ - +#if 0 /* convert to linear/fractional slider position domain */ v = gain_to_slider_position_with_max (_controllable->get_value (), _controllable->upper()); /* increment in this domain */ @@ -171,6 +170,57 @@ VolumeController::adjust (double control_delta) } /* and return it */ return dB_to_coefficient (v); +#else + /* ^^ Above algorithm is not symmetric. Scroll up to steps, scoll down two steps, -> different gain. + * + * see ./libs/gtkmm2ext/gtkmm2ext/motionfeedback.h and gtk2_ardour/monitor_section.cc: + * min-delta (corr) = MIN(0.01 * page inc, 1 * size_inc) // (gain_control uses size_inc=0.01, page_inc=0.1) + * range corr: 0..2 -> -inf..+6dB + * step sizes [0.01, 0.10, 0.20] * page_inc, [1,2,10,100] * step_inc. [1,2,10,100] * page_inc + * + * 0.001, 0.01, 0.02, 0.1, .2, 1, 10 + * -> 1k steps between -inf..0dB + * -> 1k steps between 0..+dB + * + * IOW: + * the range is from *0 (-inf dB) to *2.0 ( +6dB) + * the knob is configured to to go in steps of 0.001 - that's 2000 steps between 0 and 2. + * or 1000 steps between 0 and 1. + * + * we cannot round to .01dB steps because + * There are only 600 possible values between +0db and +6dB when going in steps of .01dB + * 1000/600 = 1.66666... + * + ****** + * idea: make the 'controllable use a fixed range of dB. + * do a 1:1 mapping between values. :et's stick with the range of 0..2 in 0.001 steps + * + * "-80" becomes 0 and "+6" becomes 2000. (NB +6dB is actually 1995, but we clamp that to the top) + * + * This approach is better (more consistet) but not good. At least the dial does not annoy me as much + * anymore as it did before. + * + * const double stretchfactor = rint((_controllable->upper() - _controllable->lower()) / 0.001); // 2000; + * const double logfactor = stretchfactor / ((20.0 * log10( _controllable->upper())) + 80.0); // = 23.250244732 + */ + v = _controllable->get_value (); + /* assume everything below -60dB is silent (.001 ^= -60dB) + * but map range -80db..+6dB to a scale of 0..2000 + * 80db was motivated because 2000/((20.0 * log(1)) + 80.0) is an integer value. "0dB" is included on the scale. + * but this leaves a dead area at the bottom of the meter.. + */ + double arange = (v >= 0.001) ? ( ((20.0 * log10(v)) + 80.0) * 23.250244732 ) : ( 0 ); + /* add the delta */ + v = rint(arange) + rint(control_delta * 1000.0); // (min steps is 1.0/0.001 == 1000.0) + /* catch bottom -80..-60 db in one step */ + if (v < 466) v = (control_delta > 0) ? 0.001 : 0; + /* reverse operation (pow(10, .05 * ((v / 23.250244732) - 80.0))) + * can be simplified to :*/ + else v = pow(10, (v * 0.00215051499) - 4.0); + /* clamp value in coefficient domain */ + v = std::max (_controllable->lower(), std::min (_controllable->upper(), v)); + return v; +#endif } else { double mult; diff --git a/libs/gtkmm2ext/motionfeedback.cc b/libs/gtkmm2ext/motionfeedback.cc index 474ca3431c..ead2b26885 100644 --- a/libs/gtkmm2ext/motionfeedback.cc +++ b/libs/gtkmm2ext/motionfeedback.cc @@ -389,10 +389,10 @@ MotionFeedback::pixwin_scroll_event (GdkEventScroll* ev) if (ev->state & Keyboard::GainExtraFineScaleModifier) { scale = 0.01; } else { - scale = 0.05; + scale = 0.10; } } else { - scale = 0.25; + scale = 0.20; } switch (ev->direction) { -- cgit v1.2.3 From c05ad01b2d3509c9047d320f2c35fbdced648165 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 2 Sep 2013 16:21:12 +0200 Subject: LV2 external UI handling - revert to <= 3.3. behaviour Don't ever clean up external UI plugins that use the LV2plug.in URI. only free the memory of the last instance when the plugin is removed or ardour closes. --- gtk2_ardour/lv2_plugin_ui.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc index ed783b0886..1deff32abd 100644 --- a/gtk2_ardour/lv2_plugin_ui.cc +++ b/gtk2_ardour/lv2_plugin_ui.cc @@ -115,8 +115,8 @@ LV2PluginUI::on_external_ui_closed(void* controller) { //printf("LV2PluginUI::on_external_ui_closed\n"); LV2PluginUI* me = (LV2PluginUI*)controller; - me->_screen_update_connection.disconnect(); if (me->_lv2->is_external_kx() /* called from plugin's UI_RUN() */) { + me->_screen_update_connection.disconnect(); // plugin is free()d in parent function - LV2PluginUI::output_update() me->_external_ui_ptr = NULL; } @@ -374,7 +374,14 @@ LV2PluginUI::~LV2PluginUI () delete[] _values; } - on_window_hide(); + _message_update_connection.disconnect(); + _screen_update_connection.disconnect(); + + if (_external_ui_ptr && _lv2->is_external_kx()) { + LV2_EXTERNAL_UI_HIDE(_external_ui_ptr); + } + lv2ui_free(); + _external_ui_ptr = NULL; } int @@ -478,6 +485,7 @@ LV2PluginUI::on_window_hide() if (_lv2->is_external_ui()) { if (!_external_ui_ptr) { return; } + if (!_lv2->is_external_kx()) { return ; } _screen_update_connection.disconnect(); LV2_EXTERNAL_UI_HIDE(_external_ui_ptr); _external_ui_ptr = NULL; -- cgit v1.2.3 From 01e0f512232fe73c18339f368c90f581a5bebdb2 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 2 Sep 2013 16:57:46 +0200 Subject: LV2 extUI handling - amend to previous commit. --- gtk2_ardour/lv2_plugin_ui.cc | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/gtk2_ardour/lv2_plugin_ui.cc b/gtk2_ardour/lv2_plugin_ui.cc index 1deff32abd..c273c1f4dd 100644 --- a/gtk2_ardour/lv2_plugin_ui.cc +++ b/gtk2_ardour/lv2_plugin_ui.cc @@ -115,11 +115,8 @@ LV2PluginUI::on_external_ui_closed(void* controller) { //printf("LV2PluginUI::on_external_ui_closed\n"); LV2PluginUI* me = (LV2PluginUI*)controller; - if (me->_lv2->is_external_kx() /* called from plugin's UI_RUN() */) { - me->_screen_update_connection.disconnect(); - // plugin is free()d in parent function - LV2PluginUI::output_update() - me->_external_ui_ptr = NULL; - } + me->_screen_update_connection.disconnect(); + me->_external_ui_ptr = NULL; } void @@ -175,7 +172,7 @@ LV2PluginUI::output_update() // clean up external UI if it closes itself via // on_external_ui_closed() during run() //printf("LV2PluginUI::output_update -- UI was closed\n"); - _screen_update_connection.disconnect(); + //_screen_update_connection.disconnect(); _message_update_connection.disconnect(); if (_inst) { suil_instance_free((SuilInstance*)_inst); @@ -485,9 +482,9 @@ LV2PluginUI::on_window_hide() if (_lv2->is_external_ui()) { if (!_external_ui_ptr) { return; } + LV2_EXTERNAL_UI_HIDE(_external_ui_ptr); if (!_lv2->is_external_kx()) { return ; } _screen_update_connection.disconnect(); - LV2_EXTERNAL_UI_HIDE(_external_ui_ptr); _external_ui_ptr = NULL; suil_instance_free((SuilInstance*)_inst); _inst = NULL; -- cgit v1.2.3 From d2cdc7da64dd9986b5197d1317279c51043d6172 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 2 Sep 2013 17:43:55 -0400 Subject: add std:: to clarify use of llabs on OS X --- libs/ardour/audio_diskstream.cc | 2 +- libs/ardour/audio_track.cc | 2 +- libs/ardour/midi_track.cc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/ardour/audio_diskstream.cc b/libs/ardour/audio_diskstream.cc index b9ce987c87..35153b7fde 100644 --- a/libs/ardour/audio_diskstream.cc +++ b/libs/ardour/audio_diskstream.cc @@ -925,7 +925,7 @@ AudioDiskstream::internal_playback_seek (framecnt_t distance) boost::shared_ptr c = channels.reader(); for (chan = c->begin(); chan != c->end(); ++chan) { - (*chan)->playback_buf->increment_read_ptr (llabs(distance)); + (*chan)->playback_buf->increment_read_ptr (std::llabs(distance)); } if (first_recordable_frame < max_framepos) { diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc index 0530dbfce9..2e697a95cc 100644 --- a/libs/ardour/audio_track.cc +++ b/libs/ardour/audio_track.cc @@ -315,7 +315,7 @@ AudioTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_fram if (!lm.locked()) { boost::shared_ptr diskstream = audio_diskstream(); framecnt_t playback_distance = diskstream->calculate_playback_distance(nframes); - if (can_internal_playback_seek(llabs(playback_distance))) { + if (can_internal_playback_seek(std::llabs(playback_distance))) { /* TODO should declick */ internal_playback_seek(playback_distance); } diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index f88c331c2c..7dff7ac639 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -321,7 +321,7 @@ MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame if (!lm.locked()) { boost::shared_ptr diskstream = midi_diskstream(); framecnt_t playback_distance = diskstream->calculate_playback_distance(nframes); - if (can_internal_playback_seek(llabs(playback_distance))) { + if (can_internal_playback_seek(std::llabs(playback_distance))) { /* TODO should declick, and/or note-off */ internal_playback_seek(playback_distance); } -- cgit v1.2.3 From ad7ab8f09afe1eac025a6da87a45c83ada15544d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 2 Sep 2013 21:57:30 -0400 Subject: bump to 3.4 --- wscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wscript b/wscript index d887fe6822..e99cca182e 100644 --- a/wscript +++ b/wscript @@ -8,7 +8,7 @@ import subprocess import sys MAJOR = '3' -MINOR = '3' +MINOR = '4' VERSION = MAJOR + '.' + MINOR APPNAME = 'Ardour' + MAJOR -- cgit v1.2.3 From f5a60e247e1f656df39201c43caa07aa901f8de2 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 2 Sep 2013 22:10:51 -0400 Subject: revert to --backtrace enabled by default, since the original goal of this change was addressed in other ways --- wscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wscript b/wscript index e99cca182e..6691f06dee 100644 --- a/wscript +++ b/wscript @@ -401,7 +401,7 @@ def options(opt): help='The user-visible name of the program being built') opt.add_option('--arch', type='string', action='store', dest='arch', help='Architecture-specific compiler flags') - opt.add_option('--backtrace', action='store_true', default=False, dest='backtrace', + opt.add_option('--backtrace', action='store_true', default=True, dest='backtrace', help='Compile with -rdynamic -- allow obtaining backtraces from within Ardour') opt.add_option('--no-carbon', action='store_true', default=False, dest='nocarbon', help='Compile without support for AU Plugins with only CARBON UI (needed for 64bit)') -- cgit v1.2.3 From dee91c2c3939d72d8745ffc69a5b2a5e28ae5b83 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 3 Sep 2013 07:59:59 -0400 Subject: Revert "bump to 3.4" This reverts commit ad7ab8f09afe1eac025a6da87a45c83ada15544d. --- wscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wscript b/wscript index 6691f06dee..5ca7bdf6b3 100644 --- a/wscript +++ b/wscript @@ -8,7 +8,7 @@ import subprocess import sys MAJOR = '3' -MINOR = '4' +MINOR = '3' VERSION = MAJOR + '.' + MINOR APPNAME = 'Ardour' + MAJOR -- cgit v1.2.3 From 12ec6041409a9a3d54369981c07109fb55765ead Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 3 Sep 2013 08:00:58 -0400 Subject: updated .po files from waf i18n, plus an updated gtk2_ardour/de.po from Edgar Aichinger --- gtk2_ardour/po/cs.po | 4 ++-- gtk2_ardour/po/de.po | 44 +++++++++++++++++++------------------------- gtk2_ardour/po/el.po | 4 ++-- gtk2_ardour/po/en_GB.po | 4 ++-- gtk2_ardour/po/es.po | 4 ++-- gtk2_ardour/po/fr.po | 4 ++-- gtk2_ardour/po/it.po | 4 ++-- gtk2_ardour/po/nn.po | 4 ++-- gtk2_ardour/po/pl.po | 4 ++-- gtk2_ardour/po/pt.po | 4 ++-- gtk2_ardour/po/pt_PT.po | 4 ++-- gtk2_ardour/po/ru.po | 4 ++-- gtk2_ardour/po/sv.po | 4 ++-- gtk2_ardour/po/zh.po | 4 ++-- libs/ardour/po/cs.po | 4 ++-- libs/ardour/po/de.po | 4 ++-- libs/ardour/po/el.po | 4 ++-- libs/ardour/po/es.po | 4 ++-- libs/ardour/po/it.po | 4 ++-- libs/ardour/po/nn.po | 4 ++-- libs/ardour/po/pl.po | 4 ++-- libs/ardour/po/ru.po | 4 ++-- libs/ardour/po/sv.po | 4 ++-- libs/ardour/po/zh.po | 4 ++-- 24 files changed, 65 insertions(+), 71 deletions(-) diff --git a/gtk2_ardour/po/cs.po b/gtk2_ardour/po/cs.po index 452ba5dfb1..cec031544b 100644 --- a/gtk2_ardour/po/cs.po +++ b/gtk2_ardour/po/cs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk-ardour 0.347.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2013-06-13 12:05+0200\n" "Last-Translator: Pavel Fric \n" "Language-Team: Czech \n" @@ -10488,7 +10488,7 @@ msgstr "KlepnÄ›te pro pÅ™idání nového umístÄ›ní" msgid "the session folder" msgstr "složka se sezením" -#: send_ui.cc:122 +#: send_ui.cc:126 msgid "Send " msgstr "Poslat " diff --git a/gtk2_ardour/po/de.po b/gtk2_ardour/po/de.po index ae2da4c3f4..74288bde3f 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-08-15 15:09-0400\n" -"PO-Revision-Date: 2013-07-28 15:37+0200\n" +"POT-Creation-Date: 2013-09-03 10:44+0200\n" +"PO-Revision-Date: 2013-09-03 11:41+0200\n" "Last-Translator: Edgar Aichinger \n" "Language-Team: German \n" "Language: de\n" @@ -1547,9 +1547,8 @@ msgstr "" "Einzelheiten." #: ardour_ui2.cc:147 -#, fuzzy msgid "Reset Level Meter" -msgstr "Lautstärkekurve zurücksetzen" +msgstr "Lautstärkepegelanzeige zurücksetzen" #: ardour_ui2.cc:179 msgid "[ERROR]: " @@ -5836,7 +5835,7 @@ msgstr "Nur Aufnahme" #: engine_dialog.cc:171 engine_dialog.cc:448 msgid "coremidi" -msgstr "" +msgstr "coremidi" #: engine_dialog.cc:173 engine_dialog.cc:581 msgid "seq" @@ -6311,22 +6310,20 @@ msgid "Range" msgstr "Bereiche" #: sfdb_freesound_mootcher.cc:189 sfdb_freesound_mootcher.cc:324 -#, fuzzy msgid "curl error %1 (%2)" -msgstr "Programmierfehler: %1 (%2)" +msgstr "curl Fehler %1 (%2)" #: sfdb_freesound_mootcher.cc:266 msgid "getSoundResourceFile: There is no valid root in the xml file" -msgstr "" +msgstr "getSoundResourceFile: Keine gültige Wurzel in der XML-Datei" #: sfdb_freesound_mootcher.cc:271 msgid "getSoundResourceFile: root = %1, != response" -msgstr "" +msgstr "getSoundResourceFile: Wurzel = %1, != Antwort" #: sfdb_freesound_mootcher.cc:410 -#, fuzzy msgid "%1" -msgstr "%" +msgstr "%1" #: gain_meter.cc:106 gain_meter.cc:357 gain_meter.cc:462 gain_meter.cc:856 msgid "-inf" @@ -7649,26 +7646,24 @@ msgid "Strips" msgstr "Spur" #: meter_strip.cc:764 -#, fuzzy msgid "Variable height" -msgstr "Höhe der Zeitleiste" +msgstr "Variable Höhe" #: meter_strip.cc:765 -#, fuzzy msgid "Short" -msgstr "Kurz" +msgstr "Short" #: meter_strip.cc:766 msgid "Tall" -msgstr "" +msgstr "Tall" #: meter_strip.cc:767 msgid "Grande" -msgstr "" +msgstr "Grande" #: meter_strip.cc:768 msgid "Venti" -msgstr "" +msgstr "Venti" #: meter_patterns.cc:81 msgid "Peak" @@ -8539,14 +8534,15 @@ msgid "Port removal not allowed" msgstr "Entfernen des Ports nicht erlaubt" #: port_matrix.cc:749 -#, fuzzy msgid "" "This port cannot be removed.\n" "Either the first plugin in the track or buss cannot accept\n" "the new number of inputs or the last plugin has more outputs." msgstr "" -"Der Port kann nicht entfernt werden, da das erste Plugin der Spur die neue " -"Portanzahl nicht unterstützt." +"Dieser Port kann nicht entfernt werden.\n" +"Entweder kann das erste Plugin auf der Spur oder dem Bus \n" +"die neue Anzahl an Eingängen nicht verarbeiten, oder das \n" +"letzte Plugin hat mehr Ausgänge." #: port_matrix.cc:966 #, c-format @@ -9268,7 +9264,7 @@ msgstr "Aktiviere Pegelanzeigen im Editor" #: rc_option_editor.cc:1321 msgid "Display master-meter in the toolbar" -msgstr "" +msgstr "Master-Pegelanzeige in der Werkzeugleiste anzeigen" #: rc_option_editor.cc:1328 msgid "Regions in active edit groups are edited together" @@ -10496,7 +10492,7 @@ msgstr "Hier klicken, um einen Pfad hinzuzufügen" msgid "the session folder" msgstr "Projektordner" -#: send_ui.cc:122 +#: send_ui.cc:126 msgid "Send " msgstr "Send " @@ -12552,7 +12548,6 @@ msgid "File Information" msgstr "Dateiinformationen" #: transcode_video_dialog.cc:113 -#, fuzzy msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Import " "is not possible until you install those tools. See the Log window for more " @@ -12777,7 +12772,6 @@ msgid "Include Session Metadata" msgstr "Projekt-Metadaten verwenden" #: export_video_dialog.cc:107 -#, fuzzy msgid "" "No ffprobe or ffmpeg executables could be found on this system. Video Export " "is not possible until you install those tools. See the Log window for more " diff --git a/gtk2_ardour/po/el.po b/gtk2_ardour/po/el.po index 5320d21b82..47a42cccc7 100644 --- a/gtk2_ardour/po/el.po +++ b/gtk2_ardour/po/el.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk-ardour 0.347.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2007-04-11 02:27+0200\n" "Last-Translator: Klearchos Gourgourinis \n" "Language-Team: Hellenic\n" @@ -11084,7 +11084,7 @@ msgstr "ΕκκαθάÏιση όλων των θέσεων" msgid "the session folder" msgstr "ΑντιγÏαφή αÏχείου στο φάκελο της συνεδÏίας" -#: send_ui.cc:122 +#: send_ui.cc:126 #, fuzzy msgid "Send " msgstr "ΔευτεÏόλεπτα" diff --git a/gtk2_ardour/po/en_GB.po b/gtk2_ardour/po/en_GB.po index eec6f28ea8..d7c9874ecc 100644 --- a/gtk2_ardour/po/en_GB.po +++ b/gtk2_ardour/po/en_GB.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2011-12-08 15:38+0100\n" "Last-Translator: Colin Fletcher \n" "Language-Team: UK English \n" @@ -9941,7 +9941,7 @@ msgstr "" msgid "the session folder" msgstr "" -#: send_ui.cc:122 +#: send_ui.cc:126 msgid "Send " msgstr "" diff --git a/gtk2_ardour/po/es.po b/gtk2_ardour/po/es.po index 7e61355dc2..aa9a7b6ec8 100644 --- a/gtk2_ardour/po/es.po +++ b/gtk2_ardour/po/es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk2_ardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: \n" "Last-Translator: Pablo Fernández \n" "Language-Team: Grupo de Traducción al Español \n" @@ -10451,7 +10451,7 @@ msgstr "Clicar para añadir nueva localización" msgid "the session folder" msgstr "el archivo de sesión" -#: send_ui.cc:122 +#: send_ui.cc:126 msgid "Send " msgstr "Enviar " diff --git a/gtk2_ardour/po/fr.po b/gtk2_ardour/po/fr.po index f9e857303d..60560cfa0b 100644 --- a/gtk2_ardour/po/fr.po +++ b/gtk2_ardour/po/fr.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 2.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2013-05-20 01:04+0200\n" "Last-Translator: \n" "Language-Team: American English \n" @@ -10683,7 +10683,7 @@ msgstr "Cliquez pour ajouter un nouveau dossier" msgid "the session folder" msgstr "dossier de la session" -#: send_ui.cc:122 +#: send_ui.cc:126 msgid "Send " msgstr "Départ " diff --git a/gtk2_ardour/po/it.po b/gtk2_ardour/po/it.po index 0c55d99290..673dfbe159 100644 --- a/gtk2_ardour/po/it.po +++ b/gtk2_ardour/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ardour 0.354.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2011-11-05 12:43+0100\n" "Last-Translator: \n" "Language-Team: American English \n" @@ -10715,7 +10715,7 @@ msgstr "Pulisci tutte le posizioni" msgid "the session folder" msgstr "la cartella di sessione" -#: send_ui.cc:122 +#: send_ui.cc:126 #, fuzzy msgid "Send " msgstr "Secondi" diff --git a/gtk2_ardour/po/nn.po b/gtk2_ardour/po/nn.po index d83e138a19..f288526c94 100644 --- a/gtk2_ardour/po/nn.po +++ b/gtk2_ardour/po/nn.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk2_ardour 3.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2013-01-05 14:48+0100\n" "Last-Translator: Eivind ØdegÃ¥rd \n" "Language-Team: \n" @@ -10467,7 +10467,7 @@ msgstr "Klikk for Ã¥ leggja til ein ny stad" msgid "the session folder" msgstr "øktmappa" -#: send_ui.cc:122 +#: send_ui.cc:126 msgid "Send " msgstr "Send" diff --git a/gtk2_ardour/po/pl.po b/gtk2_ardour/po/pl.po index 8947ea0365..1a33b99249 100644 --- a/gtk2_ardour/po/pl.po +++ b/gtk2_ardour/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk2_ardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2008-04-10 10:47+0100\n" "Last-Translator: Piotr Zaryk \n" "Language-Team: Polish \n" @@ -10992,7 +10992,7 @@ msgstr "Wyczyść wszystkie poÅ‚ożenia" msgid "the session folder" msgstr "Wybieranie pliku sesji" -#: send_ui.cc:122 +#: send_ui.cc:126 #, fuzzy msgid "Send " msgstr "WysyÅ‚anie MTC" diff --git a/gtk2_ardour/po/pt.po b/gtk2_ardour/po/pt.po index 6b8b85eae2..01dfaa9ffc 100644 --- a/gtk2_ardour/po/pt.po +++ b/gtk2_ardour/po/pt.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: ardour 0.688.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2005-08-15 21:50-0000\n" "Last-Translator: Chris Ross, Alexander Franca & Leandro Marco\n" "Language-Team: Portuguese\n" @@ -11153,7 +11153,7 @@ msgstr "Apagar todas as localizações" msgid "the session folder" msgstr "Loop região selecionada" -#: send_ui.cc:122 +#: send_ui.cc:126 #, fuzzy msgid "Send " msgstr "Segundos" diff --git a/gtk2_ardour/po/pt_PT.po b/gtk2_ardour/po/pt_PT.po index b5170493fc..380b1a71ac 100644 --- a/gtk2_ardour/po/pt_PT.po +++ b/gtk2_ardour/po/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gtk2_ardour rev.1702\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2007-04-15 19:00+0100\n" "Last-Translator: Rui Nuno Capela \n" "Language-Team: Portuguese\n" @@ -11099,7 +11099,7 @@ msgstr "Apagar todas as localizações" msgid "the session folder" msgstr "Copiar ficheiro para o directório de sessão" -#: send_ui.cc:122 +#: send_ui.cc:126 #, fuzzy msgid "Send " msgstr "Envios" diff --git a/gtk2_ardour/po/ru.po b/gtk2_ardour/po/ru.po index f50cdf44d1..1891a32bf1 100644 --- a/gtk2_ardour/po/ru.po +++ b/gtk2_ardour/po/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2013-07-14 18:04+0300\n" "Last-Translator: ÐлекÑандр Прокудин \n" "Language-Team: руÑÑкий <>\n" @@ -10323,7 +10323,7 @@ msgstr "Щёлкните Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ раÑполо msgid "the session folder" msgstr "в папке ÑеанÑа" -#: send_ui.cc:122 +#: send_ui.cc:126 msgid "Send " msgstr "ПоÑыл" diff --git a/gtk2_ardour/po/sv.po b/gtk2_ardour/po/sv.po index b2e70618bf..03f7db506f 100644 --- a/gtk2_ardour/po/sv.po +++ b/gtk2_ardour/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ardour-gtk 1.0.2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2006-06-26 23:57+GMT+1\n" "Last-Translator: Petter Sundlöf \n" "Language-Team: Svenska \n" @@ -10757,7 +10757,7 @@ msgstr " Klicka här för att lägga till ett format" msgid "the session folder" msgstr "Skapa sessionsmappen i:" -#: send_ui.cc:122 +#: send_ui.cc:126 #, fuzzy msgid "Send " msgstr "Skicka MTC" diff --git a/gtk2_ardour/po/zh.po b/gtk2_ardour/po/zh.po index 292a11b18e..f03eaf1506 100644 --- a/gtk2_ardour/po/zh.po +++ b/gtk2_ardour/po/zh.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2013-01-03 08:29-0500\n" "Last-Translator: Rui-huai Zhang \n" "Language-Team: zrhzrh \n" @@ -10396,7 +10396,7 @@ msgstr "" msgid "the session folder" msgstr "" -#: send_ui.cc:122 +#: send_ui.cc:126 msgid "Send " msgstr "å‘é€" diff --git a/libs/ardour/po/cs.po b/libs/ardour/po/cs.po index a273642491..6df4ac1894 100644 --- a/libs/ardour/po/cs.po +++ b/libs/ardour/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2013-06-13 22:47+0200\n" "Last-Translator: Pavel Fric \n" "Language-Team: Czech \n" @@ -545,7 +545,7 @@ msgstr "Ztrátová komprese" msgid "Lossless compression" msgstr "Bezztrátová komprese" -#: export_format_manager.cc:207 export_format_specification.cc:579 +#: export_format_manager.cc:218 export_format_specification.cc:579 msgid "Session rate" msgstr "KmitoÄet sezení" diff --git a/libs/ardour/po/de.po b/libs/ardour/po/de.po index cedb65f3de..87cd8be124 100644 --- a/libs/ardour/po/de.po +++ b/libs/ardour/po/de.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2013-07-23 15:04+0200\n" "Last-Translator: Edgar Aichinger \n" "Language-Team: German \n" @@ -550,7 +550,7 @@ msgstr "Verlustbehaftete Kompression" msgid "Lossless compression" msgstr "Verlustfreie Kompression" -#: export_format_manager.cc:207 export_format_specification.cc:579 +#: export_format_manager.cc:218 export_format_specification.cc:579 msgid "Session rate" msgstr "Projektrate" diff --git a/libs/ardour/po/el.po b/libs/ardour/po/el.po index f91985f16b..5801300003 100644 --- a/libs/ardour/po/el.po +++ b/libs/ardour/po/el.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour 0.664.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2007-04-16 00:38+0200\n" "Last-Translator: Klearchos Gourgourinis \n" "Language-Team: Hellenic(Greek)\n" @@ -540,7 +540,7 @@ msgstr "" msgid "Lossless compression" msgstr "" -#: export_format_manager.cc:207 export_format_specification.cc:579 +#: export_format_manager.cc:218 export_format_specification.cc:579 msgid "Session rate" msgstr "" diff --git a/libs/ardour/po/es.po b/libs/ardour/po/es.po index 8d1697ea1f..e8f43cea11 100644 --- a/libs/ardour/po/es.po +++ b/libs/ardour/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: \n" "Last-Translator: Pablo Fernández \n" "Language-Team: Grupo de Traducción al Español \n" @@ -536,7 +536,7 @@ msgstr "" msgid "Lossless compression" msgstr "" -#: export_format_manager.cc:207 export_format_specification.cc:579 +#: export_format_manager.cc:218 export_format_specification.cc:579 msgid "Session rate" msgstr "" diff --git a/libs/ardour/po/it.po b/libs/ardour/po/it.po index e750eee71a..532e23c348 100644 --- a/libs/ardour/po/it.po +++ b/libs/ardour/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour 0.664.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2003-05-21 12:50+0500\n" "Last-Translator: Filippo Pappalardo \n" "Language-Team: Italian\n" @@ -538,7 +538,7 @@ msgstr "" msgid "Lossless compression" msgstr "" -#: export_format_manager.cc:207 export_format_specification.cc:579 +#: export_format_manager.cc:218 export_format_specification.cc:579 msgid "Session rate" msgstr "" diff --git a/libs/ardour/po/nn.po b/libs/ardour/po/nn.po index 3b45310771..e5c22966c4 100644 --- a/libs/ardour/po/nn.po +++ b/libs/ardour/po/nn.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2011-09-13 22:43+0100\n" "Last-Translator: Eivind ØdegÃ¥rd \n" "Language-Team: Nynorsk \n" @@ -541,7 +541,7 @@ msgstr "Komprimering med tap" msgid "Lossless compression" msgstr "Tapsfri komprimering" -#: export_format_manager.cc:207 export_format_specification.cc:579 +#: export_format_manager.cc:218 export_format_specification.cc:579 msgid "Session rate" msgstr "Øktrate" diff --git a/libs/ardour/po/pl.po b/libs/ardour/po/pl.po index a75f44c7f9..c9a01282a5 100644 --- a/libs/ardour/po/pl.po +++ b/libs/ardour/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2008-04-10 10:51+0100\n" "Last-Translator: Piotr Zaryk \n" "Language-Team: Polish \n" @@ -499,7 +499,7 @@ msgstr "" msgid "Lossless compression" msgstr "" -#: export_format_manager.cc:207 export_format_specification.cc:579 +#: export_format_manager.cc:218 export_format_specification.cc:579 msgid "Session rate" msgstr "" diff --git a/libs/ardour/po/ru.po b/libs/ardour/po/ru.po index 740f8a4929..1dfd367b68 100644 --- a/libs/ardour/po/ru.po +++ b/libs/ardour/po/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2013-06-14 02:14+0300\n" "Last-Translator: ÐлекÑандр Прокудин \n" "Language-Team: руÑÑкий <>\n" @@ -509,7 +509,7 @@ msgstr "Сжатие Ñ Ð¿Ð¾Ñ‚ÐµÑ€Ñми" msgid "Lossless compression" msgstr "Сжатие без потерь" -#: export_format_manager.cc:207 export_format_specification.cc:579 +#: export_format_manager.cc:218 export_format_specification.cc:579 msgid "Session rate" msgstr "ЧаÑтота ÑеанÑа" diff --git a/libs/ardour/po/sv.po b/libs/ardour/po/sv.po index 79b8499686..2e7c6e0ddc 100644 --- a/libs/ardour/po/sv.po +++ b/libs/ardour/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ardour\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2006-10-03 01:09+GMT+1\n" "Last-Translator: Petter Sundlöf \n" "Language-Team: Swedish \n" @@ -505,7 +505,7 @@ msgstr "" msgid "Lossless compression" msgstr "" -#: export_format_manager.cc:207 export_format_specification.cc:579 +#: export_format_manager.cc:218 export_format_specification.cc:579 msgid "Session rate" msgstr "" diff --git a/libs/ardour/po/zh.po b/libs/ardour/po/zh.po index 84582f2487..1d0e8f3d44 100644 --- a/libs/ardour/po/zh.po +++ b/libs/ardour/po/zh.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-09-03 07:59-0400\n" "PO-Revision-Date: 2012-08-26 13:43+0800\n" "Last-Translator: Rui-huai Zhang \n" "Language-Team: zrhzrh \n" @@ -505,7 +505,7 @@ msgstr "有æŸåŽ‹ç¼©" msgid "Lossless compression" msgstr "æ— æŸåŽ‹ç¼©" -#: export_format_manager.cc:207 export_format_specification.cc:579 +#: export_format_manager.cc:218 export_format_specification.cc:579 msgid "Session rate" msgstr "" -- cgit v1.2.3 From 9261d5908d865ad47d84640d79bbb573b37997fb Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 3 Sep 2013 08:48:11 -0400 Subject: fix error introduced during recent changes to Mackie control support, involving ambiguous enum usage --- libs/surfaces/mackie/strip.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libs/surfaces/mackie/strip.cc b/libs/surfaces/mackie/strip.cc index d758aadaa2..c736b3f7e6 100644 --- a/libs/surfaces/mackie/strip.cc +++ b/libs/surfaces/mackie/strip.cc @@ -291,7 +291,7 @@ Strip::notify_gain_changed (bool force_update) Control* control; - if (_surface->mcp().flip_mode() != Normal) { + if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) { control = _vpot; } else { control = _fader; @@ -304,7 +304,7 @@ Strip::notify_gain_changed (bool force_update) if (force_update || normalized_position != _last_gain_position_written) { - if (_surface->mcp().flip_mode() != Normal) { + if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) { if (!control->in_use()) { _surface->write (_vpot->set (normalized_position, true, Pot::wrap)); } @@ -407,7 +407,7 @@ Strip::notify_panner_width_changed (bool force_update) if (force_update || pos != _last_pan_azi_position_written) { - if (_surface->mcp().flip_mode() != Normal) { + if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) { if (control == _fader) { if (!control->in_use()) { @@ -944,7 +944,7 @@ Strip::next_pot_mode () { vector::iterator i; - if (_surface->mcp().flip_mode() != Normal) { + if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) { /* do not change vpot mode while in flipped mode */ DEBUG_TRACE (DEBUG::MackieControl, "not stepping pot mode - in flip mode\n"); _surface->write (display (1, "Flip")); @@ -997,7 +997,7 @@ Strip::set_vpot_parameter (Evoral::Parameter p) case PanAzimuthAutomation: pannable = _route->pannable (); if (pannable) { - if (_surface->mcp().flip_mode() != Normal) { + if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) { /* gain to vpot, pan azi to fader */ _vpot->set_control (_route->gain_control()); control_by_parameter[GainAutomation] = _vpot; @@ -1025,7 +1025,7 @@ Strip::set_vpot_parameter (Evoral::Parameter p) case PanWidthAutomation: pannable = _route->pannable (); if (pannable) { - if (_surface->mcp().flip_mode() != Normal) { + if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) { /* gain to vpot, pan width to fader */ _vpot->set_control (_route->gain_control()); control_by_parameter[GainAutomation] = _vpot; -- cgit v1.2.3 From 91b027a4a0c0e90398b9c6dbb5611b2acc4f2f8e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 3 Sep 2013 09:08:18 -0400 Subject: bump to 3.4 --- wscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wscript b/wscript index 5ca7bdf6b3..6691f06dee 100644 --- a/wscript +++ b/wscript @@ -8,7 +8,7 @@ import subprocess import sys MAJOR = '3' -MINOR = '3' +MINOR = '4' VERSION = MAJOR + '.' + MINOR APPNAME = 'Ardour' + MAJOR -- cgit v1.2.3 From a6b66f1594813f35f713c70c63e3097120f3934b Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 4 Sep 2013 01:36:46 +0200 Subject: vtl: fix small issue with video source file on export --- gtk2_ardour/export_video_dialog.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/export_video_dialog.cc b/gtk2_ardour/export_video_dialog.cc index 48d09065b7..cd45bb368e 100644 --- a/gtk2_ardour/export_video_dialog.cc +++ b/gtk2_ardour/export_video_dialog.cc @@ -165,7 +165,7 @@ ExportVideoDialog::ExportVideoDialog (PublicEditor& ed, Session* s) filenameset = true; } } - else if (!filenameset + if (!filenameset && node->property(X_("Filename")) && node->property(X_("LocalFile")) && node->property(X_("LocalFile"))->value() == X_("1") @@ -179,6 +179,9 @@ ExportVideoDialog::ExportVideoDialog (PublicEditor& ed, Session* s) filenameset = true; } } + if (!filenameset) { + invid_path_entry.set_text (X_("")); + } } l = manage (new Label (_("Settings:"), Gtk::ALIGN_LEFT, Gtk::ALIGN_CENTER, false)); -- cgit v1.2.3 From 4a135c82fba6775e71bde1d709a163876381f82a Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 4 Sep 2013 01:37:15 +0200 Subject: squash another compiler warning --- gtk2_ardour/gain_meter.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 67f9ce9370..c2e4a43858 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -864,7 +864,7 @@ GainMeterBase::update_meters() } } -void GainMeterBase::color_handler(bool dpi) +void GainMeterBase::color_handler(bool /* dpi */) { setup_meters(); } -- cgit v1.2.3 From 35cc3245db7146e869148a32448a74456253cf80 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 4 Sep 2013 12:37:44 -0400 Subject: rename interface_ stuff in the engine dialog to device_, since that feels a bit clearer terminology --- gtk2_ardour/engine_dialog.cc | 42 ++++++++++++++++++++++++++++------------ gtk2_ardour/engine_dialog.h | 4 ++-- libs/ardour/ardour/audioengine.h | 2 +- libs/ardour/audioengine.cc | 1 + 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index f0ac059a74..3ffb7dc6da 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -120,7 +120,7 @@ EngineControl::EngineControl () label = manage (left_aligned_label (_("Device:"))); basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (interface_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); + basic_packer.attach (device_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); row++; label = manage (left_aligned_label (_("Sample rate:"))); @@ -149,11 +149,11 @@ EngineControl::EngineControl () sr_connection = sample_rate_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::reshow_buffer_sizes)); - interface_combo.set_size_request (250, -1); + device_combo.set_size_request (250, -1); input_device_combo.set_size_request (250, -1); output_device_combo.set_size_request (250, -1); - interface_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::interface_changed)); + device_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::device_changed)); basic_hbox.pack_start (basic_packer, false, false); @@ -234,17 +234,17 @@ EngineControl::list_devices () available_devices.push_back (i->name); } - set_popdown_strings (interface_combo, available_devices); + set_popdown_strings (device_combo, available_devices); set_popdown_strings (input_device_combo, available_devices); set_popdown_strings (output_device_combo, available_devices); if (!available_devices.empty()) { - interface_combo.set_active_text (available_devices.front()); + device_combo.set_active_text (available_devices.front()); input_device_combo.set_active_text (available_devices.front()); output_device_combo.set_active_text (available_devices.front()); } - interface_changed (); + device_changed (); } void @@ -258,11 +258,11 @@ EngineControl::driver_changed () } void -EngineControl::interface_changed () +EngineControl::device_changed () { boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); assert (backend); - string device_name = interface_combo.get_active_text (); + string device_name = device_combo.get_active_text (); vector s; /* don't allow programmatic change to sample_rate_combo to cause a @@ -297,7 +297,7 @@ EngineControl::reshow_buffer_sizes () { boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); assert (backend); - string device_name = interface_combo.get_active_text (); + string device_name = device_combo.get_active_text (); vector s; /* buffer sizes */ @@ -339,6 +339,15 @@ EngineControl::audio_mode_changed () } } +struct EngineStateKey +{ + std::string system; + std::string driver; + std::string device; +}; + +typedef std::map EngineStateMap; + XMLNode& EngineControl::get_state () { @@ -347,6 +356,15 @@ EngineControl::get_state () std::string path; #if 0 + audio system + driver + device + sample rate +buffer size + input latency + output latency + + child = new XMLNode ("periods"); child->add_property ("val", to_string (periods_adjustment.get_value(), std::dec)); root->add_child_nocopy (*child); @@ -412,7 +430,7 @@ EngineControl::get_state () root->add_child_nocopy (*child); child = new XMLNode ("interface"); - child->add_property ("val", interface_combo.get_active_text()); + child->add_property ("val", device_combo.get_active_text()); root->add_child_nocopy (*child); child = new XMLNode ("timeout"); @@ -575,7 +593,7 @@ EngineControl::set_state (const XMLNode& root) } else if (child->name() == "driver") { driver_combo.set_active_text(strval); } else if (child->name() == "interface") { - interface_combo.set_active_text(strval); + device_combo.set_active_text(strval); } else if (child->name() == "timeout") { timeout_combo.set_active_text(strval); } else if (child->name() == "dither") { @@ -708,6 +726,6 @@ EngineControl::get_driver () const string EngineControl::get_device_name () const { - return interface_combo.get_active_text (); + return device_combo.get_active_text (); } diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 333ec27f33..4dd34d9fab 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -82,7 +82,7 @@ class EngineControl : public Gtk::VBox { Gtk::ComboBoxText preset_combo; Gtk::ComboBoxText serverpath_combo; Gtk::ComboBoxText driver_combo; - Gtk::ComboBoxText interface_combo; + Gtk::ComboBoxText device_combo; Gtk::ComboBoxText timeout_combo; Gtk::ComboBoxText dither_mode_combo; Gtk::ComboBoxText audio_mode_combo; @@ -112,7 +112,7 @@ class EngineControl : public Gtk::VBox { std::string get_driver() const; void audio_mode_changed (); - void interface_changed (); + void device_changed (); void list_devices (); void reshow_buffer_sizes (); }; diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index f05944797d..61fe27abd5 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -66,7 +66,7 @@ public: static AudioEngine* create (); virtual ~AudioEngine (); - + int discover_backends(); std::vector available_backends() const; std::string current_backend_name () const; diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 47bd257bd8..109f76334a 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -948,3 +948,4 @@ AudioEngine::setup_required () const return true; } + -- cgit v1.2.3 From 8060198f75a14d40dc1a7a4e5aef40276359f5a0 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 4 Sep 2013 12:49:52 -0400 Subject: change names of actions groups that include "jack" --- gtk2_ardour/actions.cc | 4 ++-- gtk2_ardour/actions.h | 4 ++-- gtk2_ardour/ardour_ui.cc | 12 +++++----- gtk2_ardour/ardour_ui_ed.cc | 54 ++++++++++++++++++++++---------------------- gtk2_ardour/processor_box.cc | 4 ++-- 5 files changed, 39 insertions(+), 39 deletions(-) diff --git a/gtk2_ardour/actions.cc b/gtk2_ardour/actions.cc index 3b0133b535..cefaeeb4cf 100644 --- a/gtk2_ardour/actions.cc +++ b/gtk2_ardour/actions.cc @@ -58,8 +58,8 @@ vector > ActionManager::playlist_selection_sensitive_actions vector > ActionManager::mouse_edit_point_requires_canvas_actions; vector > ActionManager::range_sensitive_actions; -vector > ActionManager::jack_sensitive_actions; -vector > ActionManager::jack_opposite_sensitive_actions; +vector > ActionManager::engine_sensitive_actions; +vector > ActionManager::engine_opposite_sensitive_actions; vector > ActionManager::transport_sensitive_actions; vector > ActionManager::edit_point_in_region_sensitive_actions; diff --git a/gtk2_ardour/actions.h b/gtk2_ardour/actions.h index 20c0532636..f3fba51de5 100644 --- a/gtk2_ardour/actions.h +++ b/gtk2_ardour/actions.h @@ -46,8 +46,8 @@ namespace ActionManager { extern std::vector > range_sensitive_actions; extern std::vector > transport_sensitive_actions; - extern std::vector > jack_sensitive_actions; - extern std::vector > jack_opposite_sensitive_actions; + extern std::vector > engine_sensitive_actions; + extern std::vector > engine_opposite_sensitive_actions; extern std::vector > edit_point_in_region_sensitive_actions; extern void map_some_state (const char* group, const char* action, bool (ARDOUR::RCConfiguration::*get)() const); diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 81a5b2c580..9eae8b4268 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -408,8 +408,8 @@ void ARDOUR_UI::engine_stopped () { ENSURE_GUI_THREAD (*this, &ARDOUR_UI::engine_stopped) - ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, false); - ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, true); + ActionManager::set_sensitive (ActionManager::engine_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::engine_opposite_sensitive_actions, true); } void @@ -420,8 +420,8 @@ ARDOUR_UI::engine_running () first_time_engine_run = false; } - ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, true); - ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::engine_sensitive_actions, true); + ActionManager::set_sensitive (ActionManager::engine_opposite_sensitive_actions, false); Glib::RefPtr action; const char* action_name = 0; @@ -485,8 +485,8 @@ ARDOUR_UI::engine_halted (const char* reason, bool free_reason) return; } - ActionManager::set_sensitive (ActionManager::jack_sensitive_actions, false); - ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, true); + ActionManager::set_sensitive (ActionManager::engine_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::engine_opposite_sensitive_actions, true); update_sample_rate (0); diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 6c050578ec..82d32315c5 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -183,38 +183,38 @@ ARDOUR_UI::install_actions () ActionManager::write_sensitive_actions.push_back (act); ActionManager::session_sensitive_actions.push_back (act); - /* JACK actions for controlling ... JACK */ + /* AudioEngine actions */ - Glib::RefPtr jack_actions = ActionGroup::create (X_("JACK")); - ActionManager::register_action (jack_actions, X_("JACK"), _("JACK")); - ActionManager::register_action (jack_actions, X_("Latency"), _("Latency")); + Glib::RefPtr engine_actions = ActionGroup::create (X_("Audio")); + ActionManager::register_action (engine_actions, X_("JACK"), _("JACK")); + ActionManager::register_action (engine_actions, X_("Latency"), _("Latency")); - act = ActionManager::register_action (jack_actions, X_("JACKReconnect"), _("Reconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::reconnect_to_jack)); - ActionManager::jack_opposite_sensitive_actions.push_back (act); + act = ActionManager::register_action (engine_actions, X_("JACKReconnect"), _("Reconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::reconnect_to_jack)); + ActionManager::engine_opposite_sensitive_actions.push_back (act); - act = ActionManager::register_action (jack_actions, X_("JACKDisconnect"), _("Disconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_jack)); - ActionManager::jack_sensitive_actions.push_back (act); + act = ActionManager::register_action (engine_actions, X_("JACKDisconnect"), _("Disconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_jack)); + ActionManager::engine_sensitive_actions.push_back (act); RadioAction::Group jack_latency_group; - act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency32"), X_("32"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 32)); - ActionManager::jack_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency64"), X_("64"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 64)); - ActionManager::jack_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency128"), X_("128"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 128)); - ActionManager::jack_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency256"), X_("256"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 256)); - ActionManager::jack_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency512"), X_("512"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 512)); - ActionManager::jack_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency1024"), X_("1024"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 1024)); - ActionManager::jack_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency2048"), X_("2048"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 2048)); - ActionManager::jack_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency4096"), X_("4096"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 4096)); - ActionManager::jack_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency8192"), X_("8192"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 8192)); - ActionManager::jack_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency32"), X_("32"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 32)); + ActionManager::engine_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency64"), X_("64"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 64)); + ActionManager::engine_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency128"), X_("128"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 128)); + ActionManager::engine_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency256"), X_("256"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 256)); + ActionManager::engine_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency512"), X_("512"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 512)); + ActionManager::engine_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency1024"), X_("1024"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 1024)); + ActionManager::engine_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency2048"), X_("2048"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 2048)); + ActionManager::engine_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency4096"), X_("4096"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 4096)); + ActionManager::engine_sensitive_actions.push_back (act); + act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency8192"), X_("8192"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 8192)); + ActionManager::engine_sensitive_actions.push_back (act); /* these actions are intended to be shared across all windows */ @@ -421,7 +421,7 @@ ARDOUR_UI::install_actions () ActionManager::add_action_group (shuttle_actions); ActionManager::add_action_group (option_actions); - ActionManager::add_action_group (jack_actions); + ActionManager::add_action_group (engine_actions); ActionManager::add_action_group (transport_actions); ActionManager::add_action_group (main_actions); ActionManager::add_action_group (main_menu_actions); diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 1c5c47c41e..d475e28605 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -2202,10 +2202,10 @@ ProcessorBox::register_actions () act = ActionManager::register_action (popup_act_grp, X_("newinsert"), _("New Insert"), sigc::ptr_fun (ProcessorBox::rb_choose_insert)); - ActionManager::jack_sensitive_actions.push_back (act); + ActionManager::engine_sensitive_actions.push_back (act); act = ActionManager::register_action (popup_act_grp, X_("newsend"), _("New External Send ..."), sigc::ptr_fun (ProcessorBox::rb_choose_send)); - ActionManager::jack_sensitive_actions.push_back (act); + ActionManager::engine_sensitive_actions.push_back (act); ActionManager::register_action (popup_act_grp, X_("newaux"), _("New Aux Send ...")); -- cgit v1.2.3 From 58dd0198e6dcf40ec684c32019e104f0b1a58472 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 4 Sep 2013 15:45:54 -0400 Subject: save and restore settings for different backend/driver/device combinations So far, this is only internal - never saved to disk --- gtk2_ardour/ardour_ui_ed.cc | 20 +++--- gtk2_ardour/engine_dialog.cc | 145 +++++++++++++++++++++++++++++++++++++++---- gtk2_ardour/engine_dialog.h | 23 ++++++- 3 files changed, 164 insertions(+), 24 deletions(-) diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 82d32315c5..c30627fdec 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -195,25 +195,25 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (engine_actions, X_("JACKDisconnect"), _("Disconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_jack)); ActionManager::engine_sensitive_actions.push_back (act); - RadioAction::Group jack_latency_group; + RadioAction::Group latency_group; - act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency32"), X_("32"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 32)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency32"), X_("32"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 32)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency64"), X_("64"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 64)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency64"), X_("64"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 64)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency128"), X_("128"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 128)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency128"), X_("128"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 128)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency256"), X_("256"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 256)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency256"), X_("256"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 256)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency512"), X_("512"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 512)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency512"), X_("512"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 512)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency1024"), X_("1024"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 1024)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency1024"), X_("1024"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 1024)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency2048"), X_("2048"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 2048)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency2048"), X_("2048"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 2048)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency4096"), X_("4096"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 4096)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency4096"), X_("4096"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 4096)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, jack_latency_group, X_("JACKLatency8192"), X_("8192"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 8192)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency8192"), X_("8192"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 8192)); ActionManager::engine_sensitive_actions.push_back (act); /* these actions are intended to be shared across all windows */ diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 3ffb7dc6da..0ad27e29d4 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -128,11 +128,15 @@ EngineControl::EngineControl () basic_packer.attach (sample_rate_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); row++; + sr_connection = sample_rate_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::sample_rate_changed)); + label = manage (left_aligned_label (_("Buffer size:"))); basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); basic_packer.attach (buffer_size_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); row++; + bs_connection = buffer_size_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::buffer_size_changed)); + label = manage (left_aligned_label (_("Hardware input latency:"))); basic_packer.attach (*label, 0, 1, row, row+1, FILL|EXPAND, (AttachOptions) 0); basic_packer.attach (input_latency, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0); @@ -147,8 +151,6 @@ EngineControl::EngineControl () basic_packer.attach (*label, 2, 3, row, row+1, FILL|EXPAND, (AttachOptions) 0); ++row; - sr_connection = sample_rate_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::reshow_buffer_sizes)); - device_combo.set_size_request (250, -1); input_device_combo.set_size_request (250, -1); output_device_combo.set_size_request (250, -1); @@ -207,6 +209,8 @@ EngineControl::backend_changed () driver_combo.set_sensitive (false); list_devices (); } + + maybe_set_state (); } void @@ -255,6 +259,8 @@ EngineControl::driver_changed () backend->set_driver (driver_combo.get_active_text()); list_devices (); + + maybe_set_state (); } void @@ -287,20 +293,78 @@ EngineControl::device_changed () set_popdown_strings (sample_rate_combo, s); sample_rate_combo.set_active_text (s.front()); - reshow_buffer_sizes (); - + reshow_buffer_sizes (true); + sr_connection.unblock (); + + maybe_set_state (); } +void +EngineControl::sample_rate_changed () +{ + bool existing = true; + State* state = get_current_state (); + + if (!state) { + existing = false; + state = new State; + state->backend = backend_combo.get_active_text (); + state->driver = driver_combo.get_active_text (); + state->device = device_combo.get_active_text (); + state->buffer_size = buffer_size_combo.get_active_text (); + } + + state->sample_rate = sample_rate_combo.get_active_text (); + + if (!existing) { + states.push_back (*state); + } + + reshow_buffer_sizes (false); +} + +void +EngineControl::buffer_size_changed () +{ + bool existing = true; + State* state = get_current_state (); + + if (!state) { + existing = false; + state = new State; + state->backend = backend_combo.get_active_text (); + state->driver = driver_combo.get_active_text (); + state->device = device_combo.get_active_text (); + state->sample_rate = sample_rate_combo.get_active_text (); + } + + state->buffer_size = buffer_size_combo.get_active_text (); + + if (!existing) { + states.push_back (*state); + } +} + void -EngineControl::reshow_buffer_sizes () +EngineControl::reshow_buffer_sizes (bool size_choice_changed) { boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); assert (backend); string device_name = device_combo.get_active_text (); vector s; + int existing_size_choice = 0; + string new_target_string; + + /* buffer sizes - convert from just samples to samples + msecs for + * the displayed string + */ - /* buffer sizes */ + bs_connection.block (); + + if (!size_choice_changed) { + sscanf (buffer_size_combo.get_active_text().c_str(), "%d", &existing_size_choice); + } s.clear (); vector bs = backend->available_buffer_sizes(device_name); @@ -308,15 +372,32 @@ EngineControl::reshow_buffer_sizes () for (vector::const_iterator x = bs.begin(); x != bs.end(); ++x) { char buf[32]; + /* Translators: "samples" is ALWAYS plural here, so we do not need singular form as well. Same for msecs. */ snprintf (buf, sizeof (buf), _("%u samples (%.1f msecs)"), *x, (2 * (*x)) / (rate/1000.0)); s.push_back (buf); + + /* if this is the size previously chosen, this is the string we + * will want to be active in the combo. + */ + + if (existing_size_choice == *x) { + new_target_string = buf; + } + } set_popdown_strings (buffer_size_combo, s); - buffer_size_combo.set_active_text (s.front()); + + if (!new_target_string.empty()) { + buffer_size_combo.set_active_text (new_target_string); + } else { + buffer_size_combo.set_active_text (s.front()); + } + + bs_connection.unblock (); } void @@ -339,15 +420,53 @@ EngineControl::audio_mode_changed () } } -struct EngineStateKey +EngineControl::State* +EngineControl::get_matching_state (const string& backend, + const string& driver, + const string& device) { - std::string system; - std::string driver; - std::string device; -}; + for (StateList::iterator i = states.begin(); i != states.end(); ++i) { + if ((*i).backend == backend && + (*i).driver == driver && + (*i).device == device) { + return &(*i); + } + } + return 0; +} -typedef std::map EngineStateMap; +EngineControl::State* +EngineControl::get_current_state () +{ + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + + if (backend) { + return get_matching_state (backend_combo.get_active_text(), + (backend->requires_driver_selection() ? (std::string) driver_combo.get_active_text() : string()), + device_combo.get_active_text()); + } + + + return get_matching_state (backend_combo.get_active_text(), + string(), + device_combo.get_active_text()); +} +void +EngineControl::maybe_set_state () +{ + State* state = get_current_state (); + + if (state) { + sr_connection.block (); + bs_connection.block (); + sample_rate_combo.set_active_text (state->sample_rate); + buffer_size_combo.set_active_text (state->buffer_size); + bs_connection.unblock (); + sr_connection.unblock (); + } +} + XMLNode& EngineControl::get_state () { diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 4dd34d9fab..6bd7fb2be0 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -94,6 +94,7 @@ class EngineControl : public Gtk::VBox { Gtk::HBox midi_hbox; sigc::connection sr_connection; + sigc::connection bs_connection; bool _used; @@ -101,6 +102,8 @@ class EngineControl : public Gtk::VBox { void driver_changed (); void backend_changed (); + void sample_rate_changed (); + void buffer_size_changed (); uint32_t get_rate() const; uint32_t get_buffer_size() const; @@ -114,7 +117,25 @@ class EngineControl : public Gtk::VBox { void audio_mode_changed (); void device_changed (); void list_devices (); - void reshow_buffer_sizes (); + void reshow_buffer_sizes (bool choice_changed); + + struct State { + std::string backend; + std::string driver; + std::string device; + std::string sample_rate; + std::string buffer_size; + }; + + typedef std::list StateList; + + StateList states; + + State* get_matching_state (const std::string& backend, + const std::string& driver, + const std::string& device); + State* get_current_state (); + void maybe_set_state (); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ -- cgit v1.2.3 From 418f2ff20a6f5fadc76c5ef5cd1ab738271a98e6 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 4 Sep 2013 19:34:43 -0400 Subject: save and restore audio/MIDI setup states to disk (in ardour.rc) Not finished because the buffer size value will not always stick during restore --- gtk2_ardour/engine_dialog.cc | 333 +++++++++++++------------------------------ gtk2_ardour/engine_dialog.h | 14 +- gtk2_ardour/startup.cc | 4 - 3 files changed, 108 insertions(+), 243 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 0ad27e29d4..4ad89a8dcf 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -68,13 +68,13 @@ EngineControl::EngineControl () #else , basic_packer (9, 2) #endif + , _used (false) { using namespace Notebook_Helpers; Label* label; vector strings; int row = 0; - _used = false; /* basic parameters */ @@ -176,7 +176,7 @@ EngineControl::EngineControl () /* Pick up any existing audio setup configuration, if appropriate */ - XMLNode* audio_setup = ARDOUR::Config->extra_xml ("AudioSetup"); + XMLNode* audio_setup = ARDOUR::Config->extra_xml ("AudioMIDISetup"); if (audio_setup) { set_state (*audio_setup); @@ -353,7 +353,7 @@ EngineControl::reshow_buffer_sizes (bool size_choice_changed) assert (backend); string device_name = device_combo.get_active_text (); vector s; - int existing_size_choice = 0; + uint32_t existing_size_choice = 0; string new_target_string; /* buffer sizes - convert from just samples to samples + msecs for @@ -363,7 +363,7 @@ EngineControl::reshow_buffer_sizes (bool size_choice_changed) bs_connection.block (); if (!size_choice_changed) { - sscanf (buffer_size_combo.get_active_text().c_str(), "%d", &existing_size_choice); + sscanf (buffer_size_combo.get_active_text().c_str(), "%" PRIu32, &existing_size_choice); } s.clear (); @@ -470,264 +470,122 @@ EngineControl::maybe_set_state () XMLNode& EngineControl::get_state () { - XMLNode* root = new XMLNode ("AudioSetup"); - XMLNode* child; + XMLNode* root = new XMLNode ("AudioMIDISetup"); std::string path; -#if 0 - audio system - driver - device - sample rate -buffer size - input latency - output latency - - - child = new XMLNode ("periods"); - child->add_property ("val", to_string (periods_adjustment.get_value(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("ports"); - child->add_property ("val", to_string (ports_adjustment.get_value(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("inlatency"); - child->add_property ("val", to_string (input_latency.get_value(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("outlatency"); - child->add_property ("val", to_string (output_latency.get_value(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("realtime"); - child->add_property ("val", to_string (realtime_button.get_active(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("nomemorylock"); - child->add_property ("val", to_string (no_memory_lock_button.get_active(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("unlockmemory"); - child->add_property ("val", to_string (unlock_memory_button.get_active(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("softmode"); - child->add_property ("val", to_string (soft_mode_button.get_active(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("force16bit"); - child->add_property ("val", to_string (force16bit_button.get_active(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("hwmonitor"); - child->add_property ("val", to_string (hw_monitor_button.get_active(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("hwmeter"); - child->add_property ("val", to_string (hw_meter_button.get_active(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("verbose"); - child->add_property ("val", to_string (verbose_output_button.get_active(), std::dec)); - root->add_child_nocopy (*child); - - child = new XMLNode ("samplerate"); - child->add_property ("val", sample_rate_combo.get_active_text()); - root->add_child_nocopy (*child); - - child = new XMLNode ("periodsize"); - child->add_property ("val", period_size_combo.get_active_text()); - root->add_child_nocopy (*child); - - child = new XMLNode ("serverpath"); - child->add_property ("val", serverpath_combo.get_active_text()); - root->add_child_nocopy (*child); - - child = new XMLNode ("driver"); - child->add_property ("val", driver_combo.get_active_text()); - root->add_child_nocopy (*child); - - child = new XMLNode ("interface"); - child->add_property ("val", device_combo.get_active_text()); - root->add_child_nocopy (*child); - - child = new XMLNode ("timeout"); - child->add_property ("val", timeout_combo.get_active_text()); - root->add_child_nocopy (*child); + if (_used) { - child = new XMLNode ("dither"); - child->add_property ("val", dither_mode_combo.get_active_text()); - root->add_child_nocopy (*child); - - child = new XMLNode ("audiomode"); - child->add_property ("val", audio_mode_combo.get_active_text()); - root->add_child_nocopy (*child); - - child = new XMLNode ("inputdevice"); - child->add_property ("val", input_device_combo.get_active_text()); - root->add_child_nocopy (*child); + if (!states.empty()) { + XMLNode* state_nodes = new XMLNode ("EngineStates"); + + for (StateList::const_iterator i = states.begin(); i != states.end(); ++i) { + + XMLNode* node = new XMLNode ("State"); + + node->add_property ("backend", (*i).backend); + node->add_property ("driver", (*i).driver); + node->add_property ("device", (*i).device); + node->add_property ("sample-rate", (*i).sample_rate); + node->add_property ("buffer-size", (*i).buffer_size); + node->add_property ("input-latency", (*i).input_latency); + node->add_property ("output-latency", (*i).output_latency); + node->add_property ("input-channels", (*i).input_channels); + node->add_property ("output-channels", (*i).output_channels); + + state_nodes->add_child_nocopy (*node); + } - child = new XMLNode ("outputdevice"); - child->add_property ("val", output_device_combo.get_active_text()); - root->add_child_nocopy (*child); + root->add_child_nocopy (*state_nodes); + } + } - child = new XMLNode ("mididriver"); - child->add_property ("val", midi_driver_combo.get_active_text()); - root->add_child_nocopy (*child); -#endif return *root; } void EngineControl::set_state (const XMLNode& root) { -#if 0 - XMLNodeList clist; - XMLNodeConstIterator citer; + XMLNodeList clist, cclist; + XMLNodeConstIterator citer, cciter; XMLNode* child; + XMLNode* grandchild; XMLProperty* prop = NULL; - bool using_dummy = false; - bool using_ffado = false; - - int val; - string strval; - - if ( (child = root.child ("driver"))){ - prop = child->property("val"); - - if (prop && (prop->value() == "Dummy") ) { - using_dummy = true; - } - if (prop && (prop->value() == "FFADO") ) { - using_ffado = true; - } + if (root.name() != "AudioMIDISetup") { + return; } clist = root.children(); + states.clear (); + for (citer = clist.begin(); citer != clist.end(); ++citer) { child = *citer; - - prop = child->property ("val"); - - if (!prop || prop->value().empty()) { - - if (((using_dummy || using_ffado) - && ( child->name() == "interface" - || child->name() == "inputdevice" - || child->name() == "outputdevice")) - || child->name() == "timeout") - { - continue; - } - - error << string_compose (_("AudioSetup value for %1 is missing data"), child->name()) << endmsg; + + if (child->name() != "EngineStates") { continue; } - strval = prop->value(); - - /* adjustments/spinners */ - - if (child->name() == "periods") { - val = atoi (strval); - periods_adjustment.set_value(val); - } else if (child->name() == "ports") { - val = atoi (strval); - ports_adjustment.set_value(val); - } else if (child->name() == "inlatency") { - val = atoi (strval); - input_latency.set_value(val); - } else if (child->name() == "outlatency") { - val = atoi (strval); - output_latency.set_value(val); - } + cclist = child->children(); - /* buttons */ - - else if (child->name() == "realtime") { - val = atoi (strval); - realtime_button.set_active(val); - } else if (child->name() == "nomemorylock") { - val = atoi (strval); - no_memory_lock_button.set_active(val); - } else if (child->name() == "unlockmemory") { - val = atoi (strval); - unlock_memory_button.set_active(val); - } else if (child->name() == "softmode") { - val = atoi (strval); - soft_mode_button.set_active(val); - } else if (child->name() == "force16bit") { - val = atoi (strval); - force16bit_button.set_active(val); - } else if (child->name() == "hwmonitor") { - val = atoi (strval); - hw_monitor_button.set_active(val); - } else if (child->name() == "hwmeter") { - val = atoi (strval); - hw_meter_button.set_active(val); - } else if (child->name() == "verbose") { - val = atoi (strval); - verbose_output_button.set_active(val); - } + for (cciter = cclist.begin(); cciter != cclist.end(); ++cciter) { + State state; + + grandchild = *cciter; - /* combos */ - - else if (child->name() == "samplerate") { - sample_rate_combo.set_active_text(strval); - } else if (child->name() == "periodsize") { - period_size_combo.set_active_text(strval); - } else if (child->name() == "serverpath") { - - /* only attempt to set this if we have bothered to look - up server names already. otherwise this is all - redundant (actually, all of this dialog/widget - is redundant in that case ...) - */ - - if (!server_strings.empty()) { - /* do not allow us to use a server path that doesn't - exist on this system. this handles cases where - the user has an RC file listing a serverpath - from some other machine. - */ - vector::iterator x; - for (x = server_strings.begin(); x != server_strings.end(); ++x) { - if (*x == strval) { - break; - } - } - if (x != server_strings.end()) { - serverpath_combo.set_active_text (strval); - } else { - warning << string_compose (_("configuration files contain a JACK server path that doesn't exist (%1)"), - strval) - << endmsg; - } - } - - } else if (child->name() == "driver") { - driver_combo.set_active_text(strval); - } else if (child->name() == "interface") { - device_combo.set_active_text(strval); - } else if (child->name() == "timeout") { - timeout_combo.set_active_text(strval); - } else if (child->name() == "dither") { - dither_mode_combo.set_active_text(strval); - } else if (child->name() == "audiomode") { - audio_mode_combo.set_active_text(strval); - } else if (child->name() == "inputdevice") { - input_device_combo.set_active_text(strval); - } else if (child->name() == "outputdevice") { - output_device_combo.set_active_text(strval); - } else if (child->name() == "mididriver") { - midi_driver_combo.set_active_text(strval); + if (grandchild->name() != "State") { + continue; + } + + if ((prop = grandchild->property ("backend")) == 0) { + continue; + } + state.backend = prop->value (); + + if ((prop = grandchild->property ("driver")) == 0) { + continue; + } + state.driver = prop->value (); + + if ((prop = grandchild->property ("device")) == 0) { + continue; + } + state.device = prop->value (); + + if ((prop = grandchild->property ("sample-rate")) == 0) { + continue; + } + state.sample_rate = prop->value (); + + if ((prop = grandchild->property ("buffer-size")) == 0) { + continue; + } + state.buffer_size = prop->value (); + + if ((prop = grandchild->property ("input-latency")) == 0) { + continue; + } + state.input_latency = prop->value (); + + if ((prop = grandchild->property ("output-latency")) == 0) { + continue; + } + state.output_latency = prop->value (); + + if ((prop = grandchild->property ("input-channels")) == 0) { + continue; + } + state.input_channels = prop->value (); + + if ((prop = grandchild->property ("output-channels")) == 0) { + continue; + } + state.output_channels = prop->value (); + + states.push_back (state); } } -#endif } int @@ -774,6 +632,13 @@ EngineControl::setup_engine (bool start) return -1; } + /* we've used this dialog to configure the engine, which means + * that our state becomes relevant for saving (and thus + * implicitly, restoring. + */ + + _used = true; + if (start) { return ARDOUR::AudioEngine::instance()->start(); } diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 6bd7fb2be0..4a65ec5b4a 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -120,11 +120,15 @@ class EngineControl : public Gtk::VBox { void reshow_buffer_sizes (bool choice_changed); struct State { - std::string backend; - std::string driver; - std::string device; - std::string sample_rate; - std::string buffer_size; + std::string backend; + std::string driver; + std::string device; + std::string sample_rate; + std::string buffer_size; + std::string input_latency; + std::string output_latency; + std::string input_channels; + std::string output_channels; }; typedef std::list StateList; diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index bfd9c88633..2e6fe49e98 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -404,8 +404,6 @@ Where would you like new %1 sessions to be stored by default?\n\n\ vbox->pack_start (*txt, false, false); vbox->pack_start (*hbox, false, true); - cerr << "Setting defaultDIR session dir to [" << Config->get_default_session_parent_dir() << "]\n"; - default_dir_chooser->set_current_folder (poor_mans_glob (Config->get_default_session_parent_dir())); default_dir_chooser->signal_current_folder_changed().connect (sigc::mem_fun (*this, &ArdourStartup::default_dir_changed)); default_dir_chooser->show (); @@ -662,9 +660,7 @@ ArdourStartup::on_delete_event (GdkEventAny*) void ArdourStartup::on_apply () { - cerr << "apply, engine = " << engine_dialog << endl; if (engine_dialog) { - cerr << "Set up engine\n"; if (engine_dialog->setup_engine (true)) { set_current_page (audio_page_index); return; -- cgit v1.2.3 From 0cc4ee7b79644961967a60bd337b035e97517d4a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 4 Sep 2013 22:22:18 -0400 Subject: fix up restoration of saved state from disk, still incomplete --- gtk2_ardour/engine_dialog.cc | 66 +++++++++++++++++++++----------------------- gtk2_ardour/engine_dialog.h | 1 + 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 4ad89a8dcf..ebdf60f4d6 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -303,47 +303,19 @@ EngineControl::device_changed () void EngineControl::sample_rate_changed () { - bool existing = true; - State* state = get_current_state (); - - if (!state) { - existing = false; - state = new State; - state->backend = backend_combo.get_active_text (); - state->driver = driver_combo.get_active_text (); - state->device = device_combo.get_active_text (); - state->buffer_size = buffer_size_combo.get_active_text (); - } - - state->sample_rate = sample_rate_combo.get_active_text (); - - if (!existing) { - states.push_back (*state); - } + /* reset the strings for buffer size to show the correct msec value + (reflecting the new sample rate + */ reshow_buffer_sizes (false); + save_state (); + } void EngineControl::buffer_size_changed () { - bool existing = true; - State* state = get_current_state (); - - if (!state) { - existing = false; - state = new State; - state->backend = backend_combo.get_active_text (); - state->driver = driver_combo.get_active_text (); - state->device = device_combo.get_active_text (); - state->sample_rate = sample_rate_combo.get_active_text (); - } - - state->buffer_size = buffer_size_combo.get_active_text (); - - if (!existing) { - states.push_back (*state); - } + save_state (); } void @@ -452,6 +424,28 @@ EngineControl::get_current_state () device_combo.get_active_text()); } +void +EngineControl::save_state () +{ + bool existing = true; + State* state = get_current_state (); + + if (!state) { + existing = false; + state = new State; + } + + state->backend = backend_combo.get_active_text (); + state->driver = driver_combo.get_active_text (); + state->device = device_combo.get_active_text (); + state->buffer_size = buffer_size_combo.get_active_text (); + state->sample_rate = sample_rate_combo.get_active_text (); + + if (!existing) { + states.push_back (*state); + } +} + void EngineControl::maybe_set_state () { @@ -461,6 +455,10 @@ EngineControl::maybe_set_state () sr_connection.block (); bs_connection.block (); sample_rate_combo.set_active_text (state->sample_rate); + /* need to reset possible strings for buffer size before we do + this + */ + reshow_buffer_sizes (false); buffer_size_combo.set_active_text (state->buffer_size); bs_connection.unblock (); sr_connection.unblock (); diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 4a65ec5b4a..a56a97caee 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -140,6 +140,7 @@ class EngineControl : public Gtk::VBox { const std::string& device); State* get_current_state (); void maybe_set_state (); + void save_state (); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ -- cgit v1.2.3 From 5a3cf3363b9b782f8bd8f81b8f002b21d746d14a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 4 Sep 2013 22:58:56 -0400 Subject: save and restore the selected engine state at startup --- gtk2_ardour/engine_dialog.cc | 49 +++++++++++++++++++++++++++++++++++++++++++- gtk2_ardour/engine_dialog.h | 3 +++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index ebdf60f4d6..eddb9c3cbd 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -489,7 +489,8 @@ EngineControl::get_state () node->add_property ("output-latency", (*i).output_latency); node->add_property ("input-channels", (*i).input_channels); node->add_property ("output-channels", (*i).output_channels); - + node->add_property ("active", (*i).active ? "yes" : "no"); + state_nodes->add_child_nocopy (*node); } @@ -580,10 +581,32 @@ EngineControl::set_state (const XMLNode& root) continue; } state.output_channels = prop->value (); + + if ((prop = grandchild->property ("active")) == 0) { + continue; + } + state.active = string_is_affirmative (prop->value ()); states.push_back (state); } } + + /* 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) { + sr_connection.block (); + bs_connection.block (); + backend_combo.set_active_text ((*i).backend); + driver_combo.set_active_text ((*i).driver); + device_combo.set_active_text ((*i).device); + sample_rate_combo.set_active_text ((*i).sample_rate); + buffer_size_combo.set_active_text ((*i).buffer_size); + sr_connection.unblock (); + bs_connection.unblock (); + break; + } + } } int @@ -637,6 +660,30 @@ EngineControl::setup_engine (bool start) _used = true; + /* get a pointer to the current state object, creating one if + * necessary + */ + + State* state = get_current_state (); + + if (!state) { + save_state (); + state = get_current_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; + if (start) { return ARDOUR::AudioEngine::instance()->start(); } diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index a56a97caee..3ee7a388bc 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -129,6 +129,9 @@ class EngineControl : public Gtk::VBox { std::string output_latency; std::string input_channels; std::string output_channels; + bool active; + + State() : active (false) {}; }; typedef std::list StateList; -- cgit v1.2.3 From fee626c386ccc23c41b7b2976c5031cd335b7587 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Sep 2013 13:21:13 -0400 Subject: shorten tab labels on audio/midi setup notebook --- gtk2_ardour/engine_dialog.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index eddb9c3cbd..c50198a960 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -162,8 +162,8 @@ EngineControl::EngineControl () basic_packer.set_border_width (12); midi_packer.set_border_width (12); - notebook.pages().push_back (TabElem (basic_hbox, _("Audio System Settings"))); - notebook.pages().push_back (TabElem (midi_hbox, _("MIDI Settings"))); + notebook.pages().push_back (TabElem (basic_hbox, _("Audio"))); + notebook.pages().push_back (TabElem (midi_hbox, _("MIDI"))); notebook.set_border_width (12); notebook.set_tab_pos (POS_RIGHT); -- cgit v1.2.3 From 1c49138e0099db37931b34fad552b43c332e187d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Sep 2013 13:22:34 -0400 Subject: move MidiPortManager from AudioEngine to Session This makes the responsibilities and ownership of non-Route related MIDI ports more clear, and removes a few wierd bits of code. It also ensures that open/close/open on the same session will retain connections for those MIDI ports --- gtk2_ardour/port_group.cc | 17 +++--- libs/ardour/ardour/audioengine.h | 6 --- libs/ardour/ardour/midiport_manager.h | 2 +- libs/ardour/ardour/port_manager.h | 2 +- libs/ardour/ardour/rc_configuration.h | 6 --- libs/ardour/ardour/session.h | 18 +++++++ libs/ardour/audioengine.cc | 19 ------- libs/ardour/midi_ui.cc | 2 +- libs/ardour/midiport_manager.cc | 10 ++-- libs/ardour/rc_configuration.cc | 17 ------ libs/ardour/session.cc | 13 +++-- libs/ardour/session_export.cc | 6 +-- libs/ardour/session_midi.cc | 46 +++++++++++++++- libs/ardour/session_state.cc | 62 +++++++++++++--------- libs/ardour/session_transport.cc | 10 ++-- libs/ardour/ticker.cc | 2 +- .../generic_midi/generic_midi_control_protocol.cc | 4 +- 17 files changed, 134 insertions(+), 108 deletions(-) diff --git a/gtk2_ardour/port_group.cc b/gtk2_ardour/port_group.cc index 67bc40f664..2a93cf6bee 100644 --- a/gtk2_ardour/port_group.cc +++ b/gtk2_ardour/port_group.cc @@ -457,33 +457,32 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp if ((type == DataType::MIDI || type == DataType::NIL)) { boost::shared_ptr sync (new Bundle (_("Sync"), inputs)); AudioEngine* ae = AudioEngine::instance(); - MIDI::MachineControl& mmc (ae->mmc()); if (inputs) { sync->add_channel ( - _("MTC in"), DataType::MIDI, ae->make_port_name_non_relative (ae->mtc_input_port()->name()) + _("MTC in"), DataType::MIDI, ae->make_port_name_non_relative (session->mtc_input_port()->name()) ); sync->add_channel ( - _("MIDI control in"), DataType::MIDI, ae->make_port_name_non_relative (ae->midi_input_port()->name()) + _("MIDI control in"), DataType::MIDI, ae->make_port_name_non_relative (session->midi_input_port()->name()) ); sync->add_channel ( - _("MIDI clock in"), DataType::MIDI, ae->make_port_name_non_relative (ae->midi_clock_input_port()->name()) + _("MIDI clock in"), DataType::MIDI, ae->make_port_name_non_relative (session->midi_clock_input_port()->name()) ); sync->add_channel ( - _("MMC in"), DataType::MIDI, ae->make_port_name_non_relative (mmc.input_port()->name()) + _("MMC in"), DataType::MIDI, ae->make_port_name_non_relative (session->mmc_input_port()->name()) ); } else { sync->add_channel ( - _("MTC out"), DataType::MIDI, ae->make_port_name_non_relative (ae->mtc_output_port()->name()) + _("MTC out"), DataType::MIDI, ae->make_port_name_non_relative (session->mtc_output_port()->name()) ); sync->add_channel ( - _("MIDI control out"), DataType::MIDI, ae->make_port_name_non_relative (ae->midi_output_port()->name()) + _("MIDI control out"), DataType::MIDI, ae->make_port_name_non_relative (session->midi_output_port()->name()) ); sync->add_channel ( - _("MIDI clock out"), DataType::MIDI, ae->make_port_name_non_relative (ae->midi_clock_output_port()->name()) + _("MIDI clock out"), DataType::MIDI, ae->make_port_name_non_relative (session->midi_clock_output_port()->name()) ); sync->add_channel ( - _("MMC out"), DataType::MIDI, ae->make_port_name_non_relative (mmc.output_port()->name()) + _("MMC out"), DataType::MIDI, ae->make_port_name_non_relative (session->mmc_output_port()->name()) ); } diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 61fe27abd5..4db1604345 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -36,8 +36,6 @@ #include "pbd/signals.h" #include "pbd/stacktrace.h" -#include "midi++/mmc.h" - #include "ardour/ardour.h" #include "ardour/data_type.h" #include "ardour/session_handle.h" @@ -184,8 +182,6 @@ public: /* sets up the process callback thread */ static void thread_init_callback (void *); - MIDI::MachineControl& mmc() { return _mmc; } - private: AudioEngine (); @@ -207,10 +203,8 @@ public: framecnt_t last_monitor_check; /// the number of frames processed since start() was called framecnt_t _processed_frames; - bool _pre_freewheel_mmc_enabled; Glib::Threads::Thread* m_meter_thread; ProcessThread* _main_thread; - MIDI::MachineControl _mmc; void meter_thread (); void start_metering_thread (); diff --git a/libs/ardour/ardour/midiport_manager.h b/libs/ardour/ardour/midiport_manager.h index 9a32bfe475..9f93c43d5a 100644 --- a/libs/ardour/ardour/midiport_manager.h +++ b/libs/ardour/ardour/midiport_manager.h @@ -65,7 +65,7 @@ class MidiPortManager { boost::shared_ptr midi_clock_input_port() const { return _midi_clock_input_port; } boost::shared_ptr midi_clock_output_port() const { return _midi_clock_output_port; } - void set_midi_port_states (); + void set_midi_port_states (const XMLNodeList&); std::list get_midi_port_states () const; PBD::Signal0 PortsChanged; diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index 895294810e..6d45597a41 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -38,7 +38,7 @@ namespace ARDOUR { -class PortManager : public MidiPortManager +class PortManager { public: typedef std::map > Ports; diff --git a/libs/ardour/ardour/rc_configuration.h b/libs/ardour/ardour/rc_configuration.h index ff1c5f035c..e2f68477a1 100644 --- a/libs/ardour/ardour/rc_configuration.h +++ b/libs/ardour/ardour/rc_configuration.h @@ -52,7 +52,6 @@ class RCConfiguration : public Configuration XMLNode * instant_xml (const std::string& str); XMLNode* control_protocol_state () { return _control_protocol_state; } - std::list midi_port_states () { return _midi_port_states; } /* define accessor methods */ @@ -81,11 +80,6 @@ class RCConfiguration : public Configuration #undef CONFIG_VARIABLE_SPECIAL XMLNode* _control_protocol_state; - - /** MIDI port nodes from the RC configuration. We store them so that we can set their - state once the audio engine and hence ports are up. - */ - std::list _midi_port_states; }; /* XXX: rename this */ diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 31f0658931..ded5a07f91 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -110,6 +110,8 @@ class IOProcessor; class ImportStatus; class MidiClockTicker; class MidiControlUI; +class MidiPortManager; +class MidiPort; class MidiRegion; class MidiSource; class MidiTrack; @@ -860,6 +862,18 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi boost::shared_ptr ltc_input_io() { return _ltc_input; } boost::shared_ptr ltc_output_io() { return _ltc_output; } + MIDI::Port* midi_input_port () const; + MIDI::Port* midi_output_port () const; + MIDI::Port* mmc_output_port () const; + MIDI::Port* mmc_input_port () const; + + boost::shared_ptr midi_clock_output_port () const; + boost::shared_ptr midi_clock_input_port () const; + boost::shared_ptr mtc_output_port () const; + boost::shared_ptr mtc_input_port () const; + + MIDI::MachineControl& mmc() { return *_mmc; } + /* Callbacks specifically related to JACK, and called directly * from the JACK audio backend. */ @@ -1597,6 +1611,10 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void reconnect_ltc_input (); void reconnect_ltc_output (); + + /* persistent, non-track related MIDI ports */ + MidiPortManager* _midi_ports; + MIDI::MachineControl* _mmc; }; } // namespace ARDOUR diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 109f76334a..5b19253a26 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -71,7 +71,6 @@ AudioEngine::AudioEngine () , monitor_check_interval (INT32_MAX) , last_monitor_check (0) , _processed_frames (0) - , _pre_freewheel_mmc_enabled (false) , m_meter_thread (0) , _main_thread (0) { @@ -543,12 +542,6 @@ AudioEngine::start () return 0; } - /* if we're still connected (i.e. previously paused), no need to - * re-register ports. - */ - - bool have_ports = (!ports.reader()->empty()); - _processed_frames = 0; last_monitor_check = 0; @@ -566,11 +559,6 @@ AudioEngine::start () } } - if (!have_ports) { - PortManager::create_ports (); - _mmc.set_ports (mmc_input_port(), mmc_output_port()); - } - start_metering_thread (); Running(); /* EMIT SIGNAL */ @@ -903,13 +891,6 @@ AudioEngine::sync_callback (TransportState state, framepos_t position) void AudioEngine::freewheel_callback (bool onoff) { - if (onoff) { - _pre_freewheel_mmc_enabled = _mmc.send_enabled (); - _mmc.enable_send (false); - } else { - _mmc.enable_send (_pre_freewheel_mmc_enabled); - } - _freewheeling = onoff; } diff --git a/libs/ardour/midi_ui.cc b/libs/ardour/midi_ui.cc index e75c05c593..7346c0244c 100644 --- a/libs/ardour/midi_ui.cc +++ b/libs/ardour/midi_ui.cc @@ -118,7 +118,7 @@ void MidiControlUI::reset_ports () { if (port_sources.empty()) { - AsyncMIDIPort* async = dynamic_cast (AudioEngine::instance()->midi_input_port()); + AsyncMIDIPort* async = dynamic_cast (_session.midi_input_port()); if (!async) { return; diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc index 7abd47580b..d17401cee8 100644 --- a/libs/ardour/midiport_manager.cc +++ b/libs/ardour/midiport_manager.cc @@ -32,6 +32,7 @@ using namespace PBD; MidiPortManager::MidiPortManager () { + create_ports (); } MidiPortManager::~MidiPortManager () @@ -110,21 +111,16 @@ MidiPortManager::create_ports () _mtc_output_port->set_always_parse (true); _midi_clock_input_port->set_always_parse (true); _midi_clock_output_port->set_always_parse (true); - - set_midi_port_states (); } void -MidiPortManager::set_midi_port_states () +MidiPortManager::set_midi_port_states (const XMLNodeList&nodes) { - list nodes; XMLProperty* prop; typedef map > PortMap; PortMap ports; const int version = 0; - nodes = Config->midi_port_states (); - ports.insert (make_pair (_mtc_input_port->name(), _mtc_input_port)); ports.insert (make_pair (_mtc_output_port->name(), _mtc_output_port)); ports.insert (make_pair (_midi_clock_input_port->name(), _midi_clock_input_port)); @@ -134,7 +130,7 @@ MidiPortManager::set_midi_port_states () ports.insert (make_pair (_mmc_input_port->name(), _mmc_in)); ports.insert (make_pair (_mmc_output_port->name(), _mmc_out)); - for (list::iterator n = nodes.begin(); n != nodes.end(); ++n) { + for (XMLNodeList::const_iterator n = nodes.begin(); n != nodes.end(); ++n) { if ((prop = (*n)->property (X_("name"))) == 0) { continue; } diff --git a/libs/ardour/rc_configuration.cc b/libs/ardour/rc_configuration.cc index 071d50ac03..f4612699d4 100644 --- a/libs/ardour/rc_configuration.cc +++ b/libs/ardour/rc_configuration.cc @@ -65,10 +65,6 @@ RCConfiguration::RCConfiguration () RCConfiguration::~RCConfiguration () { - for (list::iterator i = _midi_port_states.begin(); i != _midi_port_states.end(); ++i) { - delete *i; - } - delete _control_protocol_state; } @@ -176,11 +172,6 @@ RCConfiguration::get_state () root = new XMLNode("Ardour"); - list midi_port_nodes = AudioEngine::instance()->get_midi_port_states(); - for (list::const_iterator n = midi_port_nodes.begin(); n != midi_port_nodes.end(); ++n) { - root->add_child_nocopy (**n); - } - root->add_child_nocopy (get_variables ()); root->add_child_nocopy (SessionMetadata::Metadata()->get_user_state()); @@ -226,12 +217,6 @@ RCConfiguration::set_state (const XMLNode& root, int version) XMLNodeConstIterator niter; XMLNode *node; - for (list::iterator i = _midi_port_states.begin(); i != _midi_port_states.end(); ++i) { - delete *i; - } - - _midi_port_states.clear (); - Stateful::save_extra_xml (root); for (niter = nlist.begin(); niter != nlist.end(); ++niter) { @@ -244,8 +229,6 @@ RCConfiguration::set_state (const XMLNode& root, int version) SessionMetadata::Metadata()->set_state (*node, version); } else if (node->name() == ControlProtocolManager::state_node_name) { _control_protocol_state = new XMLNode (*node); - } else if (node->name() == ARDOUR::Port::state_node_name) { - _midi_port_states.push_back (new XMLNode (*node)); } } diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index dc6456b73f..4dc5a07a77 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -157,6 +157,11 @@ Session::Session (AudioEngine &eng, _locations = new Locations (*this); ltc_encoder = NULL; + _midi_ports = new MidiPortManager; + _mmc = new MIDI::MachineControl; + + _mmc->set_ports (_midi_ports->mmc_input_port(), _midi_ports->mmc_output_port()); + if (how_many_dsp_threads () > 1) { /* For now, only create the graph if we are using >1 DSP threads, as it is a bit slower than the old code with 1 thread. @@ -330,6 +335,8 @@ Session::destroy () /* not strictly necessary, but doing it here allows the shared_ptr debugging to work */ playlists.reset (); + delete _mmc; + delete _midi_ports; delete _locations; DEBUG_TRACE (DEBUG::Destruction, "Session::destroy() done\n"); @@ -1175,7 +1182,7 @@ Session::enable_record () if (g_atomic_int_compare_and_exchange (&_record_status, rs, Recording)) { _last_record_location = _transport_frame; - AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordStrobe)); + _mmc->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordStrobe)); if (Config->get_monitoring_model() == HardwareMonitoring && config.get_auto_input()) { set_track_monitor_input_status (true); @@ -1196,7 +1203,7 @@ Session::disable_record (bool rt_context, bool force) if ((!Config->get_latched_record_enable () && !play_loop) || force) { g_atomic_int_set (&_record_status, Disabled); - AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordExit)); + _mmc->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordExit)); } else { if (rs == Recording) { g_atomic_int_set (&_record_status, Enabled); @@ -1250,7 +1257,7 @@ Session::maybe_enable_record () enable_record (); } } else { - AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordPause)); + _mmc->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdRecordPause)); RecordStateChanged (); /* EMIT SIGNAL */ } diff --git a/libs/ardour/session_export.cc b/libs/ardour/session_export.cc index ab37e915bf..62eb61ab83 100644 --- a/libs/ardour/session_export.cc +++ b/libs/ardour/session_export.cc @@ -92,8 +92,8 @@ Session::pre_export () /* disable MMC output early */ - _pre_export_mmc_enabled = AudioEngine::instance()->mmc().send_enabled (); - AudioEngine::instance()->mmc().enable_send (false); + _pre_export_mmc_enabled = _mmc->send_enabled (); + _mmc->enable_send (false); return 0; } @@ -236,7 +236,7 @@ Session::finalize_audio_export () export_freewheel_connection.disconnect(); - AudioEngine::instance()->mmc().enable_send (_pre_export_mmc_enabled); + _mmc->enable_send (_pre_export_mmc_enabled); /* maybe write CUE/TOC */ diff --git a/libs/ardour/session_midi.cc b/libs/ardour/session_midi.cc index 07a34283e3..6d3083df77 100644 --- a/libs/ardour/session_midi.cc +++ b/libs/ardour/session_midi.cc @@ -425,7 +425,7 @@ Session::send_full_time_code (framepos_t const t, pframes_t nframes) // Send message at offset 0, sent time is for the start of this cycle - MidiBuffer& mb (AudioEngine::instance()->mtc_output_port()->get_midi_buffer (nframes)); + MidiBuffer& mb (_midi_ports->mtc_output_port()->get_midi_buffer (nframes)); mb.push_back (0, sizeof (msg), msg); _pframes_since_last_mtc = 0; @@ -515,7 +515,7 @@ Session::send_midi_time_code_for_cycle (framepos_t start_frame, framepos_t end_f pframes_t const out_stamp = (msg_time - start_frame) / _transport_speed; assert (out_stamp < nframes); - MidiBuffer& mb (AudioEngine::instance()->mtc_output_port()->get_midi_buffer(nframes)); + MidiBuffer& mb (_midi_ports->mtc_output_port()->get_midi_buffer(nframes)); if (!mb.push_back (out_stamp, 2, mtc_msg)) { error << string_compose(_("Session: cannot send quarter-frame MTC message (%1)"), strerror (errno)) << endmsg; @@ -603,3 +603,45 @@ Session::start_midi_thread () return 0; } +MIDI::Port* +Session::midi_input_port () const +{ + return _midi_ports->midi_input_port (); +} +MIDI::Port* +Session::midi_output_port () const +{ + return _midi_ports->midi_output_port (); +} +boost::shared_ptr +Session::midi_clock_output_port () const +{ + return _midi_ports->midi_clock_output_port (); +} +boost::shared_ptr +Session::midi_clock_input_port () const +{ + return _midi_ports->midi_clock_input_port (); +} +boost::shared_ptr +Session::mtc_output_port () const +{ + return _midi_ports->mtc_output_port (); +} +boost::shared_ptr +Session::mtc_input_port () const +{ + return _midi_ports->mtc_input_port (); +} + +MIDI::Port* +Session::mmc_output_port () const +{ + return _midi_ports->mmc_output_port (); +} + +MIDI::Port* +Session::mmc_input_port () const +{ + return _midi_ports->mmc_input_port (); +} diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 50905ef434..a7d7a0be4c 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -361,8 +361,8 @@ Session::second_stage_init () // send_full_time_code (0); _engine.transport_locate (0); - AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdMmcReset)); - AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (Timecode::Time ())); + _mmc->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdMmcReset)); + _mmc->send (MIDI::MachineControlCommand (Timecode::Time ())); MIDI::Name::MidiPatchManager::instance().set_session (this); @@ -983,6 +983,15 @@ Session::state (bool full_state) /* various options */ + list midi_port_nodes = _midi_ports->get_midi_port_states(); + if (!midi_port_nodes.empty()) { + XMLNode* midi_port_stuff = new XMLNode ("MIDIPorts"); + for (list::const_iterator n = midi_port_nodes.begin(); n != midi_port_nodes.end(); ++n) { + midi_port_stuff->add_child_nocopy (**n); + } + node->add_child_nocopy (*midi_port_stuff); + } + node->add_child_nocopy (config.get_variables ()); node->add_child_nocopy (ARDOUR::SessionMetadata::Metadata()->get_state()); @@ -1188,6 +1197,11 @@ Session::set_state (const XMLNode& node, int version) Evoral::init_event_id_counter (atoi (prop->value())); } + + if ((child = find_named_node (node, "MIDIPorts")) != 0) { + _midi_ports->set_midi_port_states (child->children()); + } + IO::disable_connecting (); Stateful::save_extra_xml (node); @@ -3364,11 +3378,11 @@ Session::config_changed (std::string p, bool ours) } else if (p == "mmc-device-id" || p == "mmc-receive-id" || p == "mmc-receive-device-id") { - AudioEngine::instance()->mmc().set_receive_device_id (Config->get_mmc_receive_device_id()); + _mmc->set_receive_device_id (Config->get_mmc_receive_device_id()); } else if (p == "mmc-send-id" || p == "mmc-send-device-id") { - AudioEngine::instance()->mmc().set_send_device_id (Config->get_mmc_send_device_id()); + _mmc->set_send_device_id (Config->get_mmc_send_device_id()); } else if (p == "midi-control") { @@ -3431,7 +3445,7 @@ Session::config_changed (std::string p, bool ours) } else if (p == "send-mmc") { - AudioEngine::instance()->mmc().enable_send (Config->get_send_mmc ()); + _mmc->enable_send (Config->get_send_mmc ()); } else if (p == "midi-feedback") { @@ -3489,13 +3503,13 @@ Session::config_changed (std::string p, bool ours) } else if (p == "initial-program-change") { - if (AudioEngine::instance()->mmc().output_port() && Config->get_initial_program_change() >= 0) { + if (_mmc->output_port() && Config->get_initial_program_change() >= 0) { MIDI::byte buf[2]; buf[0] = MIDI::program; // channel zero by default buf[1] = (Config->get_initial_program_change() & 0x7f); - AudioEngine::instance()->mmc().output_port()->midimsg (buf, sizeof (buf), 0); + _mmc->output_port()->midimsg (buf, sizeof (buf), 0); } } else if (p == "solo-mute-override") { // catch_up_on_solo_mute_override (); @@ -3559,27 +3573,25 @@ Session::load_diskstreams_2X (XMLNode const & node, int) void Session::setup_midi_machine_control () { - MIDI::MachineControl& mmc (AudioEngine::instance()->mmc ()); - - mmc.Play.connect_same_thread (*this, boost::bind (&Session::mmc_deferred_play, this, _1)); - mmc.DeferredPlay.connect_same_thread (*this, boost::bind (&Session::mmc_deferred_play, this, _1)); - mmc.Stop.connect_same_thread (*this, boost::bind (&Session::mmc_stop, this, _1)); - mmc.FastForward.connect_same_thread (*this, boost::bind (&Session::mmc_fast_forward, this, _1)); - mmc.Rewind.connect_same_thread (*this, boost::bind (&Session::mmc_rewind, this, _1)); - mmc.Pause.connect_same_thread (*this, boost::bind (&Session::mmc_pause, this, _1)); - mmc.RecordPause.connect_same_thread (*this, boost::bind (&Session::mmc_record_pause, this, _1)); - mmc.RecordStrobe.connect_same_thread (*this, boost::bind (&Session::mmc_record_strobe, this, _1)); - mmc.RecordExit.connect_same_thread (*this, boost::bind (&Session::mmc_record_exit, this, _1)); - mmc.Locate.connect_same_thread (*this, boost::bind (&Session::mmc_locate, this, _1, _2)); - mmc.Step.connect_same_thread (*this, boost::bind (&Session::mmc_step, this, _1, _2)); - mmc.Shuttle.connect_same_thread (*this, boost::bind (&Session::mmc_shuttle, this, _1, _2, _3)); - mmc.TrackRecordStatusChange.connect_same_thread (*this, boost::bind (&Session::mmc_record_enable, this, _1, _2, _3)); + _mmc->Play.connect_same_thread (*this, boost::bind (&Session::mmc_deferred_play, this, _1)); + _mmc->DeferredPlay.connect_same_thread (*this, boost::bind (&Session::mmc_deferred_play, this, _1)); + _mmc->Stop.connect_same_thread (*this, boost::bind (&Session::mmc_stop, this, _1)); + _mmc->FastForward.connect_same_thread (*this, boost::bind (&Session::mmc_fast_forward, this, _1)); + _mmc->Rewind.connect_same_thread (*this, boost::bind (&Session::mmc_rewind, this, _1)); + _mmc->Pause.connect_same_thread (*this, boost::bind (&Session::mmc_pause, this, _1)); + _mmc->RecordPause.connect_same_thread (*this, boost::bind (&Session::mmc_record_pause, this, _1)); + _mmc->RecordStrobe.connect_same_thread (*this, boost::bind (&Session::mmc_record_strobe, this, _1)); + _mmc->RecordExit.connect_same_thread (*this, boost::bind (&Session::mmc_record_exit, this, _1)); + _mmc->Locate.connect_same_thread (*this, boost::bind (&Session::mmc_locate, this, _1, _2)); + _mmc->Step.connect_same_thread (*this, boost::bind (&Session::mmc_step, this, _1, _2)); + _mmc->Shuttle.connect_same_thread (*this, boost::bind (&Session::mmc_shuttle, this, _1, _2, _3)); + _mmc->TrackRecordStatusChange.connect_same_thread (*this, boost::bind (&Session::mmc_record_enable, this, _1, _2, _3)); /* also handle MIDI SPP because its so common */ - mmc.SPPStart.connect_same_thread (*this, boost::bind (&Session::spp_start, this)); - mmc.SPPContinue.connect_same_thread (*this, boost::bind (&Session::spp_continue, this)); - mmc.SPPStop.connect_same_thread (*this, boost::bind (&Session::spp_stop, this)); + _mmc->SPPStart.connect_same_thread (*this, boost::bind (&Session::spp_start, this)); + _mmc->SPPContinue.connect_same_thread (*this, boost::bind (&Session::spp_continue, this)); + _mmc->SPPStop.connect_same_thread (*this, boost::bind (&Session::spp_stop, this)); } boost::shared_ptr diff --git a/libs/ardour/session_transport.cc b/libs/ardour/session_transport.cc index 1e492741b8..ab6d68fd67 100644 --- a/libs/ardour/session_transport.cc +++ b/libs/ardour/session_transport.cc @@ -618,7 +618,7 @@ Session::non_realtime_stop (bool abort, int on_entry, bool& finished) _send_timecode_update = true; if (!dynamic_cast(_slave)) { - AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdStop)); + _mmc->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdStop)); /* This (::non_realtime_stop()) gets called by main process thread, which will lead to confusion @@ -1271,7 +1271,7 @@ Session::start_transport () Timecode::Time time; timecode_time_subframes (_transport_frame, time); if (!dynamic_cast(_slave)) { - AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdDeferredPlay)); + _mmc->send (MIDI::MachineControlCommand (MIDI::MachineControl::cmdDeferredPlay)); } } @@ -1392,7 +1392,7 @@ Session::switch_to_sync_source (SyncSource src) } try { - new_slave = new MTC_Slave (*this, *AudioEngine::instance()->mtc_input_port()); + new_slave = new MTC_Slave (*this, *_midi_ports->mtc_input_port()); } catch (failed_constructor& err) { @@ -1421,7 +1421,7 @@ Session::switch_to_sync_source (SyncSource src) } try { - new_slave = new MIDIClock_Slave (*this, *AudioEngine::instance()->midi_clock_input_port(), 24); + new_slave = new MIDIClock_Slave (*this, *_midi_ports->midi_clock_input_port(), 24); } catch (failed_constructor& err) { @@ -1648,7 +1648,7 @@ Session::send_mmc_locate (framepos_t t) if (!_engine.freewheeling()) { Timecode::Time time; timecode_time_subframes (t, time); - AudioEngine::instance()->mmc().send (MIDI::MachineControlCommand (time)); + _mmc->send (MIDI::MachineControlCommand (time)); } } diff --git a/libs/ardour/ticker.cc b/libs/ardour/ticker.cc index 0ed4427b72..9a29df2641 100644 --- a/libs/ardour/ticker.cc +++ b/libs/ardour/ticker.cc @@ -150,7 +150,7 @@ MidiClockTicker::session_going_away () void MidiClockTicker::update_midi_clock_port() { - _midi_port = AudioEngine::instance()->midi_clock_output_port(); + _midi_port = _session->midi_clock_output_port(); } void diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc index 2820b069dc..ba1858a174 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc @@ -60,8 +60,8 @@ GenericMidiControlProtocol::GenericMidiControlProtocol (Session& s) , _threshold (10) , gui (0) { - _input_port = AudioEngine::instance()->midi_input_port (); - _output_port = AudioEngine::instance()->midi_output_port (); + _input_port = s.midi_input_port (); + _output_port = s.midi_output_port (); do_feedback = false; _feedback_interval = 10000; // microseconds -- cgit v1.2.3 From bc1cc154dc5b67cd49bbca87537331af3328f85b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Sep 2013 14:21:25 -0400 Subject: always save/keep audio/MIDI setup states so that they are available for use *after* instances where JACK was already running --- gtk2_ardour/ardour_ui.cc | 17 +++++++++++++++ gtk2_ardour/ardour_ui.h | 5 +++++ gtk2_ardour/ardour_ui_ed.cc | 5 ++--- gtk2_ardour/engine_dialog.cc | 52 ++++++++++++++++++-------------------------- gtk2_ardour/engine_dialog.h | 3 --- gtk2_ardour/startup.cc | 2 +- gtk2_ardour/startup.h | 2 -- 7 files changed, 46 insertions(+), 40 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 9eae8b4268..b7d6459ae2 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -214,6 +214,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) } ui_config = new UIConfiguration(); + _audio_midi_setup = new EngineControl; editor = 0; mixer = 0; @@ -4145,3 +4146,19 @@ ARDOUR_UI::reset_route_peak_display (Route* route) reset_peak_display (); } } + +EngineControl* +ARDOUR_UI::audio_midi_setup_widget () +{ + /* remove widget from any existing parent, since it is about + to be packed somewhere else. + */ + + Gtk::Container* parent = _audio_midi_setup->get_parent (); + + if (parent) { + parent->remove (*_audio_midi_setup); + } + + return _audio_midi_setup; +} diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index f8b47bd3e8..6be0d39848 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -90,6 +90,7 @@ class BigClockWindow; class BundleManager; class ButtonJoiner; class ConnectionEditor; +class EngineControl; class KeyEditor; class LocationUIWindow; class MainClock; @@ -288,6 +289,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr const std::string& announce_string() const { return _announce_string; } + EngineControl* audio_midi_setup_widget(); + protected: friend class PublicEditor; @@ -748,6 +751,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr std::string _announce_string; void check_announcements (); + + EngineControl* _audio_midi_setup; }; #endif /* __ardour_gui_h__ */ diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index c30627fdec..002b7dd3ed 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -647,11 +647,10 @@ 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()); - if (_startup && _startup->engine_control() && _startup->engine_control()->was_used()) { - Config->add_extra_xml (_startup->engine_control()->get_state()); - } Config->save_state(); + if (ui_config->dirty()) { ui_config->save_state (); } diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index c50198a960..7a543306e6 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -68,7 +68,6 @@ EngineControl::EngineControl () #else , basic_packer (9, 2) #endif - , _used (false) { using namespace Notebook_Helpers; Label* label; @@ -471,31 +470,28 @@ EngineControl::get_state () XMLNode* root = new XMLNode ("AudioMIDISetup"); std::string path; - if (_used) { - - if (!states.empty()) { - XMLNode* state_nodes = new XMLNode ("EngineStates"); + if (!states.empty()) { + XMLNode* state_nodes = new XMLNode ("EngineStates"); + + for (StateList::const_iterator i = states.begin(); i != states.end(); ++i) { - for (StateList::const_iterator i = states.begin(); i != states.end(); ++i) { - - XMLNode* node = new XMLNode ("State"); - - node->add_property ("backend", (*i).backend); - node->add_property ("driver", (*i).driver); - node->add_property ("device", (*i).device); - node->add_property ("sample-rate", (*i).sample_rate); - node->add_property ("buffer-size", (*i).buffer_size); - node->add_property ("input-latency", (*i).input_latency); - node->add_property ("output-latency", (*i).output_latency); - node->add_property ("input-channels", (*i).input_channels); - node->add_property ("output-channels", (*i).output_channels); - node->add_property ("active", (*i).active ? "yes" : "no"); - - state_nodes->add_child_nocopy (*node); - } - - root->add_child_nocopy (*state_nodes); + XMLNode* node = new XMLNode ("State"); + + node->add_property ("backend", (*i).backend); + node->add_property ("driver", (*i).driver); + node->add_property ("device", (*i).device); + node->add_property ("sample-rate", (*i).sample_rate); + node->add_property ("buffer-size", (*i).buffer_size); + node->add_property ("input-latency", (*i).input_latency); + node->add_property ("output-latency", (*i).output_latency); + node->add_property ("input-channels", (*i).input_channels); + node->add_property ("output-channels", (*i).output_channels); + node->add_property ("active", (*i).active ? "yes" : "no"); + + state_nodes->add_child_nocopy (*node); } + + root->add_child_nocopy (*state_nodes); } return *root; @@ -518,6 +514,7 @@ EngineControl::set_state (const XMLNode& root) states.clear (); + for (citer = clist.begin(); citer != clist.end(); ++citer) { child = *citer; @@ -653,13 +650,6 @@ EngineControl::setup_engine (bool start) return -1; } - /* we've used this dialog to configure the engine, which means - * that our state becomes relevant for saving (and thus - * implicitly, restoring. - */ - - _used = true; - /* get a pointer to the current state object, creating one if * necessary */ diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 3ee7a388bc..7c9c652f57 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -41,7 +41,6 @@ class EngineControl : public Gtk::VBox { static bool need_setup (); int setup_engine (bool start); - bool was_used() const { return _used; } XMLNode& get_state (); void set_state (const XMLNode&); @@ -96,8 +95,6 @@ class EngineControl : public Gtk::VBox { sigc::connection sr_connection; sigc::connection bs_connection; - bool _used; - static bool engine_running (); void driver_changed (); diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index 2e6fe49e98..d776e3c36f 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -314,7 +314,7 @@ ArdourStartup::session_folder () void ArdourStartup::setup_audio_page () { - engine_dialog = manage (new EngineControl); + engine_dialog = ARDOUR_UI::instance()->audio_midi_setup_widget (); engine_dialog->set_border_width (12); diff --git a/gtk2_ardour/startup.h b/gtk2_ardour/startup.h index 4af6ffbc2a..5a95994c4e 100644 --- a/gtk2_ardour/startup.h +++ b/gtk2_ardour/startup.h @@ -56,8 +56,6 @@ class ArdourStartup : public Gtk::Assistant { bool use_session_template(); std::string session_template_name(); - EngineControl* engine_control() { return engine_dialog; } - // advanced session options bool create_master_bus() const; -- cgit v1.2.3 From 94efddd240f0cef752bfba5e1ccb06eb952221d1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 5 Sep 2013 21:39:43 -0400 Subject: fix a problem creating and displaying connected status for ports not owned by ardour (e.g. system:....) This was caused by using jack_port_get_connections() which will not return the correct status for ports owned by another JACK client. Because of the potential for deadlock by calling jack_port_get_all_connections(), an extra argument was added to several PortEngine:: API calls to specify whether the call is in a process-callback context, which defaults to true. The only place where false is passed is within the GlobalPortMatrix when we need to determine whether two non-ardour ports are connected. --- gtk2_ardour/global_port_matrix.cc | 9 ++++--- libs/ardour/ardour/jack_portengine.h | 9 ++++--- libs/ardour/ardour/port_engine.h | 8 +++--- libs/ardour/jack_portengine.cc | 48 +++++++++++++++++++++++++++++------- libs/ardour/port_manager.cc | 22 ++++++++++++----- 5 files changed, 70 insertions(+), 26 deletions(-) diff --git a/gtk2_ardour/global_port_matrix.cc b/gtk2_ardour/global_port_matrix.cc index cdba7f5c27..80e2616bd8 100644 --- a/gtk2_ardour/global_port_matrix.cc +++ b/gtk2_ardour/global_port_matrix.cc @@ -19,6 +19,7 @@ #include #include + #include "global_port_matrix.h" #include "utils.h" @@ -118,15 +119,17 @@ GlobalPortMatrix::get_state (BundleChannel c[2]) const if (!p && !q) { /* two non-Ardour ports; things are slightly more involved */ - /* XXX: is this the easiest way to do this? */ - /* XXX: isn't this very inefficient? */ + + /* get a port handle for one of them .. */ PortEngine::PortHandle ph = AudioEngine::instance()->port_engine().get_port_by_name (*i); if (!ph) { return PortMatrixNode::NOT_ASSOCIATED; } - if (AudioEngine::instance()->port_engine().connected (ph)) { + /* see if it is connected to the other one ... */ + + if (AudioEngine::instance()->port_engine().connected_to (ph, *j, false)) { return PortMatrixNode::ASSOCIATED; } diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h index f8db0c6ec4..0e1eb48c5c 100644 --- a/libs/ardour/ardour/jack_portengine.h +++ b/libs/ardour/ardour/jack_portengine.h @@ -63,11 +63,12 @@ class JACKPortEngine : public PortEngine PortHandle register_port (const std::string& shortname, ARDOUR::DataType, ARDOUR::PortFlags); void unregister_port (PortHandle); - bool connected (PortHandle); - bool connected_to (PortHandle, const std::string&); - bool physically_connected (PortHandle); - int get_connections (PortHandle, std::vector&); + bool connected (PortHandle, bool process_callback_safe); + bool connected_to (PortHandle, const std::string&, bool process_callback_safe); + bool physically_connected (PortHandle, bool process_callback_safe); + int get_connections (PortHandle, std::vector&, bool process_callback_safe); int connect (PortHandle, const std::string&); + int disconnect (PortHandle, const std::string&); int disconnect_all (PortHandle); int connect (const std::string& src, const std::string& dst); diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index bb7ec5cb66..71f93ea05e 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -185,21 +185,21 @@ class PortEngine { /** Return true if the port referred to by @param port has any connections * to other ports. Return false otherwise. */ - virtual bool connected (PortHandle port) = 0; + virtual bool connected (PortHandle port, bool process_callback_safe = true) = 0; /** Return true if the port referred to by @param port is connected to * the port named by @param name. Return false otherwise. */ - virtual bool connected_to (PortHandle, const std::string& name) = 0; + virtual bool connected_to (PortHandle, const std::string& name, bool process_callback_safe = true) = 0; /** Return true if the port referred to by @param port has any connections * to ports marked with the PortFlag IsPhysical. Return false otherwise. */ - virtual bool physically_connected (PortHandle port) = 0; + virtual bool physically_connected (PortHandle port, bool process_callback_safe = true) = 0; /** Place the names of all ports connected to the port named by @param * ports into @param names, and return the number of connections. */ - virtual int get_connections (PortHandle port, std::vector& names) = 0; + virtual int get_connections (PortHandle port, std::vector& names, bool process_callback_safe = true) = 0; /* MIDI */ diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc index b0597f8269..4595857175 100644 --- a/libs/ardour/jack_portengine.cc +++ b/libs/ardour/jack_portengine.cc @@ -183,11 +183,18 @@ JACKPortEngine::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int } bool -JACKPortEngine::connected (PortHandle port) +JACKPortEngine::connected (PortHandle port, bool process_callback_safe) { bool ret = false; - const char** ports = jack_port_get_connections ((jack_port_t*) port); + const char** ports; + + if (process_callback_safe) { + ports = jack_port_get_connections ((jack_port_t*)port); + } else { + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); + ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); + } if (ports) { ret = true; @@ -199,10 +206,17 @@ JACKPortEngine::connected (PortHandle port) } bool -JACKPortEngine::connected_to (PortHandle port, const std::string& other) +JACKPortEngine::connected_to (PortHandle port, const std::string& other, bool process_callback_safe) { bool ret = false; - const char** ports = jack_port_get_connections ((jack_port_t*) port); + const char** ports; + + if (process_callback_safe) { + ports = jack_port_get_connections ((jack_port_t*)port); + } else { + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); + ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); + } if (ports) { for (int i = 0; ports[i]; ++i) { @@ -217,12 +231,19 @@ JACKPortEngine::connected_to (PortHandle port, const std::string& other) } bool -JACKPortEngine::physically_connected (PortHandle p) +JACKPortEngine::physically_connected (PortHandle p, bool process_callback_safe) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); jack_port_t* port = (jack_port_t*) p; - const char** ports = jack_port_get_connections (port); + const char** ports; + + if (process_callback_safe) { + ports = jack_port_get_connections ((jack_port_t*)port); + } else { + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); + ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); + } if (ports) { for (int i = 0; ports[i]; ++i) { @@ -240,9 +261,16 @@ JACKPortEngine::physically_connected (PortHandle p) } int -JACKPortEngine::get_connections (PortHandle port, vector& s) +JACKPortEngine::get_connections (PortHandle port, vector& s, bool process_callback_safe) { - const char** ports = jack_port_get_connections ((jack_port_t*) port); + const char** ports; + + if (process_callback_safe) { + ports = jack_port_get_connections ((jack_port_t*)port); + } else { + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); + } if (ports) { for (int i = 0; ports[i]; ++i) { @@ -443,7 +471,9 @@ int JACKPortEngine::connect (const std::string& src, const std::string& dst) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - return jack_connect (_priv_jack, src.c_str(), dst.c_str()); + + int r = jack_connect (_priv_jack, src.c_str(), dst.c_str()); + return r; } int diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index 4e467e3008..1758ea4a3f 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -385,8 +385,13 @@ PortManager::connect (const string& source, const string& destination) } else if (dst) { ret = dst->connect (s); } else { - /* neither port is known to us, and this API isn't intended for use as a general patch bay */ - ret = -1; + /* neither port is known to us ...hand-off to the PortEngine + */ + if (_impl) { + ret = _impl->connect (s, d); + } else { + ret = -1; + } } if (ret > 0) { @@ -412,12 +417,17 @@ PortManager::disconnect (const string& source, const string& destination) boost::shared_ptr dst = get_port_by_name (d); if (src) { - ret = src->disconnect (d); + ret = src->disconnect (d); } else if (dst) { - ret = dst->disconnect (s); + ret = dst->disconnect (s); } else { - /* neither port is known to us, and this API isn't intended for use as a general patch bay */ - ret = -1; + /* neither port is known to us ...hand-off to the PortEngine + */ + if (_impl) { + ret = _impl->disconnect (s, d); + } else { + ret = -1; + } } return ret; } -- cgit v1.2.3 From 018465f7398f956b9188f6c3a45b9b5d31f34242 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 6 Sep 2013 10:38:49 -0400 Subject: exit early from AsyncMIDIPort::drain() if it will never be used in a process callback again --- libs/ardour/async_midi_port.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libs/ardour/async_midi_port.cc b/libs/ardour/async_midi_port.cc index 22b5438fe0..5bc8e22833 100644 --- a/libs/ardour/async_midi_port.cc +++ b/libs/ardour/async_midi_port.cc @@ -145,6 +145,12 @@ AsyncMIDIPort::drain (int check_interval_usecs) { RingBuffer< Evoral::Event >::rw_vector vec = { { 0, 0 }, { 0, 0} }; + if (!AudioEngine::instance()->running() || AudioEngine::instance()->session() == 0) { + /* no more process calls - it will never drain */ + return; + } + + if (is_process_thread()) { error << "Process thread called MIDI::AsyncMIDIPort::drain() - this cannot work" << endmsg; return; -- cgit v1.2.3 From 79fed95c1bd678f73f5b5ee8bbc44a517493c686 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 6 Sep 2013 10:39:14 -0400 Subject: tighten up error handling a little bit during various setup functions for Mackie Control --- libs/surfaces/mackie/mackie_control_protocol.cc | 32 ++++++++++++++++++------- libs/surfaces/mackie/mackie_control_protocol.h | 10 ++++---- libs/surfaces/mackie/surface.cc | 6 ++++- libs/surfaces/mackie/surface_port.cc | 7 ++++++ 4 files changed, 41 insertions(+), 14 deletions(-) diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index 635ce2b34a..32be851247 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -393,7 +393,9 @@ MackieControlProtocol::set_active (bool yn) BaseUI::run (); - create_surfaces (); + if (create_surfaces ()) { + return -1; + } connect_session_signals (); _active = true; update_surfaces (); @@ -606,7 +608,7 @@ MackieControlProtocol::set_profile (const string& profile_name) _device_profile = d->second; } -void +int MackieControlProtocol::set_device (const string& device_name, bool allow_activation) { map::iterator d = DeviceInfo::device_info.find (device_name); @@ -615,7 +617,7 @@ MackieControlProtocol::set_device (const string& device_name, bool allow_activat device_name, allow_activation)); if (d == DeviceInfo::device_info.end()) { - return; + return -1; } if (_active) { @@ -629,13 +631,16 @@ MackieControlProtocol::set_device (const string& device_name, bool allow_activat set_active (true); } else { if (_active) { - create_surfaces (); + if (create_surfaces ()) { + return -1; + } switch_banks (0, true); } } + return 0; } -void +int MackieControlProtocol::create_surfaces () { string device_name; @@ -652,7 +657,13 @@ MackieControlProtocol::create_surfaces () for (uint32_t n = 0; n < 1 + _device_info.extenders(); ++n) { - boost::shared_ptr surface (new Surface (*this, device_name, n, stype)); + boost::shared_ptr surface; + + try { + surface.reset (new Surface (*this, device_name, n, stype)); + } catch (...) { + return -1; + } { Glib::Threads::Mutex::Lock lm (surfaces_lock); @@ -698,6 +709,8 @@ MackieControlProtocol::create_surfaces () g_source_ref (psrc->gobj()); } } + + return 0; } void @@ -1573,14 +1586,17 @@ MackieControlProtocol::set_ipmidi_base (int16_t portnum) } } -void +int MackieControlProtocol::ipmidi_restart () { clear_ports (); clear_surfaces (); - create_surfaces (); + if (create_surfaces ()) { + return -1; + } switch_banks (_current_initial_bank, true); needs_ipmidi_restart = false; + return 0; } void diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h index ffc06a32eb..4669247726 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.h +++ b/libs/surfaces/mackie/mackie_control_protocol.h @@ -120,8 +120,8 @@ class MackieControlProtocol Mackie::DeviceProfile& device_profile() { return _device_profile; } int set_active (bool yn); - void set_device (const std::string&, bool allow_activation = true); - void set_profile (const std::string&); + int set_device (const std::string&, bool allow_activation = true); + void set_profile (const std::string&); FlipMode flip_mode () const { return _flip_mode; } ViewMode view_mode () const { return _view_mode; } @@ -291,7 +291,7 @@ class MackieControlProtocol ARDOUR::RouteNotificationList _last_selected_routes; - void create_surfaces (); + int create_surfaces (); bool periodic(); void build_gui (); bool midi_input_handler (Glib::IOCondition ioc, MIDI::Port* port); @@ -301,8 +301,8 @@ class MackieControlProtocol void build_button_map (); void gui_track_selection_changed (ARDOUR::RouteNotificationListPtr, bool save_list); void _gui_track_selection_changed (ARDOUR::RouteNotificationList*, bool save_list); - void ipmidi_restart (); - void initialize (); + int ipmidi_restart (); + void initialize (); /* BUTTON HANDLING */ diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc index 23cef9d13c..507491d84c 100644 --- a/libs/surfaces/mackie/surface.cc +++ b/libs/surfaces/mackie/surface.cc @@ -86,7 +86,11 @@ Surface::Surface (MackieControlProtocol& mcp, const std::string& device_name, ui { DEBUG_TRACE (DEBUG::MackieControl, "Surface::Surface init\n"); - _port = new SurfacePort (*this); + try { + _port = new SurfacePort (*this); + } catch (...) { + throw failed_constructor (); + } /* only the first Surface object has global controls */ diff --git a/libs/surfaces/mackie/surface_port.cc b/libs/surfaces/mackie/surface_port.cc index 6583f3307f..508f501f59 100644 --- a/libs/surfaces/mackie/surface_port.cc +++ b/libs/surfaces/mackie/surface_port.cc @@ -23,6 +23,8 @@ #include #include +#include "pbd/failed_constructor.h" + #include "midi++/types.h" #include "midi++/ipmidi_port.h" @@ -49,6 +51,7 @@ using namespace ARDOUR; SurfacePort::SurfacePort (Surface& s) : _surface (&s) { + if (_surface->mcp().device_info().uses_ipmidi()) { _input_port = new MIDI::IPMIDIPort (_surface->mcp().ipmidi_base() +_surface->number()); _output_port = _input_port; @@ -56,6 +59,10 @@ SurfacePort::SurfacePort (Surface& s) _async_in = AudioEngine::instance()->register_input_port (DataType::MIDI, string_compose (_("%1 in"), _surface->name()), true); _async_out = AudioEngine::instance()->register_output_port (DataType::MIDI, string_compose (_("%1 out"), _surface->name()), true); + if (_async_in == 0 || _async_out == 0) { + throw failed_constructor(); + } + _input_port = boost::dynamic_pointer_cast(_async_in).get(); _output_port = boost::dynamic_pointer_cast(_async_out).get(); } -- cgit v1.2.3 From 04567886638a7049e79c0383c2ed99923abfee0a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 6 Sep 2013 13:06:44 -0400 Subject: fix JACK backend setup so that we know about graph, port changes etc. --- libs/ardour/jack_connection.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libs/ardour/jack_connection.cc b/libs/ardour/jack_connection.cc index d48e3355b5..5772d3dbb3 100644 --- a/libs/ardour/jack_connection.cc +++ b/libs/ardour/jack_connection.cc @@ -126,6 +126,9 @@ JackConnection::open () jack_on_shutdown (_jack, jack_halted_callback, this); } + + Connected(); /* EMIT SIGNAL */ + return 0; } -- cgit v1.2.3 From 0467231d6e9af35d5f8ca5dcb43c3135b805d8fb Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 6 Sep 2013 16:43:02 -0400 Subject: save/restore I/O latency values in audio/midi setup --- gtk2_ardour/engine_dialog.cc | 14 ++++++++++---- gtk2_ardour/engine_dialog.h | 8 ++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 7a543306e6..22889cf038 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -439,6 +439,8 @@ EngineControl::save_state () state->device = device_combo.get_active_text (); state->buffer_size = buffer_size_combo.get_active_text (); state->sample_rate = sample_rate_combo.get_active_text (); + state->input_latency = (uint32_t) input_latency.get_value(); + state->output_latency = (uint32_t) output_latency.get_value(); if (!existing) { states.push_back (*state); @@ -459,6 +461,8 @@ EngineControl::maybe_set_state () */ reshow_buffer_sizes (false); buffer_size_combo.set_active_text (state->buffer_size); + input_latency.set_value (state->input_latency); + output_latency.set_value (state->output_latency); bs_connection.unblock (); sr_connection.unblock (); } @@ -562,22 +566,22 @@ EngineControl::set_state (const XMLNode& root) if ((prop = grandchild->property ("input-latency")) == 0) { continue; } - state.input_latency = prop->value (); + state.input_latency = atoi (prop->value ()); if ((prop = grandchild->property ("output-latency")) == 0) { continue; } - state.output_latency = prop->value (); + state.output_latency = atoi (prop->value ()); if ((prop = grandchild->property ("input-channels")) == 0) { continue; } - state.input_channels = prop->value (); + state.input_channels = atoi (prop->value ()); if ((prop = grandchild->property ("output-channels")) == 0) { continue; } - state.output_channels = prop->value (); + state.output_channels = atoi (prop->value ()); if ((prop = grandchild->property ("active")) == 0) { continue; @@ -599,6 +603,8 @@ EngineControl::set_state (const XMLNode& root) device_combo.set_active_text ((*i).device); sample_rate_combo.set_active_text ((*i).sample_rate); buffer_size_combo.set_active_text ((*i).buffer_size); + input_latency.set_value ((*i).input_latency); + output_latency.set_value ((*i).output_latency); sr_connection.unblock (); bs_connection.unblock (); break; diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 7c9c652f57..534eb6a6a3 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -122,10 +122,10 @@ class EngineControl : public Gtk::VBox { std::string device; std::string sample_rate; std::string buffer_size; - std::string input_latency; - std::string output_latency; - std::string input_channels; - std::string output_channels; + uint32_t input_latency; + uint32_t output_latency; + uint32_t input_channels; + uint32_t output_channels; bool active; State() : active (false) {}; -- cgit v1.2.3 From ad8d83289fd94bbdbac80cb10450fffc216130c1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 6 Sep 2013 17:21:23 -0400 Subject: add support in JACK backend for specifying number of input and output channels to use --- libs/ardour/ardour/jack_utils.h | 2 ++ libs/ardour/jack_audiobackend.cc | 2 ++ libs/ardour/jack_utils.cc | 10 ++++++++++ 3 files changed, 14 insertions(+) diff --git a/libs/ardour/ardour/jack_utils.h b/libs/ardour/ardour/jack_utils.h index bc94da3361..7565353198 100644 --- a/libs/ardour/ardour/jack_utils.h +++ b/libs/ardour/ardour/jack_utils.h @@ -216,6 +216,8 @@ namespace ARDOUR { uint32_t num_periods; uint32_t period_size; uint32_t samplerate; + uint32_t input_channels; + uint32_t output_channels; uint32_t input_latency; uint32_t output_latency; bool hardware_metering; diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc index a95242ba4b..8f3dffa40d 100644 --- a/libs/ardour/jack_audiobackend.cc +++ b/libs/ardour/jack_audiobackend.cc @@ -428,6 +428,8 @@ JACKAudioBackend::setup_jack_startup_command () options.output_device = _target_device; options.input_latency = _target_systemic_input_latency; options.output_latency = _target_systemic_output_latency; + options.input_channels = _target_input_channels; + options.output_channels = _target_output_channels; if (_target_sample_format == FormatInt16) { options.force16_bit = _target_sample_format; } diff --git a/libs/ardour/jack_utils.cc b/libs/ardour/jack_utils.cc index c16270b261..4e2392aced 100644 --- a/libs/ardour/jack_utils.cc +++ b/libs/ardour/jack_utils.cc @@ -789,6 +789,16 @@ ARDOUR::get_jack_command_line_string (const JackCommandLineOptions& options, str } } + if (options.input_channels) { + args.push_back ("-i"); + args.push_back (to_string (options.input_channels, std::dec)); + } + + if (options.output_channels) { + args.push_back ("-o"); + args.push_back (to_string (options.output_channels, std::dec)); + } + if (get_jack_audio_driver_supports_setting_period_count (options.driver)) { args.push_back ("-n"); args.push_back (to_string (options.num_periods, std::dec)); -- cgit v1.2.3 From e435f22793641263e88bd44a8f47fc266db920b5 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 6 Sep 2013 21:00:01 -0400 Subject: add input/output channel counts and reorganize table somewhat --- gtk2_ardour/engine_dialog.cc | 187 ++++++++++++++++++++----------------------- gtk2_ardour/engine_dialog.h | 5 +- 2 files changed, 92 insertions(+), 100 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 22889cf038..46df096e69 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -56,31 +56,20 @@ EngineControl::EngineControl () , input_latency (input_latency_adjustment) , output_latency_adjustment (0, 0, 99999, 1) , output_latency (output_latency_adjustment) - , input_channels_adjustment (2, 0, 256, 1) + , input_channels_adjustment (0, 0, 256, 1) , input_channels (input_channels_adjustment) - , output_channels_adjustment (2, 0, 256, 1) + , output_channels_adjustment (0, 0, 256, 1) , output_channels (output_channels_adjustment) , ports_adjustment (128, 8, 1024, 1, 16) , ports_spinner (ports_adjustment) , realtime_button (_("Realtime")) -#ifdef __APPLE___ - , basic_packer (6, 2) -#else - , basic_packer (9, 2) -#endif + , basic_packer (9, 3) { using namespace Notebook_Helpers; Label* label; vector strings; int row = 0; - - /* basic parameters */ - - basic_packer.set_spacings (6); - - strings.clear (); - vector backends = ARDOUR::AudioEngine::instance()->available_backends(); for (vector::const_iterator b = backends.begin(); b != backends.end(); ++b) { strings.push_back ((*b)->name); @@ -88,77 +77,82 @@ EngineControl::EngineControl () 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)); backend_changed (); driver_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::driver_changed)); - strings.clear (); - strings.push_back (_("None")); -#ifdef __APPLE__ - strings.push_back (_("coremidi")); -#else - strings.push_back (_("seq")); - strings.push_back (_("raw")); -#endif - set_popdown_strings (midi_driver_combo, strings); - midi_driver_combo.set_active_text (strings.front ()); + basic_packer.set_spacings (6); + basic_packer.set_border_width (12); + basic_packer.set_homogeneous (true); row = 0; + const AttachOptions xopt = AttachOptions (FILL|EXPAND); + label = manage (left_aligned_label (_("Audio System:"))); - basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (backend_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); + 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++; label = manage (left_aligned_label (_("Driver:"))); - basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (driver_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); + 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, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (device_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); + basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0); + basic_packer.attach (device_combo, 1, 2, row, row + 1, xopt, (AttachOptions) 0); row++; label = manage (left_aligned_label (_("Sample rate:"))); - basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (sample_rate_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); + 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++; sr_connection = sample_rate_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::sample_rate_changed)); label = manage (left_aligned_label (_("Buffer size:"))); - basic_packer.attach (*label, 0, 1, row, row + 1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (buffer_size_combo, 1, 2, row, row + 1, FILL|EXPAND, (AttachOptions) 0); + 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++; bs_connection = buffer_size_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::buffer_size_changed)); + label = manage (left_aligned_label (_("Input Channels:"))); + basic_packer.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); + basic_packer.attach (input_channels, 1, 2, row, row+1, xopt, (AttachOptions) 0); + ++row; + + input_channels.signal_output().connect (sigc::bind (sigc::ptr_fun (&EngineControl::print_channel_count), &input_channels)); + + label = manage (left_aligned_label (_("Output Channels:"))); + basic_packer.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); + basic_packer.attach (output_channels, 1, 2, row, row+1, xopt, (AttachOptions) 0); + ++row; + + output_channels.signal_output().connect (sigc::bind (sigc::ptr_fun (&EngineControl::print_channel_count), &output_channels)); + label = manage (left_aligned_label (_("Hardware input latency:"))); - basic_packer.attach (*label, 0, 1, row, row+1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (input_latency, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0); + basic_packer.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); + basic_packer.attach (input_latency, 1, 2, row, row+1, xopt, (AttachOptions) 0); label = manage (left_aligned_label (_("samples"))); - basic_packer.attach (*label, 2, 3, row, row+1, FILL|EXPAND, (AttachOptions) 0); + basic_packer.attach (*label, 2, 3, row, row+1, xopt, (AttachOptions) 0); ++row; label = manage (left_aligned_label (_("Hardware output latency:"))); - basic_packer.attach (*label, 0, 1, row, row+1, FILL|EXPAND, (AttachOptions) 0); - basic_packer.attach (output_latency, 1, 2, row, row+1, FILL|EXPAND, (AttachOptions) 0); + basic_packer.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); + basic_packer.attach (output_latency, 1, 2, row, row+1, xopt, (AttachOptions) 0); label = manage (left_aligned_label (_("samples"))); - basic_packer.attach (*label, 2, 3, row, row+1, FILL|EXPAND, (AttachOptions) 0); + basic_packer.attach (*label, 2, 3, row, row+1, xopt, (AttachOptions) 0); ++row; - device_combo.set_size_request (250, -1); - input_device_combo.set_size_request (250, -1); - output_device_combo.set_size_request (250, -1); - device_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::device_changed)); basic_hbox.pack_start (basic_packer, false, false); - basic_packer.set_border_width (12); midi_packer.set_border_width (12); notebook.pages().push_back (TabElem (basic_hbox, _("Audio"))); @@ -212,6 +206,20 @@ EngineControl::backend_changed () maybe_set_state (); } +bool +EngineControl::print_channel_count (Gtk::SpinButton* sb) +{ + uint32_t cnt = (uint32_t) sb->get_value(); + if (cnt == 0) { + sb->set_text (_("all available channels")); + } else { + char buf[32]; + snprintf (buf, sizeof (buf), "%d", cnt); + sb->set_text (buf); + } + return true; +} + void EngineControl::list_devices () { @@ -292,10 +300,23 @@ EngineControl::device_changed () set_popdown_strings (sample_rate_combo, s); sample_rate_combo.set_active_text (s.front()); - reshow_buffer_sizes (true); - sr_connection.unblock (); - + + vector bs = backend->available_buffer_sizes(device_name); + s.clear (); + for (vector::const_iterator x = bs.begin(); x != bs.end(); ++x) { + char buf[32]; + /* Translators: "samples" is always plural here, so no + need for plural+singular forms. + */ + snprintf (buf, sizeof (buf), _("%u samples"), *x); + s.push_back (buf); + } + + set_popdown_strings (buffer_size_combo, s); + buffer_size_combo.set_active_text (s.front()); + show_buffer_duration (); + maybe_set_state (); } @@ -303,10 +324,10 @@ void EngineControl::sample_rate_changed () { /* reset the strings for buffer size to show the correct msec value - (reflecting the new sample rate + (reflecting the new sample rate). */ - reshow_buffer_sizes (false); + show_buffer_duration (); save_state (); } @@ -314,61 +335,32 @@ EngineControl::sample_rate_changed () void EngineControl::buffer_size_changed () { + show_buffer_duration (); save_state (); } void -EngineControl::reshow_buffer_sizes (bool size_choice_changed) +EngineControl::show_buffer_duration () { - boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); - assert (backend); - string device_name = device_combo.get_active_text (); - vector s; - uint32_t existing_size_choice = 0; - string new_target_string; /* buffer sizes - convert from just samples to samples + msecs for * the displayed string */ - bs_connection.block (); - - if (!size_choice_changed) { - sscanf (buffer_size_combo.get_active_text().c_str(), "%" PRIu32, &existing_size_choice); - } - - s.clear (); - vector bs = backend->available_buffer_sizes(device_name); + string bs_text = buffer_size_combo.get_active_text (); + uint32_t samples = atoi (bs_text); /* will ignore trailing text */ uint32_t rate = get_rate(); - for (vector::const_iterator x = bs.begin(); x != bs.end(); ++x) { - char buf[32]; - - /* Translators: "samples" is ALWAYS plural here, so we do not - need singular form as well. Same for msecs. - */ - snprintf (buf, sizeof (buf), _("%u samples (%.1f msecs)"), *x, (2 * (*x)) / (rate/1000.0)); - s.push_back (buf); - - /* if this is the size previously chosen, this is the string we - * will want to be active in the combo. - */ - - if (existing_size_choice == *x) { - new_target_string = buf; - } - - } - - set_popdown_strings (buffer_size_combo, s); - - if (!new_target_string.empty()) { - buffer_size_combo.set_active_text (new_target_string); - } else { - buffer_size_combo.set_active_text (s.front()); - } - - bs_connection.unblock (); + /* Translators: "msecs" is ALWAYS plural here, so we do not + need singular form as well. + */ + /* Developers: note the hard-coding of a double buffered model + in the (2 * samples) computation of latency. we always start + the audiobackend in this configuration. + */ + char buf[32]; + snprintf (buf, sizeof (buf), _("(%.1f msecs)"), (2 * samples) / (rate/1000.0)); + buffer_size_duration_label.set_text (buf); } void @@ -441,6 +433,8 @@ EngineControl::save_state () state->sample_rate = sample_rate_combo.get_active_text (); state->input_latency = (uint32_t) input_latency.get_value(); state->output_latency = (uint32_t) output_latency.get_value(); + state->input_channels = (uint32_t) input_channels.get_value(); + state->output_channels = (uint32_t) output_channels.get_value(); if (!existing) { states.push_back (*state); @@ -456,10 +450,6 @@ EngineControl::maybe_set_state () sr_connection.block (); bs_connection.block (); sample_rate_combo.set_active_text (state->sample_rate); - /* need to reset possible strings for buffer size before we do - this - */ - reshow_buffer_sizes (false); buffer_size_combo.set_active_text (state->buffer_size); input_latency.set_value (state->input_latency); output_latency.set_value (state->output_latency); @@ -518,7 +508,6 @@ EngineControl::set_state (const XMLNode& root) states.clear (); - for (citer = clist.begin(); citer != clist.end(); ++citer) { child = *citer; diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 534eb6a6a3..553563cafb 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -54,6 +54,7 @@ class EngineControl : public Gtk::VBox { Gtk::ComboBoxText output_device_combo; Gtk::ComboBoxText sample_rate_combo; Gtk::ComboBoxText buffer_size_combo; + Gtk::Label buffer_size_duration_label; Gtk::Adjustment input_latency_adjustment; Gtk::SpinButton input_latency; Gtk::Adjustment output_latency_adjustment; @@ -114,7 +115,7 @@ class EngineControl : public Gtk::VBox { void audio_mode_changed (); void device_changed (); void list_devices (); - void reshow_buffer_sizes (bool choice_changed); + void show_buffer_duration (); struct State { std::string backend; @@ -141,6 +142,8 @@ class EngineControl : public Gtk::VBox { State* get_current_state (); void maybe_set_state (); void save_state (); + + static bool print_channel_count (Gtk::SpinButton*); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ -- cgit v1.2.3 From f4cf283f2683f7883f799a8ef6cd58084e610bb7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 7 Sep 2013 11:03:57 -0400 Subject: move JACK audio backend to its own folder and adjust build system to reflect that (installed version may now work) --- gtk2_ardour/ardev_common.sh.in | 2 +- libs/ardour/ardour/jack_audiobackend.h | 184 ------- libs/ardour/ardour/jack_connection.h | 40 -- libs/ardour/ardour/jack_portengine.h | 132 ----- libs/ardour/ardour/jack_utils.h | 235 -------- libs/ardour/jack_api.cc | 102 ---- libs/ardour/jack_audiobackend.cc | 937 -------------------------------- libs/ardour/jack_connection.cc | 164 ------ libs/ardour/jack_portengine.cc | 568 ------------------- libs/ardour/jack_slave.cc | 79 --- libs/ardour/jack_utils.cc | 901 ------------------------------ libs/backends/jack/jack_api.cc | 102 ++++ libs/backends/jack/jack_audiobackend.cc | 937 ++++++++++++++++++++++++++++++++ libs/backends/jack/jack_audiobackend.h | 184 +++++++ libs/backends/jack/jack_connection.cc | 164 ++++++ libs/backends/jack/jack_connection.h | 40 ++ libs/backends/jack/jack_portengine.cc | 569 +++++++++++++++++++ libs/backends/jack/jack_portengine.h | 132 +++++ libs/backends/jack/jack_slave.cc | 79 +++ libs/backends/jack/jack_utils.cc | 897 ++++++++++++++++++++++++++++++ libs/backends/jack/jack_utils.h | 235 ++++++++ libs/backends/jack/wscript | 51 ++ libs/backends/wscript | 27 + wscript | 1 + 24 files changed, 3419 insertions(+), 3343 deletions(-) delete mode 100644 libs/ardour/ardour/jack_audiobackend.h delete mode 100644 libs/ardour/ardour/jack_connection.h delete mode 100644 libs/ardour/ardour/jack_portengine.h delete mode 100644 libs/ardour/ardour/jack_utils.h delete mode 100644 libs/ardour/jack_api.cc delete mode 100644 libs/ardour/jack_audiobackend.cc delete mode 100644 libs/ardour/jack_connection.cc delete mode 100644 libs/ardour/jack_portengine.cc delete mode 100644 libs/ardour/jack_slave.cc delete mode 100644 libs/ardour/jack_utils.cc create mode 100644 libs/backends/jack/jack_api.cc create mode 100644 libs/backends/jack/jack_audiobackend.cc create mode 100644 libs/backends/jack/jack_audiobackend.h create mode 100644 libs/backends/jack/jack_connection.cc create mode 100644 libs/backends/jack/jack_connection.h create mode 100644 libs/backends/jack/jack_portengine.cc create mode 100644 libs/backends/jack/jack_portengine.h create mode 100644 libs/backends/jack/jack_slave.cc create mode 100644 libs/backends/jack/jack_utils.cc create mode 100644 libs/backends/jack/jack_utils.h create mode 100644 libs/backends/jack/wscript create mode 100644 libs/backends/wscript diff --git a/gtk2_ardour/ardev_common.sh.in b/gtk2_ardour/ardev_common.sh.in index 2bd9c51515..850a83c954 100644 --- a/gtk2_ardour/ardev_common.sh.in +++ b/gtk2_ardour/ardev_common.sh.in @@ -17,7 +17,7 @@ export ARDOUR_DATA_PATH=$TOP:$TOP/build:$TOP/gtk2_ardour:$TOP/build/gtk2_ardour: export ARDOUR_MIDIMAPS_PATH=$TOP/midi_maps:. export ARDOUR_MCP_PATH=$TOP/mcp:. export ARDOUR_EXPORT_FORMATS_PATH=$TOP/export:. -export ARDOUR_BACKEND_PATH=$TOP/build/libs/ardour +export ARDOUR_BACKEND_PATH=$libs/backends/jack # # even though we set the above variables, ardour requires that these diff --git a/libs/ardour/ardour/jack_audiobackend.h b/libs/ardour/ardour/jack_audiobackend.h deleted file mode 100644 index 5ba9ee63d7..0000000000 --- a/libs/ardour/ardour/jack_audiobackend.h +++ /dev/null @@ -1,184 +0,0 @@ -/* - 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. - -*/ - -#ifndef __libardour_jack_audiobackend_h__ -#define __libardour_jack_audiobackend_h__ - -#include -#include -#include -#include - -#include - -#include - -#include -#ifdef HAVE_JACK_SESSION -#include -#endif - -#include "ardour/audio_backend.h" - -namespace ARDOUR { - -class JackConnection; - -class JACKAudioBackend : public AudioBackend { - public: - JACKAudioBackend (AudioEngine& e, boost::shared_ptr); - ~JACKAudioBackend (); - - std::string name() const; - void* private_handle() const; - bool connected() const; - bool is_realtime () const; - - bool requires_driver_selection() const; - std::vector enumerate_drivers () const; - int set_driver (const std::string&); - - std::vector enumerate_devices () const; - - std::vector available_sample_rates (const std::string& device) const; - std::vector available_buffer_sizes (const std::string& device) const; - uint32_t available_input_channel_count (const std::string& device) const; - uint32_t available_output_channel_count (const std::string& device) const; - - int set_device_name (const std::string&); - int set_sample_rate (float); - int set_buffer_size (uint32_t); - int set_sample_format (SampleFormat); - int set_interleaved (bool yn); - int set_input_channels (uint32_t); - int set_output_channels (uint32_t); - int set_systemic_input_latency (uint32_t); - int set_systemic_output_latency (uint32_t); - - std::string device_name () const; - float sample_rate () const; - uint32_t buffer_size () const; - SampleFormat sample_format () const; - bool interleaved () const; - uint32_t input_channels () const; - uint32_t output_channels () const; - uint32_t systemic_input_latency () const; - uint32_t systemic_output_latency () const; - - int start (); - int stop (); - int pause (); - int freewheel (bool); - - float cpu_load() const; - - pframes_t sample_time (); - pframes_t sample_time_at_cycle_start (); - pframes_t samples_since_cycle_start (); - - size_t raw_buffer_size (DataType t); - - int create_process_thread (boost::function func, pthread_t*, size_t stacksize); - - void transport_start (); - void transport_stop (); - void transport_locate (framepos_t /*pos*/); - TransportState transport_state () const; - framepos_t transport_frame() const; - - int set_time_master (bool /*yn*/); - bool get_sync_offset (pframes_t& /*offset*/) const; - - void update_latencies (); - - static bool already_configured(); - - private: - boost::shared_ptr _jack_connection; //< shared with JACKPortEngine - bool _running; - bool _freewheeling; - std::map _raw_buffer_sizes; - - static int _xrun_callback (void *arg); - static void* _process_thread (void *arg); - static int _sample_rate_callback (pframes_t nframes, void *arg); - static int _bufsize_callback (pframes_t nframes, void *arg); - static void _jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int, void*); - static int _jack_sync_callback (jack_transport_state_t, jack_position_t*, void *arg); - static void _freewheel_callback (int , void *arg); - static void _latency_callback (jack_latency_callback_mode_t, void*); -#ifdef HAVE_JACK_SESSION - static void _session_callback (jack_session_event_t *event, void *arg); -#endif - - void jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int); - int jack_sync_callback (jack_transport_state_t, jack_position_t*); - int jack_bufsize_callback (pframes_t); - int jack_sample_rate_callback (pframes_t); - void freewheel_callback (int); - int process_callback (pframes_t nframes); - void jack_latency_callback (jack_latency_callback_mode_t); - void disconnected (const char*); - - void set_jack_callbacks (); - int reconnect_to_jack (); - - struct ThreadData { - JACKAudioBackend* engine; - boost::function f; - size_t stacksize; - - ThreadData (JACKAudioBackend* e, boost::function fp, size_t stacksz) - : engine (e) , f (fp) , stacksize (stacksz) {} - }; - - void* process_thread (); - static void* _start_process_thread (void*); - - ChanCount n_physical (unsigned long) const; - - void setup_jack_startup_command (); - - /* pffooo */ - - std::string _target_driver; - std::string _target_device; - float _target_sample_rate; - uint32_t _target_buffer_size; - SampleFormat _target_sample_format; - bool _target_interleaved; - uint32_t _target_input_channels; - uint32_t _target_output_channels; - uint32_t _target_systemic_input_latency; - uint32_t _target_systemic_output_latency; - uint32_t _current_sample_rate; - uint32_t _current_buffer_size; - - typedef std::set DeviceList; - typedef std::map DriverDeviceMap; - - mutable DriverDeviceMap all_devices; - - PBD::ScopedConnection disconnect_connection; -}; - -} // namespace - -#endif /* __ardour_audiobackend_h__ */ - diff --git a/libs/ardour/ardour/jack_connection.h b/libs/ardour/ardour/jack_connection.h deleted file mode 100644 index cd45f3b9ba..0000000000 --- a/libs/ardour/ardour/jack_connection.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef __libardour_jack_connection_h__ -#define __libardour_jack_connection_h__ - -#include -#include - -#include "pbd/signals.h" - -namespace ARDOUR { - -class JackConnection { - public: - JackConnection (const std::string& client_name, const std::string& session_uuid); - ~JackConnection (); - - const std::string& client_name() const { return _client_name; } - - int open (); - int close (); - bool connected () const { return _jack != 0; } - - jack_client_t* jack() const { return _jack; } - - PBD::Signal0 Connected; - PBD::Signal1 Disconnected; - - void halted_callback (); - void halted_info_callback (jack_status_t, const char*); - - static bool server_running(); - - private: - jack_client_t* volatile _jack; - std::string _client_name; - std::string session_uuid; -}; - -} // namespace - -#endif /* __libardour_jack_connection_h__ */ diff --git a/libs/ardour/ardour/jack_portengine.h b/libs/ardour/ardour/jack_portengine.h deleted file mode 100644 index 0e1eb48c5c..0000000000 --- a/libs/ardour/ardour/jack_portengine.h +++ /dev/null @@ -1,132 +0,0 @@ -/* - 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. - -*/ - -#ifndef __libardour_jack_portengine_h__ -#define __libardour_jack_portengine_h__ - -#include -#include - -#include - -#include -#include - -#include - -#include "pbd/signals.h" - -#include "ardour/port_engine.h" -#include "ardour/types.h" - -namespace ARDOUR { - -class JackConnection; - -class JACKPortEngine : public PortEngine -{ - public: - JACKPortEngine (PortManager&, boost::shared_ptr); - ~JACKPortEngine(); - - void* private_handle() const; - bool connected() const; - - const std::string& my_name() const; - - uint32_t port_name_size() const; - - int set_port_name (PortHandle, const std::string&); - std::string get_port_name (PortHandle) const; - PortHandle* get_port_by_name (const std::string&) const; - - int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const; - - DataType port_data_type (PortHandle) const; - - PortHandle register_port (const std::string& shortname, ARDOUR::DataType, ARDOUR::PortFlags); - void unregister_port (PortHandle); - - bool connected (PortHandle, bool process_callback_safe); - bool connected_to (PortHandle, const std::string&, bool process_callback_safe); - bool physically_connected (PortHandle, bool process_callback_safe); - int get_connections (PortHandle, std::vector&, bool process_callback_safe); - int connect (PortHandle, const std::string&); - - int disconnect (PortHandle, const std::string&); - int disconnect_all (PortHandle); - int connect (const std::string& src, const std::string& dst); - int disconnect (const std::string& src, const std::string& dst); - - /* MIDI */ - - int midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index); - int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size); - uint32_t get_midi_event_count (void* port_buffer); - void midi_clear (void* port_buffer); - - /* Monitoring */ - - bool can_monitor_input() const; - int request_input_monitoring (PortHandle, bool); - int ensure_input_monitoring (PortHandle, bool); - bool monitoring_input (PortHandle); - - /* Latency management - */ - - void set_latency_range (PortHandle, bool for_playback, LatencyRange); - LatencyRange get_latency_range (PortHandle, bool for_playback); - - /* Physical ports */ - - bool port_is_physical (PortHandle) const; - void get_physical_outputs (DataType type, std::vector&); - void get_physical_inputs (DataType type, std::vector&); - ChanCount n_physical_outputs () const; - ChanCount n_physical_inputs () const; - - /* Getting access to the data buffer for a port */ - - void* get_buffer (PortHandle, pframes_t); - - /* Miscellany */ - - pframes_t sample_time_at_cycle_start (); - - private: - boost::shared_ptr _jack_connection; - - static int _graph_order_callback (void *arg); - static void _registration_callback (jack_port_id_t, int, void *); - static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); - - void connect_callback (jack_port_id_t, jack_port_id_t, int); - - ChanCount n_physical (unsigned long flags) const; - void get_physical (DataType type, unsigned long flags, std::vector& phy) const; - - PBD::ScopedConnection jack_connection_connection; - void connected_to_jack (); - -}; - -} // namespace - -#endif /* __libardour_jack_portengine_h__ */ diff --git a/libs/ardour/ardour/jack_utils.h b/libs/ardour/ardour/jack_utils.h deleted file mode 100644 index 7565353198..0000000000 --- a/libs/ardour/ardour/jack_utils.h +++ /dev/null @@ -1,235 +0,0 @@ -/* - Copyright (C) 2011 Tim Mayberry - - 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. - -*/ - -#include - -#include -#include -#include - -namespace ARDOUR { - - // Names for the drivers on all possible systems - extern const char * const portaudio_driver_name; - extern const char * const coreaudio_driver_name; - extern const char * const alsa_driver_name; - extern const char * const oss_driver_name; - extern const char * const freebob_driver_name; - extern const char * const ffado_driver_name; - extern const char * const netjack_driver_name; - extern const char * const dummy_driver_name; - - /** - * Get a list of possible JACK audio driver names based on platform - */ - void get_jack_audio_driver_names (std::vector& driver_names); - - /** - * Get the default JACK audio driver based on platform - */ - void get_jack_default_audio_driver_name (std::string& driver_name); - - /** - * Get a list of possible samplerates supported be JACK - */ - void get_jack_sample_rate_strings (std::vector& sample_rates); - - /** - * @return The default samplerate - */ - std::string get_jack_default_sample_rate (); - - /** - * @return true if sample rate string was able to be converted - */ - bool get_jack_sample_rate_value_from_string (const std::string& srs, uint32_t& srv); - - /** - * Get a list of possible period sizes supported be JACK - */ - void get_jack_period_size_strings (std::vector& samplerates); - - /** - * @return The default period size - */ - std::string get_jack_default_period_size (); - - /** - * @return true if period size string was able to be converted - */ - bool get_jack_period_size_value_from_string (const std::string& pss, uint32_t& psv); - - /** - * These are driver specific I think, so it may require a driver arg - * in future - */ - void get_jack_dither_mode_strings (const std::string& driver, std::vector& dither_modes); - - /** - * @return The default dither mode - */ - std::string get_jack_default_dither_mode (const std::string& driver); - - /** - * @return Estimate of latency - * - * API matches current use in GUI - */ - std::string get_jack_latency_string (std::string samplerate, float periods, std::string period_size); - - /** - * Key being a readable name to display in a GUI - * Value being name used in a jack commandline - */ - typedef std::map device_map_t; - - /** - * Use library specific code to find out what what devices exist for a given - * driver that might work in JACK. There is no easy way to find out what - * modules the JACK server supports so guess based on platform. For instance - * portaudio is cross-platform but we only return devices if built for - * windows etc - */ - void get_jack_alsa_device_names (device_map_t& devices); - void get_jack_portaudio_device_names (device_map_t& devices); - void get_jack_coreaudio_device_names (device_map_t& devices); - void get_jack_oss_device_names (device_map_t& devices); - void get_jack_freebob_device_names (device_map_t& devices); - void get_jack_ffado_device_names (device_map_t& devices); - void get_jack_netjack_device_names (device_map_t& devices); - void get_jack_dummy_device_names (device_map_t& devices); - - /* - * @return true if there were devices found for the driver - * - * @param driver The driver name returned by get_jack_audio_driver_names - * @param devices The map used to insert the drivers into, devices will be cleared before - * adding the available drivers - */ - bool get_jack_device_names_for_audio_driver (const std::string& driver, device_map_t& devices); - - /* - * @return a list of readable device names for a specific driver. - */ - std::vector get_jack_device_names_for_audio_driver (const std::string& driver); - - /** - * @return true if the driver supports playback and recording - * on separate devices - */ - bool get_jack_audio_driver_supports_two_devices (const std::string& driver); - - bool get_jack_audio_driver_supports_latency_adjustment (const std::string& driver); - - bool get_jack_audio_driver_supports_setting_period_count (const std::string& driver); - - /** - * The possible names to use to try and find servers, this includes - * any file extensions like .exe on Windows - * - * @return true if the JACK application names for this platform could be guessed - */ - bool get_jack_server_application_names (std::vector& server_names); - - /** - * Sets the PATH environment variable to contain directories likely to contain - * JACK servers so that if the JACK server is auto-started it can find the server - * executable. - * - * This is only modifies PATH on the mac at the moment. - */ - void set_path_env_for_jack_autostart (const std::vector&); - - /** - * Get absolute paths to directories that might contain JACK servers on the system - * - * @return true if !server_paths.empty() - */ - bool get_jack_server_dir_paths (std::vector& server_dir_paths); - - /** - * Get absolute paths to JACK servers on the system - * - * @return true if a server was found - */ - bool get_jack_server_paths (const std::vector& server_dir_paths, - const std::vector& server_names, - std::vector& server_paths); - - - bool get_jack_server_paths (std::vector& server_paths); - - /** - * Get absolute path to default JACK server - */ - bool get_jack_default_server_path (std::string& server_path); - - /** - * @return The name of the jack server config file - */ - std::string get_jack_server_config_file_name (); - - std::string get_jack_server_user_config_dir_path (); - - std::string get_jack_server_user_config_file_path (); - - bool write_jack_config_file (const std::string& config_file_path, const std::string& command_line); - - struct JackCommandLineOptions { - - // see implementation for defaults - JackCommandLineOptions (); - - //operator bool - //operator ostream - - std::string server_path; - uint32_t timeout; - bool no_mlock; - uint32_t ports_max; - bool realtime; - uint32_t priority; - bool unlock_gui_libs; - bool verbose; - bool temporary; - bool playback_only; - bool capture_only; - std::string driver; - std::string input_device; - std::string output_device; - uint32_t num_periods; - uint32_t period_size; - uint32_t samplerate; - uint32_t input_channels; - uint32_t output_channels; - uint32_t input_latency; - uint32_t output_latency; - bool hardware_metering; - bool hardware_monitoring; - std::string dither_mode; - bool force16_bit; - bool soft_mode; - std::string midi_driver; - }; - - /** - * @return true if able to build a valid command line based on options - */ - bool get_jack_command_line_string (const JackCommandLineOptions& options, std::string& command_line); -} diff --git a/libs/ardour/jack_api.cc b/libs/ardour/jack_api.cc deleted file mode 100644 index fcfc499107..0000000000 --- a/libs/ardour/jack_api.cc +++ /dev/null @@ -1,102 +0,0 @@ -/* - 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. - -*/ - -#include "ardour/jack_connection.h" -#include "ardour/jack_audiobackend.h" -#include "ardour/jack_portengine.h" - -using namespace ARDOUR; - -static boost::shared_ptr backend; -static boost::shared_ptr port_engine; -static boost::shared_ptr jack_connection; - -static boost::shared_ptr -backend_factory (AudioEngine& ae) -{ - if (!jack_connection) { - return boost::shared_ptr(); - } - - if (!backend) { - backend.reset (new JACKAudioBackend (ae, jack_connection)); - } - - return backend; -} - -static boost::shared_ptr -portengine_factory (PortManager& pm) -{ - if (!jack_connection) { - return boost::shared_ptr(); - } - - if (!port_engine) { - port_engine.reset (new JACKPortEngine (pm, jack_connection)); - } - - return port_engine; -} - -static int -instantiate (const std::string& arg1, const std::string& arg2) -{ - try { - jack_connection.reset (new JackConnection (arg1, arg2)); - } catch (...) { - return -1; - } - - return 0; -} - -static int -deinstantiate () -{ - port_engine.reset (); - backend.reset (); - jack_connection.reset (); - - return 0; -} - -static bool -already_configured () -{ - return JackConnection::server_running (); -} - -extern "C" { - - - /* functions looked up using dlopen-and-cousins, and so naming scope - * must be non-mangled. - */ - - ARDOUR::AudioBackendInfo descriptor = { - "JACK", - instantiate, - deinstantiate, - backend_factory, - portengine_factory, - already_configured, - }; -} - diff --git a/libs/ardour/jack_audiobackend.cc b/libs/ardour/jack_audiobackend.cc deleted file mode 100644 index 8f3dffa40d..0000000000 --- a/libs/ardour/jack_audiobackend.cc +++ /dev/null @@ -1,937 +0,0 @@ -/* - 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. - -*/ - -#include - -#include -#include - -#include "pbd/error.h" - -#include "jack/jack.h" -#include "jack/thread.h" - -#include "ardour/audioengine.h" -#include "ardour/session.h" -#include "ardour/types.h" - -#include "ardour/jack_audiobackend.h" -#include "ardour/jack_connection.h" -#include "ardour/jack_portengine.h" -#include "ardour/jack_utils.h" - -#include "i18n.h" - -using namespace ARDOUR; -using namespace PBD; -using std::string; -using std::vector; -using std::cerr; -using std::endl; - -#define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return; } -#define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return r; } - -JACKAudioBackend::JACKAudioBackend (AudioEngine& e, boost::shared_ptr jc) - : AudioBackend (e) - , _jack_connection (jc) - , _running (false) - , _freewheeling (false) - , _target_sample_rate (48000) - , _target_buffer_size (1024) - , _target_sample_format (FormatFloat) - , _target_interleaved (false) - , _target_input_channels (-1) - , _target_output_channels (-1) - , _target_systemic_input_latency (0) - , _target_systemic_output_latency (0) - , _current_sample_rate (0) - , _current_buffer_size (0) -{ - _jack_connection->Disconnected.connect_same_thread (disconnect_connection, boost::bind (&JACKAudioBackend::disconnected, this, _1)); -} - -JACKAudioBackend::~JACKAudioBackend() -{ -} - -string -JACKAudioBackend::name() const -{ - return X_("JACK"); -} - -void* -JACKAudioBackend::private_handle() const -{ - return _jack_connection->jack(); -} - -bool -JACKAudioBackend::connected() const -{ - return (private_handle() != 0); -} - -bool -JACKAudioBackend::is_realtime () const -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack,false); - return jack_is_realtime (_priv_jack); -} - -bool -JACKAudioBackend::requires_driver_selection() const -{ - return true; -} - -vector -JACKAudioBackend::enumerate_drivers () const -{ - vector currently_available; - get_jack_audio_driver_names (currently_available); - return currently_available; -} - -int -JACKAudioBackend::set_driver (const std::string& name) -{ - _target_driver = name; - return 0; -} - -vector -JACKAudioBackend::enumerate_devices () const -{ - vector currently_available = get_jack_device_names_for_audio_driver (_target_driver); - vector statuses; - - if (all_devices.find (_target_driver) == all_devices.end()) { - all_devices.insert (make_pair (_target_driver, std::set())); - } - - /* store every device we've found, by driver name. - * - * This is so we do not confuse ALSA, FFADO, netjack etc. devices - * with each other. - */ - - DeviceList& all (all_devices[_target_driver]); - - for (vector::const_iterator d = currently_available.begin(); d != currently_available.end(); ++d) { - all.insert (*d); - } - - for (DeviceList::const_iterator d = all.begin(); d != all.end(); ++d) { - if (find (currently_available.begin(), currently_available.end(), *d) == currently_available.end()) { - statuses.push_back (DeviceStatus (*d, false)); - } else { - statuses.push_back (DeviceStatus (*d, false)); - } - } - - return statuses; -} - -vector -JACKAudioBackend::available_sample_rates (const string& /*device*/) const -{ - vector f; - - if (connected()) { - f.push_back (sample_rate()); - return f; - } - - /* if JACK is not already running, just list a bunch of reasonable - values and let the future sort it all out. - */ - - f.push_back (8000.0); - f.push_back (16000.0); - f.push_back (24000.0); - f.push_back (32000.0); - f.push_back (44100.0); - f.push_back (48000.0); - f.push_back (88200.0); - f.push_back (96000.0); - f.push_back (192000.0); - f.push_back (384000.0); - - return f; -} - -vector -JACKAudioBackend::available_buffer_sizes (const string& /*device*/) const -{ - vector s; - - if (connected()) { - s.push_back (buffer_size()); - return s; - } - - s.push_back (8); - s.push_back (16); - s.push_back (32); - s.push_back (64); - s.push_back (128); - s.push_back (256); - s.push_back (512); - s.push_back (1024); - s.push_back (2048); - s.push_back (4096); - s.push_back (8192); - - return s; -} - -uint32_t -JACKAudioBackend::available_input_channel_count (const string& /*device*/) const -{ - return 128; -} - -uint32_t -JACKAudioBackend::available_output_channel_count (const string& /*device*/) const -{ - return 128; -} - -/* -- parameter setting -- */ - -int -JACKAudioBackend::set_device_name (const string& dev) -{ - if (connected()) { - /* need to stop and restart JACK for this to work, at present */ - return -1; - } - - _target_device = dev; - return 0; -} - -int -JACKAudioBackend::set_sample_rate (float sr) -{ - if (!connected()) { - _target_sample_rate = sr; - return 0; - } - - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - - if (sr == jack_get_sample_rate (_priv_jack)) { - return 0; - } - - return -1; -} - -int -JACKAudioBackend::set_buffer_size (uint32_t nframes) -{ - if (!connected()) { - _target_buffer_size = nframes; - return 0; - } - - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - - if (nframes == jack_get_buffer_size (_priv_jack)) { - return 0; - } - - return jack_set_buffer_size (_priv_jack, nframes); -} - -int -JACKAudioBackend::set_sample_format (SampleFormat sf) -{ - /* as far as JACK clients are concerned, the hardware is always - * floating point format. - */ - if (sf == FormatFloat) { - return 0; - } - return -1; -} - -int -JACKAudioBackend::set_interleaved (bool yn) -{ - /* as far as JACK clients are concerned, the hardware is always - * non-interleaved - */ - if (!yn) { - return 0; - } - return -1; -} - -int -JACKAudioBackend::set_input_channels (uint32_t cnt) -{ - if (connected()) { - return -1; - } - - _target_input_channels = cnt; - - return 0; -} - -int -JACKAudioBackend::set_output_channels (uint32_t cnt) -{ - if (connected()) { - return -1; - } - - _target_output_channels = cnt; - - return 0; -} - -int -JACKAudioBackend::set_systemic_input_latency (uint32_t l) -{ - if (connected()) { - return -1; - } - - _target_systemic_input_latency = l; - - return 0; -} - -int -JACKAudioBackend::set_systemic_output_latency (uint32_t l) -{ - if (connected()) { - return -1; - } - - _target_systemic_output_latency = l; - - return 0; -} - -/* --- Parameter retrieval --- */ - -std::string -JACKAudioBackend::device_name () const -{ - return string(); -} - -float -JACKAudioBackend::sample_rate () const -{ - if (connected()) { - return _current_sample_rate; - } - return _target_sample_rate; -} - -uint32_t -JACKAudioBackend::buffer_size () const -{ - if (connected()) { - return _current_buffer_size; - } - return _target_buffer_size; -} - -SampleFormat -JACKAudioBackend::sample_format () const -{ - return FormatFloat; -} - -bool -JACKAudioBackend::interleaved () const -{ - return false; -} - -uint32_t -JACKAudioBackend::input_channels () const -{ - if (connected()) { - return n_physical (JackPortIsInput).n_audio(); - } - return _target_input_channels; -} - -uint32_t -JACKAudioBackend::output_channels () const -{ - if (connected()) { - return n_physical (JackPortIsOutput).n_audio(); - } - return _target_output_channels; -} - -uint32_t -JACKAudioBackend::systemic_input_latency () const -{ - return _target_systemic_output_latency; -} - -uint32_t -JACKAudioBackend::systemic_output_latency () const -{ - return _target_systemic_output_latency; -} - -size_t -JACKAudioBackend::raw_buffer_size(DataType t) -{ - std::map::const_iterator s = _raw_buffer_sizes.find(t); - return (s != _raw_buffer_sizes.end()) ? s->second : 0; -} - -void -JACKAudioBackend::setup_jack_startup_command () -{ - /* first we map the parameters that have been set onto a - * JackCommandLineOptions object. - */ - - JackCommandLineOptions options; - - get_jack_default_server_path (options.server_path); - options.driver = _target_driver; - options.samplerate = _target_sample_rate; - options.period_size = _target_buffer_size; - options.num_periods = 2; - options.input_device = _target_device; - options.output_device = _target_device; - options.input_latency = _target_systemic_input_latency; - options.output_latency = _target_systemic_output_latency; - options.input_channels = _target_input_channels; - options.output_channels = _target_output_channels; - if (_target_sample_format == FormatInt16) { - options.force16_bit = _target_sample_format; - } - options.realtime = true; - options.ports_max = 2048; - - /* this must always be true for any server instance we start ourselves - */ - - options.temporary = true; - - string cmdline; - - if (!get_jack_command_line_string (options, cmdline)) { - /* error, somehow */ - return; - } - - std::cerr << "JACK command line will be: " << cmdline << std::endl; - - write_jack_config_file (get_jack_server_user_config_file_path(), cmdline); -} - -/* ---- BASIC STATE CONTROL API: start/stop/pause/freewheel --- */ - -int -JACKAudioBackend::start () -{ - if (!connected()) { - - if (!_jack_connection->server_running()) { - setup_jack_startup_command (); - } - - if (_jack_connection->open ()) { - return -1; - } - } - - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - - /* get the buffer size and sample rates established */ - - jack_sample_rate_callback (jack_get_sample_rate (_priv_jack)); - jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); - - /* Now that we have buffer size and sample rate established, the engine - can go ahead and do its stuff - */ - - engine.reestablish_ports (); - - if (!jack_port_type_get_buffer_size) { - warning << _("This version of JACK is old - you should upgrade to a newer version that supports jack_port_type_get_buffer_size()") << endmsg; - } - - set_jack_callbacks (); - - if (jack_activate (_priv_jack) == 0) { - _running = true; - } else { - // error << _("cannot activate JACK client") << endmsg; - } - - engine.reconnect_ports (); - - return 0; -} - -int -JACKAudioBackend::stop () -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - - _jack_connection->close (); - - _current_buffer_size = 0; - _current_sample_rate = 0; - - _raw_buffer_sizes.clear(); - - return 0; -} - -int -JACKAudioBackend::pause () -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - - if (_priv_jack) { - jack_deactivate (_priv_jack); - } - - return 0; -} - -int -JACKAudioBackend::freewheel (bool onoff) -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - - if (onoff == _freewheeling) { - /* already doing what has been asked for */ - - return 0; - } - - if (jack_set_freewheel (_priv_jack, onoff) == 0) { - _freewheeling = true; - return 0; - } - - return -1; -} - -/* --- TRANSPORT STATE MANAGEMENT --- */ - -void -JACKAudioBackend::transport_stop () -{ - GET_PRIVATE_JACK_POINTER (_priv_jack); - jack_transport_stop (_priv_jack); -} - -void -JACKAudioBackend::transport_start () -{ - GET_PRIVATE_JACK_POINTER (_priv_jack); - jack_transport_start (_priv_jack); -} - -void -JACKAudioBackend::transport_locate (framepos_t where) -{ - GET_PRIVATE_JACK_POINTER (_priv_jack); - jack_transport_locate (_priv_jack, where); -} - -framepos_t -JACKAudioBackend::transport_frame () const -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - return jack_get_current_transport_frame (_priv_jack); -} - -TransportState -JACKAudioBackend::transport_state () const -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, ((TransportState) JackTransportStopped)); - jack_position_t pos; - return (TransportState) jack_transport_query (_priv_jack, &pos); -} - -int -JACKAudioBackend::set_time_master (bool yn) -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - if (yn) { - return jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this); - } else { - return jack_release_timebase (_priv_jack); - } -} - -/* process-time */ - -bool -JACKAudioBackend::get_sync_offset (pframes_t& offset) const -{ - -#ifdef HAVE_JACK_VIDEO_SUPPORT - - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); - - jack_position_t pos; - - if (_priv_jack) { - (void) jack_transport_query (_priv_jack, &pos); - - if (pos.valid & JackVideoFrameOffset) { - offset = pos.video_offset; - return true; - } - } -#else - /* keep gcc happy */ - offset = 0; -#endif - - return false; -} - -pframes_t -JACKAudioBackend::sample_time () -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - return jack_frame_time (_priv_jack); -} - -pframes_t -JACKAudioBackend::sample_time_at_cycle_start () -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - return jack_last_frame_time (_priv_jack); -} - -pframes_t -JACKAudioBackend::samples_since_cycle_start () -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - return jack_frames_since_cycle_start (_priv_jack); -} - -/* JACK Callbacks */ - -static void -ardour_jack_error (const char* msg) -{ - error << "JACK: " << msg << endmsg; -} - -void -JACKAudioBackend::set_jack_callbacks () -{ - GET_PRIVATE_JACK_POINTER (_priv_jack); - - jack_set_thread_init_callback (_priv_jack, AudioEngine::thread_init_callback, 0); - - jack_set_process_thread (_priv_jack, _process_thread, this); - jack_set_sample_rate_callback (_priv_jack, _sample_rate_callback, this); - jack_set_buffer_size_callback (_priv_jack, _bufsize_callback, this); - jack_set_xrun_callback (_priv_jack, _xrun_callback, this); - jack_set_sync_callback (_priv_jack, _jack_sync_callback, this); - jack_set_freewheel_callback (_priv_jack, _freewheel_callback, this); - -#ifdef HAVE_JACK_SESSION - if( jack_set_session_callback) - jack_set_session_callback (_priv_jack, _session_callback, this); -#endif - - if (jack_set_latency_callback) { - jack_set_latency_callback (_priv_jack, _latency_callback, this); - } - - jack_set_error_function (ardour_jack_error); -} - -void -JACKAudioBackend::_jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, - jack_position_t* pos, int new_position, void *arg) -{ - static_cast (arg)->jack_timebase_callback (state, nframes, pos, new_position); -} - -void -JACKAudioBackend::jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, - jack_position_t* pos, int new_position) -{ - ARDOUR::Session* session = engine.session(); - - if (session) { - session->jack_timebase_callback (state, nframes, pos, new_position); - } -} - -int -JACKAudioBackend::_jack_sync_callback (jack_transport_state_t state, jack_position_t* pos, void* arg) -{ - return static_cast (arg)->jack_sync_callback (state, pos); -} - -int -JACKAudioBackend::jack_sync_callback (jack_transport_state_t state, jack_position_t* pos) -{ - TransportState tstate; - - switch (state) { - case JackTransportStopped: - tstate = TransportStopped; - break; - case JackTransportRolling: - tstate = TransportRolling; - break; - case JackTransportLooping: - tstate = TransportLooping; - break; - case JackTransportStarting: - tstate = TransportStarting; - break; - } - - return engine.sync_callback (tstate, pos->frame); - - return true; -} - -int -JACKAudioBackend::_xrun_callback (void *arg) -{ - JACKAudioBackend* ae = static_cast (arg); - if (ae->connected()) { - ae->engine.Xrun (); /* EMIT SIGNAL */ - } - return 0; -} - -#ifdef HAVE_JACK_SESSION -void -JACKAudioBackend::_session_callback (jack_session_event_t *event, void *arg) -{ - JACKAudioBackend* ae = static_cast (arg); - ARDOUR::Session* session = ae->engine.session(); - - if (session) { - session->jack_session_event (event); - } -} -#endif - -void -JACKAudioBackend::_freewheel_callback (int onoff, void *arg) -{ - static_cast(arg)->freewheel_callback (onoff); -} - -void -JACKAudioBackend::freewheel_callback (int onoff) -{ - _freewheeling = onoff; - engine.freewheel_callback (onoff); -} - -void -JACKAudioBackend::_latency_callback (jack_latency_callback_mode_t mode, void* arg) -{ - return static_cast (arg)->jack_latency_callback (mode); -} - -int -JACKAudioBackend::create_process_thread (boost::function f, pthread_t* thread, size_t stacksize) -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - ThreadData* td = new ThreadData (this, f, stacksize); - - if (jack_client_create_thread (_priv_jack, thread, jack_client_real_time_priority (_priv_jack), - jack_is_realtime (_priv_jack), _start_process_thread, td)) { - return -1; - } - - return 0; -} - -void* -JACKAudioBackend::_start_process_thread (void* arg) -{ - ThreadData* td = reinterpret_cast (arg); - boost::function f = td->f; - delete td; - - f (); - - return 0; -} - -void* -JACKAudioBackend::_process_thread (void *arg) -{ - return static_cast (arg)->process_thread (); -} - -void* -JACKAudioBackend::process_thread () -{ - /* JACK doesn't do this for us when we use the wait API - */ - - AudioEngine::thread_init_callback (this); - - while (1) { - GET_PRIVATE_JACK_POINTER_RET(_priv_jack,0); - - pframes_t nframes = jack_cycle_wait (_priv_jack); - - if (engine.process_callback (nframes)) { - return 0; - } - - jack_cycle_signal (_priv_jack, 0); - } - - return 0; -} - -int -JACKAudioBackend::_sample_rate_callback (pframes_t nframes, void *arg) -{ - return static_cast (arg)->jack_sample_rate_callback (nframes); -} - -int -JACKAudioBackend::jack_sample_rate_callback (pframes_t nframes) -{ - _current_sample_rate = nframes; - return engine.sample_rate_change (nframes); -} - -void -JACKAudioBackend::jack_latency_callback (jack_latency_callback_mode_t mode) -{ - engine.latency_callback (mode == JackPlaybackLatency); -} - -int -JACKAudioBackend::_bufsize_callback (pframes_t nframes, void *arg) -{ - return static_cast (arg)->jack_bufsize_callback (nframes); -} - -int -JACKAudioBackend::jack_bufsize_callback (pframes_t nframes) -{ - /* if the size has not changed, this should be a no-op */ - - if (nframes == _current_buffer_size) { - return 0; - } - - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 1); - - _current_buffer_size = nframes; - - if (jack_port_type_get_buffer_size) { - _raw_buffer_sizes[DataType::AUDIO] = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_AUDIO_TYPE); - _raw_buffer_sizes[DataType::MIDI] = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_MIDI_TYPE); - } else { - - /* Old version of JACK. - - These crude guesses, see below where we try to get the right answers. - - Note that our guess for MIDI deliberatey tries to overestimate - by a little. It would be nicer if we could get the actual - size from a port, but we have to use this estimate in the - event that there are no MIDI ports currently. If there are - the value will be adjusted below. - */ - - _raw_buffer_sizes[DataType::AUDIO] = nframes * sizeof (Sample); - _raw_buffer_sizes[DataType::MIDI] = nframes * 4 - (nframes/2); - } - - engine.buffer_size_change (nframes); - - return 0; -} - -void -JACKAudioBackend::disconnected (const char* why) -{ - bool was_running = _running; - - _running = false; - _current_buffer_size = 0; - _current_sample_rate = 0; - - if (was_running) { - engine.halted_callback (why); /* EMIT SIGNAL */ - } -} -float -JACKAudioBackend::cpu_load() const -{ - GET_PRIVATE_JACK_POINTER_RET(_priv_jack,0); - return jack_cpu_load (_priv_jack); -} - -void -JACKAudioBackend::update_latencies () -{ - GET_PRIVATE_JACK_POINTER (_priv_jack); - jack_recompute_total_latencies (_priv_jack); -} - -ChanCount -JACKAudioBackend::n_physical (unsigned long flags) const -{ - ChanCount c; - - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, c); - - const char ** ports = jack_get_ports (_priv_jack, NULL, NULL, JackPortIsPhysical | flags); - - if (ports) { - for (uint32_t i = 0; ports[i]; ++i) { - if (!strstr (ports[i], "Midi-Through")) { - DataType t (jack_port_type (jack_port_by_name (_priv_jack, ports[i]))); - c.set (t, c.get (t) + 1); - } - } - - jack_free (ports); - } - - return c; -} diff --git a/libs/ardour/jack_connection.cc b/libs/ardour/jack_connection.cc deleted file mode 100644 index 5772d3dbb3..0000000000 --- a/libs/ardour/jack_connection.cc +++ /dev/null @@ -1,164 +0,0 @@ -/* - 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. - -*/ - -#include -#include - -#include "pbd/epa.h" - -#include "ardour/jack_connection.h" -#include "ardour/jack_utils.h" - -#define GET_PRIVATE_JACK_POINTER(j) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return; } -#define GET_PRIVATE_JACK_POINTER_RET(j,r) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return r; } - -using namespace ARDOUR; -using namespace PBD; -using std::string; -using std::vector; - -static void jack_halted_callback (void* arg) -{ - JackConnection* jc = static_cast (arg); - jc->halted_callback (); -} - -static void jack_halted_info_callback (jack_status_t code, const char* reason, void* arg) -{ - JackConnection* jc = static_cast (arg); - jc->halted_info_callback (code, reason); -} - - -JackConnection::JackConnection (const std::string& arg1, const std::string& arg2) - : _jack (0) - , _client_name (arg1) - , session_uuid (arg2) -{ -} - -JackConnection::~JackConnection () -{ - close (); -} - -bool -JackConnection::server_running () -{ - EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); - boost::scoped_ptr current_epa; - - /* revert all environment settings back to whatever they were when - * ardour started, because ardour's startup script may have reset - * something in ways that interfere with finding/starting JACK. - */ - - if (global_epa) { - current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */ - global_epa->restore (); - } - - jack_status_t status; - jack_client_t* c = jack_client_open ("ardourprobe", JackNoStartServer, &status); - - if (status == 0) { - jack_client_close (c); - return true; - } - - return false; -} - -int -JackConnection::open () -{ - EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); - boost::scoped_ptr current_epa; - jack_status_t status; - - close (); - - /* revert all environment settings back to whatever they were when ardour started - */ - - if (global_epa) { - current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */ - global_epa->restore (); - } - - /* ensure that PATH or equivalent includes likely locations of the JACK - * server, in case the user's default does not. - */ - - vector dirs; - get_jack_server_dir_paths (dirs); - set_path_env_for_jack_autostart (dirs); - - if ((_jack = jack_client_open (_client_name.c_str(), JackSessionID, &status, session_uuid.c_str())) == 0) { - return -1; - } - - if (status & JackNameNotUnique) { - _client_name = jack_get_client_name (_jack); - } - - /* attach halted handler */ - - if (jack_on_info_shutdown) { - jack_on_info_shutdown (_jack, jack_halted_info_callback, this); - } else { - jack_on_shutdown (_jack, jack_halted_callback, this); - } - - - Connected(); /* EMIT SIGNAL */ - - return 0; -} - -int -JackConnection::close () -{ - GET_PRIVATE_JACK_POINTER_RET (_jack, -1); - - if (_priv_jack) { - int ret = jack_client_close (_priv_jack); - _jack = 0; - Disconnected (""); /* EMIT SIGNAL */ - return ret; - } - - return 0; -} - -void -JackConnection::halted_callback () -{ - _jack = 0; - Disconnected (""); -} - -void -JackConnection::halted_info_callback (jack_status_t /*status*/, const char* reason) -{ - _jack = 0; - Disconnected (reason); -} - - diff --git a/libs/ardour/jack_portengine.cc b/libs/ardour/jack_portengine.cc deleted file mode 100644 index 4595857175..0000000000 --- a/libs/ardour/jack_portengine.cc +++ /dev/null @@ -1,568 +0,0 @@ -/* - 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. - -*/ - -#include -#include - -#include "pbd/error.h" - -#include "ardour/jack_portengine.h" -#include "ardour/jack_connection.h" -#include "ardour/port_manager.h" - -#include "i18n.h" - -using namespace ARDOUR; -using namespace PBD; -using std::string; -using std::vector; - -#define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return; } -#define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return r; } - -static uint32_t -ardour_port_flags_to_jack_flags (PortFlags flags) -{ - uint32_t jack_flags = 0; - - if (flags & IsInput) { - jack_flags |= JackPortIsInput; - } - if (flags & IsOutput) { - jack_flags |= JackPortIsOutput; - } - if (flags & IsTerminal) { - jack_flags |= JackPortIsTerminal; - } - if (flags & IsPhysical) { - jack_flags |= JackPortIsPhysical; - } - if (flags & CanMonitor) { - jack_flags |= JackPortCanMonitor; - } - - return jack_flags; -} - -static DataType -jack_port_type_to_ardour_data_type (const char* jack_type) -{ - if (strcmp (jack_type, JACK_DEFAULT_AUDIO_TYPE) == 0) { - return DataType::AUDIO; - } else if (strcmp (jack_type, JACK_DEFAULT_MIDI_TYPE) == 0) { - return DataType::MIDI; - } - return DataType::NIL; -} - -static const char* -ardour_data_type_to_jack_port_type (DataType d) -{ - switch (d) { - case DataType::AUDIO: - return JACK_DEFAULT_AUDIO_TYPE; - case DataType::MIDI: - return JACK_DEFAULT_MIDI_TYPE; - } - - return ""; -} - -JACKPortEngine::JACKPortEngine (PortManager& pm, boost::shared_ptr jc) - : PortEngine (pm) - , _jack_connection (jc) -{ - _jack_connection->Connected.connect_same_thread (jack_connection_connection, boost::bind (&JACKPortEngine::connected_to_jack, this)); -} - -JACKPortEngine::~JACKPortEngine () -{ - /* a default destructor would do this, and so would this one, - but we'll make it explicit in case we ever need to debug - the lifetime of the JACKConnection - */ - _jack_connection.reset (); -} - -void -JACKPortEngine::connected_to_jack () -{ - /* register callbacks for stuff that is our responsibility */ - - jack_client_t* client = _jack_connection->jack(); - - if (!client) { - /* how could this happen? it could ... */ - error << _("Already disconnected from JACK before PortEngine could register callbacks") << endmsg; - return; - } - - jack_set_port_registration_callback (client, _registration_callback, this); - jack_set_port_connect_callback (client, _connect_callback, this); - jack_set_graph_order_callback (client, _graph_order_callback, this); -} - -void* -JACKPortEngine::private_handle() const -{ - return _jack_connection->jack(); -} - -bool -JACKPortEngine::connected() const -{ - return _jack_connection->connected(); -} - -int -JACKPortEngine::set_port_name (PortHandle port, const std::string& name) -{ - return jack_port_set_name ((jack_port_t*) port, name.c_str()); -} - -string -JACKPortEngine::get_port_name (PortHandle port) const -{ - return jack_port_name ((jack_port_t*) port); -} - -PortEngine::PortHandle* -JACKPortEngine:: get_port_by_name (const std::string& name) const -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - return (PortHandle*) jack_port_by_name (_priv_jack, name.c_str()); -} - -void -JACKPortEngine::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg) -{ - static_cast (arg)->manager.registration_callback (); -} - -int -JACKPortEngine::_graph_order_callback (void *arg) -{ - return static_cast (arg)->manager.graph_order_callback (); -} - -void -JACKPortEngine::_connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn, void* arg) -{ - static_cast (arg)->connect_callback (id_a, id_b, conn); -} - -void -JACKPortEngine::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn) -{ - if (manager.port_remove_in_progress()) { - return; - } - - GET_PRIVATE_JACK_POINTER (_priv_jack); - - jack_port_t* a = jack_port_by_id (_priv_jack, id_a); - jack_port_t* b = jack_port_by_id (_priv_jack, id_b); - - manager.connect_callback (jack_port_name (a), jack_port_name (b), conn == 0 ? false : true); -} - -bool -JACKPortEngine::connected (PortHandle port, bool process_callback_safe) -{ - bool ret = false; - - const char** ports; - - if (process_callback_safe) { - ports = jack_port_get_connections ((jack_port_t*)port); - } else { - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); - ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); - } - - if (ports) { - ret = true; - } - - jack_free (ports); - - return ret; -} - -bool -JACKPortEngine::connected_to (PortHandle port, const std::string& other, bool process_callback_safe) -{ - bool ret = false; - const char** ports; - - if (process_callback_safe) { - ports = jack_port_get_connections ((jack_port_t*)port); - } else { - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); - ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); - } - - if (ports) { - for (int i = 0; ports[i]; ++i) { - if (other == ports[i]) { - ret = true; - } - } - jack_free (ports); - } - - return ret; -} - -bool -JACKPortEngine::physically_connected (PortHandle p, bool process_callback_safe) -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); - jack_port_t* port = (jack_port_t*) p; - - const char** ports; - - if (process_callback_safe) { - ports = jack_port_get_connections ((jack_port_t*)port); - } else { - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); - ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); - } - - if (ports) { - for (int i = 0; ports[i]; ++i) { - - jack_port_t* other = jack_port_by_name (_priv_jack, ports[i]); - - if (other && (jack_port_flags (other) & JackPortIsPhysical)) { - return true; - } - } - jack_free (ports); - } - - return false; -} - -int -JACKPortEngine::get_connections (PortHandle port, vector& s, bool process_callback_safe) -{ - const char** ports; - - if (process_callback_safe) { - ports = jack_port_get_connections ((jack_port_t*)port); - } else { - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); - } - - if (ports) { - for (int i = 0; ports[i]; ++i) { - s.push_back (ports[i]); - } - jack_free (ports); - } - - return s.size(); -} - -DataType -JACKPortEngine::port_data_type (PortHandle p) const -{ - return jack_port_type_to_ardour_data_type (jack_port_type ((jack_port_t*) p)); -} - -const string& -JACKPortEngine::my_name() const -{ - return _jack_connection->client_name(); -} - -bool -JACKPortEngine::port_is_physical (PortHandle ph) const -{ - if (!ph) { - return false; - } - - return jack_port_flags ((jack_port_t*) ph) & JackPortIsPhysical; -} - -int -JACKPortEngine::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) const -{ - - GET_PRIVATE_JACK_POINTER_RET (_priv_jack,0); - - const char** ports = jack_get_ports (_priv_jack, port_name_pattern.c_str(), - ardour_data_type_to_jack_port_type (type), - ardour_port_flags_to_jack_flags (flags)); - - if (ports == 0) { - return 0; - } - - for (uint32_t i = 0; ports[i]; ++i) { - s.push_back (ports[i]); - } - - jack_free (ports); - - return s.size(); -} - -ChanCount -JACKPortEngine::n_physical (unsigned long flags) const -{ - ChanCount c; - - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, c); - - const char ** ports = jack_get_ports (_priv_jack, NULL, NULL, JackPortIsPhysical | flags); - - if (ports) { - for (uint32_t i = 0; ports[i]; ++i) { - if (!strstr (ports[i], "Midi-Through")) { - DataType t = port_data_type (jack_port_by_name (_priv_jack, ports[i])); - if (t != DataType::NIL) { - c.set (t, c.get (t) + 1); - } - } - } - - jack_free (ports); - } - - return c; -} - -ChanCount -JACKPortEngine::n_physical_inputs () const -{ - return n_physical (JackPortIsInput); -} - -ChanCount -JACKPortEngine::n_physical_outputs () const -{ - return n_physical (JackPortIsOutput); -} - -void -JACKPortEngine::get_physical (DataType type, unsigned long flags, vector& phy) const -{ - GET_PRIVATE_JACK_POINTER (_priv_jack); - const char ** ports; - - if ((ports = jack_get_ports (_priv_jack, NULL, ardour_data_type_to_jack_port_type (type), JackPortIsPhysical | flags)) == 0) { - return; - } - - if (ports) { - for (uint32_t i = 0; ports[i]; ++i) { - if (strstr (ports[i], "Midi-Through")) { - continue; - } - phy.push_back (ports[i]); - } - jack_free (ports); - } -} - -/** Get physical ports for which JackPortIsOutput is set; ie those that correspond to - * a physical input connector. - */ -void -JACKPortEngine::get_physical_inputs (DataType type, vector& ins) -{ - get_physical (type, JackPortIsOutput, ins); -} - -/** Get physical ports for which JackPortIsInput is set; ie those that correspond to - * a physical output connector. - */ -void -JACKPortEngine::get_physical_outputs (DataType type, vector& outs) -{ - get_physical (type, JackPortIsInput, outs); -} - - -bool -JACKPortEngine::can_monitor_input () const -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack,false); - const char ** ports; - - if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortCanMonitor)) == 0) { - return false; - } - - jack_free (ports); - - return true; -} - -int -JACKPortEngine::request_input_monitoring (PortHandle port, bool yn) -{ - return jack_port_request_monitor ((jack_port_t*) port, yn); -} -int -JACKPortEngine::ensure_input_monitoring (PortHandle port, bool yn) -{ - return jack_port_ensure_monitor ((jack_port_t*) port, yn); -} -bool -JACKPortEngine::monitoring_input (PortHandle port) -{ - return jack_port_monitoring_input ((jack_port_t*) port); -} - - -pframes_t -JACKPortEngine::sample_time_at_cycle_start () -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - return jack_last_frame_time (_priv_jack); -} - - -PortEngine::PortHandle -JACKPortEngine::register_port (const std::string& shortname, ARDOUR::DataType type, ARDOUR::PortFlags flags) -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - return jack_port_register (_priv_jack, shortname.c_str(), - ardour_data_type_to_jack_port_type (type), - ardour_port_flags_to_jack_flags (flags), - 0); -} - -void -JACKPortEngine::unregister_port (PortHandle port) -{ - GET_PRIVATE_JACK_POINTER (_priv_jack); - (void) jack_port_unregister (_priv_jack, (jack_port_t*) port); -} - -int -JACKPortEngine::connect (PortHandle port, const std::string& other) -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - return jack_connect (_priv_jack, jack_port_name ((jack_port_t*) port), other.c_str()); -} -int -JACKPortEngine::connect (const std::string& src, const std::string& dst) -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - - int r = jack_connect (_priv_jack, src.c_str(), dst.c_str()); - return r; -} - -int -JACKPortEngine::disconnect (PortHandle port, const std::string& other) -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - return jack_disconnect (_priv_jack, jack_port_name ((jack_port_t*) port), other.c_str()); -} - -int -JACKPortEngine::disconnect (const std::string& src, const std::string& dst) -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - return jack_disconnect (_priv_jack, src.c_str(), dst.c_str()); -} - -int -JACKPortEngine::disconnect_all (PortHandle port) -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); - return jack_port_disconnect (_priv_jack, (jack_port_t*) port); -} - -int -JACKPortEngine::midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) -{ - jack_midi_event_t ev; - int ret; - - if ((ret = jack_midi_event_get (&ev, port_buffer, event_index)) == 0) { - timestamp = ev.time; - size = ev.size; - *buf = ev.buffer; - } - - return ret; -} - -int -JACKPortEngine::midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size) -{ - return jack_midi_event_write (port_buffer, timestamp, buffer, size); -} - -uint32_t -JACKPortEngine::get_midi_event_count (void* port_buffer) -{ - return jack_midi_get_event_count (port_buffer); -} - -void -JACKPortEngine::midi_clear (void* port_buffer) -{ - jack_midi_clear_buffer (port_buffer); -} - -void -JACKPortEngine::set_latency_range (PortHandle port, bool for_playback, LatencyRange r) -{ - jack_latency_range_t range; - - range.min = r.min; - range.max = r.max; - - jack_port_set_latency_range ((jack_port_t*) port, for_playback ? JackPlaybackLatency : JackCaptureLatency, &range); -} - -LatencyRange -JACKPortEngine::get_latency_range (PortHandle port, bool for_playback) -{ - jack_latency_range_t range; - LatencyRange ret; - - jack_port_get_latency_range ((jack_port_t*) port, for_playback ? JackPlaybackLatency : JackCaptureLatency, &range); - - ret.min = range.min; - ret.max = range.max; - - return ret; -} - -void* -JACKPortEngine::get_buffer (PortHandle port, pframes_t nframes) -{ - return jack_port_get_buffer ((jack_port_t*) port, nframes); -} - -uint32_t -JACKPortEngine::port_name_size() const -{ - return jack_port_name_size (); -} diff --git a/libs/ardour/jack_slave.cc b/libs/ardour/jack_slave.cc deleted file mode 100644 index 4b2f3b1860..0000000000 --- a/libs/ardour/jack_slave.cc +++ /dev/null @@ -1,79 +0,0 @@ -/* - Copyright (C) 2004 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. - -*/ - -#include -#include - -#include "ardour/audioengine.h" -#include "ardour/slave.h" - -using namespace std; -using namespace ARDOUR; - -JACK_Slave::JACK_Slave (AudioEngine& e) - : engine (e) -{ - double x; - framepos_t p; - /* call this to initialize things */ - speed_and_position (x, p); -} - -JACK_Slave::~JACK_Slave () -{ -} - -bool -JACK_Slave::locked() const -{ - return true; -} - -bool -JACK_Slave::ok() const -{ - return true; -} - -bool -JACK_Slave::speed_and_position (double& sp, framepos_t& position) -{ - switch (engine.transport_state()) { - case TransportStopped: - speed = 0; - _starting = false; - break; - case TransportRolling: - speed = 1.0; - _starting = false; - break; - case TransportLooping: - speed = 1.0; - _starting = false; - break; - case TransportStarting: - _starting = true; - // don't adjust speed here, just leave it as it was - break; - } - - sp = speed; - position = engine.transport_frame(); - return true; -} diff --git a/libs/ardour/jack_utils.cc b/libs/ardour/jack_utils.cc deleted file mode 100644 index 4e2392aced..0000000000 --- a/libs/ardour/jack_utils.cc +++ /dev/null @@ -1,901 +0,0 @@ -/* - Copyright (C) 2010 Paul Davis - Copyright (C) 2011 Tim Mayberry - - 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 "libardour-config.h" -#endif - -#ifdef HAVE_ALSA -#include -#endif - -#ifdef __APPLE__ -#include -#include -#include -#include -#endif - -#ifdef HAVE_PORTAUDIO -#include -#endif - -#include - -#include - -#include - -#include - -#include "pbd/epa.h" -#include "pbd/error.h" -#include "pbd/convert.h" -#include "pbd/file_utils.h" -#include "pbd/search_path.h" - -#include "ardour/jack_utils.h" - -#ifdef __APPLE -#include -#endif - -#include "i18n.h" - -using namespace std; -using namespace PBD; - -namespace ARDOUR { - // The pretty driver names - const char * const portaudio_driver_name = X_("Portaudio"); - const char * const coreaudio_driver_name = X_("CoreAudio"); - const char * const alsa_driver_name = X_("ALSA"); - const char * const oss_driver_name = X_("OSS"); - const char * const freebob_driver_name = X_("FreeBoB"); - const char * const ffado_driver_name = X_("FFADO"); - const char * const netjack_driver_name = X_("NetJACK"); - const char * const dummy_driver_name = X_("Dummy"); -} - -namespace { - - // The real driver names - const char * const portaudio_driver_command_line_name = X_("portaudio"); - const char * const coreaudio_driver_command_line_name = X_("coreaudio"); - const char * const alsa_driver_command_line_name = X_("alsa"); - const char * const oss_driver_command_line_name = X_("oss"); - const char * const freebob_driver_command_line_name = X_("freebob"); - const char * const ffado_driver_command_line_name = X_("firewire"); - const char * const netjack_driver_command_line_name = X_("netjack"); - const char * const dummy_driver_command_line_name = X_("dummy"); - - // should we provide more "pretty" names like above? - const char * const alsaseq_midi_driver_name = X_("seq"); - const char * const alsaraw_midi_driver_name = X_("raw"); - const char * const winmme_midi_driver_name = X_("winmme"); - const char * const coremidi_midi_driver_name = X_("coremidi"); - - // this should probably be translated - const char * const default_device_name = X_("Default"); -} - -std::string -get_none_string () -{ - return _("None"); -} - -void -ARDOUR::get_jack_audio_driver_names (vector& audio_driver_names) -{ -#ifdef WIN32 - audio_driver_names.push_back (portaudio_driver_name); -#elif __APPLE__ - audio_driver_names.push_back (coreaudio_driver_name); -#else -#ifdef HAVE_ALSA - audio_driver_names.push_back (alsa_driver_name); -#endif - audio_driver_names.push_back (oss_driver_name); - audio_driver_names.push_back (freebob_driver_name); - audio_driver_names.push_back (ffado_driver_name); -#endif - audio_driver_names.push_back (netjack_driver_name); - audio_driver_names.push_back (dummy_driver_name); -} - -void -ARDOUR::get_jack_default_audio_driver_name (string& audio_driver_name) -{ - vector drivers; - get_jack_audio_driver_names (drivers); - audio_driver_name = drivers.front (); -} - -void -ARDOUR::get_jack_sample_rate_strings (vector& samplerates) -{ - // do these really need to be translated? - samplerates.push_back (_("8000Hz")); - samplerates.push_back (_("22050Hz")); - samplerates.push_back (_("44100Hz")); - samplerates.push_back (_("48000Hz")); - samplerates.push_back (_("88200Hz")); - samplerates.push_back (_("96000Hz")); - samplerates.push_back (_("192000Hz")); -} - -string -ARDOUR::get_jack_default_sample_rate () -{ - return _("48000Hz"); -} - -void -ARDOUR::get_jack_period_size_strings (std::vector& period_sizes) -{ - period_sizes.push_back ("32"); - period_sizes.push_back ("64"); - period_sizes.push_back ("128"); - period_sizes.push_back ("256"); - period_sizes.push_back ("512"); - period_sizes.push_back ("1024"); - period_sizes.push_back ("2048"); - period_sizes.push_back ("4096"); - period_sizes.push_back ("8192"); -} - -string -ARDOUR::get_jack_default_period_size () -{ - return "1024"; -} - -void -ARDOUR::get_jack_dither_mode_strings (const string& driver, vector& dither_modes) -{ - dither_modes.push_back (get_none_string ()); - - if (driver == alsa_driver_name ) { - dither_modes.push_back (_("Triangular")); - dither_modes.push_back (_("Rectangular")); - dither_modes.push_back (_("Shaped")); - } -} - -string -ARDOUR::get_jack_default_dither_mode (const string& /*driver*/) -{ - return get_none_string (); -} - -string -ARDOUR::get_jack_latency_string (string samplerate, float periods, string period_size) -{ - uint32_t rate = atoi (samplerate); - float psize = atof (period_size); - - char buf[32]; - snprintf (buf, sizeof(buf), "%.1fmsec", (periods * psize) / (rate/1000.0)); - - return buf; -} - -bool -get_jack_command_line_audio_driver_name (const string& driver_name, string& command_line_name) -{ - using namespace ARDOUR; - if (driver_name == portaudio_driver_name) { - command_line_name = portaudio_driver_command_line_name; - return true; - } else if (driver_name == coreaudio_driver_name) { - command_line_name = coreaudio_driver_command_line_name; - return true; - } else if (driver_name == alsa_driver_name) { - command_line_name = alsa_driver_command_line_name; - return true; - } else if (driver_name == oss_driver_name) { - command_line_name = oss_driver_command_line_name; - return true; - } else if (driver_name == freebob_driver_name) { - command_line_name = freebob_driver_command_line_name; - return true; - } else if (driver_name == ffado_driver_name) { - command_line_name = ffado_driver_command_line_name; - return true; - } else if (driver_name == netjack_driver_name) { - command_line_name = netjack_driver_command_line_name; - return true; - } else if (driver_name == dummy_driver_name) { - command_line_name = dummy_driver_command_line_name; - return true; - } - return false; -} - -bool -get_jack_command_line_audio_device_name (const string& driver_name, - const string& device_name, string& command_line_device_name) -{ - using namespace ARDOUR; - device_map_t devices; - - get_jack_device_names_for_audio_driver (driver_name, devices); - - for (device_map_t::const_iterator i = devices.begin (); i != devices.end(); ++i) { - if (i->first == device_name) { - command_line_device_name = i->second; - return true; - } - } - return false; -} - -bool -get_jack_command_line_dither_mode (const string& dither_mode, string& command_line_dither_mode) -{ - using namespace ARDOUR; - - if (dither_mode == _("Triangular")) { - command_line_dither_mode = "triangular"; - return true; - } else if (dither_mode == _("Rectangular")) { - command_line_dither_mode = "rectangular"; - return true; - } else if (dither_mode == _("Shaped")) { - command_line_dither_mode = "shaped"; - return true; - } - - return false; -} - -void -ARDOUR::get_jack_alsa_device_names (device_map_t& devices) -{ -#ifdef HAVE_ALSA - snd_ctl_t *handle; - snd_ctl_card_info_t *info; - snd_pcm_info_t *pcminfo; - snd_ctl_card_info_alloca(&info); - snd_pcm_info_alloca(&pcminfo); - string devname; - int cardnum = -1; - int device = -1; - - while (snd_card_next (&cardnum) >= 0 && cardnum >= 0) { - - devname = "hw:"; - devname += PBD::to_string (cardnum, std::dec); - - if (snd_ctl_open (&handle, devname.c_str(), 0) >= 0 && snd_ctl_card_info (handle, info) >= 0) { - - if (snd_ctl_card_info (handle, info) < 0) { - continue; - } - - string card_name = snd_ctl_card_info_get_name (info); - - /* change devname to use ID, not number */ - - devname = "hw:"; - devname += snd_ctl_card_info_get_id (info); - - while (snd_ctl_pcm_next_device (handle, &device) >= 0 && device >= 0) { - - /* only detect duplex devices here. more - * complex arrangements are beyond our scope - */ - - snd_pcm_info_set_device (pcminfo, device); - snd_pcm_info_set_subdevice (pcminfo, 0); - snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_CAPTURE); - - if (snd_ctl_pcm_info (handle, pcminfo) >= 0) { - - snd_pcm_info_set_device (pcminfo, device); - snd_pcm_info_set_subdevice (pcminfo, 0); - snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_PLAYBACK); - - if (snd_ctl_pcm_info (handle, pcminfo) >= 0) { - devname += ','; - devname += PBD::to_string (device, std::dec); - devices.insert (std::make_pair (card_name, devname)); - } - } - } - - snd_ctl_close(handle); - } - } -#else - /* silence a compiler unused variable warning */ - (void) devices; -#endif -} - -#ifdef __APPLE__ -static OSStatus -getDeviceUIDFromID( AudioDeviceID id, char *name, size_t nsize) -{ - UInt32 size = sizeof(CFStringRef); - CFStringRef UI; - OSStatus res = AudioDeviceGetProperty(id, 0, false, - kAudioDevicePropertyDeviceUID, &size, &UI); - if (res == noErr) - CFStringGetCString(UI,name,nsize,CFStringGetSystemEncoding()); - CFRelease(UI); - return res; -} -#endif - -void -ARDOUR::get_jack_coreaudio_device_names (device_map_t& devices) -{ -#ifdef __APPLE__ - // Find out how many Core Audio devices are there, if any... - // (code snippet gently "borrowed" from St?hane Letz jackdmp;) - OSStatus err; - Boolean isWritable; - UInt32 outSize = sizeof(isWritable); - - err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, - &outSize, &isWritable); - if (err == noErr) { - // Calculate the number of device available... - int numCoreDevices = outSize / sizeof(AudioDeviceID); - // Make space for the devices we are about to get... - AudioDeviceID *coreDeviceIDs = new AudioDeviceID [numCoreDevices]; - err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, - &outSize, (void *) coreDeviceIDs); - if (err == noErr) { - // Look for the CoreAudio device name... - char coreDeviceName[256]; - UInt32 nameSize; - - for (int i = 0; i < numCoreDevices; i++) { - - nameSize = sizeof (coreDeviceName); - - /* enforce duplex devices only */ - - err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], - 0, true, kAudioDevicePropertyStreams, - &outSize, &isWritable); - - if (err != noErr || outSize == 0) { - continue; - } - - err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], - 0, false, kAudioDevicePropertyStreams, - &outSize, &isWritable); - - if (err != noErr || outSize == 0) { - continue; - } - - err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], - 0, true, kAudioDevicePropertyDeviceName, - &outSize, &isWritable); - if (err == noErr) { - err = AudioDeviceGetProperty(coreDeviceIDs[i], - 0, true, kAudioDevicePropertyDeviceName, - &nameSize, (void *) coreDeviceName); - if (err == noErr) { - char drivername[128]; - - // this returns the unique id for the device - // that must be used on the commandline for jack - - if (getDeviceUIDFromID(coreDeviceIDs[i], drivername, sizeof (drivername)) == noErr) { - devices.insert (make_pair (coreDeviceName, drivername)); - } - } - } - } - } - delete [] coreDeviceIDs; - } -#else - /* silence a compiler unused variable warning */ - (void) devices; -#endif -} - -void -ARDOUR::get_jack_portaudio_device_names (device_map_t& devices) -{ -#ifdef HAVE_PORTAUDIO - if (Pa_Initialize() != paNoError) { - return; - } - - for (PaDeviceIndex i = 0; i < Pa_GetDeviceCount (); ++i) { - string api_name; - string readable_name; - string jack_device_name; - const PaDeviceInfo* device_info = Pa_GetDeviceInfo(i); - - if (device_info != NULL) { // it should never be ? - api_name = Pa_GetHostApiInfo (device_info->hostApi)->name; - readable_name = api_name + " " + device_info->name; - jack_device_name = api_name + "::" + device_info->name; - devices.insert (make_pair (readable_name, jack_device_name)); - } - } - Pa_Terminate(); -#else - /* silence a compiler unused variable warning */ - (void) devices; -#endif -} - -void -ARDOUR::get_jack_oss_device_names (device_map_t& devices) -{ - devices.insert (make_pair (default_device_name, default_device_name)); -} - -void -ARDOUR::get_jack_freebob_device_names (device_map_t& devices) -{ - devices.insert (make_pair (default_device_name, default_device_name)); -} - -void -ARDOUR::get_jack_ffado_device_names (device_map_t& devices) -{ - devices.insert (make_pair (default_device_name, default_device_name)); -} - -void -ARDOUR::get_jack_netjack_device_names (device_map_t& devices) -{ - devices.insert (make_pair (default_device_name, default_device_name)); -} - -void -ARDOUR::get_jack_dummy_device_names (device_map_t& devices) -{ - devices.insert (make_pair (default_device_name, default_device_name)); -} - -bool -ARDOUR::get_jack_device_names_for_audio_driver (const string& driver_name, device_map_t& devices) -{ - devices.clear(); - - if (driver_name == portaudio_driver_name) { - get_jack_portaudio_device_names (devices); - } else if (driver_name == coreaudio_driver_name) { - get_jack_coreaudio_device_names (devices); - } else if (driver_name == alsa_driver_name) { - get_jack_alsa_device_names (devices); - } else if (driver_name == oss_driver_name) { - get_jack_oss_device_names (devices); - } else if (driver_name == freebob_driver_name) { - get_jack_freebob_device_names (devices); - } else if (driver_name == ffado_driver_name) { - get_jack_ffado_device_names (devices); - } else if (driver_name == netjack_driver_name) { - get_jack_netjack_device_names (devices); - } else if (driver_name == dummy_driver_name) { - get_jack_dummy_device_names (devices); - } - - return !devices.empty(); -} - - -std::vector -ARDOUR::get_jack_device_names_for_audio_driver (const string& driver_name) -{ - std::vector readable_names; - device_map_t devices; - - get_jack_device_names_for_audio_driver (driver_name, devices); - - for (device_map_t::const_iterator i = devices.begin (); i != devices.end(); ++i) { - readable_names.push_back (i->first); - } - - return readable_names; -} - -bool -ARDOUR::get_jack_audio_driver_supports_two_devices (const string& driver) -{ - return (driver == alsa_driver_name || driver == oss_driver_name); -} - -bool -ARDOUR::get_jack_audio_driver_supports_latency_adjustment (const string& driver) -{ - return (driver == alsa_driver_name || driver == coreaudio_driver_name || - driver == ffado_driver_name || driver == portaudio_driver_name); -} - -bool -ARDOUR::get_jack_audio_driver_supports_setting_period_count (const string& driver) -{ - return !(driver == dummy_driver_name || driver == coreaudio_driver_name || - driver == portaudio_driver_name); -} - -bool -ARDOUR::get_jack_server_application_names (std::vector& server_names) -{ -#ifdef WIN32 - server_names.push_back ("jackd.exe"); -#else - server_names.push_back ("jackd"); - server_names.push_back ("jackdmp"); -#endif - return !server_names.empty(); -} - -void -ARDOUR::set_path_env_for_jack_autostart (const vector& dirs) -{ -#ifdef __APPLE__ - // push it back into the environment so that auto-started JACK can find it. - // XXX why can't we just expect OS X users to have PATH set correctly? we can't ... - setenv ("PATH", SearchPath(dirs).to_string().c_str(), 1); -#else - /* silence a compiler unused variable warning */ - (void) dirs; -#endif -} - -bool -ARDOUR::get_jack_server_dir_paths (vector& server_dir_paths) -{ -#ifdef __APPLE__ - /* this magic lets us finds the path to the OSX bundle, and then - we infer JACK's location from there - */ - - char execpath[MAXPATHLEN+1]; - uint32_t pathsz = sizeof (execpath); - - _NSGetExecutablePath (execpath, &pathsz); - - server_dir_paths.push_back (Glib::path_get_dirname (execpath)); -#endif - - SearchPath sp(string(g_getenv("PATH"))); - -#ifdef WIN32 - gchar *install_dir = g_win32_get_package_installation_directory_of_module (NULL); - if (install_dir) { - sp.push_back (install_dir); - g_free (install_dir); - } - // don't try and use a system wide JACK install yet. -#else - if (sp.empty()) { - sp.push_back ("/usr/bin"); - sp.push_back ("/bin"); - sp.push_back ("/usr/local/bin"); - sp.push_back ("/opt/local/bin"); - } -#endif - - std::copy (sp.begin(), sp.end(), std::back_inserter(server_dir_paths)); - - return !server_dir_paths.empty(); -} - -bool -ARDOUR::get_jack_server_paths (const vector& server_dir_paths, - const vector& server_names, - vector& server_paths) -{ - for (vector::const_iterator i = server_names.begin(); i != server_names.end(); ++i) { - Glib::PatternSpec ps (*i); - find_matching_files_in_directories (server_dir_paths, ps, server_paths); - } - return !server_paths.empty(); -} - -bool -ARDOUR::get_jack_server_paths (vector& server_paths) -{ - vector server_dirs; - - if (!get_jack_server_dir_paths (server_dirs)) { - return false; - } - - vector server_names; - - if (!get_jack_server_application_names (server_names)) { - return false; - } - - if (!get_jack_server_paths (server_dirs, server_names, server_paths)) { - return false; - } - - return !server_paths.empty(); -} - -bool -ARDOUR::get_jack_default_server_path (std::string& server_path) -{ - vector server_paths; - - if (!get_jack_server_paths (server_paths)) { - return false; - } - - server_path = server_paths.front (); - return true; -} - -string -quote_string (const string& str) -{ - return "\"" + str + "\""; -} - -ARDOUR::JackCommandLineOptions::JackCommandLineOptions () - : server_path () - , timeout(0) - , no_mlock(false) - , ports_max(128) - , realtime(true) - , priority(0) - , unlock_gui_libs(false) - , verbose(false) - , temporary(true) - , driver() - , input_device() - , output_device() - , num_periods(2) - , period_size(1024) - , samplerate(48000) - , input_latency(0) - , output_latency(0) - , hardware_metering(false) - , hardware_monitoring(false) - , dither_mode() - , force16_bit(false) - , soft_mode(false) - , midi_driver() -{ - -} - -bool -ARDOUR::get_jack_command_line_string (const JackCommandLineOptions& options, string& command_line) -{ - vector args; - - args.push_back (options.server_path); - -#ifdef WIN32 - // must use sync mode on windows - args.push_back ("-S"); - - // this needs to be added now on windows - if (!options.midi_driver.empty () && options.midi_driver != get_none_string ()) { - args.push_back ("-X"); - args.push_back (options.midi_driver); - } -#endif - - if (options.timeout) { - args.push_back ("-t"); - args.push_back (to_string (options.timeout, std::dec)); - } - - if (options.no_mlock) { - args.push_back ("-m"); - } - - args.push_back ("-p"); - args.push_back (to_string(options.ports_max, std::dec)); - - if (options.realtime) { - args.push_back ("-R"); - if (options.priority != 0) { - args.push_back ("-P"); - args.push_back (to_string(options.priority, std::dec)); - } - } else { - args.push_back ("-r"); - } - - if (options.unlock_gui_libs) { - args.push_back ("-u"); - } - - if (options.verbose) { - args.push_back ("-v"); - } - -#ifndef WIN32 - if (options.temporary) { - args.push_back ("-T"); - } -#endif - - string command_line_driver_name; - - if (!get_jack_command_line_audio_driver_name (options.driver, command_line_driver_name)) { - return false; - } - - args.push_back ("-d"); - args.push_back (command_line_driver_name); - - if (options.output_device.empty() && options.input_device.empty()) { - return false; - } - - string command_line_input_device_name; - string command_line_output_device_name; - - if (!get_jack_command_line_audio_device_name (options.driver, - options.input_device, command_line_input_device_name)) { - return false; - } - - if (!get_jack_command_line_audio_device_name (options.driver, - options.output_device, command_line_output_device_name)) { - return false; - } - - if (options.input_device.empty()) { - // playback only - if (options.output_device.empty()) { - return false; - } - args.push_back ("-P"); - } else if (options.output_device.empty()) { - // capture only - if (options.input_device.empty()) { - return false; - } - args.push_back ("-C"); - } else if (options.input_device != options.output_device) { - // capture and playback on two devices if supported - if (get_jack_audio_driver_supports_two_devices (options.driver)) { - args.push_back ("-C"); - args.push_back (command_line_input_device_name); - args.push_back ("-P"); - args.push_back (command_line_output_device_name); - } else { - return false; - } - } - - if (options.input_channels) { - args.push_back ("-i"); - args.push_back (to_string (options.input_channels, std::dec)); - } - - if (options.output_channels) { - args.push_back ("-o"); - args.push_back (to_string (options.output_channels, std::dec)); - } - - if (get_jack_audio_driver_supports_setting_period_count (options.driver)) { - args.push_back ("-n"); - args.push_back (to_string (options.num_periods, std::dec)); - } - - args.push_back ("-r"); - args.push_back (to_string (options.samplerate, std::dec)); - - args.push_back ("-p"); - args.push_back (to_string (options.period_size, std::dec)); - - if (get_jack_audio_driver_supports_latency_adjustment (options.driver)) { - if (options.input_latency) { - args.push_back ("-I"); - args.push_back (to_string (options.input_latency, std::dec)); - } - if (options.output_latency) { - args.push_back ("-O"); - args.push_back (to_string (options.output_latency, std::dec)); - } - } - - if (options.input_device == options.output_device && options.input_device != default_device_name) { - args.push_back ("-d"); - args.push_back (command_line_input_device_name); - } - - if (options.driver == alsa_driver_name) { - if (options.hardware_metering) { - args.push_back ("-M"); - } - if (options.hardware_monitoring) { - args.push_back ("-H"); - } - - string command_line_dither_mode; - if (get_jack_command_line_dither_mode (options.dither_mode, command_line_dither_mode)) { - args.push_back ("-z"); - args.push_back (command_line_dither_mode); - } - if (options.force16_bit) { - args.push_back ("-S"); - } - if (options.soft_mode) { - args.push_back ("-s"); - } - - if (!options.midi_driver.empty() && options.midi_driver != get_none_string ()) { - args.push_back ("-X"); - args.push_back (options.midi_driver); - } - } - - ostringstream oss; - - for (vector::const_iterator i = args.begin(); i != args.end();) { -#ifdef WIN32 - oss << quote_string (*i); -#else - oss << *i; -#endif - if (++i != args.end()) oss << ' '; - } - - command_line = oss.str(); - return true; -} - -string -ARDOUR::get_jack_server_config_file_name () -{ - return ".jackdrc"; -} - -std::string -ARDOUR::get_jack_server_user_config_dir_path () -{ - return Glib::get_home_dir (); -} - -std::string -ARDOUR::get_jack_server_user_config_file_path () -{ - return Glib::build_filename (get_jack_server_user_config_dir_path (), get_jack_server_config_file_name ()); -} - -bool -ARDOUR::write_jack_config_file (const std::string& config_file_path, const string& command_line) -{ - ofstream jackdrc (config_file_path.c_str()); - - if (!jackdrc) { - error << string_compose (_("cannot open JACK rc file %1 to store parameters"), config_file_path) << endmsg; - return false; - } - - jackdrc << command_line << endl; - jackdrc.close (); - return true; -} diff --git a/libs/backends/jack/jack_api.cc b/libs/backends/jack/jack_api.cc new file mode 100644 index 0000000000..0136161181 --- /dev/null +++ b/libs/backends/jack/jack_api.cc @@ -0,0 +1,102 @@ +/* + 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. + +*/ + +#include "jack_connection.h" +#include "jack_audiobackend.h" +#include "jack_portengine.h" + +using namespace ARDOUR; + +static boost::shared_ptr backend; +static boost::shared_ptr port_engine; +static boost::shared_ptr jack_connection; + +static boost::shared_ptr +backend_factory (AudioEngine& ae) +{ + if (!jack_connection) { + return boost::shared_ptr(); + } + + if (!backend) { + backend.reset (new JACKAudioBackend (ae, jack_connection)); + } + + return backend; +} + +static boost::shared_ptr +portengine_factory (PortManager& pm) +{ + if (!jack_connection) { + return boost::shared_ptr(); + } + + if (!port_engine) { + port_engine.reset (new JACKPortEngine (pm, jack_connection)); + } + + return port_engine; +} + +static int +instantiate (const std::string& arg1, const std::string& arg2) +{ + try { + jack_connection.reset (new JackConnection (arg1, arg2)); + } catch (...) { + return -1; + } + + return 0; +} + +static int +deinstantiate () +{ + port_engine.reset (); + backend.reset (); + jack_connection.reset (); + + return 0; +} + +static bool +already_configured () +{ + return JackConnection::server_running (); +} + +extern "C" { + + + /* functions looked up using dlopen-and-cousins, and so naming scope + * must be non-mangled. + */ + + ARDOUR::AudioBackendInfo descriptor = { + "JACK", + instantiate, + deinstantiate, + backend_factory, + portengine_factory, + already_configured, + }; +} + diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc new file mode 100644 index 0000000000..22e5a525ea --- /dev/null +++ b/libs/backends/jack/jack_audiobackend.cc @@ -0,0 +1,937 @@ +/* + 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. + +*/ + +#include + +#include +#include + +#include "pbd/error.h" + +#include "jack/jack.h" +#include "jack/thread.h" + +#include "ardour/audioengine.h" +#include "ardour/session.h" +#include "ardour/types.h" + +#include "jack_audiobackend.h" +#include "jack_connection.h" +#include "jack_portengine.h" +#include "jack_utils.h" + +#include "i18n.h" + +using namespace ARDOUR; +using namespace PBD; +using std::string; +using std::vector; +using std::cerr; +using std::endl; + +#define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return; } +#define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return r; } + +JACKAudioBackend::JACKAudioBackend (AudioEngine& e, boost::shared_ptr jc) + : AudioBackend (e) + , _jack_connection (jc) + , _running (false) + , _freewheeling (false) + , _target_sample_rate (48000) + , _target_buffer_size (1024) + , _target_sample_format (FormatFloat) + , _target_interleaved (false) + , _target_input_channels (-1) + , _target_output_channels (-1) + , _target_systemic_input_latency (0) + , _target_systemic_output_latency (0) + , _current_sample_rate (0) + , _current_buffer_size (0) +{ + _jack_connection->Disconnected.connect_same_thread (disconnect_connection, boost::bind (&JACKAudioBackend::disconnected, this, _1)); +} + +JACKAudioBackend::~JACKAudioBackend() +{ +} + +string +JACKAudioBackend::name() const +{ + return X_("JACK"); +} + +void* +JACKAudioBackend::private_handle() const +{ + return _jack_connection->jack(); +} + +bool +JACKAudioBackend::connected() const +{ + return (private_handle() != 0); +} + +bool +JACKAudioBackend::is_realtime () const +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack,false); + return jack_is_realtime (_priv_jack); +} + +bool +JACKAudioBackend::requires_driver_selection() const +{ + return true; +} + +vector +JACKAudioBackend::enumerate_drivers () const +{ + vector currently_available; + get_jack_audio_driver_names (currently_available); + return currently_available; +} + +int +JACKAudioBackend::set_driver (const std::string& name) +{ + _target_driver = name; + return 0; +} + +vector +JACKAudioBackend::enumerate_devices () const +{ + vector currently_available = get_jack_device_names_for_audio_driver (_target_driver); + vector statuses; + + if (all_devices.find (_target_driver) == all_devices.end()) { + all_devices.insert (make_pair (_target_driver, std::set())); + } + + /* store every device we've found, by driver name. + * + * This is so we do not confuse ALSA, FFADO, netjack etc. devices + * with each other. + */ + + DeviceList& all (all_devices[_target_driver]); + + for (vector::const_iterator d = currently_available.begin(); d != currently_available.end(); ++d) { + all.insert (*d); + } + + for (DeviceList::const_iterator d = all.begin(); d != all.end(); ++d) { + if (find (currently_available.begin(), currently_available.end(), *d) == currently_available.end()) { + statuses.push_back (DeviceStatus (*d, false)); + } else { + statuses.push_back (DeviceStatus (*d, false)); + } + } + + return statuses; +} + +vector +JACKAudioBackend::available_sample_rates (const string& /*device*/) const +{ + vector f; + + if (connected()) { + f.push_back (sample_rate()); + return f; + } + + /* if JACK is not already running, just list a bunch of reasonable + values and let the future sort it all out. + */ + + f.push_back (8000.0); + f.push_back (16000.0); + f.push_back (24000.0); + f.push_back (32000.0); + f.push_back (44100.0); + f.push_back (48000.0); + f.push_back (88200.0); + f.push_back (96000.0); + f.push_back (192000.0); + f.push_back (384000.0); + + return f; +} + +vector +JACKAudioBackend::available_buffer_sizes (const string& /*device*/) const +{ + vector s; + + if (connected()) { + s.push_back (buffer_size()); + return s; + } + + s.push_back (8); + s.push_back (16); + s.push_back (32); + s.push_back (64); + s.push_back (128); + s.push_back (256); + s.push_back (512); + s.push_back (1024); + s.push_back (2048); + s.push_back (4096); + s.push_back (8192); + + return s; +} + +uint32_t +JACKAudioBackend::available_input_channel_count (const string& /*device*/) const +{ + return 128; +} + +uint32_t +JACKAudioBackend::available_output_channel_count (const string& /*device*/) const +{ + return 128; +} + +/* -- parameter setting -- */ + +int +JACKAudioBackend::set_device_name (const string& dev) +{ + if (connected()) { + /* need to stop and restart JACK for this to work, at present */ + return -1; + } + + _target_device = dev; + return 0; +} + +int +JACKAudioBackend::set_sample_rate (float sr) +{ + if (!connected()) { + _target_sample_rate = sr; + return 0; + } + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + + if (sr == jack_get_sample_rate (_priv_jack)) { + return 0; + } + + return -1; +} + +int +JACKAudioBackend::set_buffer_size (uint32_t nframes) +{ + if (!connected()) { + _target_buffer_size = nframes; + return 0; + } + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + + if (nframes == jack_get_buffer_size (_priv_jack)) { + return 0; + } + + return jack_set_buffer_size (_priv_jack, nframes); +} + +int +JACKAudioBackend::set_sample_format (SampleFormat sf) +{ + /* as far as JACK clients are concerned, the hardware is always + * floating point format. + */ + if (sf == FormatFloat) { + return 0; + } + return -1; +} + +int +JACKAudioBackend::set_interleaved (bool yn) +{ + /* as far as JACK clients are concerned, the hardware is always + * non-interleaved + */ + if (!yn) { + return 0; + } + return -1; +} + +int +JACKAudioBackend::set_input_channels (uint32_t cnt) +{ + if (connected()) { + return -1; + } + + _target_input_channels = cnt; + + return 0; +} + +int +JACKAudioBackend::set_output_channels (uint32_t cnt) +{ + if (connected()) { + return -1; + } + + _target_output_channels = cnt; + + return 0; +} + +int +JACKAudioBackend::set_systemic_input_latency (uint32_t l) +{ + if (connected()) { + return -1; + } + + _target_systemic_input_latency = l; + + return 0; +} + +int +JACKAudioBackend::set_systemic_output_latency (uint32_t l) +{ + if (connected()) { + return -1; + } + + _target_systemic_output_latency = l; + + return 0; +} + +/* --- Parameter retrieval --- */ + +std::string +JACKAudioBackend::device_name () const +{ + return string(); +} + +float +JACKAudioBackend::sample_rate () const +{ + if (connected()) { + return _current_sample_rate; + } + return _target_sample_rate; +} + +uint32_t +JACKAudioBackend::buffer_size () const +{ + if (connected()) { + return _current_buffer_size; + } + return _target_buffer_size; +} + +SampleFormat +JACKAudioBackend::sample_format () const +{ + return FormatFloat; +} + +bool +JACKAudioBackend::interleaved () const +{ + return false; +} + +uint32_t +JACKAudioBackend::input_channels () const +{ + if (connected()) { + return n_physical (JackPortIsInput).n_audio(); + } + return _target_input_channels; +} + +uint32_t +JACKAudioBackend::output_channels () const +{ + if (connected()) { + return n_physical (JackPortIsOutput).n_audio(); + } + return _target_output_channels; +} + +uint32_t +JACKAudioBackend::systemic_input_latency () const +{ + return _target_systemic_output_latency; +} + +uint32_t +JACKAudioBackend::systemic_output_latency () const +{ + return _target_systemic_output_latency; +} + +size_t +JACKAudioBackend::raw_buffer_size(DataType t) +{ + std::map::const_iterator s = _raw_buffer_sizes.find(t); + return (s != _raw_buffer_sizes.end()) ? s->second : 0; +} + +void +JACKAudioBackend::setup_jack_startup_command () +{ + /* first we map the parameters that have been set onto a + * JackCommandLineOptions object. + */ + + JackCommandLineOptions options; + + get_jack_default_server_path (options.server_path); + options.driver = _target_driver; + options.samplerate = _target_sample_rate; + options.period_size = _target_buffer_size; + options.num_periods = 2; + options.input_device = _target_device; + options.output_device = _target_device; + options.input_latency = _target_systemic_input_latency; + options.output_latency = _target_systemic_output_latency; + options.input_channels = _target_input_channels; + options.output_channels = _target_output_channels; + if (_target_sample_format == FormatInt16) { + options.force16_bit = _target_sample_format; + } + options.realtime = true; + options.ports_max = 2048; + + /* this must always be true for any server instance we start ourselves + */ + + options.temporary = true; + + string cmdline; + + if (!get_jack_command_line_string (options, cmdline)) { + /* error, somehow */ + return; + } + + std::cerr << "JACK command line will be: " << cmdline << std::endl; + + write_jack_config_file (get_jack_server_user_config_file_path(), cmdline); +} + +/* ---- BASIC STATE CONTROL API: start/stop/pause/freewheel --- */ + +int +JACKAudioBackend::start () +{ + if (!connected()) { + + if (!_jack_connection->server_running()) { + setup_jack_startup_command (); + } + + if (_jack_connection->open ()) { + return -1; + } + } + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + + /* get the buffer size and sample rates established */ + + jack_sample_rate_callback (jack_get_sample_rate (_priv_jack)); + jack_bufsize_callback (jack_get_buffer_size (_priv_jack)); + + /* Now that we have buffer size and sample rate established, the engine + can go ahead and do its stuff + */ + + engine.reestablish_ports (); + + if (!jack_port_type_get_buffer_size) { + warning << _("This version of JACK is old - you should upgrade to a newer version that supports jack_port_type_get_buffer_size()") << endmsg; + } + + set_jack_callbacks (); + + if (jack_activate (_priv_jack) == 0) { + _running = true; + } else { + // error << _("cannot activate JACK client") << endmsg; + } + + engine.reconnect_ports (); + + return 0; +} + +int +JACKAudioBackend::stop () +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + + _jack_connection->close (); + + _current_buffer_size = 0; + _current_sample_rate = 0; + + _raw_buffer_sizes.clear(); + + return 0; +} + +int +JACKAudioBackend::pause () +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + + if (_priv_jack) { + jack_deactivate (_priv_jack); + } + + return 0; +} + +int +JACKAudioBackend::freewheel (bool onoff) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + + if (onoff == _freewheeling) { + /* already doing what has been asked for */ + + return 0; + } + + if (jack_set_freewheel (_priv_jack, onoff) == 0) { + _freewheeling = true; + return 0; + } + + return -1; +} + +/* --- TRANSPORT STATE MANAGEMENT --- */ + +void +JACKAudioBackend::transport_stop () +{ + GET_PRIVATE_JACK_POINTER (_priv_jack); + jack_transport_stop (_priv_jack); +} + +void +JACKAudioBackend::transport_start () +{ + GET_PRIVATE_JACK_POINTER (_priv_jack); + jack_transport_start (_priv_jack); +} + +void +JACKAudioBackend::transport_locate (framepos_t where) +{ + GET_PRIVATE_JACK_POINTER (_priv_jack); + jack_transport_locate (_priv_jack, where); +} + +framepos_t +JACKAudioBackend::transport_frame () const +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_get_current_transport_frame (_priv_jack); +} + +TransportState +JACKAudioBackend::transport_state () const +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, ((TransportState) JackTransportStopped)); + jack_position_t pos; + return (TransportState) jack_transport_query (_priv_jack, &pos); +} + +int +JACKAudioBackend::set_time_master (bool yn) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + if (yn) { + return jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this); + } else { + return jack_release_timebase (_priv_jack); + } +} + +/* process-time */ + +bool +JACKAudioBackend::get_sync_offset (pframes_t& offset) const +{ + +#ifdef HAVE_JACK_VIDEO_SUPPORT + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); + + jack_position_t pos; + + if (_priv_jack) { + (void) jack_transport_query (_priv_jack, &pos); + + if (pos.valid & JackVideoFrameOffset) { + offset = pos.video_offset; + return true; + } + } +#else + /* keep gcc happy */ + offset = 0; +#endif + + return false; +} + +pframes_t +JACKAudioBackend::sample_time () +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_frame_time (_priv_jack); +} + +pframes_t +JACKAudioBackend::sample_time_at_cycle_start () +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_last_frame_time (_priv_jack); +} + +pframes_t +JACKAudioBackend::samples_since_cycle_start () +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_frames_since_cycle_start (_priv_jack); +} + +/* JACK Callbacks */ + +static void +ardour_jack_error (const char* msg) +{ + error << "JACK: " << msg << endmsg; +} + +void +JACKAudioBackend::set_jack_callbacks () +{ + GET_PRIVATE_JACK_POINTER (_priv_jack); + + jack_set_thread_init_callback (_priv_jack, AudioEngine::thread_init_callback, 0); + + jack_set_process_thread (_priv_jack, _process_thread, this); + jack_set_sample_rate_callback (_priv_jack, _sample_rate_callback, this); + jack_set_buffer_size_callback (_priv_jack, _bufsize_callback, this); + jack_set_xrun_callback (_priv_jack, _xrun_callback, this); + jack_set_sync_callback (_priv_jack, _jack_sync_callback, this); + jack_set_freewheel_callback (_priv_jack, _freewheel_callback, this); + +#ifdef HAVE_JACK_SESSION + if( jack_set_session_callback) + jack_set_session_callback (_priv_jack, _session_callback, this); +#endif + + if (jack_set_latency_callback) { + jack_set_latency_callback (_priv_jack, _latency_callback, this); + } + + jack_set_error_function (ardour_jack_error); +} + +void +JACKAudioBackend::_jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, + jack_position_t* pos, int new_position, void *arg) +{ + static_cast (arg)->jack_timebase_callback (state, nframes, pos, new_position); +} + +void +JACKAudioBackend::jack_timebase_callback (jack_transport_state_t state, pframes_t nframes, + jack_position_t* pos, int new_position) +{ + ARDOUR::Session* session = engine.session(); + + if (session) { + session->jack_timebase_callback (state, nframes, pos, new_position); + } +} + +int +JACKAudioBackend::_jack_sync_callback (jack_transport_state_t state, jack_position_t* pos, void* arg) +{ + return static_cast (arg)->jack_sync_callback (state, pos); +} + +int +JACKAudioBackend::jack_sync_callback (jack_transport_state_t state, jack_position_t* pos) +{ + TransportState tstate; + + switch (state) { + case JackTransportStopped: + tstate = TransportStopped; + break; + case JackTransportRolling: + tstate = TransportRolling; + break; + case JackTransportLooping: + tstate = TransportLooping; + break; + case JackTransportStarting: + tstate = TransportStarting; + break; + } + + return engine.sync_callback (tstate, pos->frame); + + return true; +} + +int +JACKAudioBackend::_xrun_callback (void *arg) +{ + JACKAudioBackend* ae = static_cast (arg); + if (ae->connected()) { + ae->engine.Xrun (); /* EMIT SIGNAL */ + } + return 0; +} + +#ifdef HAVE_JACK_SESSION +void +JACKAudioBackend::_session_callback (jack_session_event_t *event, void *arg) +{ + JACKAudioBackend* ae = static_cast (arg); + ARDOUR::Session* session = ae->engine.session(); + + if (session) { + session->jack_session_event (event); + } +} +#endif + +void +JACKAudioBackend::_freewheel_callback (int onoff, void *arg) +{ + static_cast(arg)->freewheel_callback (onoff); +} + +void +JACKAudioBackend::freewheel_callback (int onoff) +{ + _freewheeling = onoff; + engine.freewheel_callback (onoff); +} + +void +JACKAudioBackend::_latency_callback (jack_latency_callback_mode_t mode, void* arg) +{ + return static_cast (arg)->jack_latency_callback (mode); +} + +int +JACKAudioBackend::create_process_thread (boost::function f, pthread_t* thread, size_t stacksize) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + ThreadData* td = new ThreadData (this, f, stacksize); + + if (jack_client_create_thread (_priv_jack, thread, jack_client_real_time_priority (_priv_jack), + jack_is_realtime (_priv_jack), _start_process_thread, td)) { + return -1; + } + + return 0; +} + +void* +JACKAudioBackend::_start_process_thread (void* arg) +{ + ThreadData* td = reinterpret_cast (arg); + boost::function f = td->f; + delete td; + + f (); + + return 0; +} + +void* +JACKAudioBackend::_process_thread (void *arg) +{ + return static_cast (arg)->process_thread (); +} + +void* +JACKAudioBackend::process_thread () +{ + /* JACK doesn't do this for us when we use the wait API + */ + + AudioEngine::thread_init_callback (this); + + while (1) { + GET_PRIVATE_JACK_POINTER_RET(_priv_jack,0); + + pframes_t nframes = jack_cycle_wait (_priv_jack); + + if (engine.process_callback (nframes)) { + return 0; + } + + jack_cycle_signal (_priv_jack, 0); + } + + return 0; +} + +int +JACKAudioBackend::_sample_rate_callback (pframes_t nframes, void *arg) +{ + return static_cast (arg)->jack_sample_rate_callback (nframes); +} + +int +JACKAudioBackend::jack_sample_rate_callback (pframes_t nframes) +{ + _current_sample_rate = nframes; + return engine.sample_rate_change (nframes); +} + +void +JACKAudioBackend::jack_latency_callback (jack_latency_callback_mode_t mode) +{ + engine.latency_callback (mode == JackPlaybackLatency); +} + +int +JACKAudioBackend::_bufsize_callback (pframes_t nframes, void *arg) +{ + return static_cast (arg)->jack_bufsize_callback (nframes); +} + +int +JACKAudioBackend::jack_bufsize_callback (pframes_t nframes) +{ + /* if the size has not changed, this should be a no-op */ + + if (nframes == _current_buffer_size) { + return 0; + } + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 1); + + _current_buffer_size = nframes; + + if (jack_port_type_get_buffer_size) { + _raw_buffer_sizes[DataType::AUDIO] = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_AUDIO_TYPE); + _raw_buffer_sizes[DataType::MIDI] = jack_port_type_get_buffer_size (_priv_jack, JACK_DEFAULT_MIDI_TYPE); + } else { + + /* Old version of JACK. + + These crude guesses, see below where we try to get the right answers. + + Note that our guess for MIDI deliberatey tries to overestimate + by a little. It would be nicer if we could get the actual + size from a port, but we have to use this estimate in the + event that there are no MIDI ports currently. If there are + the value will be adjusted below. + */ + + _raw_buffer_sizes[DataType::AUDIO] = nframes * sizeof (Sample); + _raw_buffer_sizes[DataType::MIDI] = nframes * 4 - (nframes/2); + } + + engine.buffer_size_change (nframes); + + return 0; +} + +void +JACKAudioBackend::disconnected (const char* why) +{ + bool was_running = _running; + + _running = false; + _current_buffer_size = 0; + _current_sample_rate = 0; + + if (was_running) { + engine.halted_callback (why); /* EMIT SIGNAL */ + } +} +float +JACKAudioBackend::cpu_load() const +{ + GET_PRIVATE_JACK_POINTER_RET(_priv_jack,0); + return jack_cpu_load (_priv_jack); +} + +void +JACKAudioBackend::update_latencies () +{ + GET_PRIVATE_JACK_POINTER (_priv_jack); + jack_recompute_total_latencies (_priv_jack); +} + +ChanCount +JACKAudioBackend::n_physical (unsigned long flags) const +{ + ChanCount c; + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, c); + + const char ** ports = jack_get_ports (_priv_jack, NULL, NULL, JackPortIsPhysical | flags); + + if (ports) { + for (uint32_t i = 0; ports[i]; ++i) { + if (!strstr (ports[i], "Midi-Through")) { + DataType t (jack_port_type (jack_port_by_name (_priv_jack, ports[i]))); + c.set (t, c.get (t) + 1); + } + } + + jack_free (ports); + } + + return c; +} diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h new file mode 100644 index 0000000000..5ba9ee63d7 --- /dev/null +++ b/libs/backends/jack/jack_audiobackend.h @@ -0,0 +1,184 @@ +/* + 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. + +*/ + +#ifndef __libardour_jack_audiobackend_h__ +#define __libardour_jack_audiobackend_h__ + +#include +#include +#include +#include + +#include + +#include + +#include +#ifdef HAVE_JACK_SESSION +#include +#endif + +#include "ardour/audio_backend.h" + +namespace ARDOUR { + +class JackConnection; + +class JACKAudioBackend : public AudioBackend { + public: + JACKAudioBackend (AudioEngine& e, boost::shared_ptr); + ~JACKAudioBackend (); + + std::string name() const; + void* private_handle() const; + bool connected() const; + bool is_realtime () const; + + bool requires_driver_selection() const; + std::vector enumerate_drivers () const; + int set_driver (const std::string&); + + std::vector enumerate_devices () const; + + std::vector available_sample_rates (const std::string& device) const; + std::vector available_buffer_sizes (const std::string& device) const; + uint32_t available_input_channel_count (const std::string& device) const; + uint32_t available_output_channel_count (const std::string& device) const; + + int set_device_name (const std::string&); + int set_sample_rate (float); + int set_buffer_size (uint32_t); + int set_sample_format (SampleFormat); + int set_interleaved (bool yn); + int set_input_channels (uint32_t); + int set_output_channels (uint32_t); + int set_systemic_input_latency (uint32_t); + int set_systemic_output_latency (uint32_t); + + std::string device_name () const; + float sample_rate () const; + uint32_t buffer_size () const; + SampleFormat sample_format () const; + bool interleaved () const; + uint32_t input_channels () const; + uint32_t output_channels () const; + uint32_t systemic_input_latency () const; + uint32_t systemic_output_latency () const; + + int start (); + int stop (); + int pause (); + int freewheel (bool); + + float cpu_load() const; + + pframes_t sample_time (); + pframes_t sample_time_at_cycle_start (); + pframes_t samples_since_cycle_start (); + + size_t raw_buffer_size (DataType t); + + int create_process_thread (boost::function func, pthread_t*, size_t stacksize); + + void transport_start (); + void transport_stop (); + void transport_locate (framepos_t /*pos*/); + TransportState transport_state () const; + framepos_t transport_frame() const; + + int set_time_master (bool /*yn*/); + bool get_sync_offset (pframes_t& /*offset*/) const; + + void update_latencies (); + + static bool already_configured(); + + private: + boost::shared_ptr _jack_connection; //< shared with JACKPortEngine + bool _running; + bool _freewheeling; + std::map _raw_buffer_sizes; + + static int _xrun_callback (void *arg); + static void* _process_thread (void *arg); + static int _sample_rate_callback (pframes_t nframes, void *arg); + static int _bufsize_callback (pframes_t nframes, void *arg); + static void _jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int, void*); + static int _jack_sync_callback (jack_transport_state_t, jack_position_t*, void *arg); + static void _freewheel_callback (int , void *arg); + static void _latency_callback (jack_latency_callback_mode_t, void*); +#ifdef HAVE_JACK_SESSION + static void _session_callback (jack_session_event_t *event, void *arg); +#endif + + void jack_timebase_callback (jack_transport_state_t, pframes_t, jack_position_t*, int); + int jack_sync_callback (jack_transport_state_t, jack_position_t*); + int jack_bufsize_callback (pframes_t); + int jack_sample_rate_callback (pframes_t); + void freewheel_callback (int); + int process_callback (pframes_t nframes); + void jack_latency_callback (jack_latency_callback_mode_t); + void disconnected (const char*); + + void set_jack_callbacks (); + int reconnect_to_jack (); + + struct ThreadData { + JACKAudioBackend* engine; + boost::function f; + size_t stacksize; + + ThreadData (JACKAudioBackend* e, boost::function fp, size_t stacksz) + : engine (e) , f (fp) , stacksize (stacksz) {} + }; + + void* process_thread (); + static void* _start_process_thread (void*); + + ChanCount n_physical (unsigned long) const; + + void setup_jack_startup_command (); + + /* pffooo */ + + std::string _target_driver; + std::string _target_device; + float _target_sample_rate; + uint32_t _target_buffer_size; + SampleFormat _target_sample_format; + bool _target_interleaved; + uint32_t _target_input_channels; + uint32_t _target_output_channels; + uint32_t _target_systemic_input_latency; + uint32_t _target_systemic_output_latency; + uint32_t _current_sample_rate; + uint32_t _current_buffer_size; + + typedef std::set DeviceList; + typedef std::map DriverDeviceMap; + + mutable DriverDeviceMap all_devices; + + PBD::ScopedConnection disconnect_connection; +}; + +} // namespace + +#endif /* __ardour_audiobackend_h__ */ + diff --git a/libs/backends/jack/jack_connection.cc b/libs/backends/jack/jack_connection.cc new file mode 100644 index 0000000000..da0127c584 --- /dev/null +++ b/libs/backends/jack/jack_connection.cc @@ -0,0 +1,164 @@ +/* + 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. + +*/ + +#include +#include + +#include "pbd/epa.h" + +#include "jack_connection.h" +#include "jack_utils.h" + +#define GET_PRIVATE_JACK_POINTER(j) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return; } +#define GET_PRIVATE_JACK_POINTER_RET(j,r) jack_client_t* _priv_jack = (jack_client_t*) (j); if (!_priv_jack) { return r; } + +using namespace ARDOUR; +using namespace PBD; +using std::string; +using std::vector; + +static void jack_halted_callback (void* arg) +{ + JackConnection* jc = static_cast (arg); + jc->halted_callback (); +} + +static void jack_halted_info_callback (jack_status_t code, const char* reason, void* arg) +{ + JackConnection* jc = static_cast (arg); + jc->halted_info_callback (code, reason); +} + + +JackConnection::JackConnection (const std::string& arg1, const std::string& arg2) + : _jack (0) + , _client_name (arg1) + , session_uuid (arg2) +{ +} + +JackConnection::~JackConnection () +{ + close (); +} + +bool +JackConnection::server_running () +{ + EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); + boost::scoped_ptr current_epa; + + /* revert all environment settings back to whatever they were when + * ardour started, because ardour's startup script may have reset + * something in ways that interfere with finding/starting JACK. + */ + + if (global_epa) { + current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */ + global_epa->restore (); + } + + jack_status_t status; + jack_client_t* c = jack_client_open ("ardourprobe", JackNoStartServer, &status); + + if (status == 0) { + jack_client_close (c); + return true; + } + + return false; +} + +int +JackConnection::open () +{ + EnvironmentalProtectionAgency* global_epa = EnvironmentalProtectionAgency::get_global_epa (); + boost::scoped_ptr current_epa; + jack_status_t status; + + close (); + + /* revert all environment settings back to whatever they were when ardour started + */ + + if (global_epa) { + current_epa.reset (new EnvironmentalProtectionAgency(true)); /* will restore settings when we leave scope */ + global_epa->restore (); + } + + /* ensure that PATH or equivalent includes likely locations of the JACK + * server, in case the user's default does not. + */ + + vector dirs; + get_jack_server_dir_paths (dirs); + set_path_env_for_jack_autostart (dirs); + + if ((_jack = jack_client_open (_client_name.c_str(), JackSessionID, &status, session_uuid.c_str())) == 0) { + return -1; + } + + if (status & JackNameNotUnique) { + _client_name = jack_get_client_name (_jack); + } + + /* attach halted handler */ + + if (jack_on_info_shutdown) { + jack_on_info_shutdown (_jack, jack_halted_info_callback, this); + } else { + jack_on_shutdown (_jack, jack_halted_callback, this); + } + + + Connected(); /* EMIT SIGNAL */ + + return 0; +} + +int +JackConnection::close () +{ + GET_PRIVATE_JACK_POINTER_RET (_jack, -1); + + if (_priv_jack) { + int ret = jack_client_close (_priv_jack); + _jack = 0; + Disconnected (""); /* EMIT SIGNAL */ + return ret; + } + + return 0; +} + +void +JackConnection::halted_callback () +{ + _jack = 0; + Disconnected (""); +} + +void +JackConnection::halted_info_callback (jack_status_t /*status*/, const char* reason) +{ + _jack = 0; + Disconnected (reason); +} + + diff --git a/libs/backends/jack/jack_connection.h b/libs/backends/jack/jack_connection.h new file mode 100644 index 0000000000..cd45f3b9ba --- /dev/null +++ b/libs/backends/jack/jack_connection.h @@ -0,0 +1,40 @@ +#ifndef __libardour_jack_connection_h__ +#define __libardour_jack_connection_h__ + +#include +#include + +#include "pbd/signals.h" + +namespace ARDOUR { + +class JackConnection { + public: + JackConnection (const std::string& client_name, const std::string& session_uuid); + ~JackConnection (); + + const std::string& client_name() const { return _client_name; } + + int open (); + int close (); + bool connected () const { return _jack != 0; } + + jack_client_t* jack() const { return _jack; } + + PBD::Signal0 Connected; + PBD::Signal1 Disconnected; + + void halted_callback (); + void halted_info_callback (jack_status_t, const char*); + + static bool server_running(); + + private: + jack_client_t* volatile _jack; + std::string _client_name; + std::string session_uuid; +}; + +} // namespace + +#endif /* __libardour_jack_connection_h__ */ diff --git a/libs/backends/jack/jack_portengine.cc b/libs/backends/jack/jack_portengine.cc new file mode 100644 index 0000000000..bd352a2f11 --- /dev/null +++ b/libs/backends/jack/jack_portengine.cc @@ -0,0 +1,569 @@ +/* + 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. + +*/ + +#include +#include + +#include "pbd/error.h" + +#include "jack_portengine.h" +#include "jack_connection.h" + +#include "ardour/port_manager.h" + +#include "i18n.h" + +using namespace ARDOUR; +using namespace PBD; +using std::string; +using std::vector; + +#define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return; } +#define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return r; } + +static uint32_t +ardour_port_flags_to_jack_flags (PortFlags flags) +{ + uint32_t jack_flags = 0; + + if (flags & IsInput) { + jack_flags |= JackPortIsInput; + } + if (flags & IsOutput) { + jack_flags |= JackPortIsOutput; + } + if (flags & IsTerminal) { + jack_flags |= JackPortIsTerminal; + } + if (flags & IsPhysical) { + jack_flags |= JackPortIsPhysical; + } + if (flags & CanMonitor) { + jack_flags |= JackPortCanMonitor; + } + + return jack_flags; +} + +static DataType +jack_port_type_to_ardour_data_type (const char* jack_type) +{ + if (strcmp (jack_type, JACK_DEFAULT_AUDIO_TYPE) == 0) { + return DataType::AUDIO; + } else if (strcmp (jack_type, JACK_DEFAULT_MIDI_TYPE) == 0) { + return DataType::MIDI; + } + return DataType::NIL; +} + +static const char* +ardour_data_type_to_jack_port_type (DataType d) +{ + switch (d) { + case DataType::AUDIO: + return JACK_DEFAULT_AUDIO_TYPE; + case DataType::MIDI: + return JACK_DEFAULT_MIDI_TYPE; + } + + return ""; +} + +JACKPortEngine::JACKPortEngine (PortManager& pm, boost::shared_ptr jc) + : PortEngine (pm) + , _jack_connection (jc) +{ + _jack_connection->Connected.connect_same_thread (jack_connection_connection, boost::bind (&JACKPortEngine::connected_to_jack, this)); +} + +JACKPortEngine::~JACKPortEngine () +{ + /* a default destructor would do this, and so would this one, + but we'll make it explicit in case we ever need to debug + the lifetime of the JACKConnection + */ + _jack_connection.reset (); +} + +void +JACKPortEngine::connected_to_jack () +{ + /* register callbacks for stuff that is our responsibility */ + + jack_client_t* client = _jack_connection->jack(); + + if (!client) { + /* how could this happen? it could ... */ + error << _("Already disconnected from JACK before PortEngine could register callbacks") << endmsg; + return; + } + + jack_set_port_registration_callback (client, _registration_callback, this); + jack_set_port_connect_callback (client, _connect_callback, this); + jack_set_graph_order_callback (client, _graph_order_callback, this); +} + +void* +JACKPortEngine::private_handle() const +{ + return _jack_connection->jack(); +} + +bool +JACKPortEngine::connected() const +{ + return _jack_connection->connected(); +} + +int +JACKPortEngine::set_port_name (PortHandle port, const std::string& name) +{ + return jack_port_set_name ((jack_port_t*) port, name.c_str()); +} + +string +JACKPortEngine::get_port_name (PortHandle port) const +{ + return jack_port_name ((jack_port_t*) port); +} + +PortEngine::PortHandle* +JACKPortEngine:: get_port_by_name (const std::string& name) const +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return (PortHandle*) jack_port_by_name (_priv_jack, name.c_str()); +} + +void +JACKPortEngine::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg) +{ + static_cast (arg)->manager.registration_callback (); +} + +int +JACKPortEngine::_graph_order_callback (void *arg) +{ + return static_cast (arg)->manager.graph_order_callback (); +} + +void +JACKPortEngine::_connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn, void* arg) +{ + static_cast (arg)->connect_callback (id_a, id_b, conn); +} + +void +JACKPortEngine::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn) +{ + if (manager.port_remove_in_progress()) { + return; + } + + GET_PRIVATE_JACK_POINTER (_priv_jack); + + jack_port_t* a = jack_port_by_id (_priv_jack, id_a); + jack_port_t* b = jack_port_by_id (_priv_jack, id_b); + + manager.connect_callback (jack_port_name (a), jack_port_name (b), conn == 0 ? false : true); +} + +bool +JACKPortEngine::connected (PortHandle port, bool process_callback_safe) +{ + bool ret = false; + + const char** ports; + + if (process_callback_safe) { + ports = jack_port_get_connections ((jack_port_t*)port); + } else { + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); + ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); + } + + if (ports) { + ret = true; + } + + jack_free (ports); + + return ret; +} + +bool +JACKPortEngine::connected_to (PortHandle port, const std::string& other, bool process_callback_safe) +{ + bool ret = false; + const char** ports; + + if (process_callback_safe) { + ports = jack_port_get_connections ((jack_port_t*)port); + } else { + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); + ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); + } + + if (ports) { + for (int i = 0; ports[i]; ++i) { + if (other == ports[i]) { + ret = true; + } + } + jack_free (ports); + } + + return ret; +} + +bool +JACKPortEngine::physically_connected (PortHandle p, bool process_callback_safe) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); + jack_port_t* port = (jack_port_t*) p; + + const char** ports; + + if (process_callback_safe) { + ports = jack_port_get_connections ((jack_port_t*)port); + } else { + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); + ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); + } + + if (ports) { + for (int i = 0; ports[i]; ++i) { + + jack_port_t* other = jack_port_by_name (_priv_jack, ports[i]); + + if (other && (jack_port_flags (other) & JackPortIsPhysical)) { + return true; + } + } + jack_free (ports); + } + + return false; +} + +int +JACKPortEngine::get_connections (PortHandle port, vector& s, bool process_callback_safe) +{ + const char** ports; + + if (process_callback_safe) { + ports = jack_port_get_connections ((jack_port_t*)port); + } else { + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + ports = jack_port_get_all_connections (_priv_jack, (jack_port_t*)port); + } + + if (ports) { + for (int i = 0; ports[i]; ++i) { + s.push_back (ports[i]); + } + jack_free (ports); + } + + return s.size(); +} + +DataType +JACKPortEngine::port_data_type (PortHandle p) const +{ + return jack_port_type_to_ardour_data_type (jack_port_type ((jack_port_t*) p)); +} + +const string& +JACKPortEngine::my_name() const +{ + return _jack_connection->client_name(); +} + +bool +JACKPortEngine::port_is_physical (PortHandle ph) const +{ + if (!ph) { + return false; + } + + return jack_port_flags ((jack_port_t*) ph) & JackPortIsPhysical; +} + +int +JACKPortEngine::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) const +{ + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack,0); + + const char** ports = jack_get_ports (_priv_jack, port_name_pattern.c_str(), + ardour_data_type_to_jack_port_type (type), + ardour_port_flags_to_jack_flags (flags)); + + if (ports == 0) { + return 0; + } + + for (uint32_t i = 0; ports[i]; ++i) { + s.push_back (ports[i]); + } + + jack_free (ports); + + return s.size(); +} + +ChanCount +JACKPortEngine::n_physical (unsigned long flags) const +{ + ChanCount c; + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, c); + + const char ** ports = jack_get_ports (_priv_jack, NULL, NULL, JackPortIsPhysical | flags); + + if (ports) { + for (uint32_t i = 0; ports[i]; ++i) { + if (!strstr (ports[i], "Midi-Through")) { + DataType t = port_data_type (jack_port_by_name (_priv_jack, ports[i])); + if (t != DataType::NIL) { + c.set (t, c.get (t) + 1); + } + } + } + + jack_free (ports); + } + + return c; +} + +ChanCount +JACKPortEngine::n_physical_inputs () const +{ + return n_physical (JackPortIsInput); +} + +ChanCount +JACKPortEngine::n_physical_outputs () const +{ + return n_physical (JackPortIsOutput); +} + +void +JACKPortEngine::get_physical (DataType type, unsigned long flags, vector& phy) const +{ + GET_PRIVATE_JACK_POINTER (_priv_jack); + const char ** ports; + + if ((ports = jack_get_ports (_priv_jack, NULL, ardour_data_type_to_jack_port_type (type), JackPortIsPhysical | flags)) == 0) { + return; + } + + if (ports) { + for (uint32_t i = 0; ports[i]; ++i) { + if (strstr (ports[i], "Midi-Through")) { + continue; + } + phy.push_back (ports[i]); + } + jack_free (ports); + } +} + +/** Get physical ports for which JackPortIsOutput is set; ie those that correspond to + * a physical input connector. + */ +void +JACKPortEngine::get_physical_inputs (DataType type, vector& ins) +{ + get_physical (type, JackPortIsOutput, ins); +} + +/** Get physical ports for which JackPortIsInput is set; ie those that correspond to + * a physical output connector. + */ +void +JACKPortEngine::get_physical_outputs (DataType type, vector& outs) +{ + get_physical (type, JackPortIsInput, outs); +} + + +bool +JACKPortEngine::can_monitor_input () const +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack,false); + const char ** ports; + + if ((ports = jack_get_ports (_priv_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortCanMonitor)) == 0) { + return false; + } + + jack_free (ports); + + return true; +} + +int +JACKPortEngine::request_input_monitoring (PortHandle port, bool yn) +{ + return jack_port_request_monitor ((jack_port_t*) port, yn); +} +int +JACKPortEngine::ensure_input_monitoring (PortHandle port, bool yn) +{ + return jack_port_ensure_monitor ((jack_port_t*) port, yn); +} +bool +JACKPortEngine::monitoring_input (PortHandle port) +{ + return jack_port_monitoring_input ((jack_port_t*) port); +} + + +pframes_t +JACKPortEngine::sample_time_at_cycle_start () +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_last_frame_time (_priv_jack); +} + + +PortEngine::PortHandle +JACKPortEngine::register_port (const std::string& shortname, ARDOUR::DataType type, ARDOUR::PortFlags flags) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + return jack_port_register (_priv_jack, shortname.c_str(), + ardour_data_type_to_jack_port_type (type), + ardour_port_flags_to_jack_flags (flags), + 0); +} + +void +JACKPortEngine::unregister_port (PortHandle port) +{ + GET_PRIVATE_JACK_POINTER (_priv_jack); + (void) jack_port_unregister (_priv_jack, (jack_port_t*) port); +} + +int +JACKPortEngine::connect (PortHandle port, const std::string& other) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + return jack_connect (_priv_jack, jack_port_name ((jack_port_t*) port), other.c_str()); +} +int +JACKPortEngine::connect (const std::string& src, const std::string& dst) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + + int r = jack_connect (_priv_jack, src.c_str(), dst.c_str()); + return r; +} + +int +JACKPortEngine::disconnect (PortHandle port, const std::string& other) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + return jack_disconnect (_priv_jack, jack_port_name ((jack_port_t*) port), other.c_str()); +} + +int +JACKPortEngine::disconnect (const std::string& src, const std::string& dst) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + return jack_disconnect (_priv_jack, src.c_str(), dst.c_str()); +} + +int +JACKPortEngine::disconnect_all (PortHandle port) +{ + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); + return jack_port_disconnect (_priv_jack, (jack_port_t*) port); +} + +int +JACKPortEngine::midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) +{ + jack_midi_event_t ev; + int ret; + + if ((ret = jack_midi_event_get (&ev, port_buffer, event_index)) == 0) { + timestamp = ev.time; + size = ev.size; + *buf = ev.buffer; + } + + return ret; +} + +int +JACKPortEngine::midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size) +{ + return jack_midi_event_write (port_buffer, timestamp, buffer, size); +} + +uint32_t +JACKPortEngine::get_midi_event_count (void* port_buffer) +{ + return jack_midi_get_event_count (port_buffer); +} + +void +JACKPortEngine::midi_clear (void* port_buffer) +{ + jack_midi_clear_buffer (port_buffer); +} + +void +JACKPortEngine::set_latency_range (PortHandle port, bool for_playback, LatencyRange r) +{ + jack_latency_range_t range; + + range.min = r.min; + range.max = r.max; + + jack_port_set_latency_range ((jack_port_t*) port, for_playback ? JackPlaybackLatency : JackCaptureLatency, &range); +} + +LatencyRange +JACKPortEngine::get_latency_range (PortHandle port, bool for_playback) +{ + jack_latency_range_t range; + LatencyRange ret; + + jack_port_get_latency_range ((jack_port_t*) port, for_playback ? JackPlaybackLatency : JackCaptureLatency, &range); + + ret.min = range.min; + ret.max = range.max; + + return ret; +} + +void* +JACKPortEngine::get_buffer (PortHandle port, pframes_t nframes) +{ + return jack_port_get_buffer ((jack_port_t*) port, nframes); +} + +uint32_t +JACKPortEngine::port_name_size() const +{ + return jack_port_name_size (); +} diff --git a/libs/backends/jack/jack_portengine.h b/libs/backends/jack/jack_portengine.h new file mode 100644 index 0000000000..0e1eb48c5c --- /dev/null +++ b/libs/backends/jack/jack_portengine.h @@ -0,0 +1,132 @@ +/* + 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. + +*/ + +#ifndef __libardour_jack_portengine_h__ +#define __libardour_jack_portengine_h__ + +#include +#include + +#include + +#include +#include + +#include + +#include "pbd/signals.h" + +#include "ardour/port_engine.h" +#include "ardour/types.h" + +namespace ARDOUR { + +class JackConnection; + +class JACKPortEngine : public PortEngine +{ + public: + JACKPortEngine (PortManager&, boost::shared_ptr); + ~JACKPortEngine(); + + void* private_handle() const; + bool connected() const; + + const std::string& my_name() const; + + uint32_t port_name_size() const; + + int set_port_name (PortHandle, const std::string&); + std::string get_port_name (PortHandle) const; + PortHandle* get_port_by_name (const std::string&) const; + + int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const; + + DataType port_data_type (PortHandle) const; + + PortHandle register_port (const std::string& shortname, ARDOUR::DataType, ARDOUR::PortFlags); + void unregister_port (PortHandle); + + bool connected (PortHandle, bool process_callback_safe); + bool connected_to (PortHandle, const std::string&, bool process_callback_safe); + bool physically_connected (PortHandle, bool process_callback_safe); + int get_connections (PortHandle, std::vector&, bool process_callback_safe); + int connect (PortHandle, const std::string&); + + int disconnect (PortHandle, const std::string&); + int disconnect_all (PortHandle); + int connect (const std::string& src, const std::string& dst); + int disconnect (const std::string& src, const std::string& dst); + + /* MIDI */ + + int midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index); + int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size); + uint32_t get_midi_event_count (void* port_buffer); + void midi_clear (void* port_buffer); + + /* Monitoring */ + + bool can_monitor_input() const; + int request_input_monitoring (PortHandle, bool); + int ensure_input_monitoring (PortHandle, bool); + bool monitoring_input (PortHandle); + + /* Latency management + */ + + void set_latency_range (PortHandle, bool for_playback, LatencyRange); + LatencyRange get_latency_range (PortHandle, bool for_playback); + + /* Physical ports */ + + bool port_is_physical (PortHandle) const; + void get_physical_outputs (DataType type, std::vector&); + void get_physical_inputs (DataType type, std::vector&); + ChanCount n_physical_outputs () const; + ChanCount n_physical_inputs () const; + + /* Getting access to the data buffer for a port */ + + void* get_buffer (PortHandle, pframes_t); + + /* Miscellany */ + + pframes_t sample_time_at_cycle_start (); + + private: + boost::shared_ptr _jack_connection; + + static int _graph_order_callback (void *arg); + static void _registration_callback (jack_port_id_t, int, void *); + static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); + + void connect_callback (jack_port_id_t, jack_port_id_t, int); + + ChanCount n_physical (unsigned long flags) const; + void get_physical (DataType type, unsigned long flags, std::vector& phy) const; + + PBD::ScopedConnection jack_connection_connection; + void connected_to_jack (); + +}; + +} // namespace + +#endif /* __libardour_jack_portengine_h__ */ diff --git a/libs/backends/jack/jack_slave.cc b/libs/backends/jack/jack_slave.cc new file mode 100644 index 0000000000..4b2f3b1860 --- /dev/null +++ b/libs/backends/jack/jack_slave.cc @@ -0,0 +1,79 @@ +/* + Copyright (C) 2004 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. + +*/ + +#include +#include + +#include "ardour/audioengine.h" +#include "ardour/slave.h" + +using namespace std; +using namespace ARDOUR; + +JACK_Slave::JACK_Slave (AudioEngine& e) + : engine (e) +{ + double x; + framepos_t p; + /* call this to initialize things */ + speed_and_position (x, p); +} + +JACK_Slave::~JACK_Slave () +{ +} + +bool +JACK_Slave::locked() const +{ + return true; +} + +bool +JACK_Slave::ok() const +{ + return true; +} + +bool +JACK_Slave::speed_and_position (double& sp, framepos_t& position) +{ + switch (engine.transport_state()) { + case TransportStopped: + speed = 0; + _starting = false; + break; + case TransportRolling: + speed = 1.0; + _starting = false; + break; + case TransportLooping: + speed = 1.0; + _starting = false; + break; + case TransportStarting: + _starting = true; + // don't adjust speed here, just leave it as it was + break; + } + + sp = speed; + position = engine.transport_frame(); + return true; +} diff --git a/libs/backends/jack/jack_utils.cc b/libs/backends/jack/jack_utils.cc new file mode 100644 index 0000000000..77f3d95aa1 --- /dev/null +++ b/libs/backends/jack/jack_utils.cc @@ -0,0 +1,897 @@ +/* + Copyright (C) 2010 Paul Davis + Copyright (C) 2011 Tim Mayberry + + 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 HAVE_ALSA +#include +#endif + +#ifdef __APPLE__ +#include +#include +#include +#include +#endif + +#ifdef HAVE_PORTAUDIO +#include +#endif + +#include + +#include + +#include + +#include + +#include "pbd/epa.h" +#include "pbd/error.h" +#include "pbd/convert.h" +#include "pbd/file_utils.h" +#include "pbd/search_path.h" + +#include "jack_utils.h" + +#ifdef __APPLE +#include +#endif + +#include "i18n.h" + +using namespace std; +using namespace PBD; + +namespace ARDOUR { + // The pretty driver names + const char * const portaudio_driver_name = X_("Portaudio"); + const char * const coreaudio_driver_name = X_("CoreAudio"); + const char * const alsa_driver_name = X_("ALSA"); + const char * const oss_driver_name = X_("OSS"); + const char * const freebob_driver_name = X_("FreeBoB"); + const char * const ffado_driver_name = X_("FFADO"); + const char * const netjack_driver_name = X_("NetJACK"); + const char * const dummy_driver_name = X_("Dummy"); +} + +namespace { + + // The real driver names + const char * const portaudio_driver_command_line_name = X_("portaudio"); + const char * const coreaudio_driver_command_line_name = X_("coreaudio"); + const char * const alsa_driver_command_line_name = X_("alsa"); + const char * const oss_driver_command_line_name = X_("oss"); + const char * const freebob_driver_command_line_name = X_("freebob"); + const char * const ffado_driver_command_line_name = X_("firewire"); + const char * const netjack_driver_command_line_name = X_("netjack"); + const char * const dummy_driver_command_line_name = X_("dummy"); + + // should we provide more "pretty" names like above? + const char * const alsaseq_midi_driver_name = X_("seq"); + const char * const alsaraw_midi_driver_name = X_("raw"); + const char * const winmme_midi_driver_name = X_("winmme"); + const char * const coremidi_midi_driver_name = X_("coremidi"); + + // this should probably be translated + const char * const default_device_name = X_("Default"); +} + +std::string +get_none_string () +{ + return _("None"); +} + +void +ARDOUR::get_jack_audio_driver_names (vector& audio_driver_names) +{ +#ifdef WIN32 + audio_driver_names.push_back (portaudio_driver_name); +#elif __APPLE__ + audio_driver_names.push_back (coreaudio_driver_name); +#else +#ifdef HAVE_ALSA + audio_driver_names.push_back (alsa_driver_name); +#endif + audio_driver_names.push_back (oss_driver_name); + audio_driver_names.push_back (freebob_driver_name); + audio_driver_names.push_back (ffado_driver_name); +#endif + audio_driver_names.push_back (netjack_driver_name); + audio_driver_names.push_back (dummy_driver_name); +} + +void +ARDOUR::get_jack_default_audio_driver_name (string& audio_driver_name) +{ + vector drivers; + get_jack_audio_driver_names (drivers); + audio_driver_name = drivers.front (); +} + +void +ARDOUR::get_jack_sample_rate_strings (vector& samplerates) +{ + // do these really need to be translated? + samplerates.push_back (_("8000Hz")); + samplerates.push_back (_("22050Hz")); + samplerates.push_back (_("44100Hz")); + samplerates.push_back (_("48000Hz")); + samplerates.push_back (_("88200Hz")); + samplerates.push_back (_("96000Hz")); + samplerates.push_back (_("192000Hz")); +} + +string +ARDOUR::get_jack_default_sample_rate () +{ + return _("48000Hz"); +} + +void +ARDOUR::get_jack_period_size_strings (std::vector& period_sizes) +{ + period_sizes.push_back ("32"); + period_sizes.push_back ("64"); + period_sizes.push_back ("128"); + period_sizes.push_back ("256"); + period_sizes.push_back ("512"); + period_sizes.push_back ("1024"); + period_sizes.push_back ("2048"); + period_sizes.push_back ("4096"); + period_sizes.push_back ("8192"); +} + +string +ARDOUR::get_jack_default_period_size () +{ + return "1024"; +} + +void +ARDOUR::get_jack_dither_mode_strings (const string& driver, vector& dither_modes) +{ + dither_modes.push_back (get_none_string ()); + + if (driver == alsa_driver_name ) { + dither_modes.push_back (_("Triangular")); + dither_modes.push_back (_("Rectangular")); + dither_modes.push_back (_("Shaped")); + } +} + +string +ARDOUR::get_jack_default_dither_mode (const string& /*driver*/) +{ + return get_none_string (); +} + +string +ARDOUR::get_jack_latency_string (string samplerate, float periods, string period_size) +{ + uint32_t rate = atoi (samplerate); + float psize = atof (period_size); + + char buf[32]; + snprintf (buf, sizeof(buf), "%.1fmsec", (periods * psize) / (rate/1000.0)); + + return buf; +} + +bool +get_jack_command_line_audio_driver_name (const string& driver_name, string& command_line_name) +{ + using namespace ARDOUR; + if (driver_name == portaudio_driver_name) { + command_line_name = portaudio_driver_command_line_name; + return true; + } else if (driver_name == coreaudio_driver_name) { + command_line_name = coreaudio_driver_command_line_name; + return true; + } else if (driver_name == alsa_driver_name) { + command_line_name = alsa_driver_command_line_name; + return true; + } else if (driver_name == oss_driver_name) { + command_line_name = oss_driver_command_line_name; + return true; + } else if (driver_name == freebob_driver_name) { + command_line_name = freebob_driver_command_line_name; + return true; + } else if (driver_name == ffado_driver_name) { + command_line_name = ffado_driver_command_line_name; + return true; + } else if (driver_name == netjack_driver_name) { + command_line_name = netjack_driver_command_line_name; + return true; + } else if (driver_name == dummy_driver_name) { + command_line_name = dummy_driver_command_line_name; + return true; + } + return false; +} + +bool +get_jack_command_line_audio_device_name (const string& driver_name, + const string& device_name, string& command_line_device_name) +{ + using namespace ARDOUR; + device_map_t devices; + + get_jack_device_names_for_audio_driver (driver_name, devices); + + for (device_map_t::const_iterator i = devices.begin (); i != devices.end(); ++i) { + if (i->first == device_name) { + command_line_device_name = i->second; + return true; + } + } + return false; +} + +bool +get_jack_command_line_dither_mode (const string& dither_mode, string& command_line_dither_mode) +{ + using namespace ARDOUR; + + if (dither_mode == _("Triangular")) { + command_line_dither_mode = "triangular"; + return true; + } else if (dither_mode == _("Rectangular")) { + command_line_dither_mode = "rectangular"; + return true; + } else if (dither_mode == _("Shaped")) { + command_line_dither_mode = "shaped"; + return true; + } + + return false; +} + +void +ARDOUR::get_jack_alsa_device_names (device_map_t& devices) +{ +#ifdef HAVE_ALSA + snd_ctl_t *handle; + snd_ctl_card_info_t *info; + snd_pcm_info_t *pcminfo; + snd_ctl_card_info_alloca(&info); + snd_pcm_info_alloca(&pcminfo); + string devname; + int cardnum = -1; + int device = -1; + + while (snd_card_next (&cardnum) >= 0 && cardnum >= 0) { + + devname = "hw:"; + devname += PBD::to_string (cardnum, std::dec); + + if (snd_ctl_open (&handle, devname.c_str(), 0) >= 0 && snd_ctl_card_info (handle, info) >= 0) { + + if (snd_ctl_card_info (handle, info) < 0) { + continue; + } + + string card_name = snd_ctl_card_info_get_name (info); + + /* change devname to use ID, not number */ + + devname = "hw:"; + devname += snd_ctl_card_info_get_id (info); + + while (snd_ctl_pcm_next_device (handle, &device) >= 0 && device >= 0) { + + /* only detect duplex devices here. more + * complex arrangements are beyond our scope + */ + + snd_pcm_info_set_device (pcminfo, device); + snd_pcm_info_set_subdevice (pcminfo, 0); + snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_CAPTURE); + + if (snd_ctl_pcm_info (handle, pcminfo) >= 0) { + + snd_pcm_info_set_device (pcminfo, device); + snd_pcm_info_set_subdevice (pcminfo, 0); + snd_pcm_info_set_stream (pcminfo, SND_PCM_STREAM_PLAYBACK); + + if (snd_ctl_pcm_info (handle, pcminfo) >= 0) { + devname += ','; + devname += PBD::to_string (device, std::dec); + devices.insert (std::make_pair (card_name, devname)); + } + } + } + + snd_ctl_close(handle); + } + } +#else + /* silence a compiler unused variable warning */ + (void) devices; +#endif +} + +#ifdef __APPLE__ +static OSStatus +getDeviceUIDFromID( AudioDeviceID id, char *name, size_t nsize) +{ + UInt32 size = sizeof(CFStringRef); + CFStringRef UI; + OSStatus res = AudioDeviceGetProperty(id, 0, false, + kAudioDevicePropertyDeviceUID, &size, &UI); + if (res == noErr) + CFStringGetCString(UI,name,nsize,CFStringGetSystemEncoding()); + CFRelease(UI); + return res; +} +#endif + +void +ARDOUR::get_jack_coreaudio_device_names (device_map_t& devices) +{ +#ifdef __APPLE__ + // Find out how many Core Audio devices are there, if any... + // (code snippet gently "borrowed" from St?hane Letz jackdmp;) + OSStatus err; + Boolean isWritable; + UInt32 outSize = sizeof(isWritable); + + err = AudioHardwareGetPropertyInfo(kAudioHardwarePropertyDevices, + &outSize, &isWritable); + if (err == noErr) { + // Calculate the number of device available... + int numCoreDevices = outSize / sizeof(AudioDeviceID); + // Make space for the devices we are about to get... + AudioDeviceID *coreDeviceIDs = new AudioDeviceID [numCoreDevices]; + err = AudioHardwareGetProperty(kAudioHardwarePropertyDevices, + &outSize, (void *) coreDeviceIDs); + if (err == noErr) { + // Look for the CoreAudio device name... + char coreDeviceName[256]; + UInt32 nameSize; + + for (int i = 0; i < numCoreDevices; i++) { + + nameSize = sizeof (coreDeviceName); + + /* enforce duplex devices only */ + + err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], + 0, true, kAudioDevicePropertyStreams, + &outSize, &isWritable); + + if (err != noErr || outSize == 0) { + continue; + } + + err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], + 0, false, kAudioDevicePropertyStreams, + &outSize, &isWritable); + + if (err != noErr || outSize == 0) { + continue; + } + + err = AudioDeviceGetPropertyInfo(coreDeviceIDs[i], + 0, true, kAudioDevicePropertyDeviceName, + &outSize, &isWritable); + if (err == noErr) { + err = AudioDeviceGetProperty(coreDeviceIDs[i], + 0, true, kAudioDevicePropertyDeviceName, + &nameSize, (void *) coreDeviceName); + if (err == noErr) { + char drivername[128]; + + // this returns the unique id for the device + // that must be used on the commandline for jack + + if (getDeviceUIDFromID(coreDeviceIDs[i], drivername, sizeof (drivername)) == noErr) { + devices.insert (make_pair (coreDeviceName, drivername)); + } + } + } + } + } + delete [] coreDeviceIDs; + } +#else + /* silence a compiler unused variable warning */ + (void) devices; +#endif +} + +void +ARDOUR::get_jack_portaudio_device_names (device_map_t& devices) +{ +#ifdef HAVE_PORTAUDIO + if (Pa_Initialize() != paNoError) { + return; + } + + for (PaDeviceIndex i = 0; i < Pa_GetDeviceCount (); ++i) { + string api_name; + string readable_name; + string jack_device_name; + const PaDeviceInfo* device_info = Pa_GetDeviceInfo(i); + + if (device_info != NULL) { // it should never be ? + api_name = Pa_GetHostApiInfo (device_info->hostApi)->name; + readable_name = api_name + " " + device_info->name; + jack_device_name = api_name + "::" + device_info->name; + devices.insert (make_pair (readable_name, jack_device_name)); + } + } + Pa_Terminate(); +#else + /* silence a compiler unused variable warning */ + (void) devices; +#endif +} + +void +ARDOUR::get_jack_oss_device_names (device_map_t& devices) +{ + devices.insert (make_pair (default_device_name, default_device_name)); +} + +void +ARDOUR::get_jack_freebob_device_names (device_map_t& devices) +{ + devices.insert (make_pair (default_device_name, default_device_name)); +} + +void +ARDOUR::get_jack_ffado_device_names (device_map_t& devices) +{ + devices.insert (make_pair (default_device_name, default_device_name)); +} + +void +ARDOUR::get_jack_netjack_device_names (device_map_t& devices) +{ + devices.insert (make_pair (default_device_name, default_device_name)); +} + +void +ARDOUR::get_jack_dummy_device_names (device_map_t& devices) +{ + devices.insert (make_pair (default_device_name, default_device_name)); +} + +bool +ARDOUR::get_jack_device_names_for_audio_driver (const string& driver_name, device_map_t& devices) +{ + devices.clear(); + + if (driver_name == portaudio_driver_name) { + get_jack_portaudio_device_names (devices); + } else if (driver_name == coreaudio_driver_name) { + get_jack_coreaudio_device_names (devices); + } else if (driver_name == alsa_driver_name) { + get_jack_alsa_device_names (devices); + } else if (driver_name == oss_driver_name) { + get_jack_oss_device_names (devices); + } else if (driver_name == freebob_driver_name) { + get_jack_freebob_device_names (devices); + } else if (driver_name == ffado_driver_name) { + get_jack_ffado_device_names (devices); + } else if (driver_name == netjack_driver_name) { + get_jack_netjack_device_names (devices); + } else if (driver_name == dummy_driver_name) { + get_jack_dummy_device_names (devices); + } + + return !devices.empty(); +} + + +std::vector +ARDOUR::get_jack_device_names_for_audio_driver (const string& driver_name) +{ + std::vector readable_names; + device_map_t devices; + + get_jack_device_names_for_audio_driver (driver_name, devices); + + for (device_map_t::const_iterator i = devices.begin (); i != devices.end(); ++i) { + readable_names.push_back (i->first); + } + + return readable_names; +} + +bool +ARDOUR::get_jack_audio_driver_supports_two_devices (const string& driver) +{ + return (driver == alsa_driver_name || driver == oss_driver_name); +} + +bool +ARDOUR::get_jack_audio_driver_supports_latency_adjustment (const string& driver) +{ + return (driver == alsa_driver_name || driver == coreaudio_driver_name || + driver == ffado_driver_name || driver == portaudio_driver_name); +} + +bool +ARDOUR::get_jack_audio_driver_supports_setting_period_count (const string& driver) +{ + return !(driver == dummy_driver_name || driver == coreaudio_driver_name || + driver == portaudio_driver_name); +} + +bool +ARDOUR::get_jack_server_application_names (std::vector& server_names) +{ +#ifdef WIN32 + server_names.push_back ("jackd.exe"); +#else + server_names.push_back ("jackd"); + server_names.push_back ("jackdmp"); +#endif + return !server_names.empty(); +} + +void +ARDOUR::set_path_env_for_jack_autostart (const vector& dirs) +{ +#ifdef __APPLE__ + // push it back into the environment so that auto-started JACK can find it. + // XXX why can't we just expect OS X users to have PATH set correctly? we can't ... + setenv ("PATH", SearchPath(dirs).to_string().c_str(), 1); +#else + /* silence a compiler unused variable warning */ + (void) dirs; +#endif +} + +bool +ARDOUR::get_jack_server_dir_paths (vector& server_dir_paths) +{ +#ifdef __APPLE__ + /* this magic lets us finds the path to the OSX bundle, and then + we infer JACK's location from there + */ + + char execpath[MAXPATHLEN+1]; + uint32_t pathsz = sizeof (execpath); + + _NSGetExecutablePath (execpath, &pathsz); + + server_dir_paths.push_back (Glib::path_get_dirname (execpath)); +#endif + + SearchPath sp(string(g_getenv("PATH"))); + +#ifdef WIN32 + gchar *install_dir = g_win32_get_package_installation_directory_of_module (NULL); + if (install_dir) { + sp.push_back (install_dir); + g_free (install_dir); + } + // don't try and use a system wide JACK install yet. +#else + if (sp.empty()) { + sp.push_back ("/usr/bin"); + sp.push_back ("/bin"); + sp.push_back ("/usr/local/bin"); + sp.push_back ("/opt/local/bin"); + } +#endif + + std::copy (sp.begin(), sp.end(), std::back_inserter(server_dir_paths)); + + return !server_dir_paths.empty(); +} + +bool +ARDOUR::get_jack_server_paths (const vector& server_dir_paths, + const vector& server_names, + vector& server_paths) +{ + for (vector::const_iterator i = server_names.begin(); i != server_names.end(); ++i) { + Glib::PatternSpec ps (*i); + find_matching_files_in_directories (server_dir_paths, ps, server_paths); + } + return !server_paths.empty(); +} + +bool +ARDOUR::get_jack_server_paths (vector& server_paths) +{ + vector server_dirs; + + if (!get_jack_server_dir_paths (server_dirs)) { + return false; + } + + vector server_names; + + if (!get_jack_server_application_names (server_names)) { + return false; + } + + if (!get_jack_server_paths (server_dirs, server_names, server_paths)) { + return false; + } + + return !server_paths.empty(); +} + +bool +ARDOUR::get_jack_default_server_path (std::string& server_path) +{ + vector server_paths; + + if (!get_jack_server_paths (server_paths)) { + return false; + } + + server_path = server_paths.front (); + return true; +} + +string +quote_string (const string& str) +{ + return "\"" + str + "\""; +} + +ARDOUR::JackCommandLineOptions::JackCommandLineOptions () + : server_path () + , timeout(0) + , no_mlock(false) + , ports_max(128) + , realtime(true) + , priority(0) + , unlock_gui_libs(false) + , verbose(false) + , temporary(true) + , driver() + , input_device() + , output_device() + , num_periods(2) + , period_size(1024) + , samplerate(48000) + , input_latency(0) + , output_latency(0) + , hardware_metering(false) + , hardware_monitoring(false) + , dither_mode() + , force16_bit(false) + , soft_mode(false) + , midi_driver() +{ + +} + +bool +ARDOUR::get_jack_command_line_string (const JackCommandLineOptions& options, string& command_line) +{ + vector args; + + args.push_back (options.server_path); + +#ifdef WIN32 + // must use sync mode on windows + args.push_back ("-S"); + + // this needs to be added now on windows + if (!options.midi_driver.empty () && options.midi_driver != get_none_string ()) { + args.push_back ("-X"); + args.push_back (options.midi_driver); + } +#endif + + if (options.timeout) { + args.push_back ("-t"); + args.push_back (to_string (options.timeout, std::dec)); + } + + if (options.no_mlock) { + args.push_back ("-m"); + } + + args.push_back ("-p"); + args.push_back (to_string(options.ports_max, std::dec)); + + if (options.realtime) { + args.push_back ("-R"); + if (options.priority != 0) { + args.push_back ("-P"); + args.push_back (to_string(options.priority, std::dec)); + } + } else { + args.push_back ("-r"); + } + + if (options.unlock_gui_libs) { + args.push_back ("-u"); + } + + if (options.verbose) { + args.push_back ("-v"); + } + +#ifndef WIN32 + if (options.temporary) { + args.push_back ("-T"); + } +#endif + + string command_line_driver_name; + + if (!get_jack_command_line_audio_driver_name (options.driver, command_line_driver_name)) { + return false; + } + + args.push_back ("-d"); + args.push_back (command_line_driver_name); + + if (options.output_device.empty() && options.input_device.empty()) { + return false; + } + + string command_line_input_device_name; + string command_line_output_device_name; + + if (!get_jack_command_line_audio_device_name (options.driver, + options.input_device, command_line_input_device_name)) { + return false; + } + + if (!get_jack_command_line_audio_device_name (options.driver, + options.output_device, command_line_output_device_name)) { + return false; + } + + if (options.input_device.empty()) { + // playback only + if (options.output_device.empty()) { + return false; + } + args.push_back ("-P"); + } else if (options.output_device.empty()) { + // capture only + if (options.input_device.empty()) { + return false; + } + args.push_back ("-C"); + } else if (options.input_device != options.output_device) { + // capture and playback on two devices if supported + if (get_jack_audio_driver_supports_two_devices (options.driver)) { + args.push_back ("-C"); + args.push_back (command_line_input_device_name); + args.push_back ("-P"); + args.push_back (command_line_output_device_name); + } else { + return false; + } + } + + if (options.input_channels) { + args.push_back ("-i"); + args.push_back (to_string (options.input_channels, std::dec)); + } + + if (options.output_channels) { + args.push_back ("-o"); + args.push_back (to_string (options.output_channels, std::dec)); + } + + if (get_jack_audio_driver_supports_setting_period_count (options.driver)) { + args.push_back ("-n"); + args.push_back (to_string (options.num_periods, std::dec)); + } + + args.push_back ("-r"); + args.push_back (to_string (options.samplerate, std::dec)); + + args.push_back ("-p"); + args.push_back (to_string (options.period_size, std::dec)); + + if (get_jack_audio_driver_supports_latency_adjustment (options.driver)) { + if (options.input_latency) { + args.push_back ("-I"); + args.push_back (to_string (options.input_latency, std::dec)); + } + if (options.output_latency) { + args.push_back ("-O"); + args.push_back (to_string (options.output_latency, std::dec)); + } + } + + if (options.input_device == options.output_device && options.input_device != default_device_name) { + args.push_back ("-d"); + args.push_back (command_line_input_device_name); + } + + if (options.driver == alsa_driver_name) { + if (options.hardware_metering) { + args.push_back ("-M"); + } + if (options.hardware_monitoring) { + args.push_back ("-H"); + } + + string command_line_dither_mode; + if (get_jack_command_line_dither_mode (options.dither_mode, command_line_dither_mode)) { + args.push_back ("-z"); + args.push_back (command_line_dither_mode); + } + if (options.force16_bit) { + args.push_back ("-S"); + } + if (options.soft_mode) { + args.push_back ("-s"); + } + + if (!options.midi_driver.empty() && options.midi_driver != get_none_string ()) { + args.push_back ("-X"); + args.push_back (options.midi_driver); + } + } + + ostringstream oss; + + for (vector::const_iterator i = args.begin(); i != args.end();) { +#ifdef WIN32 + oss << quote_string (*i); +#else + oss << *i; +#endif + if (++i != args.end()) oss << ' '; + } + + command_line = oss.str(); + return true; +} + +string +ARDOUR::get_jack_server_config_file_name () +{ + return ".jackdrc"; +} + +std::string +ARDOUR::get_jack_server_user_config_dir_path () +{ + return Glib::get_home_dir (); +} + +std::string +ARDOUR::get_jack_server_user_config_file_path () +{ + return Glib::build_filename (get_jack_server_user_config_dir_path (), get_jack_server_config_file_name ()); +} + +bool +ARDOUR::write_jack_config_file (const std::string& config_file_path, const string& command_line) +{ + ofstream jackdrc (config_file_path.c_str()); + + if (!jackdrc) { + error << string_compose (_("cannot open JACK rc file %1 to store parameters"), config_file_path) << endmsg; + return false; + } + + jackdrc << command_line << endl; + jackdrc.close (); + return true; +} diff --git a/libs/backends/jack/jack_utils.h b/libs/backends/jack/jack_utils.h new file mode 100644 index 0000000000..7565353198 --- /dev/null +++ b/libs/backends/jack/jack_utils.h @@ -0,0 +1,235 @@ +/* + Copyright (C) 2011 Tim Mayberry + + 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. + +*/ + +#include + +#include +#include +#include + +namespace ARDOUR { + + // Names for the drivers on all possible systems + extern const char * const portaudio_driver_name; + extern const char * const coreaudio_driver_name; + extern const char * const alsa_driver_name; + extern const char * const oss_driver_name; + extern const char * const freebob_driver_name; + extern const char * const ffado_driver_name; + extern const char * const netjack_driver_name; + extern const char * const dummy_driver_name; + + /** + * Get a list of possible JACK audio driver names based on platform + */ + void get_jack_audio_driver_names (std::vector& driver_names); + + /** + * Get the default JACK audio driver based on platform + */ + void get_jack_default_audio_driver_name (std::string& driver_name); + + /** + * Get a list of possible samplerates supported be JACK + */ + void get_jack_sample_rate_strings (std::vector& sample_rates); + + /** + * @return The default samplerate + */ + std::string get_jack_default_sample_rate (); + + /** + * @return true if sample rate string was able to be converted + */ + bool get_jack_sample_rate_value_from_string (const std::string& srs, uint32_t& srv); + + /** + * Get a list of possible period sizes supported be JACK + */ + void get_jack_period_size_strings (std::vector& samplerates); + + /** + * @return The default period size + */ + std::string get_jack_default_period_size (); + + /** + * @return true if period size string was able to be converted + */ + bool get_jack_period_size_value_from_string (const std::string& pss, uint32_t& psv); + + /** + * These are driver specific I think, so it may require a driver arg + * in future + */ + void get_jack_dither_mode_strings (const std::string& driver, std::vector& dither_modes); + + /** + * @return The default dither mode + */ + std::string get_jack_default_dither_mode (const std::string& driver); + + /** + * @return Estimate of latency + * + * API matches current use in GUI + */ + std::string get_jack_latency_string (std::string samplerate, float periods, std::string period_size); + + /** + * Key being a readable name to display in a GUI + * Value being name used in a jack commandline + */ + typedef std::map device_map_t; + + /** + * Use library specific code to find out what what devices exist for a given + * driver that might work in JACK. There is no easy way to find out what + * modules the JACK server supports so guess based on platform. For instance + * portaudio is cross-platform but we only return devices if built for + * windows etc + */ + void get_jack_alsa_device_names (device_map_t& devices); + void get_jack_portaudio_device_names (device_map_t& devices); + void get_jack_coreaudio_device_names (device_map_t& devices); + void get_jack_oss_device_names (device_map_t& devices); + void get_jack_freebob_device_names (device_map_t& devices); + void get_jack_ffado_device_names (device_map_t& devices); + void get_jack_netjack_device_names (device_map_t& devices); + void get_jack_dummy_device_names (device_map_t& devices); + + /* + * @return true if there were devices found for the driver + * + * @param driver The driver name returned by get_jack_audio_driver_names + * @param devices The map used to insert the drivers into, devices will be cleared before + * adding the available drivers + */ + bool get_jack_device_names_for_audio_driver (const std::string& driver, device_map_t& devices); + + /* + * @return a list of readable device names for a specific driver. + */ + std::vector get_jack_device_names_for_audio_driver (const std::string& driver); + + /** + * @return true if the driver supports playback and recording + * on separate devices + */ + bool get_jack_audio_driver_supports_two_devices (const std::string& driver); + + bool get_jack_audio_driver_supports_latency_adjustment (const std::string& driver); + + bool get_jack_audio_driver_supports_setting_period_count (const std::string& driver); + + /** + * The possible names to use to try and find servers, this includes + * any file extensions like .exe on Windows + * + * @return true if the JACK application names for this platform could be guessed + */ + bool get_jack_server_application_names (std::vector& server_names); + + /** + * Sets the PATH environment variable to contain directories likely to contain + * JACK servers so that if the JACK server is auto-started it can find the server + * executable. + * + * This is only modifies PATH on the mac at the moment. + */ + void set_path_env_for_jack_autostart (const std::vector&); + + /** + * Get absolute paths to directories that might contain JACK servers on the system + * + * @return true if !server_paths.empty() + */ + bool get_jack_server_dir_paths (std::vector& server_dir_paths); + + /** + * Get absolute paths to JACK servers on the system + * + * @return true if a server was found + */ + bool get_jack_server_paths (const std::vector& server_dir_paths, + const std::vector& server_names, + std::vector& server_paths); + + + bool get_jack_server_paths (std::vector& server_paths); + + /** + * Get absolute path to default JACK server + */ + bool get_jack_default_server_path (std::string& server_path); + + /** + * @return The name of the jack server config file + */ + std::string get_jack_server_config_file_name (); + + std::string get_jack_server_user_config_dir_path (); + + std::string get_jack_server_user_config_file_path (); + + bool write_jack_config_file (const std::string& config_file_path, const std::string& command_line); + + struct JackCommandLineOptions { + + // see implementation for defaults + JackCommandLineOptions (); + + //operator bool + //operator ostream + + std::string server_path; + uint32_t timeout; + bool no_mlock; + uint32_t ports_max; + bool realtime; + uint32_t priority; + bool unlock_gui_libs; + bool verbose; + bool temporary; + bool playback_only; + bool capture_only; + std::string driver; + std::string input_device; + std::string output_device; + uint32_t num_periods; + uint32_t period_size; + uint32_t samplerate; + uint32_t input_channels; + uint32_t output_channels; + uint32_t input_latency; + uint32_t output_latency; + bool hardware_metering; + bool hardware_monitoring; + std::string dither_mode; + bool force16_bit; + bool soft_mode; + std::string midi_driver; + }; + + /** + * @return true if able to build a valid command line based on options + */ + bool get_jack_command_line_string (const JackCommandLineOptions& options, std::string& command_line); +} diff --git a/libs/backends/jack/wscript b/libs/backends/jack/wscript new file mode 100644 index 0000000000..3c47f3a652 --- /dev/null +++ b/libs/backends/jack/wscript @@ -0,0 +1,51 @@ +#!/usr/bin/env python +from waflib.extras import autowaf as autowaf +import os +import sys +import re + +# Library version (UNIX style major, minor, micro) +# major increment <=> incompatible changes +# minor increment <=> compatible changes (additions) +# micro increment <=> no interface changes +JACKBACKEND_VERSION = '1.0.0' +I18N_PACKAGE = 'jack-backend' + +# Mandatory variables +top = '.' +out = 'build' + +def options(opt): + autowaf.set_options(opt) + +def configure(conf): + autowaf.configure(conf) + +def build(bld): + obj = bld(features = 'cxx cxxshlib') + obj.source = [ + 'jack_api.cc', + 'jack_connection.cc', + 'jack_audiobackend.cc', + 'jack_portengine.cc', + 'jack_utils.cc' + ] + obj.includes = ['.'] + obj.cxxflags = [ '-fPIC' ] + obj.name = 'jack_audiobackend' + obj.target = 'jack_audiobackend' + obj.uselib = [ 'JACK' ] + obj.use = 'ardour libpbd' + obj.vnum = JACKBACKEND_VERSION + obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'backends') + obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"'] + + + # + # device discovery code in the jack backend needs ALSA + # on Linux. + # + + if re.search ("linux", sys.platform) != None: + obj.uselib += [ 'ALSA' ] + diff --git a/libs/backends/wscript b/libs/backends/wscript new file mode 100644 index 0000000000..b8779b7713 --- /dev/null +++ b/libs/backends/wscript @@ -0,0 +1,27 @@ +#!/usr/bin/env python +from waflib.extras import autowaf as autowaf +import os + +# Mandatory variables +top = '.' +out = 'build' + +backends = [ 'jack' ] + +def options(opt): + autowaf.set_options(opt) + +def sub_config_and_use(conf, name, has_objects = True): + conf.recurse(name) + autowaf.set_local_lib(conf, name, has_objects) + +def configure(conf): + autowaf.set_recursive() + autowaf.configure(conf) + + for i in backends: + sub_config_and_use(conf, i) + +def build(bld): + for i in backends: + bld.recurse(i) diff --git a/wscript b/wscript index 6691f06dee..c4cba628dd 100644 --- a/wscript +++ b/wscript @@ -29,6 +29,7 @@ children = [ 'libs/rubberband', 'libs/surfaces', 'libs/panners', + 'libs/backends', 'libs/timecode', 'libs/ardour', 'libs/gtkmm2ext', -- cgit v1.2.3 From f96652e12ab4cde2c84d2ac6566b0b8f76c63d34 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 7 Sep 2013 11:13:07 -0400 Subject: other changes for separated jack backend --- libs/ardour/wscript | 35 ----------------------------------- 1 file changed, 35 deletions(-) diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 57b68a0fde..c86b510e83 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -442,41 +442,6 @@ def build(bld): elif bld.env['build_target'] == 'x86_64': obj.source += [ 'sse_functions_xmm.cc', 'sse_functions_64bit.s' ] - # the JACK audio backend - - obj = bld.shlib (features = 'c cxx cshlib cxxshlib', - source = [ - 'jack_api.cc', - 'jack_connection.cc', - 'jack_audiobackend.cc', - 'jack_portengine.cc', - 'jack_utils.cc' - ]) - obj.cxxflags = [ '-fPIC' ] - obj.name = 'jack_audiobackend' - obj.target = 'jack_audiobackend' - obj.uselib = [ 'JACK' ] - - # - # device discovery code in the jack backend needs ALSA - # on Linux. - # - - if re.search ("linux", sys.platform) != None: - obj.uselib += [ 'ALSA' ] - - obj.use = [ 'ardour' ] - obj.vnum = '1.0.0' - obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') - obj.includes = [ '.' ] - obj.defines = [ - 'PACKAGE="' + I18N_PACKAGE + '"', - 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"', - 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"', - 'PROGRAM_NAME="' + bld.env['PROGRAM_NAME'] + '"', - ] - - # i18n if bld.is_defined('ENABLE_NLS'): mo_files = bld.path.ant_glob('po/*.mo') -- cgit v1.2.3 From 5ec69e23746ee347301e99edeecc7dbbfcb87f40 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 7 Sep 2013 13:39:36 -0400 Subject: move inadvertently moved jack_slave.cc back to its rightful spot --- libs/ardour/jack_slave.cc | 79 ++++++++++++++++++++++++++++++++++++++++ libs/backends/jack/jack_slave.cc | 79 ---------------------------------------- 2 files changed, 79 insertions(+), 79 deletions(-) create mode 100644 libs/ardour/jack_slave.cc delete mode 100644 libs/backends/jack/jack_slave.cc diff --git a/libs/ardour/jack_slave.cc b/libs/ardour/jack_slave.cc new file mode 100644 index 0000000000..4b2f3b1860 --- /dev/null +++ b/libs/ardour/jack_slave.cc @@ -0,0 +1,79 @@ +/* + Copyright (C) 2004 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. + +*/ + +#include +#include + +#include "ardour/audioengine.h" +#include "ardour/slave.h" + +using namespace std; +using namespace ARDOUR; + +JACK_Slave::JACK_Slave (AudioEngine& e) + : engine (e) +{ + double x; + framepos_t p; + /* call this to initialize things */ + speed_and_position (x, p); +} + +JACK_Slave::~JACK_Slave () +{ +} + +bool +JACK_Slave::locked() const +{ + return true; +} + +bool +JACK_Slave::ok() const +{ + return true; +} + +bool +JACK_Slave::speed_and_position (double& sp, framepos_t& position) +{ + switch (engine.transport_state()) { + case TransportStopped: + speed = 0; + _starting = false; + break; + case TransportRolling: + speed = 1.0; + _starting = false; + break; + case TransportLooping: + speed = 1.0; + _starting = false; + break; + case TransportStarting: + _starting = true; + // don't adjust speed here, just leave it as it was + break; + } + + sp = speed; + position = engine.transport_frame(); + return true; +} diff --git a/libs/backends/jack/jack_slave.cc b/libs/backends/jack/jack_slave.cc deleted file mode 100644 index 4b2f3b1860..0000000000 --- a/libs/backends/jack/jack_slave.cc +++ /dev/null @@ -1,79 +0,0 @@ -/* - Copyright (C) 2004 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. - -*/ - -#include -#include - -#include "ardour/audioengine.h" -#include "ardour/slave.h" - -using namespace std; -using namespace ARDOUR; - -JACK_Slave::JACK_Slave (AudioEngine& e) - : engine (e) -{ - double x; - framepos_t p; - /* call this to initialize things */ - speed_and_position (x, p); -} - -JACK_Slave::~JACK_Slave () -{ -} - -bool -JACK_Slave::locked() const -{ - return true; -} - -bool -JACK_Slave::ok() const -{ - return true; -} - -bool -JACK_Slave::speed_and_position (double& sp, framepos_t& position) -{ - switch (engine.transport_state()) { - case TransportStopped: - speed = 0; - _starting = false; - break; - case TransportRolling: - speed = 1.0; - _starting = false; - break; - case TransportLooping: - speed = 1.0; - _starting = false; - break; - case TransportStarting: - _starting = true; - // don't adjust speed here, just leave it as it was - break; - } - - sp = speed; - position = engine.transport_frame(); - return true; -} -- cgit v1.2.3 From 25cd52b392516b9e7bd13102843351dbdb1033dd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 8 Sep 2013 18:26:02 +0200 Subject: vtl: update to ffmpeg v1.2.1 [lib]x264 option. --- gtk2_ardour/export_video_dialog.cc | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/gtk2_ardour/export_video_dialog.cc b/gtk2_ardour/export_video_dialog.cc index cd45bb368e..c7ef6efd9a 100644 --- a/gtk2_ardour/export_video_dialog.cc +++ b/gtk2_ardour/export_video_dialog.cc @@ -257,8 +257,7 @@ ExportVideoDialog::ExportVideoDialog (PublicEditor& ed, Session* s) video_codec_combo.append_text("mjpeg"); video_codec_combo.append_text("mpeg2video"); video_codec_combo.append_text("mpeg4"); - video_codec_combo.append_text("x264 (baseline)"); - video_codec_combo.append_text("x264 (hq)"); + video_codec_combo.append_text("h264"); video_codec_combo.append_text("vpx (webm)"); video_codec_combo.append_text("copy"); video_codec_combo.set_active(4); @@ -612,13 +611,8 @@ ExportVideoDialog::encode_pass (int pass) ffs["-strict"] = "-2"; } - if (video_codec_combo.get_active_text() == "x264 (hq)" ) { + if (video_codec_combo.get_active_text() == "h264" ) { ffs["-vcodec"] = "libx264"; - ffs["-vprofile"] = "high"; - } - else if (video_codec_combo.get_active_text() == "x264 (baseline)" ) { - ffs["-vcodec"] = "libx264"; - ffs["-vpre"] = "baseline"; } else if (video_codec_combo.get_active_text() == "vpx (webm)" ) { ffs["-vcodec"] = "libvpx"; -- cgit v1.2.3 From 79b8a3c736d9732037754ff80466754e1c9ff33f Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 9 Sep 2013 17:32:04 +0200 Subject: meterbridge: don't display metrics of invisible tracks --- gtk2_ardour/meterbridge.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index 4a4f1dd8dd..8756089e00 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -702,11 +702,11 @@ Meterbridge::sync_order_keys (RouteSortOrderKey) MeterType nmt = (*i).s->meter_type(); if (nmt == MeterKrms) nmt = MeterPeak; // identical metrics - if (pos == 0) { + if (vis == 1) { (*i).s->set_tick_bar(1); } - if ((*i).visible && nmt != lmt && pos == 0) { + if ((*i).visible && nmt != lmt && vis == 1) { lmt = nmt; metrics_left.set_metric_mode(1, lmt); } else if ((*i).visible && nmt != lmt) { -- cgit v1.2.3 From 93b3433de232a08be5e9f3ba0068ce0af7d08199 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 9 Sep 2013 18:31:50 +0200 Subject: widen narrow mixer-meters,hide metric display instead --- gtk2_ardour/gain_meter.cc | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index b2beb5b9a3..025310183a 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -277,16 +277,14 @@ GainMeterBase::setup_meters (int len) switch (_width) { case Wide: - meter_ticks1_area.show(); - meter_ticks2_area.show(); + meter_metric_area.show(); if (_route && _route->shared_peak_meter()->input_streams().n_total() == 1) { meter_width = 10; } break; case Narrow: - meter_width = 2; - meter_ticks1_area.hide(); - meter_ticks2_area.hide(); + meter_width = 5; + meter_metric_area.hide(); break; } level_meter->setup_meters(len, meter_width); -- cgit v1.2.3 From cd6a9cfe38e78665e9de8c51392098bcbf4cc39b Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 9 Sep 2013 19:33:30 +0200 Subject: hide tick-marks on narrow mixer-meters --- gtk2_ardour/gain_meter.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 025310183a..d4610da601 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -277,13 +277,16 @@ GainMeterBase::setup_meters (int len) switch (_width) { case Wide: + meter_ticks1_area.show(); + meter_ticks2_area.show(); meter_metric_area.show(); if (_route && _route->shared_peak_meter()->input_streams().n_total() == 1) { meter_width = 10; } break; case Narrow: - meter_width = 5; + meter_ticks1_area.hide(); + meter_ticks2_area.hide(); meter_metric_area.hide(); break; } -- cgit v1.2.3 From 56465fda106a7350741d476282abee68da94b9bb Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Sep 2013 13:17:53 -0400 Subject: move engine dialog from a widget to an actual dialog; emit Session::AudioEngineSetupRequired when loading a session if it is necessary --- gtk2_ardour/ardour.menus.in | 26 +++--- gtk2_ardour/ardour_ui.cc | 178 +++++++++++++++++++++------------------ gtk2_ardour/ardour_ui.h | 14 ++- gtk2_ardour/ardour_ui_dialogs.cc | 5 +- gtk2_ardour/ardour_ui_ed.cc | 45 +++++----- gtk2_ardour/engine_dialog.cc | 52 +++++++++--- gtk2_ardour/engine_dialog.h | 8 +- gtk2_ardour/startup.cc | 39 +-------- gtk2_ardour/startup.h | 6 -- libs/ardour/ardour/session.h | 5 ++ libs/ardour/session.cc | 16 +++- 11 files changed, 208 insertions(+), 186 deletions(-) diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in index 15f1bde1b6..197b484698 100644 --- a/gtk2_ardour/ardour.menus.in +++ b/gtk2_ardour/ardour.menus.in @@ -495,27 +495,27 @@ - - + + - - - - - - - - - + + + + + + + + + + + - - diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index b7d6459ae2..d6c6863b14 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -157,7 +157,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) /* start of private members */ , _startup (0) - , engine (0) , nsm (0) , _was_dirty (false) , _mixer_on_top (false) @@ -203,7 +202,7 @@ 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); @@ -220,7 +219,6 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) mixer = 0; meterbridge = 0; editor = 0; - engine = 0; _session_is_new = false; session_selector_window = 0; last_key_press_time = 0; @@ -268,6 +266,10 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) ARDOUR::Session::AskAboutPendingState.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::pending_state_dialog, this)); + /* handle Audio/MIDI setup when session requires it */ + + ARDOUR::Session::AudioEngineSetupRequired.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::do_audio_midi_setup, this)); + /* handle sr mismatch with a dialog (PROBLEM: needs to return a value and thus cannot be x-thread) */ ARDOUR::Session::AskAboutSampleRateMismatch.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::sr_mismatch_dialog, this, _1, _2)); @@ -382,13 +384,11 @@ ARDOUR_UI::create_global_port_matrix (ARDOUR::DataType type) void ARDOUR_UI::attach_to_engine () { - engine = AudioEngine::instance(); + AudioEngine::instance()->Stopped.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_stopped, this), gui_context()); + AudioEngine::instance()->Running.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_running, this), gui_context()); + AudioEngine::instance()->SampleRateChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::update_sample_rate, this, _1), gui_context()); - engine->Stopped.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_stopped, this), gui_context()); - engine->Running.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_running, this), gui_context()); - engine->SampleRateChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::update_sample_rate, this, _1), gui_context()); - - engine->Halted.connect_same_thread (halt_connection, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); + AudioEngine::instance()->Halted.connect_same_thread (halt_connection, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); ARDOUR::Port::set_connecting_blocked (ARDOUR_COMMAND_LINE::no_connect_ports); @@ -427,7 +427,7 @@ ARDOUR_UI::engine_running () Glib::RefPtr action; const char* action_name = 0; - switch (engine->samples_per_cycle()) { + switch (AudioEngine::instance()->samples_per_cycle()) { case 32: action_name = X_("JACKLatency32"); break; @@ -468,7 +468,7 @@ ARDOUR_UI::engine_running () update_disk_space (); update_cpu_load (); - update_sample_rate (engine->sample_rate()); + update_sample_rate (AudioEngine::instance()->sample_rate()); update_timecode_format (); } } @@ -869,7 +869,7 @@ ARDOUR_UI::check_memory_locking () XMLNode* memory_warning_node = Config->instant_xml (X_("no-memory-warning")); - if (engine->is_realtime() && memory_warning_node == 0) { + if (AudioEngine::instance()->is_realtime() && memory_warning_node == 0) { struct rlimit limits; int64_t ram; @@ -1010,7 +1010,7 @@ If you still wish to quit, please use the\n\n\ } halt_connection.disconnect (); - engine->stop (); + AudioEngine::instance()->stop (); quit (); } @@ -1139,13 +1139,13 @@ ARDOUR_UI::update_sample_rate (framecnt_t) ENSURE_GUI_THREAD (*this, &ARDOUR_UI::update_sample_rate, ignored) - if (!engine->connected()) { + if (!AudioEngine::instance()->connected()) { snprintf (buf, sizeof (buf), _("Audio: none")); } else { - framecnt_t rate = engine->sample_rate(); + framecnt_t rate = AudioEngine::instance()->sample_rate(); if (rate == 0) { /* no sample rate available */ @@ -1155,11 +1155,11 @@ ARDOUR_UI::update_sample_rate (framecnt_t) if (fmod (rate, 1000.0) != 0.0) { snprintf (buf, sizeof (buf), _("Audio: %.1f kHz / %4.1f ms"), (float) rate / 1000.0f, - (engine->usecs_per_cycle() / 1000.0f)); + (AudioEngine::instance()->usecs_per_cycle() / 1000.0f)); } else { snprintf (buf, sizeof (buf), _("Audio: %" PRId64 " kHz / %4.1f ms"), rate/1000, - (engine->usecs_per_cycle() / 1000.0f)); + (AudioEngine::instance()->usecs_per_cycle() / 1000.0f)); } } } @@ -1230,7 +1230,7 @@ ARDOUR_UI::update_cpu_load () should also be changed. */ - float const c = engine->get_cpu_load (); + float const c = AudioEngine::instance()->get_cpu_load (); snprintf (buf, sizeof (buf), _("DSP: %5.1f%%"), c >= 90 ? X_("red") : X_("green"), c); cpu_load_label.set_markup (buf); } @@ -1551,20 +1551,16 @@ ARDOUR_UI::open_recent_session () bool ARDOUR_UI::check_audioengine () { - if (engine) { - if (!engine->connected()) { - MessageDialog msg (string_compose ( - _("%1 is not connected to JACK\n" - "You cannot open or close sessions in this condition"), - PROGRAM_NAME)); - pop_back_splash (msg); - msg.run (); - return false; - } - return true; - } else { + if (!AudioEngine::instance()->connected()) { + MessageDialog msg (string_compose ( + _("%1 is not connected to any audio backend.\n" + "You cannot open or close sessions in this condition"), + PROGRAM_NAME)); + pop_back_splash (msg); + msg.run (); return false; } + return true; } void @@ -2785,25 +2781,23 @@ ARDOUR_UI::load_session (const std::string& path, const std::string& snap_name, int unload_status; int retval = -1; - session_loaded = false; - - if (!check_audioengine()) { - return -2; + if (_session) { + unload_status = unload_session (); + + if (unload_status < 0) { + goto out; + } else if (unload_status > 0) { + retval = 0; + goto out; + } } - unload_status = unload_session (); - - if (unload_status < 0) { - goto out; - } else if (unload_status > 0) { - retval = 0; - goto out; - } + session_loaded = false; loading_message (string_compose (_("Please wait while %1 loads your session"), PROGRAM_NAME)); try { - new_session = new Session (*engine, path, snap_name, 0, mix_template); + new_session = new Session (*AudioEngine::instance(), path, snap_name, 0, mix_template); } /* this one is special */ @@ -2904,12 +2898,7 @@ ARDOUR_UI::build_session (const std::string& path, const std::string& snap_name, Session *new_session; int x; - if (!check_audioengine()) { - return -1; - } - session_loaded = false; - x = unload_session (); if (x < 0) { @@ -2921,7 +2910,7 @@ ARDOUR_UI::build_session (const std::string& path, const std::string& snap_name, _session_is_new = true; try { - new_session = new Session (*engine, path, snap_name, &bus_profile); + new_session = new Session (*AudioEngine::instance(), path, snap_name, &bus_profile); } catch (...) { @@ -3808,38 +3797,33 @@ audio may be played at the wrong sample rate.\n"), desired, PROGRAM_NAME, actual return 1; } - void -ARDOUR_UI::disconnect_from_jack () +ARDOUR_UI::disconnect_from_engine () { - if (engine) { - /* drop connection to AudioEngine::Halted so that we don't act - * as if the engine unexpectedly shut down - */ - halt_connection.disconnect (); - - if (engine->stop ()) { - MessageDialog msg (*editor, _("Could not disconnect from JACK")); - msg.run (); - } else { - engine->Halted.connect_same_thread (halt_connection, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); - } - - update_sample_rate (0); + /* 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 ()) { + MessageDialog msg (*editor, _("Could not disconnect from JACK")); + msg.run (); + } else { + AudioEngine::instance()->Halted.connect_same_thread (halt_connection, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); } + + update_sample_rate (0); } void -ARDOUR_UI::reconnect_to_jack () +ARDOUR_UI::reconnect_to_engine () { - if (engine) { - if (engine->start ()) { - MessageDialog msg (*editor, _("Could not reconnect to JACK")); - msg.run (); - } - - update_sample_rate (0); + if (AudioEngine::instance()->start ()) { + MessageDialog msg (*editor, _("Could not reconnect to JACK")); + msg.run (); } + + update_sample_rate (0); } void @@ -4147,18 +4131,46 @@ ARDOUR_UI::reset_route_peak_display (Route* route) } } -EngineControl* -ARDOUR_UI::audio_midi_setup_widget () +void +ARDOUR_UI::toggle_audio_midi_setup () { - /* remove widget from any existing parent, since it is about - to be packed somewhere else. - */ - - Gtk::Container* parent = _audio_midi_setup->get_parent (); + Glib::RefPtr act = ActionManager::get_action (X_("Common"), X_("toggle-audio-midi-setup")); + if (!act) { + return; + } - if (parent) { - parent->remove (*_audio_midi_setup); + Glib::RefPtr tact = Glib::RefPtr::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 () +{ + launch_audio_midi_setup (); + + int r = _audio_midi_setup->run (); - return _audio_midi_setup; + switch (r) { + case Gtk::RESPONSE_OK: + return 0; + case Gtk::RESPONSE_APPLY: + return 0; + default: + return -1; + } } diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 6be0d39848..77e81fd23a 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -289,8 +289,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr const std::string& announce_string() const { return _announce_string; } - EngineControl* audio_midi_setup_widget(); - protected: friend class PublicEditor; @@ -305,15 +303,13 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void reenable_hide_loop_punch_ruler_if_appropriate (); void toggle_auto_return (); void toggle_click (); - + void toggle_audio_midi_setup (); void toggle_session_auto_loop (); - void toggle_rc_options_window (); void toggle_session_options_window (); private: ArdourStartup* _startup; - ARDOUR::AudioEngine *engine; Gtk::Tooltips _tooltips; NSM_Client *nsm; bool _was_dirty; @@ -671,9 +667,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr int pending_state_dialog (); int sr_mismatch_dialog (ARDOUR::framecnt_t, ARDOUR::framecnt_t); - void disconnect_from_jack (); - void reconnect_to_jack (); - void set_jack_buffer_size (ARDOUR::pframes_t); + void disconnect_from_engine (); + void reconnect_to_engine (); + void set_engine_buffer_size (ARDOUR::pframes_t); Gtk::MenuItem* jack_disconnect_item; Gtk::MenuItem* jack_reconnect_item; @@ -753,6 +749,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void check_announcements (); EngineControl* _audio_midi_setup; + void launch_audio_midi_setup (); + int do_audio_midi_setup (); }; #endif /* __ardour_gui_h__ */ diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 81c0be223c..db9e420206 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -275,7 +275,10 @@ ARDOUR_UI::unload_session (bool hide_stuff) rec_button.set_sensitive (false); WM::Manager::instance().set_session ((ARDOUR::Session*) 0); - ARDOUR_UI::instance()->video_timeline->close_session(); + + if (ARDOUR_UI::instance()->video_timeline) { + ARDOUR_UI::instance()->video_timeline->close_session(); + } stop_blinking (); stop_clocking (); diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 002b7dd3ed..53ea7c02de 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -189,31 +189,31 @@ ARDOUR_UI::install_actions () ActionManager::register_action (engine_actions, X_("JACK"), _("JACK")); ActionManager::register_action (engine_actions, X_("Latency"), _("Latency")); - act = ActionManager::register_action (engine_actions, X_("JACKReconnect"), _("Reconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::reconnect_to_jack)); + act = ActionManager::register_action (engine_actions, X_("EngineReconnect"), _("Reconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::reconnect_to_engine)); ActionManager::engine_opposite_sensitive_actions.push_back (act); - act = ActionManager::register_action (engine_actions, X_("JACKDisconnect"), _("Disconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_jack)); + act = ActionManager::register_action (engine_actions, X_("EngineDisconnect"), _("Disconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_engine)); ActionManager::engine_sensitive_actions.push_back (act); RadioAction::Group latency_group; - act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency32"), X_("32"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 32)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("EngineLatency32"), X_("32"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_engine_buffer_size), (pframes_t) 32)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency64"), X_("64"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 64)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("EngineLatency64"), X_("64"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_engine_buffer_size), (pframes_t) 64)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency128"), X_("128"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 128)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("EngineLatency128"), X_("128"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_engine_buffer_size), (pframes_t) 128)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency256"), X_("256"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 256)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("EngineLatency256"), X_("256"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_engine_buffer_size), (pframes_t) 256)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency512"), X_("512"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 512)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("EngineLatency512"), X_("512"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_engine_buffer_size), (pframes_t) 512)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency1024"), X_("1024"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 1024)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("EngineLatency1024"), X_("1024"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_engine_buffer_size), (pframes_t) 1024)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency2048"), X_("2048"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 2048)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("EngineLatency2048"), X_("2048"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_engine_buffer_size), (pframes_t) 2048)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency4096"), X_("4096"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 4096)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("EngineLatency4096"), X_("4096"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_engine_buffer_size), (pframes_t) 4096)); ActionManager::engine_sensitive_actions.push_back (act); - act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency8192"), X_("8192"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 8192)); + act = ActionManager::register_radio_action (engine_actions, latency_group, X_("EngineLatency8192"), X_("8192"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_engine_buffer_size), (pframes_t) 8192)); ActionManager::engine_sensitive_actions.push_back (act); /* these actions are intended to be shared across all windows */ @@ -230,6 +230,7 @@ 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); @@ -430,38 +431,38 @@ ARDOUR_UI::install_actions () } void -ARDOUR_UI::set_jack_buffer_size (pframes_t nframes) +ARDOUR_UI::set_engine_buffer_size (pframes_t nframes) { Glib::RefPtr action; const char* action_name = 0; switch (nframes) { case 32: - action_name = X_("JACKLatency32"); + action_name = X_("EngineLatency32"); break; case 64: - action_name = X_("JACKLatency64"); + action_name = X_("EngineLatency64"); break; case 128: - action_name = X_("JACKLatency128"); + action_name = X_("EngineLatency128"); break; case 256: - action_name = X_("JACKLatency256"); + action_name = X_("EngineLatency256"); break; case 512: - action_name = X_("JACKLatency512"); + action_name = X_("EngineLatency512"); break; case 1024: - action_name = X_("JACKLatency1024"); + action_name = X_("EngineLatency1024"); break; case 2048: - action_name = X_("JACKLatency2048"); + action_name = X_("EngineLatency2048"); break; case 4096: - action_name = X_("JACKLatency4096"); + action_name = X_("EngineLatency4096"); break; case 8192: - action_name = X_("JACKLatency8192"); + action_name = X_("EngineLatency8192"); break; default: /* XXX can we do anything useful ? */ @@ -476,7 +477,7 @@ ARDOUR_UI::set_jack_buffer_size (pframes_t nframes) Glib::RefPtr ract = Glib::RefPtr::cast_dynamic (action); if (ract && ract->get_active()) { - engine->request_buffer_size (nframes); + AudioEngine::instance()->request_buffer_size (nframes); update_sample_rate (0); } } diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 46df096e69..f858f56b17 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -52,7 +52,8 @@ using namespace PBD; using namespace Glib; EngineControl::EngineControl () - : input_latency_adjustment (0, 0, 99999, 1) + : ArdourDialog (_("Audio/MIDI Setup")) + , input_latency_adjustment (0, 0, 99999, 1) , input_latency (input_latency_adjustment) , output_latency_adjustment (0, 0, 99999, 1) , output_latency (output_latency_adjustment) @@ -64,6 +65,45 @@ EngineControl::EngineControl () , ports_spinner (ports_adjustment) , realtime_button (_("Realtime")) , basic_packer (9, 3) +{ + build_notebook (); + + get_vbox()->set_border_width (12); + get_vbox()->pack_start (notebook); + + add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); + add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK); + add_button (Gtk::Stock::APPLY, Gtk::RESPONSE_APPLY); + + /* Pick up any existing audio setup configuration, if appropriate */ + + XMLNode* audio_setup = ARDOUR::Config->extra_xml ("AudioMIDISetup"); + + if (audio_setup) { + set_state (*audio_setup); + } +} + +void +EngineControl::on_response (int response_id) +{ + ArdourDialog::on_response (response_id); + + switch (response_id) { + case RESPONSE_APPLY: + setup_engine (true); + break; + case RESPONSE_OK: + setup_engine (true); + hide (); + break; + default: + hide (); + } +} + +void +EngineControl::build_notebook () { using namespace Notebook_Helpers; Label* label; @@ -164,16 +204,6 @@ EngineControl::EngineControl () notebook.set_name ("SettingsNotebook"); - set_border_width (12); - pack_start (notebook); - - /* Pick up any existing audio setup configuration, if appropriate */ - - XMLNode* audio_setup = ARDOUR::Config->extra_xml ("AudioMIDISetup"); - - if (audio_setup) { - set_state (*audio_setup); - } } EngineControl::~EngineControl () diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 553563cafb..deaa0afa54 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -33,7 +33,9 @@ #include #include -class EngineControl : public Gtk::VBox { +#include "ardour_dialog.h" + +class EngineControl : public ArdourDialog { public: EngineControl (); ~EngineControl (); @@ -144,6 +146,10 @@ class EngineControl : public Gtk::VBox { void save_state (); static bool print_channel_count (Gtk::SpinButton*); + + void build_notebook (); + + void on_response (int); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index d776e3c36f..266a7e2a27 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -75,7 +75,6 @@ ArdourStartup::ArdourStartup (bool require_new, const std::string& session_name, , 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)) - , engine_dialog (0) , 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) @@ -92,13 +91,12 @@ ArdourStartup::ArdourStartup (bool require_new, const std::string& session_name, , _existing_session_chooser_used (false) { new_user = !Glib::file_test (been_here_before_path(), Glib::FILE_TEST_EXISTS); - need_audio_setup = AudioEngine::instance()->setup_required (); need_session_info = (session_name.empty() || require_new); _provided_session_name = session_name; _provided_session_path = session_path; - if (need_audio_setup || need_session_info || new_user) { + if (need_session_info || new_user) { use_template_button.set_group (session_template_group); use_session_as_template_button.set_group (session_template_group); @@ -140,18 +138,10 @@ ArdourStartup::ArdourStartup (bool require_new, const std::string& session_name, setup_monitoring_choice_page (); setup_monitor_section_choice_page (); - if (need_audio_setup) { - setup_audio_page (); - } - ic_new_session_button.set_active (true); // always create new session on first run } else { - if (need_audio_setup) { - setup_audio_page (); - } - setup_initial_choice_page (); } @@ -184,7 +174,7 @@ ArdourStartup::~ArdourStartup () bool ArdourStartup::ready_without_display () const { - return !new_user && !need_audio_setup && !need_session_info; + return !new_user && !need_session_info; } void @@ -311,24 +301,6 @@ ArdourStartup::session_folder () } } -void -ArdourStartup::setup_audio_page () -{ - engine_dialog = ARDOUR_UI::instance()->audio_midi_setup_widget (); - - engine_dialog->set_border_width (12); - - engine_dialog->show_all (); - - audio_page_index = append_page (*engine_dialog); - set_page_type (*engine_dialog, ASSISTANT_PAGE_CONTENT); - set_page_title (*engine_dialog, _("Audio / MIDI Setup")); - - /* the default parameters should work, so the page is potentially complete */ - - set_page_complete (*engine_dialog, true); -} - void ArdourStartup::setup_new_user_page () { @@ -660,13 +632,6 @@ ArdourStartup::on_delete_event (GdkEventAny*) void ArdourStartup::on_apply () { - if (engine_dialog) { - if (engine_dialog->setup_engine (true)) { - set_current_page (audio_page_index); - return; - } - } - if (config_modified) { if (default_dir_chooser) { diff --git a/gtk2_ardour/startup.h b/gtk2_ardour/startup.h index 5a95994c4e..4dcc3a9fb2 100644 --- a/gtk2_ardour/startup.h +++ b/gtk2_ardour/startup.h @@ -80,7 +80,6 @@ class ArdourStartup : public Gtk::Assistant { gint _response; bool config_modified; bool new_user; - bool need_audio_setup; bool need_session_info; bool new_only; std::string _provided_session_name; @@ -173,11 +172,6 @@ class ArdourStartup : public Gtk::Assistant { void existing_session_selected (); - /* audio setup page */ - - void setup_audio_page (); - EngineControl* engine_dialog; - /* new sessions */ void setup_new_session_page (); diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index ded5a07f91..7ef7fde07a 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -555,6 +555,11 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi int remove_last_capture (); + /** handlers should return 0 for "everything OK", and any other value for + * "cannot setup audioengine". + */ + static PBD::Signal0 AudioEngineSetupRequired; + /** handlers should return -1 for "stop cleanup", 0 for "yes, delete this playlist", 1 for "no, don't delete this playlist". diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 4dc5a07a77..2d57fcfba8 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -106,6 +106,7 @@ using namespace PBD; bool Session::_disable_all_loaded_plugins = false; +PBD::Signal0 Session::AudioEngineSetupRequired; PBD::Signal1 Session::Dialog; PBD::Signal0 Session::AskAboutPendingState; PBD::Signal2 Session::AskAboutSampleRateMismatch; @@ -154,6 +155,17 @@ Session::Session (AudioEngine &eng, , _have_rec_enabled_track (false) , _suspend_timecode_transmission (0) { + if (_engine.current_backend() == 0 || _engine.setup_required()) { + boost::optional r = AudioEngineSetupRequired (); + if (r.get_value_or (-1) != 0) { + throw failed_constructor(); + } + } + + if (!_engine.connected()) { + throw failed_constructor(); + } + _locations = new Locations (*this); ltc_encoder = NULL; @@ -175,10 +187,6 @@ Session::Session (AudioEngine &eng, interpolation.add_channel_to (0, 0); - if (!eng.connected()) { - throw failed_constructor(); - } - n_physical_outputs = _engine.n_physical_outputs (); n_physical_inputs = _engine.n_physical_inputs (); -- cgit v1.2.3 From a228643e402d8f1fb07da88eba960ec368e23dda Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Sep 2013 13:27:48 -0400 Subject: add can_change_{sample_rate,buffer_size}_while_running() methods to an AudioBackend Allows the GUI and other stuff to know whether or not changing the SR/bufsize is possible while running, which is about to become useful --- libs/ardour/ardour/audio_backend.h | 11 +++++++++++ libs/backends/jack/jack_audiobackend.cc | 12 ++++++++++++ libs/backends/jack/jack_audiobackend.h | 3 +++ 3 files changed, 26 insertions(+) diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 77b7eadb48..4192f0ea8b 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -147,6 +147,17 @@ class AudioBackend { */ virtual uint32_t available_output_channel_count (const std::string& device) const = 0; + /* Return true if the derived class can change the sample rate of the + * device in use while the device is already being used. Return false + * otherwise. (example: JACK cannot do this as of September 2013) + */ + virtual bool can_change_sample_rate_when_running () const = 0; + /* Return true if the derived class can change the buffer size of the + * device in use while the device is already being used. Return false + * otherwise. + */ + virtual bool can_change_buffer_size_when_running () const = 0; + /* Set the hardware parameters. * * If called when the current state is stopped or paused, diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index 22e5a525ea..f452a78d49 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -935,3 +935,15 @@ JACKAudioBackend::n_physical (unsigned long flags) const return c; } + +bool +JACKAudioBackend::can_change_sample_rate_when_running () const +{ + return false; +} + +bool +JACKAudioBackend::can_change_buffer_size_when_running () const +{ + return true; +} diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index 5ba9ee63d7..f47b630f49 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -61,6 +61,9 @@ class JACKAudioBackend : public AudioBackend { uint32_t available_input_channel_count (const std::string& device) const; uint32_t available_output_channel_count (const std::string& device) const; + bool can_change_sample_rate_when_running() const; + bool can_change_buffer_size_when_running() const; + int set_device_name (const std::string&); int set_sample_rate (float); int set_buffer_size (uint32_t); -- cgit v1.2.3 From f06187735d9518623a6f1f3da573b401e77401bb Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Sep 2013 15:17:29 -0400 Subject: initial work on adding access to h/w control apps when ardour starts JACK --- gtk2_ardour/engine_dialog.cc | 40 ++++++++++++++++++++-- gtk2_ardour/engine_dialog.h | 5 ++- libs/ardour/ardour/audio_backend.h | 15 +++++++++ libs/backends/jack/jack_audiobackend.cc | 59 ++++++++++++++++++++++++++++++++- libs/backends/jack/jack_audiobackend.h | 4 +++ 5 files changed, 119 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index f858f56b17..b5a59af642 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -63,7 +63,7 @@ EngineControl::EngineControl () , output_channels (output_channels_adjustment) , ports_adjustment (128, 8, 1024, 1, 16) , ports_spinner (ports_adjustment) - , realtime_button (_("Realtime")) + , control_app_button (_("Launch Control App")) , basic_packer (9, 3) { build_notebook (); @@ -71,6 +71,15 @@ EngineControl::EngineControl () get_vbox()->set_border_width (12); get_vbox()->pack_start (notebook); + Gtk::HBox* hpacker = manage (new HBox); + hpacker->pack_start (control_app_button, false, false); + hpacker->show (); + control_app_button.show(); + get_vbox()->pack_start (*hpacker); + + control_app_button.signal_clicked().connect (mem_fun (*this, &EngineControl::control_app_button_clicked)); + manage_control_app_sensitivity (); + add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); add_button (Gtk::Stock::OK, Gtk::RESPONSE_OK); add_button (Gtk::Stock::APPLY, Gtk::RESPONSE_APPLY); @@ -347,6 +356,8 @@ EngineControl::device_changed () buffer_size_combo.set_active_text (s.front()); show_buffer_duration (); + manage_control_app_sensitivity (); + maybe_set_state (); } @@ -700,9 +711,12 @@ EngineControl::setup_engine (bool start) state->active = true; if (start) { - return ARDOUR::AudioEngine::instance()->start(); + if (ARDOUR::AudioEngine::instance()->start()) { + return -1; + } } + manage_control_app_sensitivity (); return 0; } catch (...) { @@ -773,3 +787,25 @@ EngineControl::get_device_name () const return device_combo.get_active_text (); } +void +EngineControl::control_app_button_clicked () +{ + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + + if (!backend) { + return; + } + + backend->launch_control_app(); +} + +void +EngineControl::manage_control_app_sensitivity () +{ + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + if (backend && backend->have_control_app()) { + control_app_button.set_sensitive (true); + } else { + control_app_button.set_sensitive (false); + } +} diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index deaa0afa54..97d41995fa 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -68,6 +68,8 @@ class EngineControl : public ArdourDialog { Gtk::Adjustment ports_adjustment; Gtk::SpinButton ports_spinner; + Gtk::Button control_app_button; + /* JACK specific */ Gtk::CheckButton realtime_button; @@ -80,7 +82,6 @@ class EngineControl : public ArdourDialog { Gtk::CheckButton hw_meter_button; Gtk::CheckButton verbose_output_button; - Gtk::ComboBoxText preset_combo; Gtk::ComboBoxText serverpath_combo; Gtk::ComboBoxText driver_combo; @@ -150,6 +151,8 @@ class EngineControl : public ArdourDialog { void build_notebook (); void on_response (int); + void control_app_button_clicked (); + void manage_control_app_sensitivity (); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 4192f0ea8b..f598f1a93a 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -228,6 +228,21 @@ class AudioBackend { virtual uint32_t systemic_input_latency () const = 0; virtual uint32_t systemic_output_latency () const = 0; + /** Return true if it is possible to launch a control app + * at this time. Return false otherwise. + * + * The audio backend may not know the device for which the + * control app should be opened, or there may no such + * application. In such cases, this method should return false. + */ + virtual bool have_control_app() const = 0; + + /** If the device name has been set, launch an application (if any exist) + * to manage the hardware settings of that device. If no such application + * exists, do nothing. + */ + virtual void launch_control_app () = 0; + /* Basic state control */ /** Start using the device named in the most recent call diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index f452a78d49..f21440e046 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -17,10 +17,13 @@ */ +#include +#include #include #include #include +#include #include "pbd/error.h" @@ -340,7 +343,11 @@ JACKAudioBackend::set_systemic_output_latency (uint32_t l) std::string JACKAudioBackend::device_name () const { - return string(); + if (connected()) { + return "???"; + } + + return _target_device; } float @@ -947,3 +954,53 @@ JACKAudioBackend::can_change_buffer_size_when_running () const { return true; } + +string +JACKAudioBackend::control_app_name () const +{ + string appname; + + if (_target_device.empty()) { + return appname; + } + +#if defined (__linux) + /* Linux potential control apps */ + + if (_target_device == "Hammerfall DSP") { + appname = "hdspconf"; + } +#else +#if defined (__APPLE__) + /* OS X potential control apps */ +#else + /* Windows potential control apps */ +#endif +#endif + + return appname; +} + +bool +JACKAudioBackend::have_control_app () const +{ + return !control_app_name().empty(); +} + +void +JACKAudioBackend::launch_control_app () +{ + /* launch control app, don't care if it succeeds */ + + string appname = control_app_name (); + + if (appname.empty()) { + return; + } + + std::list args; + args.push_back (appname); + Glib::spawn_async ("", args, Glib::SPAWN_SEARCH_PATH); +} + + diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index f47b630f49..15246a0305 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -84,6 +84,9 @@ class JACKAudioBackend : public AudioBackend { uint32_t systemic_input_latency () const; uint32_t systemic_output_latency () const; + bool have_control_app() const; + void launch_control_app (); + int start (); int stop (); int pause (); @@ -179,6 +182,7 @@ class JACKAudioBackend : public AudioBackend { mutable DriverDeviceMap all_devices; PBD::ScopedConnection disconnect_connection; + std::string control_app_name () const; }; } // namespace -- cgit v1.2.3 From ecfeeda4b8b1f5d342a08d4155250c2e66198ce3 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Sep 2013 16:48:27 -0400 Subject: launching control app is now responsibility of ardour GUI, not audio backend; use ARDOUR_DEVICE_CONTROL_APP if set in the environment --- gtk2_ardour/engine_dialog.cc | 40 ++++++++++++++++++++++++++------- libs/ardour/ardour/audio_backend.h | 18 +++++---------- libs/backends/jack/jack_audiobackend.cc | 24 -------------------- libs/backends/jack/jack_audiobackend.h | 4 +--- 4 files changed, 38 insertions(+), 48 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index b5a59af642..989f2802c3 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -25,7 +25,7 @@ #include -#include +#include #include #include "pbd/error.h" @@ -790,22 +790,46 @@ EngineControl::get_device_name () const void EngineControl::control_app_button_clicked () { - boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); - if (!backend) { + const string appname = g_getenv ("ARDOUR_DEVICE_CONTROL_APP"); + + if (appname.empty()) { + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + + if (!backend) { + return; + } + + string appname = backend->control_app_name(); + } + + if (appname.empty()) { return; } - backend->launch_control_app(); + std::list args; + args.push_back (appname); + Glib::spawn_async ("", args, Glib::SPAWN_SEARCH_PATH); } void EngineControl::manage_control_app_sensitivity () { - boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); - if (backend && backend->have_control_app()) { - control_app_button.set_sensitive (true); - } else { + const string appname = g_getenv ("ARDOUR_DEVICE_CONTROL_APP"); + + if (appname.empty()) { + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); + + if (!backend) { + return; + } + + string appname = backend->control_app_name(); + } + + if (appname.empty()) { control_app_button.set_sensitive (false); + } else { + control_app_button.set_sensitive (true); } } diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index f598f1a93a..b8a1818e24 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -228,20 +228,12 @@ class AudioBackend { virtual uint32_t systemic_input_latency () const = 0; virtual uint32_t systemic_output_latency () const = 0; - /** Return true if it is possible to launch a control app - * at this time. Return false otherwise. - * - * The audio backend may not know the device for which the - * control app should be opened, or there may no such - * application. In such cases, this method should return false. - */ - virtual bool have_control_app() const = 0; - - /** If the device name has been set, launch an application (if any exist) - * to manage the hardware settings of that device. If no such application - * exists, do nothing. + /** Return the name of a control application for the + * selected/in-use device. If no such application exists, + * or if no device has been selected or is in-use, + * return an empty string. */ - virtual void launch_control_app () = 0; + virtual std::string control_app_name() const = 0; /* Basic state control */ diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index f21440e046..811e190fb6 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -23,7 +23,6 @@ #include #include -#include #include "pbd/error.h" @@ -981,26 +980,3 @@ JACKAudioBackend::control_app_name () const return appname; } -bool -JACKAudioBackend::have_control_app () const -{ - return !control_app_name().empty(); -} - -void -JACKAudioBackend::launch_control_app () -{ - /* launch control app, don't care if it succeeds */ - - string appname = control_app_name (); - - if (appname.empty()) { - return; - } - - std::list args; - args.push_back (appname); - Glib::spawn_async ("", args, Glib::SPAWN_SEARCH_PATH); -} - - diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index 15246a0305..969a28a77a 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -84,8 +84,7 @@ class JACKAudioBackend : public AudioBackend { uint32_t systemic_input_latency () const; uint32_t systemic_output_latency () const; - bool have_control_app() const; - void launch_control_app (); + std::string control_app_name () const; int start (); int stop (); @@ -182,7 +181,6 @@ class JACKAudioBackend : public AudioBackend { mutable DriverDeviceMap all_devices; PBD::ScopedConnection disconnect_connection; - std::string control_app_name () const; }; } // namespace -- cgit v1.2.3 From f06bab1fa3094013ea5c13fc8aa229bf9701b7da Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Sep 2013 17:10:33 -0400 Subject: add envy24 control app name --- libs/backends/jack/jack_audiobackend.cc | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index 811e190fb6..27f8a4f0c6 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -959,23 +959,18 @@ JACKAudioBackend::control_app_name () const { string appname; - if (_target_device.empty()) { + if (_target_driver.empty() || _target_device.empty()) { return appname; } -#if defined (__linux) - /* Linux potential control apps */ + if (_target_driver == "alsa") { - if (_target_device == "Hammerfall DSP") { - appname = "hdspconf"; + if (_target_device == "Hammerfall DSP") { + appname = "hdspconf"; + } else if (_target_device == "M Audio Delta 1010") { + appname = "mudita"; + } } -#else -#if defined (__APPLE__) - /* OS X potential control apps */ -#else - /* Windows potential control apps */ -#endif -#endif return appname; } -- cgit v1.2.3 From 3633892eaa294b11ae09a9e85fcfdf7349bcd213 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Sep 2013 17:10:58 -0400 Subject: fix crash when unconditionally using null env var; tweak packing of control app button --- gtk2_ardour/engine_dialog.cc | 25 +++++++++++++++---------- gtk2_ardour/engine_dialog.h | 1 + 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 989f2802c3..cbda83c347 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -71,12 +71,6 @@ EngineControl::EngineControl () get_vbox()->set_border_width (12); get_vbox()->pack_start (notebook); - Gtk::HBox* hpacker = manage (new HBox); - hpacker->pack_start (control_app_button, false, false); - hpacker->show (); - control_app_button.show(); - get_vbox()->pack_start (*hpacker); - control_app_button.signal_clicked().connect (mem_fun (*this, &EngineControl::control_app_button_clicked)); manage_control_app_sensitivity (); @@ -201,10 +195,18 @@ EngineControl::build_notebook () device_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::device_changed)); 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); midi_packer.set_border_width (12); - notebook.pages().push_back (TabElem (basic_hbox, _("Audio"))); + notebook.pages().push_back (TabElem (basic_vbox, _("Audio"))); notebook.pages().push_back (TabElem (midi_hbox, _("MIDI"))); notebook.set_border_width (12); @@ -815,9 +817,10 @@ EngineControl::control_app_button_clicked () void EngineControl::manage_control_app_sensitivity () { - const string appname = g_getenv ("ARDOUR_DEVICE_CONTROL_APP"); - - if (appname.empty()) { + const char* env_value = g_getenv ("ARDOUR_DEVICE_CONTROL_APP"); + string appname; + + if (!env_value) { boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); if (!backend) { @@ -825,6 +828,8 @@ EngineControl::manage_control_app_sensitivity () } string appname = backend->control_app_name(); + } else { + appname = env_value; } if (appname.empty()) { diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 97d41995fa..8f5a615228 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -94,6 +94,7 @@ class EngineControl : public ArdourDialog { Gtk::Table basic_packer; Gtk::Table midi_packer; Gtk::HBox basic_hbox; + Gtk::VBox basic_vbox; Gtk::HBox midi_hbox; sigc::connection sr_connection; -- cgit v1.2.3 From 29c9d94dbe76f94e8126550fcb9513182b17fbb5 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Sep 2013 18:06:44 -0400 Subject: fix control app breakage --- gtk2_ardour/engine_dialog.cc | 16 +++++++++++----- libs/backends/jack/jack_audiobackend.cc | 6 +++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index cbda83c347..c55fc7008b 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -792,19 +792,25 @@ EngineControl::get_device_name () const void EngineControl::control_app_button_clicked () { + const char* env_value = g_getenv ("ARDOUR_DEVICE_CONTROL_APP"); + string appname; - const string appname = g_getenv ("ARDOUR_DEVICE_CONTROL_APP"); - - if (appname.empty()) { + cerr << "Environment var for control app: " << (env_value ? env_value : "empty") << endl; + + if (!env_value) { boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); if (!backend) { return; } - string appname = backend->control_app_name(); + appname = backend->control_app_name(); + } else { + appname = env_value; } + cerr << "appname for control app " << appname << endl; + if (appname.empty()) { return; } @@ -827,7 +833,7 @@ EngineControl::manage_control_app_sensitivity () return; } - string appname = backend->control_app_name(); + appname = backend->control_app_name(); } else { appname = env_value; } diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index 27f8a4f0c6..3cbd0cd6ae 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -959,11 +959,13 @@ JACKAudioBackend::control_app_name () const { string appname; + std::cerr << "td = " << _target_driver << " tdev = " << _target_device << std::endl; + if (_target_driver.empty() || _target_device.empty()) { return appname; } - if (_target_driver == "alsa") { + if (_target_driver == "ALSA") { if (_target_device == "Hammerfall DSP") { appname = "hdspconf"; @@ -971,6 +973,8 @@ JACKAudioBackend::control_app_name () const appname = "mudita"; } } + + std::cerr << "appname retrurned as " << appname << std::endl; return appname; } -- cgit v1.2.3 From 2a8923402776a4542de5d8b79cb101b1c997c36d Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Sep 2013 21:23:12 -0400 Subject: move control app launching back into audio backend to allow ASIO/CoreAudio model to work; push initial state of AMS dialog to backend Issues remain with the basic model of the AMS dialog - when is newly chosen state pushed into the backend (which can then modify the control app button sensitivity. This is a special problem for this button because APIs like ASIO and CoreAudio probably don't allow us to launch a control app for an arbitrary device, but only one actually in use. In this sense it is different from properties like available buffer size etc, where we can typically query without actually using the device. --- gtk2_ardour/engine_dialog.cc | 135 ++++++++++++++++---------------- gtk2_ardour/engine_dialog.h | 7 +- libs/ardour/ardour/audio_backend.h | 6 +- libs/backends/jack/jack_audiobackend.cc | 49 ++++++++---- libs/backends/jack/jack_audiobackend.h | 1 + 5 files changed, 111 insertions(+), 87 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index c55fc7008b..b03dc9a304 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -25,7 +25,6 @@ #include -#include #include #include "pbd/error.h" @@ -65,6 +64,7 @@ EngineControl::EngineControl () , ports_spinner (ports_adjustment) , control_app_button (_("Launch Control App")) , basic_packer (9, 3) + , ignore_changes (0) { build_notebook (); @@ -82,9 +82,12 @@ EngineControl::EngineControl () XMLNode* audio_setup = ARDOUR::Config->extra_xml ("AudioMIDISetup"); + /* push a change as if we altered the backend */ + backend_changed (); + if (audio_setup) { set_state (*audio_setup); - } + } } void @@ -94,10 +97,10 @@ EngineControl::on_response (int response_id) switch (response_id) { case RESPONSE_APPLY: - setup_engine (true); + push_state_to_backend (true); break; case RESPONSE_OK: - setup_engine (true); + push_state_to_backend (true); hide (); break; default: @@ -120,10 +123,6 @@ EngineControl::build_notebook () 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)); - backend_changed (); - - driver_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::driver_changed)); basic_packer.set_spacings (6); basic_packer.set_border_width (12); @@ -153,7 +152,6 @@ EngineControl::build_notebook () basic_packer.attach (sample_rate_combo, 1, 2, row, row + 1, xopt, (AttachOptions) 0); row++; - sr_connection = sample_rate_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::sample_rate_changed)); label = manage (left_aligned_label (_("Buffer size:"))); basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0); @@ -162,21 +160,18 @@ EngineControl::build_notebook () basic_packer.attach (buffer_size_duration_label, 2, 3, row, row+1, xopt, (AttachOptions) 0); row++; - bs_connection = buffer_size_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::buffer_size_changed)); label = manage (left_aligned_label (_("Input Channels:"))); basic_packer.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); basic_packer.attach (input_channels, 1, 2, row, row+1, xopt, (AttachOptions) 0); ++row; - input_channels.signal_output().connect (sigc::bind (sigc::ptr_fun (&EngineControl::print_channel_count), &input_channels)); label = manage (left_aligned_label (_("Output Channels:"))); basic_packer.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); basic_packer.attach (output_channels, 1, 2, row, row+1, xopt, (AttachOptions) 0); ++row; - output_channels.signal_output().connect (sigc::bind (sigc::ptr_fun (&EngineControl::print_channel_count), &output_channels)); label = manage (left_aligned_label (_("Hardware input latency:"))); basic_packer.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); @@ -192,8 +187,6 @@ EngineControl::build_notebook () basic_packer.attach (*label, 2, 3, row, row+1, xopt, (AttachOptions) 0); ++row; - device_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::device_changed)); - basic_hbox.pack_start (basic_packer, false, false); basic_vbox.pack_start (basic_hbox, false, false); @@ -215,6 +208,15 @@ EngineControl::build_notebook () 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)); + 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)); + device_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::device_changed)); } EngineControl::~EngineControl () @@ -225,11 +227,15 @@ EngineControl::~EngineControl () void EngineControl::backend_changed () { + if (ignore_changes) { + return; + } + string backend_name = backend_combo.get_active_text(); boost::shared_ptr backend; if (!(backend = ARDOUR::AudioEngine::instance()->set_backend (backend_name, "ardour", ""))) { - /* eh? */ + /* eh? setting the backend failed... how ? */ return; } @@ -244,7 +250,7 @@ EngineControl::backend_changed () list_devices (); } - maybe_set_state (); + maybe_display_saved_state (); } bool @@ -302,18 +308,26 @@ EngineControl::list_devices () void EngineControl::driver_changed () { + if (ignore_changes) { + return; + } + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); assert (backend); backend->set_driver (driver_combo.get_active_text()); list_devices (); - maybe_set_state (); + maybe_display_saved_state (); } void EngineControl::device_changed () { + if (ignore_changes) { + return; + } + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); assert (backend); string device_name = device_combo.get_active_text (); @@ -323,7 +337,7 @@ EngineControl::device_changed () recursive call to this method. */ - sr_connection.block (); + ignore_changes++; /* sample rates */ @@ -341,7 +355,6 @@ EngineControl::device_changed () set_popdown_strings (sample_rate_combo, s); sample_rate_combo.set_active_text (s.front()); - sr_connection.unblock (); vector bs = backend->available_buffer_sizes(device_name); s.clear (); @@ -360,12 +373,18 @@ EngineControl::device_changed () manage_control_app_sensitivity (); - maybe_set_state (); + ignore_changes--; + + maybe_display_saved_state (); } void EngineControl::sample_rate_changed () { + if (ignore_changes) { + return; + } + /* reset the strings for buffer size to show the correct msec value (reflecting the new sample rate). */ @@ -378,6 +397,10 @@ EngineControl::sample_rate_changed () void EngineControl::buffer_size_changed () { + if (ignore_changes) { + return; + } + show_buffer_duration (); save_state (); } @@ -448,8 +471,8 @@ EngineControl::get_current_state () if (backend) { return get_matching_state (backend_combo.get_active_text(), - (backend->requires_driver_selection() ? (std::string) driver_combo.get_active_text() : string()), - device_combo.get_active_text()); + (backend->requires_driver_selection() ? (std::string) driver_combo.get_active_text() : string()), + device_combo.get_active_text()); } @@ -485,19 +508,17 @@ EngineControl::save_state () } void -EngineControl::maybe_set_state () +EngineControl::maybe_display_saved_state () { State* state = get_current_state (); if (state) { - sr_connection.block (); - bs_connection.block (); + ignore_changes++; sample_rate_combo.set_active_text (state->sample_rate); buffer_size_combo.set_active_text (state->buffer_size); input_latency.set_value (state->input_latency); output_latency.set_value (state->output_latency); - bs_connection.unblock (); - sr_connection.unblock (); + ignore_changes--; } } @@ -628,8 +649,7 @@ EngineControl::set_state (const XMLNode& root) for (StateList::const_iterator i = states.begin(); i != states.end(); ++i) { if ((*i).active) { - sr_connection.block (); - bs_connection.block (); + ignore_changes++; backend_combo.set_active_text ((*i).backend); driver_combo.set_active_text ((*i).driver); device_combo.set_active_text ((*i).device); @@ -637,18 +657,23 @@ EngineControl::set_state (const XMLNode& root) buffer_size_combo.set_active_text ((*i).buffer_size); input_latency.set_value ((*i).input_latency); output_latency.set_value ((*i).output_latency); - sr_connection.unblock (); - bs_connection.unblock (); + ignore_changes--; + + push_state_to_backend (false); break; } } } + int -EngineControl::setup_engine (bool start) +EngineControl::push_state_to_backend (bool start) { boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); - assert (backend); + + if (!backend) { + return 0; + } /* grab the parameters from the GUI and apply them */ @@ -792,51 +817,25 @@ EngineControl::get_device_name () const void EngineControl::control_app_button_clicked () { - const char* env_value = g_getenv ("ARDOUR_DEVICE_CONTROL_APP"); - string appname; - - cerr << "Environment var for control app: " << (env_value ? env_value : "empty") << endl; + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); - if (!env_value) { - boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); - - if (!backend) { - return; - } - - appname = backend->control_app_name(); - } else { - appname = env_value; - } - - cerr << "appname for control app " << appname << endl; - - if (appname.empty()) { + if (!backend) { return; } - - std::list args; - args.push_back (appname); - Glib::spawn_async ("", args, Glib::SPAWN_SEARCH_PATH); + + backend->launch_control_app (); } void EngineControl::manage_control_app_sensitivity () { - const char* env_value = g_getenv ("ARDOUR_DEVICE_CONTROL_APP"); - string appname; + boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); - if (!env_value) { - boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); - - if (!backend) { - return; - } - - appname = backend->control_app_name(); - } else { - appname = env_value; + if (!backend) { + return; } + + string appname = backend->control_app_name(); if (appname.empty()) { control_app_button.set_sensitive (false); diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 8f5a615228..cdeb18a2c7 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -41,7 +41,6 @@ class EngineControl : public ArdourDialog { ~EngineControl (); static bool need_setup (); - int setup_engine (bool start); XMLNode& get_state (); void set_state (const XMLNode&); @@ -97,8 +96,7 @@ class EngineControl : public ArdourDialog { Gtk::VBox basic_vbox; Gtk::HBox midi_hbox; - sigc::connection sr_connection; - sigc::connection bs_connection; + uint32_t ignore_changes; static bool engine_running (); @@ -144,7 +142,7 @@ class EngineControl : public ArdourDialog { const std::string& driver, const std::string& device); State* get_current_state (); - void maybe_set_state (); + void maybe_display_saved_state (); void save_state (); static bool print_channel_count (Gtk::SpinButton*); @@ -154,6 +152,7 @@ class EngineControl : public ArdourDialog { void on_response (int); void control_app_button_clicked (); void manage_control_app_sensitivity (); + int push_state_to_backend (bool start); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index b8a1818e24..ab37bea526 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -234,7 +234,11 @@ class AudioBackend { * return an empty string. */ virtual std::string control_app_name() const = 0; - + /** Launch the control app for the currently in-use or + * selected device. May do nothing if the control + * app is undefined or cannot be launched. + */ + virtual void launch_control_app () = 0; /* Basic state control */ /** Start using the device named in the most recent call diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index 3cbd0cd6ae..c275d37f64 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -23,6 +23,7 @@ #include #include +#include #include "pbd/error.h" @@ -957,25 +958,45 @@ JACKAudioBackend::can_change_buffer_size_when_running () const string JACKAudioBackend::control_app_name () const { - string appname; - - std::cerr << "td = " << _target_driver << " tdev = " << _target_device << std::endl; - - if (_target_driver.empty() || _target_device.empty()) { - return appname; - } + /* Since JACK/ALSA really don't provide particularly integrated support + for the idea of a control app to be used to control a device, + allow the user to take some control themselves if necessary. + */ - if (_target_driver == "ALSA") { + const char* env_value = g_getenv ("ARDOUR_DEVICE_CONTROL_APP"); + string appname; - if (_target_device == "Hammerfall DSP") { - appname = "hdspconf"; - } else if (_target_device == "M Audio Delta 1010") { - appname = "mudita"; + if (!env_value) { + if (_target_driver.empty() || _target_device.empty()) { + return appname; + } + + if (_target_driver == "ALSA") { + + if (_target_device == "Hammerfall DSP") { + appname = "hdspconf"; + } else if (_target_device == "M Audio Delta 1010") { + appname = "mudita"; + } } + } else { + appname = env_value; } - - std::cerr << "appname retrurned as " << appname << std::endl; return appname; } +void +JACKAudioBackend::launch_control_app () +{ + string appname = control_app_name(); + + if (appname.empty()) { + error << string_compose (_("There is no control application for the device \"%1\""), _target_device) << endmsg; + return; + } + + std::list args; + args.push_back (appname); + Glib::spawn_async ("", args, Glib::SPAWN_SEARCH_PATH); +} diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index 969a28a77a..1389e15c4a 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -85,6 +85,7 @@ class JACKAudioBackend : public AudioBackend { uint32_t systemic_output_latency () const; std::string control_app_name () const; + void launch_control_app (); int start (); int stop (); -- cgit v1.2.3 From bea54346391bcb575fbb2fc4d40d632dee125e05 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Sep 2013 21:35:47 -0400 Subject: fix name of control app for Delta1010 --- libs/backends/jack/jack_audiobackend.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index c275d37f64..e004849896 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -976,7 +976,7 @@ JACKAudioBackend::control_app_name () const if (_target_device == "Hammerfall DSP") { appname = "hdspconf"; } else if (_target_device == "M Audio Delta 1010") { - appname = "mudita"; + appname = "mudita24"; } } } else { -- cgit v1.2.3 From 19d05fa4366251cf1a4fcbe2b2a405b222f9533b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 9 Sep 2013 22:40:54 -0400 Subject: start reordering of Session initialization the goal is to allow a clear demarcation of where we need the audioengine and have existing data parameters (e.g. sample rate) for the session so that we can coerce the engine (if possible) to match to session values. also, to rationalize construction even more and use C++ constructor syntax as much as possible. --- libs/ardour/session.cc | 98 +++++++++++++++------- libs/ardour/session_state.cc | 191 +++++++++++++++---------------------------- 2 files changed, 137 insertions(+), 152 deletions(-) diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 2d57fcfba8..687469e5a5 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -87,6 +87,7 @@ #include "ardour/session_playlists.h" #include "ardour/smf_source.h" #include "ardour/source_factory.h" +#include "ardour/speakers.h" #include "ardour/utils.h" #include "midi++/port.h" @@ -135,9 +136,9 @@ Session::Session (AudioEngine &eng, , _target_transport_speed (0.0) , _requested_return_frame (-1) , _under_nsm_control (false) - , _session_dir (new SessionDirectory(fullpath)) + , _session_dir (new SessionDirectory (fullpath)) , state_tree (0) - , _state_of_the_state (Clean) + , _state_of_the_state (StateOfTheState(CannotSave|InitialConnecting|Loading)) , _butler (new Butler (*this)) , _post_transport_work (0) , _send_timecode_update (false) @@ -154,6 +155,69 @@ Session::Session (AudioEngine &eng, , main_outs (0) , _have_rec_enabled_track (false) , _suspend_timecode_transmission (0) + , _non_soloed_outs_muted (false) + , _listen_cnt (0) + , _solo_isolated_cnt (0) + , _transport_speed (0) + , _default_transport_speed (1.0) + , _last_transport_speed (0) + , auto_play_legal (false) + , transport_sub_state (0) + , _transport_frame (0) + , _session_range_location (0) + , loop_changing (false) + , play_loop (false) + , have_looped (false) + , _last_roll_location (0) + , _last_roll_or_reversal_location (0) + , _last_record_location (0) + , pending_locate_frame (0) + , pending_locate_roll (false) + , pending_locate_flush (false) + , state_was_pending (false) + , outbound_mtc_timecode_frame (0) + , next_quarter_frame_to_send (-1) + , current_block_size (0) + , solo_update_disabled (false) + , _have_captured (false) + , _worst_output_latency (0) + , _worst_input_latency (0) + , _worst_track_latency (0) + , _was_seamless (Config->get_seamless_loop ()) + , _slave (0) + , _send_qf_mtc (false) + , _pframes_since_last_mtc (0) + , _play_range (false) + , _exporting (false) + , pending_abort (false) + , _adding_routes_in_progress (false) + , destructive_index (0) + , first_file_data_format_reset (true) + , first_file_header_format_reset (true) + , post_export_sync (false) + , midi_control_ui (0) + , _step_editors (0) + , no_questions_about_missing_files (false) + , _speakers (new Speakers) + , _clicks_cleared (0) + , ignore_route_processor_changes (false) + , _pre_export_mmc_enabled (false) + , _locations (new Locations (*this)) + , ltc_encoder (0) + , playlists (new SessionPlaylists) + , _name (snapshot_name) + , _current_snapshot_name (snapshot_name) + , step_speed (0.0) + , click_length (0) + , click_emphasis_length (0) + , _clicking (false) + , process_function (&Session::process_with_events) + , last_timecode_when (0) + , last_timecode_valid (false) + , average_slave_delta (1800) // !!! why 1800 ??? + , have_first_delta_accumulator (false) + , delta_accumulator_cnt (0) + , _slave_state (Stopped) { if (_engine.current_backend() == 0 || _engine.setup_required()) { boost::optional r = AudioEngineSetupRequired (); @@ -166,39 +230,17 @@ Session::Session (AudioEngine &eng, throw failed_constructor(); } - _locations = new Locations (*this); - ltc_encoder = NULL; - - _midi_ports = new MidiPortManager; - _mmc = new MIDI::MachineControl; - - _mmc->set_ports (_midi_ports->mmc_input_port(), _midi_ports->mmc_output_port()); - - if (how_many_dsp_threads () > 1) { - /* For now, only create the graph if we are using >1 DSP threads, as - it is a bit slower than the old code with 1 thread. - */ - _process_graph.reset (new Graph (*this)); - } - - playlists.reset (new SessionPlaylists); - - _all_route_group->set_active (true, this); - - interpolation.add_channel_to (0, 0); - - n_physical_outputs = _engine.n_physical_outputs (); - n_physical_inputs = _engine.n_physical_inputs (); - first_stage_init (fullpath, snapshot_name); - _is_new = !Glib::file_test (_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)); - if (_is_new) { if (create (mix_template, bus_profile)) { destroy (); throw failed_constructor (); } + } else { + if (load_state (_current_snapshot_name)) { + throw failed_constructor (); + } } if (second_stage_init ()) { diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index a7d7a0be4c..2491712c49 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -86,6 +86,7 @@ #include "ardour/control_protocol_manager.h" #include "ardour/directory_names.h" #include "ardour/filename_extensions.h" +#include "ardour/graph.h" #include "ardour/location.h" #include "ardour/midi_model.h" #include "ardour/midi_patch_manager.h" @@ -126,117 +127,20 @@ using namespace PBD; /** @param snapshot_name Snapshot name, without the .ardour prefix */ void -Session::first_stage_init (string fullpath, string snapshot_name) +Session::first_stage_init (string fullpath, string /*snapshot_name*/) { - if (fullpath.length() == 0) { - destroy (); - throw failed_constructor(); - } - - char buf[PATH_MAX+1]; - if (!realpath (fullpath.c_str(), buf) && (errno != ENOENT)) { - error << string_compose(_("Could not use path %1 (%2)"), buf, strerror(errno)) << endmsg; - destroy (); - throw failed_constructor(); - } - - _path = string(buf); - - if (_path[_path.length()-1] != G_DIR_SEPARATOR) { - _path += G_DIR_SEPARATOR; - } - - /* these two are just provisional settings. set_state() - will likely override them. + /* finish initialization that can't be done in a normal C++ constructor + definition. */ - _name = _current_snapshot_name = snapshot_name; - - set_history_depth (Config->get_history_depth()); - - _current_frame_rate = _engine.sample_rate (); - _nominal_frame_rate = _current_frame_rate; - _base_frame_rate = _current_frame_rate; - - _tempo_map = new TempoMap (_current_frame_rate); - _tempo_map->PropertyChanged.connect_same_thread (*this, boost::bind (&Session::tempo_map_changed, this, _1)); - - - _non_soloed_outs_muted = false; - _listen_cnt = 0; - _solo_isolated_cnt = 0; + timerclear (&last_mmc_step); g_atomic_int_set (&processing_prohibited, 0); - _transport_speed = 0; - _default_transport_speed = 1.0; - _last_transport_speed = 0; - _target_transport_speed = 0; - auto_play_legal = false; - transport_sub_state = 0; - _transport_frame = 0; - _requested_return_frame = -1; - _session_range_location = 0; g_atomic_int_set (&_record_status, Disabled); - loop_changing = false; - play_loop = false; - have_looped = false; - _last_roll_location = 0; - _last_roll_or_reversal_location = 0; - _last_record_location = 0; - pending_locate_frame = 0; - pending_locate_roll = false; - pending_locate_flush = false; - state_was_pending = false; - set_next_event (); - outbound_mtc_timecode_frame = 0; - next_quarter_frame_to_send = -1; - current_block_size = 0; - solo_update_disabled = false; - _have_captured = false; - _worst_output_latency = 0; - _worst_input_latency = 0; - _worst_track_latency = 0; - _state_of_the_state = StateOfTheState(CannotSave|InitialConnecting|Loading); - _was_seamless = Config->get_seamless_loop (); - _slave = 0; - _send_qf_mtc = false; - _pframes_since_last_mtc = 0; g_atomic_int_set (&_playback_load, 100); g_atomic_int_set (&_capture_load, 100); - _play_range = false; - _exporting = false; - pending_abort = false; - _adding_routes_in_progress = false; - destructive_index = 0; - first_file_data_format_reset = true; - first_file_header_format_reset = true; - post_export_sync = false; - midi_control_ui = 0; - _step_editors = 0; - no_questions_about_missing_files = false; - _speakers.reset (new Speakers); - _clicks_cleared = 0; - ignore_route_processor_changes = false; - _pre_export_mmc_enabled = false; - - AudioDiskstream::allocate_working_buffers(); - - /* default short fade = 15ms */ - - SndFileSource::setup_standard_crossfades (*this, frame_rate()); - - last_mmc_step.tv_sec = 0; - last_mmc_step.tv_usec = 0; - step_speed = 0.0; - - /* click sounds are unset by default, which causes us to internal - waveforms for clicks. - */ - - click_length = 0; - click_emphasis_length = 0; - _clicking = false; - - process_function = &Session::process_with_events; + set_next_event (); + _all_route_group->set_active (true, this); + interpolation.add_channel_to (0, 0); if (config.get_use_video_sync()) { waiting_for_sync_offset = true; @@ -244,31 +148,51 @@ Session::first_stage_init (string fullpath, string snapshot_name) waiting_for_sync_offset = false; } - last_timecode_when = 0; - last_timecode_valid = false; - - sync_time_vars (); - last_rr_session_dir = session_dirs.begin(); - refresh_disk_space (); + + set_history_depth (Config->get_history_depth()); + + if (how_many_dsp_threads () > 1) { + /* For now, only create the graph if we are using >1 DSP threads, as + it is a bit slower than the old code with 1 thread. + */ + _process_graph.reset (new Graph (*this)); + } /* default: assume simple stereo speaker configuration */ _speakers->setup_default_speakers (2); - /* slave stuff */ - - average_slave_delta = 1800; // !!! why 1800 ???? - have_first_delta_accumulator = false; - delta_accumulator_cnt = 0; - _slave_state = Stopped; - _solo_cut_control.reset (new ProxyControllable (_("solo cut control (dB)"), PBD::Controllable::GainLike, boost::bind (&RCConfiguration::set_solo_mute_gain, Config, _1), boost::bind (&RCConfiguration::get_solo_mute_gain, Config))); add_controllable (_solo_cut_control); - _engine.GraphReordered.connect_same_thread (*this, boost::bind (&Session::graph_reordered, this)); + /* discover canonical fullpath */ + + if (fullpath.length() == 0) { + destroy (); + throw failed_constructor(); + } + + char buf[PATH_MAX+1]; + if (!realpath (fullpath.c_str(), buf) && (errno != ENOENT)) { + error << string_compose(_("Could not use path %1 (%2)"), buf, strerror(errno)) << endmsg; + destroy (); + throw failed_constructor(); + } + + _path = string(buf); + + /* we require _path to end with a dir separator */ + + if (_path[_path.length()-1] != G_DIR_SEPARATOR) { + _path += G_DIR_SEPARATOR; + } + + /* is it new ? */ + + _is_new = !Glib::file_test (_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)); /* These are all static "per-class" signals */ @@ -282,6 +206,31 @@ Session::first_stage_init (string fullpath, string snapshot_name) Delivery::disable_panners (); IO::disable_connecting (); + + /* ENGINE */ + + n_physical_outputs = _engine.n_physical_outputs (); + n_physical_inputs = _engine.n_physical_inputs (); + + _current_frame_rate = _engine.sample_rate (); + _nominal_frame_rate = _current_frame_rate; + _base_frame_rate = _current_frame_rate; + + _midi_ports = new MidiPortManager; + _mmc = new MIDI::MachineControl; + + _mmc->set_ports (_midi_ports->mmc_input_port(), _midi_ports->mmc_output_port()); + + _tempo_map = new TempoMap (_current_frame_rate); + _tempo_map->PropertyChanged.connect_same_thread (*this, boost::bind (&Session::tempo_map_changed, this, _1)); + + AudioDiskstream::allocate_working_buffers(); + + SndFileSource::setup_standard_crossfades (*this, frame_rate()); + _engine.GraphReordered.connect_same_thread (*this, boost::bind (&Session::graph_reordered, this)); + + refresh_disk_space (); + sync_time_vars (); } int @@ -289,12 +238,6 @@ Session::second_stage_init () { AudioFileSource::set_peak_dir (_session_dir->peak_path()); - if (!_is_new) { - if (load_state (_current_snapshot_name)) { - return -1; - } - } - if (_butler->start_thread()) { return -1; } -- cgit v1.2.3 From a6815efb86e5091ce82f66ddfb60b2b2cffc587a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 10 Sep 2013 08:51:06 -0400 Subject: new generic MIDI binding map for Novation Impulse 61 from Alexandre Prokoudine --- midi_maps/Novation_Impulse61.map | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 midi_maps/Novation_Impulse61.map diff --git a/midi_maps/Novation_Impulse61.map b/midi_maps/Novation_Impulse61.map new file mode 100644 index 0000000000..516167d071 --- /dev/null +++ b/midi_maps/Novation_Impulse61.map @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + " + + + -- cgit v1.2.3 From 209e4bdcaed8e0f7d66fa5673f9049948e1f1d53 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 10 Sep 2013 15:41:19 -0400 Subject: many changes relating to session construction and audioengine interaction every session member is now initialized using C++ constructor syntax session construction reordered to clarify the split(s) between work where the engine is not relevant and work where is it is. this split is still not 100% obvious, but is enormously clearer than previously. if engine/backend are not running as session is created, and the SR of the sample rate is known, attempt to force backend to that value. --- gtk2_ardour/ardour_ui.cc | 6 +- gtk2_ardour/ardour_ui.h | 2 +- gtk2_ardour/engine_dialog.cc | 24 ++- gtk2_ardour/engine_dialog.h | 19 +- libs/ardour/ardour/session.h | 12 +- libs/ardour/port.cc | 4 + libs/ardour/session.cc | 424 +++++++++++++++++++++++++------------------ libs/ardour/session_state.cc | 179 +++++++++--------- 8 files changed, 380 insertions(+), 290 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index d6c6863b14..4992e0a14b 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -268,7 +268,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) /* handle Audio/MIDI setup when session requires it */ - ARDOUR::Session::AudioEngineSetupRequired.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::do_audio_midi_setup, this)); + ARDOUR::Session::AudioEngineSetupRequired.connect_same_thread (forever_connections, boost::bind (&ARDOUR_UI::do_audio_midi_setup, this, _1)); /* handle sr mismatch with a dialog (PROBLEM: needs to return a value and thus cannot be x-thread) */ @@ -4159,10 +4159,12 @@ ARDOUR_UI::launch_audio_midi_setup () } int -ARDOUR_UI::do_audio_midi_setup () +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); + int r = _audio_midi_setup->run (); switch (r) { diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 77e81fd23a..fa8eb18f01 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -750,7 +750,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr EngineControl* _audio_midi_setup; void launch_audio_midi_setup (); - int do_audio_midi_setup (); + int do_audio_midi_setup (uint32_t); }; #endif /* __ardour_gui_h__ */ diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index b03dc9a304..b97a7133e6 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -65,6 +65,7 @@ EngineControl::EngineControl () , control_app_button (_("Launch Control App")) , basic_packer (9, 3) , ignore_changes (0) + , _desired_sample_rate (0) { build_notebook (); @@ -340,6 +341,8 @@ EngineControl::device_changed () ignore_changes++; /* sample rates */ + + string desired; vector sr = backend->available_sample_rates (device_name); for (vector::const_iterator x = sr.begin(); x != sr.end(); ++x) { @@ -350,11 +353,17 @@ EngineControl::device_changed () snprintf (buf, sizeof (buf), "%.0f kHz", (*x)/1000.0); } s.push_back (buf); + if (*x == _desired_sample_rate) { + desired = buf; + } } set_popdown_strings (sample_rate_combo, s); - sample_rate_combo.set_active_text (s.front()); - + if (desired.empty()) { + sample_rate_combo.set_active_text (s.front()); + } else { + sample_rate_combo.set_active_text (desired); + } vector bs = backend->available_buffer_sizes(device_name); s.clear (); @@ -514,7 +523,9 @@ EngineControl::maybe_display_saved_state () if (state) { ignore_changes++; - sample_rate_combo.set_active_text (state->sample_rate); + if (!_desired_sample_rate) { + sample_rate_combo.set_active_text (state->sample_rate); + } buffer_size_combo.set_active_text (state->buffer_size); input_latency.set_value (state->input_latency); output_latency.set_value (state->output_latency); @@ -843,3 +854,10 @@ EngineControl::manage_control_app_sensitivity () control_app_button.set_sensitive (true); } } + +void +EngineControl::set_desired_sample_rate (uint32_t sr) +{ + _desired_sample_rate = sr; + device_changed (); +} diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index cdeb18a2c7..a92d0629f2 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -37,14 +37,16 @@ class EngineControl : public ArdourDialog { public: - EngineControl (); - ~EngineControl (); - - static bool need_setup (); - - XMLNode& get_state (); - void set_state (const XMLNode&); - + EngineControl (); + ~EngineControl (); + + static bool need_setup (); + + XMLNode& get_state (); + void set_state (const XMLNode&); + + void set_desired_sample_rate (uint32_t); + private: Gtk::Notebook notebook; @@ -153,6 +155,7 @@ class EngineControl : public ArdourDialog { void control_app_button_clicked (); void manage_control_app_sensitivity (); int push_state_to_backend (bool start); + uint32_t _desired_sample_rate; }; #endif /* __gtk2_ardour_engine_dialog_h__ */ diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 7ef7fde07a..09bf75276d 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -558,7 +558,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi /** handlers should return 0 for "everything OK", and any other value for * "cannot setup audioengine". */ - static PBD::Signal0 AudioEngineSetupRequired; + static PBD::Signal1 AudioEngineSetupRequired; /** handlers should return -1 for "stop cleanup", 0 for "yes, delete this playlist", @@ -1071,7 +1071,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi boost::scoped_ptr _session_dir; void hookup_io (); - void when_engine_running (); + int when_engine_running (); void graph_reordered (); /** current snapshot name, without the .ardour suffix */ @@ -1137,8 +1137,8 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void auto_loop_changed (Location *); void auto_loop_declick_range (Location *, framepos_t &, framepos_t &); - void first_stage_init (std::string path, std::string snapshot_name); - int second_stage_init (); + void pre_engine_init (std::string path); + int post_engine_init (); void remove_empty_sounds (); void setup_midi_control (); @@ -1620,6 +1620,10 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi /* persistent, non-track related MIDI ports */ MidiPortManager* _midi_ports; MIDI::MachineControl* _mmc; + + void setup_ltc (); + void setup_click (); + void setup_bundles (); }; } // namespace ARDOUR diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index 8fadad4fcc..e8629cbf14 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -153,8 +153,10 @@ Port::connect (std::string const & other) } if (sends_output ()) { + DEBUG_TRACE (DEBUG::Ports, string_compose ("Connect %1 to %2\n", our_name, other_name)); r = port_engine.connect (our_name, other_name); } else { + DEBUG_TRACE (DEBUG::Ports, string_compose ("Connect %1 to %2\n", other_name, our_name)); r = port_engine.connect (other_name, our_name); } @@ -420,6 +422,8 @@ Port::reconnect () { /* caller must hold process lock; intended to be used only after reestablish() */ + DEBUG_TRACE (DEBUG::Ports, string_compose ("Connect %1 to %2 destinations\n",name(), _connections.size())); + for (std::set::iterator i = _connections.begin(); i != _connections.end(); ++i) { if (connect (*i)) { return -1; diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 687469e5a5..9934d5a095 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -107,7 +107,7 @@ using namespace PBD; bool Session::_disable_all_loaded_plugins = false; -PBD::Signal0 Session::AudioEngineSetupRequired; +PBD::Signal1 Session::AudioEngineSetupRequired; PBD::Signal1 Session::Dialog; PBD::Signal0 Session::AskAboutPendingState; PBD::Signal2 Session::AskAboutSampleRateMismatch; @@ -132,106 +132,137 @@ Session::Session (AudioEngine &eng, const string& snapshot_name, BusProfile* bus_profile, string mix_template) - : _engine (eng) + : playlists (new SessionPlaylists) + , _engine (eng) + , process_function (&Session::process_with_events) + , waiting_for_sync_offset (false) + , _base_frame_rate (0) + , _current_frame_rate (0) + , _nominal_frame_rate (0) + , transport_sub_state (0) + , _record_status (Disabled) + , _transport_frame (0) + , _session_range_location (0) + , _slave (0) + , _silent (false) + , _transport_speed (0) + , _default_transport_speed (1.0) + , _last_transport_speed (0) , _target_transport_speed (0.0) + , auto_play_legal (false) + , _last_slave_transport_frame (0) + , maximum_output_latency (0) , _requested_return_frame (-1) + , current_block_size (0) + , _worst_output_latency (0) + , _worst_input_latency (0) + , _worst_track_latency (0) + , _have_captured (false) + , _meter_hold (0) + , _meter_falloff (0) + , _non_soloed_outs_muted (false) + , _listen_cnt (0) + , _solo_isolated_cnt (0) + , _writable (false) + , _was_seamless (Config->get_seamless_loop ()) , _under_nsm_control (false) + , delta_accumulator_cnt (0) + , average_slave_delta (1800) // !!! why 1800 ??? + , average_dir (0) + , have_first_delta_accumulator (false) + , _slave_state (Stopped) + , post_export_sync (false) + , post_export_position (0) + , _exporting (false) + , _export_started (false) + , _export_rolling (false) + , _pre_export_mmc_enabled (false) + , _name (snapshot_name) + , _is_new (true) + , _send_qf_mtc (false) + , _pframes_since_last_mtc (0) + , session_midi_feedback (0) + , play_loop (false) + , loop_changing (false) + , last_loopend (0) , _session_dir (new SessionDirectory (fullpath)) + , _current_snapshot_name (snapshot_name) , state_tree (0) + , state_was_pending (false) , _state_of_the_state (StateOfTheState(CannotSave|InitialConnecting|Loading)) + , _last_roll_location (0) + , _last_roll_or_reversal_location (0) + , _last_record_location (0) + , pending_locate_roll (false) + , pending_locate_frame (0) + , pending_locate_flush (false) + , pending_abort (false) + , pending_auto_loop (false) , _butler (new Butler (*this)) , _post_transport_work (0) + , cumulative_rf_motion (0) + , rf_scale (1.0) + , _locations (new Locations (*this)) + , step_speed (0) + , outbound_mtc_timecode_frame (0) + , next_quarter_frame_to_send (-1) + , _frames_per_timecode_frame (0) + , _frames_per_hour (0) + , _timecode_frames_per_hour (0) + , last_timecode_valid (false) + , last_timecode_when (0) , _send_timecode_update (false) + , ltc_encoder (0) , ltc_enc_buf(0) + , ltc_buf_off (0) + , ltc_buf_len (0) + , ltc_speed (0) + , ltc_enc_byte (0) + , ltc_enc_pos (0) + , ltc_enc_cnt (0) + , ltc_enc_off (0) + , restarting (false) + , ltc_prev_cycle (0) + , ltc_timecode_offset (0) + , ltc_timecode_negative_offset (false) + , midi_control_ui (0) + , _tempo_map (0) , _all_route_group (new RouteGroup (*this, "all")) , routes (new RouteList) + , _adding_routes_in_progress (false) + , destructive_index (0) + , solo_update_disabled (false) + , default_fade_steepness (0) + , default_fade_msecs (0) , _total_free_4k_blocks (0) , _total_free_4k_blocks_uncertain (false) + , no_questions_about_missing_files (false) + , _playback_load (0) + , _capture_load (0) , _bundles (new BundleList) , _bundle_xml_node (0) , _current_trans (0) + , _clicking (false) , click_data (0) , click_emphasis_data (0) - , main_outs (0) - , _have_rec_enabled_track (false) - , _suspend_timecode_transmission (0) - , _non_soloed_outs_muted (false) - , _listen_cnt (0) - , _solo_isolated_cnt (0) - , _transport_speed (0) - , _default_transport_speed (1.0) - , _last_transport_speed (0) - , auto_play_legal (false) - , transport_sub_state (0) - , _transport_frame (0) - , _session_range_location (0) - , loop_changing (false) - , play_loop (false) - , have_looped (false) - , _last_roll_location (0) - , _last_roll_or_reversal_location (0) - , _last_record_location (0) - , pending_locate_frame (0) - , pending_locate_roll (false) - , pending_locate_flush (false) - , state_was_pending (false) - , outbound_mtc_timecode_frame (0) - , next_quarter_frame_to_send (-1) - , current_block_size (0) - , solo_update_disabled (false) - , _have_captured (false) - , _worst_output_latency (0) - , _worst_input_latency (0) - , _worst_track_latency (0) - , _was_seamless (Config->get_seamless_loop ()) - , _slave (0) - , _send_qf_mtc (false) - , _pframes_since_last_mtc (0) + , click_length (0) + , click_emphasis_length (0) + , _clicks_cleared (0) , _play_range (false) - , _exporting (false) - , pending_abort (false) - , _adding_routes_in_progress (false) - , destructive_index (0) + , main_outs (0) , first_file_data_format_reset (true) , first_file_header_format_reset (true) - , post_export_sync (false) - , midi_control_ui (0) + , have_looped (false) + , _have_rec_enabled_track (false) , _step_editors (0) - , no_questions_about_missing_files (false) + , _suspend_timecode_transmission (0) , _speakers (new Speakers) - , _clicks_cleared (0) , ignore_route_processor_changes (false) - , _pre_export_mmc_enabled (false) - , _locations (new Locations (*this)) - , ltc_encoder (0) - , playlists (new SessionPlaylists) - , _name (snapshot_name) - , _current_snapshot_name (snapshot_name) - , step_speed (0.0) - , click_length (0) - , click_emphasis_length (0) - , _clicking (false) - , process_function (&Session::process_with_events) - , last_timecode_when (0) - , last_timecode_valid (false) - , average_slave_delta (1800) // !!! why 1800 ??? - , have_first_delta_accumulator (false) - , delta_accumulator_cnt (0) - , _slave_state (Stopped) { - if (_engine.current_backend() == 0 || _engine.setup_required()) { - boost::optional r = AudioEngineSetupRequired (); - if (r.get_value_or (-1) != 0) { - throw failed_constructor(); - } - } - - if (!_engine.connected()) { - throw failed_constructor(); - } - - first_stage_init (fullpath, snapshot_name); + uint32_t sr = 0; + pre_engine_init (fullpath); + if (_is_new) { if (create (mix_template, bus_profile)) { destroy (); @@ -241,14 +272,44 @@ Session::Session (AudioEngine &eng, if (load_state (_current_snapshot_name)) { throw failed_constructor (); } + + /* try to get sample rate from XML state so that we + * can influence the SR if we set up the audio + * engine. + */ + + if (state_tree) { + const XMLProperty* prop; + if ((prop = state_tree->root()->property (X_("sample-rate"))) != 0) { + sr = atoi (prop->value()); + } + } + } + + if (_engine.current_backend() == 0 || _engine.setup_required()) { + boost::optional r = AudioEngineSetupRequired (sr); + if (r.get_value_or (-1) != 0) { + destroy (); + throw failed_constructor(); + } } - if (second_stage_init ()) { + /* at this point the engine should be connected (i.e. interacting + with a backend device (or psuedo-device) and available to us + for determinining sample rates and other settings. + */ + + if (!_engine.connected()) { + destroy (); + throw failed_constructor(); + } + + if (post_engine_init ()) { destroy (); throw failed_constructor (); } - store_recent_sessions(_name, _path); + store_recent_sessions (_name, _path); bool was_dirty = dirty(); @@ -397,135 +458,103 @@ Session::destroy () } void -Session::when_engine_running () +Session::setup_ltc () { - string first_physical_output; - - BootMessage (_("Set block size and sample rate")); - - set_block_size (_engine.samples_per_cycle()); - set_frame_rate (_engine.sample_rate()); - - BootMessage (_("Using configuration")); - - boost::function ff (boost::bind (&Session::config_changed, this, _1, false)); - boost::function ft (boost::bind (&Session::config_changed, this, _1, true)); - - Config->map_parameters (ff); - config.map_parameters (ft); - - /* every time we reconnect, recompute worst case output latencies */ - - _engine.Running.connect_same_thread (*this, boost::bind (&Session::initialize_latencies, this)); - - if (synced_to_jack()) { - _engine.transport_stop (); + XMLNode* child = 0; + + _ltc_input.reset (new IO (*this, _("LTC In"), IO::Input)); + _ltc_output.reset (new IO (*this, _("LTC Out"), IO::Output)); + + if (state_tree && (child = find_named_node (*state_tree->root(), "LTC-In")) != 0) { + _ltc_input->set_state (*(child->children().front()), Stateful::loading_state_version); + } else { + { + Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock ()); + _ltc_input->ensure_io (ChanCount (DataType::AUDIO, 1), true, this); + } + reconnect_ltc_input (); } - - if (config.get_jack_time_master()) { - _engine.transport_locate (_transport_frame); + + if (state_tree && (child = find_named_node (*state_tree->root(), "LTC-Out")) != 0) { + _ltc_output->set_state (*(child->children().front()), Stateful::loading_state_version); + } else { + { + Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock ()); + _ltc_output->ensure_io (ChanCount (DataType::AUDIO, 1), true, this); + } + reconnect_ltc_output (); } + + /* fix up names of LTC ports because we don't want the normal + * IO style of NAME/TYPE-{in,out}N + */ + + _ltc_input->nth (0)->set_name (_("LTC-in")); + _ltc_output->nth (0)->set_name (_("LTC-out")); +} - _clicking = false; +void +Session::setup_click () +{ + XMLNode* child = 0; - try { - XMLNode* child = 0; + _clicking = false; + _click_io.reset (new ClickIO (*this, "click")); + _click_gain.reset (new Amp (*this)); + _click_gain->activate (); + + if (state_tree && (child = find_named_node (*state_tree->root(), "Click")) != 0) { - _ltc_input.reset (new IO (*this, _("LTC In"), IO::Input)); - _ltc_output.reset (new IO (*this, _("LTC Out"), IO::Output)); + /* existing state for Click */ + int c = 0; - if (state_tree && (child = find_named_node (*state_tree->root(), "LTC-In")) != 0) { - _ltc_input->set_state (*(child->children().front()), Stateful::loading_state_version); + if (Stateful::loading_state_version < 3000) { + c = _click_io->set_state_2X (*child->children().front(), Stateful::loading_state_version, false); } else { - { - Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock ()); - _ltc_input->ensure_io (ChanCount (DataType::AUDIO, 1), true, this); - } - reconnect_ltc_input (); - } - - if (state_tree && (child = find_named_node (*state_tree->root(), "LTC-Out")) != 0) { - _ltc_output->set_state (*(child->children().front()), Stateful::loading_state_version); - } else { - { - Glib::Threads::Mutex::Lock lm (AudioEngine::instance()->process_lock ()); - _ltc_output->ensure_io (ChanCount (DataType::AUDIO, 1), true, this); - } - reconnect_ltc_output (); - } - - /* fix up names of LTC ports because we don't want the normal - * IO style of NAME/TYPE-{in,out}N - */ - - _ltc_input->nth (0)->set_name (_("LTC-in")); - _ltc_output->nth (0)->set_name (_("LTC-out")); - - _click_io.reset (new ClickIO (*this, "click")); - _click_gain.reset (new Amp (*this)); - _click_gain->activate (); - - if (state_tree && (child = find_named_node (*state_tree->root(), "Click")) != 0) { - - /* existing state for Click */ - int c = 0; - - if (Stateful::loading_state_version < 3000) { - c = _click_io->set_state_2X (*child->children().front(), Stateful::loading_state_version, false); - } else { - const XMLNodeList& children (child->children()); - XMLNodeList::const_iterator i = children.begin(); - if ((c = _click_io->set_state (**i, Stateful::loading_state_version)) == 0) { - ++i; - if (i != children.end()) { - c = _click_gain->set_state (**i, Stateful::loading_state_version); - } + const XMLNodeList& children (child->children()); + XMLNodeList::const_iterator i = children.begin(); + if ((c = _click_io->set_state (**i, Stateful::loading_state_version)) == 0) { + ++i; + if (i != children.end()) { + c = _click_gain->set_state (**i, Stateful::loading_state_version); } } + } - if (c == 0) { - _clicking = Config->get_clicking (); + if (c == 0) { + _clicking = Config->get_clicking (); - } else { + } else { - error << _("could not setup Click I/O") << endmsg; - _clicking = false; - } + error << _("could not setup Click I/O") << endmsg; + _clicking = false; + } - } else { + } else { - /* default state for Click: dual-mono to first 2 physical outputs */ + /* default state for Click: dual-mono to first 2 physical outputs */ - vector outs; - _engine.get_physical_outputs (DataType::AUDIO, outs); + vector outs; + _engine.get_physical_outputs (DataType::AUDIO, outs); - for (uint32_t physport = 0; physport < 2; ++physport) { - if (outs.size() > physport) { - if (_click_io->add_port (outs[physport], this)) { - // relax, even though its an error - } + for (uint32_t physport = 0; physport < 2; ++physport) { + if (outs.size() > physport) { + if (_click_io->add_port (outs[physport], this)) { + // relax, even though its an error } } - - if (_click_io->n_ports () > ChanCount::ZERO) { - _clicking = Config->get_clicking (); - } } - } - catch (failed_constructor& err) { - error << _("cannot setup Click I/O") << endmsg; - } - - BootMessage (_("Compute I/O Latencies")); - - if (_clicking) { - // XXX HOW TO ALERT UI TO THIS ? DO WE NEED TO? + if (_click_io->n_ports () > ChanCount::ZERO) { + _clicking = Config->get_clicking (); + } } +} - BootMessage (_("Set up standard connections")); - +void +Session::setup_bundles () +{ vector inputs[DataType::num_types]; vector outputs[DataType::num_types]; for (uint32_t i = 0; i < DataType::num_types; ++i) { @@ -624,6 +653,37 @@ Session::when_engine_running () add_bundle (c); } +} + +int +Session::when_engine_running () +{ + /* every time we reconnect, recompute worst case output latencies */ + + _engine.Running.connect_same_thread (*this, boost::bind (&Session::initialize_latencies, this)); + + if (synced_to_jack()) { + _engine.transport_stop (); + } + + if (config.get_jack_time_master()) { + _engine.transport_locate (_transport_frame); + } + + + try { + BootMessage (_("Set up LTC")); + setup_ltc (); + BootMessage (_("Set up Click")); + setup_click (); + BootMessage (_("Set up standard connections")); + setup_bundles (); + } + + catch (failed_constructor& err) { + return -1; + } + BootMessage (_("Setup signal flow and plugins")); /* Reset all panners */ @@ -672,6 +732,8 @@ Session::when_engine_running () BootMessage (_("Connect to engine")); _engine.set_session (this); _engine.reset_timebase (); + + return 0; } void diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 2491712c49..b4364f4c13 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -125,10 +125,35 @@ using namespace std; using namespace ARDOUR; using namespace PBD; -/** @param snapshot_name Snapshot name, without the .ardour prefix */ void -Session::first_stage_init (string fullpath, string /*snapshot_name*/) +Session::pre_engine_init (string fullpath) { + if (fullpath.empty()) { + destroy (); + throw failed_constructor(); + } + + /* discover canonical fullpath */ + + char buf[PATH_MAX+1]; + if (!realpath (fullpath.c_str(), buf) && (errno != ENOENT)) { + error << string_compose(_("Could not use path %1 (%2)"), buf, strerror(errno)) << endmsg; + destroy (); + throw failed_constructor(); + } + + _path = string(buf); + + /* we require _path to end with a dir separator */ + + if (_path[_path.length()-1] != G_DIR_SEPARATOR) { + _path += G_DIR_SEPARATOR; + } + + /* is it new ? */ + + _is_new = !Glib::file_test (_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)); + /* finish initialization that can't be done in a normal C++ constructor definition. */ @@ -168,32 +193,6 @@ Session::first_stage_init (string fullpath, string /*snapshot_name*/) boost::bind (&RCConfiguration::get_solo_mute_gain, Config))); add_controllable (_solo_cut_control); - /* discover canonical fullpath */ - - if (fullpath.length() == 0) { - destroy (); - throw failed_constructor(); - } - - char buf[PATH_MAX+1]; - if (!realpath (fullpath.c_str(), buf) && (errno != ENOENT)) { - error << string_compose(_("Could not use path %1 (%2)"), buf, strerror(errno)) << endmsg; - destroy (); - throw failed_constructor(); - } - - _path = string(buf); - - /* we require _path to end with a dir separator */ - - if (_path[_path.length()-1] != G_DIR_SEPARATOR) { - _path += G_DIR_SEPARATOR; - } - - /* is it new ? */ - - _is_new = !Glib::file_test (_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)); - /* These are all static "per-class" signals */ SourceFactory::SourceCreated.connect_same_thread (*this, boost::bind (&Session::add_source, this, _1)); @@ -207,95 +206,90 @@ Session::first_stage_init (string fullpath, string /*snapshot_name*/) Delivery::disable_panners (); IO::disable_connecting (); - /* ENGINE */ + AudioFileSource::set_peak_dir (_session_dir->peak_path()); +} + +int +Session::post_engine_init () +{ + BootMessage (_("Set block size and sample rate")); + + set_block_size (_engine.samples_per_cycle()); + set_frame_rate (_engine.sample_rate()); n_physical_outputs = _engine.n_physical_outputs (); n_physical_inputs = _engine.n_physical_inputs (); - _current_frame_rate = _engine.sample_rate (); - _nominal_frame_rate = _current_frame_rate; - _base_frame_rate = _current_frame_rate; + BootMessage (_("Using configuration")); _midi_ports = new MidiPortManager; - _mmc = new MIDI::MachineControl; - - _mmc->set_ports (_midi_ports->mmc_input_port(), _midi_ports->mmc_output_port()); + setup_midi_machine_control (); - _tempo_map = new TempoMap (_current_frame_rate); - _tempo_map->PropertyChanged.connect_same_thread (*this, boost::bind (&Session::tempo_map_changed, this, _1)); - - AudioDiskstream::allocate_working_buffers(); - - SndFileSource::setup_standard_crossfades (*this, frame_rate()); - _engine.GraphReordered.connect_same_thread (*this, boost::bind (&Session::graph_reordered, this)); - - refresh_disk_space (); - sync_time_vars (); -} - -int -Session::second_stage_init () -{ - AudioFileSource::set_peak_dir (_session_dir->peak_path()); - if (_butler->start_thread()) { return -1; } - + if (start_midi_thread ()) { return -1; } + + setup_click_sounds (0); + setup_midi_control (); - setup_midi_machine_control (); - - // set_state() will call setup_raid_path(), but if it's a new session we need - // to call setup_raid_path() here. - - if (state_tree) { - if (set_state (*state_tree->root(), Stateful::loading_state_version)) { - return -1; - } - } else { - setup_raid_path(_path); - } + _engine.Halted.connect_same_thread (*this, boost::bind (&Session::engine_halted, this)); + _engine.Xrun.connect_same_thread (*this, boost::bind (&Session::xrun_recovery, this)); - /* we can't save till after ::when_engine_running() is called, - because otherwise we save state with no connections made. - therefore, we reset _state_of_the_state because ::set_state() - will have cleared it. + try { + /* tempo map requires sample rate knowledge */ - we also have to include Loading so that any events that get - generated between here and the end of ::when_engine_running() - will be processed directly rather than queued. - */ + _tempo_map = new TempoMap (_current_frame_rate); + _tempo_map->PropertyChanged.connect_same_thread (*this, boost::bind (&Session::tempo_map_changed, this, _1)); + + /* MidiClock requires a tempo map */ - _state_of_the_state = StateOfTheState (_state_of_the_state|CannotSave|Loading); + midi_clock = new MidiClockTicker (); + midi_clock->set_session (this); - _locations->changed.connect_same_thread (*this, boost::bind (&Session::locations_changed, this)); - _locations->added.connect_same_thread (*this, boost::bind (&Session::locations_added, this, _1)); - setup_click_sounds (0); - setup_midi_control (); + /* crossfades require sample rate knowledge */ - /* Pay attention ... */ + SndFileSource::setup_standard_crossfades (*this, frame_rate()); + _engine.GraphReordered.connect_same_thread (*this, boost::bind (&Session::graph_reordered, this)); + + AudioDiskstream::allocate_working_buffers(); + refresh_disk_space (); + + /* we're finally ready to call set_state() ... all objects have + * been created, the engine is running. + */ + + if (state_tree) { + if (set_state (*state_tree->root(), Stateful::loading_state_version)) { + return -1; + } + } else { + // set_state() will call setup_raid_path(), but if it's a new session we need + // to call setup_raid_path() here. + setup_raid_path (_path); + } - _engine.Halted.connect_same_thread (*this, boost::bind (&Session::engine_halted, this)); - _engine.Xrun.connect_same_thread (*this, boost::bind (&Session::xrun_recovery, this)); + /* ENGINE */ - midi_clock = new MidiClockTicker (); - midi_clock->set_session (this); + boost::function ff (boost::bind (&Session::config_changed, this, _1, false)); + boost::function ft (boost::bind (&Session::config_changed, this, _1, true)); + + Config->map_parameters (ff); + config.map_parameters (ft); - try { when_engine_running (); - } - - /* handle this one in a different way than all others, so that its clear what happened */ - catch (AudioEngine::PortRegistrationFailure& err) { + _locations->changed.connect_same_thread (*this, boost::bind (&Session::locations_changed, this)); + _locations->added.connect_same_thread (*this, boost::bind (&Session::locations_added, this, _1)); + + } catch (AudioEngine::PortRegistrationFailure& err) { + /* handle this one in a different way than all others, so that its clear what happened */ error << err.what() << endmsg; return -1; - } - - catch (...) { + } catch (...) { return -1; } @@ -3516,6 +3510,9 @@ Session::load_diskstreams_2X (XMLNode const & node, int) void Session::setup_midi_machine_control () { + _mmc = new MIDI::MachineControl; + _mmc->set_ports (_midi_ports->mmc_input_port(), _midi_ports->mmc_output_port()); + _mmc->Play.connect_same_thread (*this, boost::bind (&Session::mmc_deferred_play, this, _1)); _mmc->DeferredPlay.connect_same_thread (*this, boost::bind (&Session::mmc_deferred_play, this, _1)); _mmc->Stop.connect_same_thread (*this, boost::bind (&Session::mmc_stop, this, _1)); -- cgit v1.2.3 From 676ff806970925972b165cd7621ba7ea8c82c08a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 10 Sep 2013 22:58:33 -0400 Subject: basic functionality for hardware latency measurement --- gtk2_ardour/engine_dialog.cc | 182 ++++++++++++++++++++++++++++++++++++++- gtk2_ardour/engine_dialog.h | 24 +++++- libs/ardour/ardour/audioengine.h | 17 +++- libs/ardour/audioengine.cc | 84 ++++++++++++++++++ libs/ardour/midi_port.cc | 2 +- libs/ardour/port_insert.cc | 4 +- 6 files changed, 307 insertions(+), 6 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index b97a7133e6..8c84c5d3b9 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -36,12 +36,15 @@ #include "ardour/audio_backend.h" #include "ardour/audioengine.h" +#include "ardour/mtdm.h" #include "ardour/rc_configuration.h" +#include "ardour/types.h" #include "pbd/convert.h" #include "pbd/error.h" #include "engine_dialog.h" +#include "gui_thread.h" #include "i18n.h" using namespace std; @@ -63,6 +66,9 @@ EngineControl::EngineControl () , ports_adjustment (128, 8, 1024, 1, 16) , ports_spinner (ports_adjustment) , control_app_button (_("Launch Control App")) + , lm_measure_button (_("Measure latency")) + , lm_use_button (_("Use results")) + , lm_table (5, 2) , basic_packer (9, 3) , ignore_changes (0) , _desired_sample_rate (0) @@ -89,6 +95,15 @@ EngineControl::EngineControl () if (audio_setup) { set_state (*audio_setup); } + + ARDOUR::AudioEngine::instance()->Stopped.connect (*this, MISSING_INVALIDATOR, boost::bind (&EngineControl::disable_latency_tab, this), gui_context()); + + if (!ARDOUR::AudioEngine::instance()->connected()) { + ARDOUR::AudioEngine::instance()->Running.connect (*this, MISSING_INVALIDATOR, boost::bind (&EngineControl::enable_latency_tab, this), gui_context()); + disable_latency_tab (); + } else { + enable_latency_tab (); + } } void @@ -131,7 +146,7 @@ EngineControl::build_notebook () row = 0; - const AttachOptions xopt = AttachOptions (FILL|EXPAND); + AttachOptions xopt = AttachOptions (FILL|EXPAND); label = manage (left_aligned_label (_("Audio System:"))); basic_packer.attach (*label, 0, 1, row, row + 1, xopt, (AttachOptions) 0); @@ -200,8 +215,59 @@ EngineControl::build_notebook () midi_packer.set_border_width (12); + /* latency measurement tab */ + + lm_title.set_markup (string_compose ("%1", _("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++; + + lm_preamble.set_width_chars (60); + lm_preamble.set_line_wrap (true); + lm_preamble.set_markup (_("This tool will allow you to precisely measure the signal delay \ +within your audio hardware setup that is not controlled by Ardour or its audio backend.\n\n\ +Connect the two channels that you select below using either a cable or (less ideally) a speaker \ +and microphone.\n\n\ +Once the channels are connected, click the \"Measure latency\" button.\n\n\ +When you are satisfied with the results, click the \"Use results\" button to use them with your audio \ +setup parameters. Note: they will not take effect until you restart")); + + lm_table.attach (lm_preamble, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0); + row++; + + label = manage (left_aligned_label (_("Output channel"))); + lm_table.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); + lm_table.attach (lm_output_channel_combo, 1, 2, row, row+1, xopt, (AttachOptions) 0); + ++row; + + label = manage (left_aligned_label (_("Input channel"))); + lm_table.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); + lm_table.attach (lm_input_channel_combo, 1, 2, row, row+1, xopt, (AttachOptions) 0); + ++row; + + xopt = AttachOptions(0); + + lm_measure_button.signal_toggled().connect (sigc::mem_fun (*this, &EngineControl::latency_button_toggled)); + + 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; + lm_table.attach (lm_use_button, 0, 2, row, row+1, xopt, (AttachOptions) 0); + ++row; + + lm_results.set_text ("Measured results: 786 samples"); + + 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_hbox, _("MIDI"))); + notebook.pages().push_back (TabElem (lm_vbox, _("Latency"))); notebook.set_border_width (12); notebook.set_tab_pos (POS_RIGHT); @@ -225,6 +291,28 @@ EngineControl::~EngineControl () } +void +EngineControl::disable_latency_tab () +{ + vector empty; + set_popdown_strings (lm_output_channel_combo, empty); + set_popdown_strings (lm_input_channel_combo, empty); +} + +void +EngineControl::enable_latency_tab () +{ + vector outputs; + ARDOUR::AudioEngine::instance()->get_physical_outputs (ARDOUR::DataType::AUDIO, outputs); + set_popdown_strings (lm_output_channel_combo, outputs); + lm_output_channel_combo.set_active_text (outputs.front()); + + vector inputs; + ARDOUR::AudioEngine::instance()->get_physical_inputs (ARDOUR::DataType::AUDIO, inputs); + set_popdown_strings (lm_input_channel_combo, inputs); + lm_input_channel_combo.set_active_text (inputs.front()); +} + void EngineControl::backend_changed () { @@ -861,3 +949,95 @@ EngineControl::set_desired_sample_rate (uint32_t sr) _desired_sample_rate = sr; device_changed (); } + +/* latency measurement */ + +void +EngineControl::update_latency_display () +{ + ARDOUR::framecnt_t const sample_rate = ARDOUR::AudioEngine::instance()->sample_rate(); + if (sample_rate == 0) { + lm_results.set_text (_("Disconnected from audio engine")); + } else { + char buf[64]; + //snprintf (buf, sizeof (buf), "%10.3lf frames %10.3lf ms", + //(float)_pi->latency(), (float)_pi->latency() * 1000.0f/sample_rate); + strcpy (buf, "got something"); + lm_results.set_text(buf); + } +} + +bool +EngineControl::check_latency_measurement () +{ + MTDM* mtdm = ARDOUR::AudioEngine::instance()->mtdm (); + static uint32_t cnt = 0; + + if (mtdm->resolve () < 0) { + cerr << "no resolution\n"; + string txt = _("No signal detected "); + uint32_t dots = cnt++%10; + for (uint32_t i = 0; i < dots; ++i) { + txt += '.'; + } + lm_results.set_text (txt); + return true; + } + + if (mtdm->err () > 0.3) { + mtdm->invert (); + mtdm->resolve (); + } + + char buf[128]; + ARDOUR::framecnt_t const sample_rate = ARDOUR::AudioEngine::instance()->sample_rate(); + + if (sample_rate == 0) { + lm_results.set_text (_("Disconnected from audio engine")); + ARDOUR::AudioEngine::instance()->stop_latency_detection (); + return false; + } + + snprintf (buf, sizeof (buf), "%10.3lf frames %10.3lf ms", mtdm->del (), mtdm->del () * 1000.0f/sample_rate); + + bool solid = true; + + if (mtdm->err () > 0.2) { + strcat (buf, " ??"); + solid = false; + } + + if (mtdm->inv ()) { + strcat (buf, " (Inv)"); + solid = false; + } + + if (solid) { + // _pi->set_measured_latency (rint (mtdm->del())); + lm_measure_button.set_active (false); + strcat (buf, " (set)"); + } + + lm_results.set_text (buf); + + return true; +} + +void +EngineControl::latency_button_toggled () +{ + if (lm_measure_button.get_active ()) { + + ARDOUR::AudioEngine::instance()->set_latency_input_port (lm_input_channel_combo.get_active_text()); + ARDOUR::AudioEngine::instance()->set_latency_output_port (lm_output_channel_combo.get_active_text()); + cerr << "latency detection on " << lm_input_channel_combo.get_active_text() << " => " << lm_output_channel_combo.get_active_text() << endl; + ARDOUR::AudioEngine::instance()->start_latency_detection (); + lm_results.set_text (_("Detecting ...")); + latency_timeout = Glib::signal_timeout().connect (mem_fun (*this, &EngineControl::check_latency_measurement), 250); + + } else { + ARDOUR::AudioEngine::instance()->stop_latency_detection (); + latency_timeout.disconnect (); + update_latency_display (); + } +} diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index a92d0629f2..940f594421 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -33,9 +33,11 @@ #include #include +#include "pbd/signals.h" + #include "ardour_dialog.h" -class EngineControl : public ArdourDialog { +class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { public: EngineControl (); ~EngineControl (); @@ -71,6 +73,18 @@ class EngineControl : public ArdourDialog { Gtk::Button control_app_button; + /* latency measurement */ + + Gtk::ComboBoxText lm_output_channel_combo; + Gtk::ComboBoxText lm_input_channel_combo; + Gtk::ToggleButton lm_measure_button; + Gtk::Button lm_use_button; + Gtk::Label lm_title; + Gtk::Label lm_preamble; + Gtk::Label lm_results; + Gtk::Table lm_table; + Gtk::VBox lm_vbox; + /* JACK specific */ Gtk::CheckButton realtime_button; @@ -156,6 +170,14 @@ class EngineControl : public ArdourDialog { void manage_control_app_sensitivity (); int push_state_to_backend (bool start); uint32_t _desired_sample_rate; + + /* latency measurement */ + void latency_button_toggled (); + bool check_latency_measurement (); + void update_latency_display (); + sigc::connection latency_timeout; + void enable_latency_tab (); + void disable_latency_tab (); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 4db1604345..980f507be5 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -47,6 +47,8 @@ #include #endif +class MTDM; + namespace ARDOUR { class InternalPort; @@ -182,6 +184,14 @@ public: /* sets up the process callback thread */ static void thread_init_callback (void *); + /* latency measurement */ + + MTDM* mtdm(); + void start_latency_detection (); + void stop_latency_detection (); + void set_latency_input_port (const std::string&); + void set_latency_output_port (const std::string&); + private: AudioEngine (); @@ -205,7 +215,12 @@ public: framecnt_t _processed_frames; Glib::Threads::Thread* m_meter_thread; ProcessThread* _main_thread; - + MTDM* _mtdm; + bool _measuring_latency; + PortEngine::PortHandle _latency_input_port; + PortEngine::PortHandle _latency_output_port; + framecnt_t _latency_flush_frames; + void meter_thread (); void start_metering_thread (); void stop_metering_thread (); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 5b19253a26..09478e7ef7 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -50,6 +50,7 @@ #include "ardour/meter.h" #include "ardour/midi_port.h" #include "ardour/midiport_manager.h" +#include "ardour/mtdm.h" #include "ardour/port.h" #include "ardour/process_thread.h" #include "ardour/session.h" @@ -73,6 +74,11 @@ AudioEngine::AudioEngine () , _processed_frames (0) , m_meter_thread (0) , _main_thread (0) + , _mtdm (0) + , _measuring_latency (false) + , _latency_input_port (0) + , _latency_output_port (0) + , _latency_flush_frames (0) { g_atomic_int_set (&m_meter_exit, 0); discover_backends (); @@ -192,6 +198,43 @@ AudioEngine::process_callback (pframes_t nframes) return 0; } + /* If measuring latency, do it now and get out of here */ + + if (_measuring_latency && _mtdm) { + // PortManager::cycle_start (nframes); + // PortManager::silence (nframes); + + if (_latency_input_port && _latency_output_port) { + PortEngine& pe (port_engine()); + + Sample* in = (Sample*) pe.get_buffer (_latency_input_port, nframes); + Sample* out = (Sample*) pe.get_buffer (_latency_output_port, nframes); + + _mtdm->process (nframes, in, out); + } + + // PortManager::cycle_end (nframes); + return 0; + + } else if (_latency_flush_frames) { + + /* wait for the appropriate duration for the MTDM signal to + * drain from the ports before we revert to normal behaviour. + */ + + PortManager::cycle_start (nframes); + PortManager::silence (nframes); + PortManager::cycle_end (nframes); + + if (_latency_flush_frames > nframes) { + _latency_flush_frames -= nframes; + } else { + _latency_flush_frames = 0; + } + + return 0; + } + if (session_remove_pending) { /* perform the actual session removal */ @@ -581,6 +624,9 @@ AudioEngine::stop () _running = false; _processed_frames = 0; + _measuring_latency = false; + _latency_output_port = 0; + _latency_input_port = 0; stop_metering_thread (); Port::PortDrop (); @@ -930,3 +976,41 @@ AudioEngine::setup_required () const return true; } +MTDM* +AudioEngine::mtdm() +{ + return _mtdm; +} + +void +AudioEngine::start_latency_detection () +{ + delete _mtdm; + + _mtdm = new MTDM (sample_rate()); + _measuring_latency = true; + _latency_flush_frames = samples_per_cycle(); +} + +void +AudioEngine::stop_latency_detection () +{ + port_engine().unregister_port (_latency_output_port); + port_engine().unregister_port (_latency_input_port); + _measuring_latency = false; +} + +void +AudioEngine::set_latency_output_port (const string& name) +{ + _latency_output_port = port_engine().register_port ("latency_out", DataType::AUDIO, IsOutput); + port_engine().connect (_latency_output_port, name); +} + +void +AudioEngine::set_latency_input_port (const string& name) +{ + const string portname ("latency_in"); + _latency_input_port = port_engine().register_port (portname, DataType::AUDIO, IsInput); + port_engine().connect (name, make_port_name_non_relative (portname)); +} diff --git a/libs/ardour/midi_port.cc b/libs/ardour/midi_port.cc index eb6759f308..de2263fad6 100644 --- a/libs/ardour/midi_port.cc +++ b/libs/ardour/midi_port.cc @@ -88,7 +88,7 @@ MidiPort::get_midi_buffer (pframes_t nframes) void* buffer = port_engine.get_buffer (_port_handle, nframes); const pframes_t event_count = port_engine.get_midi_event_count (buffer); - + /* suck all relevant MIDI events from the MIDI port buffer into our MidiBuffer */ diff --git a/libs/ardour/port_insert.cc b/libs/ardour/port_insert.cc index d64920b1e2..97fe082c81 100644 --- a/libs/ardour/port_insert.cc +++ b/libs/ardour/port_insert.cc @@ -49,7 +49,7 @@ PortInsert::PortInsert (Session& s, boost::shared_ptr pannable, boost: { _mtdm = 0; _latency_detect = false; - _latency_flush_frames = false; + _latency_flush_frames = 0; _measured_latency = 0; } @@ -64,7 +64,7 @@ PortInsert::start_latency_detection () { delete _mtdm; _mtdm = new MTDM (_session.frame_rate()); - _latency_flush_frames = false; + _latency_flush_frames = 0; _latency_detect = true; _measured_latency = 0; } -- cgit v1.2.3 From d305dc1e0c3b04c6b014e443c3234d7864d73073 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 10 Sep 2013 23:25:15 -0400 Subject: more tweaks to latency measurement don't open ports till absolutely necessary (store names for future use). tidy up parts of the dialog (tab) --- gtk2_ardour/engine_dialog.cc | 21 ++++++++++----------- libs/ardour/ardour/audioengine.h | 2 ++ libs/ardour/audioengine.cc | 33 ++++++++++++++++++++++++++++----- 3 files changed, 40 insertions(+), 16 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 8c84c5d3b9..40ce03d778 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -227,23 +227,21 @@ EngineControl::build_notebook () lm_preamble.set_width_chars (60); lm_preamble.set_line_wrap (true); - lm_preamble.set_markup (_("This tool will allow you to precisely measure the signal delay \ -within your audio hardware setup that is not controlled by Ardour or its audio backend.\n\n\ -Connect the two channels that you select below using either a cable or (less ideally) a speaker \ + lm_preamble.set_markup (_("1. Turn down the volume on your hardware to a very low level.\n\n\ +2. Connect the two channels that you select below using either a cable or (less ideally) a speaker \ and microphone.\n\n\ -Once the channels are connected, click the \"Measure latency\" button.\n\n\ -When you are satisfied with the results, click the \"Use results\" button to use them with your audio \ -setup parameters. Note: they will not take effect until you restart")); +3. Once the channels are connected, click the \"Measure latency\" button.\n\n\ +4. When satisfied with the results, click the \"Use results\" button.")); lm_table.attach (lm_preamble, 0, 2, row, row+1, AttachOptions(FILL|EXPAND), (AttachOptions) 0); row++; - label = manage (left_aligned_label (_("Output channel"))); + label = manage (new Label (_("Output channel"))); lm_table.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); lm_table.attach (lm_output_channel_combo, 1, 2, row, row+1, xopt, (AttachOptions) 0); ++row; - label = manage (left_aligned_label (_("Input channel"))); + label = manage (new Label (_("Input channel"))); lm_table.attach (*label, 0, 1, row, row+1, xopt, (AttachOptions) 0); lm_table.attach (lm_input_channel_combo, 1, 2, row, row+1, xopt, (AttachOptions) 0); ++row; @@ -251,7 +249,8 @@ setup parameters. Note: they will not take effect until you restart")); xopt = AttachOptions(0); lm_measure_button.signal_toggled().connect (sigc::mem_fun (*this, &EngineControl::latency_button_toggled)); - + lm_use_button.set_sensitive (false); + 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); @@ -259,7 +258,7 @@ setup parameters. Note: they will not take effect until you restart")); lm_table.attach (lm_use_button, 0, 2, row, row+1, xopt, (AttachOptions) 0); ++row; - lm_results.set_text ("Measured results: 786 samples"); + lm_results.set_markup ("No measurement results yet"); lm_vbox.pack_start (lm_table, false, false); @@ -974,7 +973,6 @@ EngineControl::check_latency_measurement () static uint32_t cnt = 0; if (mtdm->resolve () < 0) { - cerr << "no resolution\n"; string txt = _("No signal detected "); uint32_t dots = cnt++%10; for (uint32_t i = 0; i < dots; ++i) { @@ -1015,6 +1013,7 @@ EngineControl::check_latency_measurement () if (solid) { // _pi->set_measured_latency (rint (mtdm->del())); lm_measure_button.set_active (false); + lm_use_button.set_sensitive (true); strcat (buf, " (set)"); } diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 980f507be5..c9d789d746 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -220,6 +220,8 @@ public: PortEngine::PortHandle _latency_input_port; PortEngine::PortHandle _latency_output_port; framecnt_t _latency_flush_frames; + std::string _latency_input_name; + std::string _latency_output_name; void meter_thread (); void start_metering_thread (); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 09478e7ef7..249fd4200d 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -985,11 +985,37 @@ AudioEngine::mtdm() void AudioEngine::start_latency_detection () { + PortEngine& pe (port_engine()); + delete _mtdm; + _mtdm = 0; + + /* create the ports we will use to read/write data */ + + if ((_latency_output_port = pe.register_port ("latency_out", DataType::AUDIO, IsOutput)) == 0) { + return; + } + if (pe.connect (_latency_output_port, _latency_output_name)) { + return; + } + + const string portname ("latency_in"); + if ((_latency_input_port = pe.register_port (portname, DataType::AUDIO, IsInput)) == 0) { + pe.unregister_port (_latency_output_port); + return; + } + if (pe.connect (_latency_input_name, make_port_name_non_relative (portname))) { + pe.unregister_port (_latency_output_port); + return; + } + + /* all created and connected, lets go */ _mtdm = new MTDM (sample_rate()); _measuring_latency = true; _latency_flush_frames = samples_per_cycle(); + + } void @@ -1003,14 +1029,11 @@ AudioEngine::stop_latency_detection () void AudioEngine::set_latency_output_port (const string& name) { - _latency_output_port = port_engine().register_port ("latency_out", DataType::AUDIO, IsOutput); - port_engine().connect (_latency_output_port, name); + _latency_output_name = name; } void AudioEngine::set_latency_input_port (const string& name) { - const string portname ("latency_in"); - _latency_input_port = port_engine().register_port (portname, DataType::AUDIO, IsInput); - port_engine().connect (name, make_port_name_non_relative (portname)); + _latency_input_name = name; } -- cgit v1.2.3 From 7c719e441a834067c1b35e51f891fd4c1a252e76 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Sep 2013 09:59:56 -0400 Subject: fix handling of new session defer save state till after everything done in post_engine_init() is complete. --- libs/ardour/session.cc | 1 + libs/ardour/session_state.cc | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 9934d5a095..6f0638bdc9 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1466,6 +1466,7 @@ Session::set_frame_rate (framecnt_t frames_per_second) */ _base_frame_rate = frames_per_second; + _nominal_frame_rate = frames_per_second; sync_time_vars(); diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index b4364f4c13..dbb2d4edcd 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -312,8 +312,10 @@ Session::post_engine_init () DirtyChanged (); /* EMIT SIGNAL */ - if (state_was_pending) { - save_state (_current_snapshot_name); + if (_is_new) { + save_state (""); + } else if (state_was_pending) { + save_state (""); remove_pending_capture_state (); state_was_pending = false; } @@ -546,8 +548,6 @@ Session::create (const string& session_template, BusProfile* bus_profile) add_monitor_section (); } - save_state (""); - return 0; } -- cgit v1.2.3 From 7c3535ebf808056f65df50a38c7b2202ca1e27aa Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Sep 2013 10:06:02 -0400 Subject: make quit work even when latency measurement is in progress --- libs/ardour/audioengine.cc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 249fd4200d..2a1ca2c852 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -198,11 +198,11 @@ AudioEngine::process_callback (pframes_t nframes) return 0; } - /* If measuring latency, do it now and get out of here */ + bool return_after_remove_check = false; if (_measuring_latency && _mtdm) { - // PortManager::cycle_start (nframes); - // PortManager::silence (nframes); + PortManager::cycle_start (nframes); + PortManager::silence (nframes); if (_latency_input_port && _latency_output_port) { PortEngine& pe (port_engine()); @@ -213,8 +213,8 @@ AudioEngine::process_callback (pframes_t nframes) _mtdm->process (nframes, in, out); } - // PortManager::cycle_end (nframes); - return 0; + PortManager::cycle_end (nframes); + return_after_remove_check = true; } else if (_latency_flush_frames) { @@ -232,7 +232,7 @@ AudioEngine::process_callback (pframes_t nframes) _latency_flush_frames = 0; } - return 0; + return_after_remove_check = true; } if (session_remove_pending) { @@ -271,6 +271,10 @@ AudioEngine::process_callback (pframes_t nframes) } } + if (return_after_remove_check) { + return 0; + } + if (_session == 0) { if (!_freewheeling) { -- cgit v1.2.3 From bede012727ce36ee09d972fc84d8ac2d7fd0e3f1 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Sep 2013 12:05:51 -0400 Subject: remove unused members and code from EngineControl dialog (related to different devices for input+output) --- gtk2_ardour/engine_dialog.cc | 24 ------------------------ gtk2_ardour/engine_dialog.h | 3 --- 2 files changed, 27 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 40ce03d778..17ff0f7217 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -381,13 +381,9 @@ EngineControl::list_devices () } set_popdown_strings (device_combo, available_devices); - set_popdown_strings (input_device_combo, available_devices); - set_popdown_strings (output_device_combo, available_devices); if (!available_devices.empty()) { device_combo.set_active_text (available_devices.front()); - input_device_combo.set_active_text (available_devices.front()); - output_device_combo.set_active_text (available_devices.front()); } device_changed (); @@ -525,26 +521,6 @@ EngineControl::show_buffer_duration () buffer_size_duration_label.set_text (buf); } -void -EngineControl::audio_mode_changed () -{ - std::string str = audio_mode_combo.get_active_text(); - - if (str == _("Playback/recording on 1 device")) { - input_device_combo.set_sensitive (false); - output_device_combo.set_sensitive (false); - } else if (str == _("Playback/recording on 2 devices")) { - input_device_combo.set_sensitive (true); - output_device_combo.set_sensitive (true); - } else if (str == _("Playback only")) { - output_device_combo.set_sensitive (true); - input_device_combo.set_sensitive (false); - } else if (str == _("Recording only")) { - input_device_combo.set_sensitive (true); - output_device_combo.set_sensitive (false); - } -} - EngineControl::State* EngineControl::get_matching_state (const string& backend, const string& driver, diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 940f594421..360c438571 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -55,8 +55,6 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { /* core fields used by all backends */ Gtk::ComboBoxText backend_combo; - Gtk::ComboBoxText input_device_combo; - Gtk::ComboBoxText output_device_combo; Gtk::ComboBoxText sample_rate_combo; Gtk::ComboBoxText buffer_size_combo; Gtk::Label buffer_size_duration_label; @@ -130,7 +128,6 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { std::string get_device_name() const; std::string get_driver() const; - void audio_mode_changed (); void device_changed (); void list_devices (); void show_buffer_duration (); -- cgit v1.2.3 From 18c4c9656a4c8135f97cf74fab1d861b015c6225 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Sep 2013 12:44:21 -0400 Subject: remove some configure time tests from libs/ardour regarding JACK which are no longer relevant --- libs/ardour/wscript | 54 ----------------------------------------------------- 1 file changed, 54 deletions(-) diff --git a/libs/ardour/wscript b/libs/ardour/wscript index c86b510e83..d367b2101e 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -303,60 +303,6 @@ def configure(conf): conf.check(header_name='unistd.h', define_name='HAVE_UNISTD',mandatory=False) - conf.check_cc(fragment = ''' -#include -void callback(jack_status_t code, const char* reason, void* arg) { return; } -int main(int argc, char **argv) { - jack_client_t* c; - jack_on_info_shutdown(c, callback, (void*) 0); - return 0; -}''', - uselib= [ 'JACK' ], - msg = 'Checking for jack_on_info_shutdown', - define_name = 'HAVE_JACK_ON_INFO_SHUTDOWN', - okmsg = 'present') - - missing_jack_message = 'missing - a version of JACK that supports jack_port_set_latency_range() is required to compile Ardour3.' - - conf.check_cc(fragment = ''' -#include -int main(int argc, char **argv) { - jack_port_t* p; - jack_latency_range_t r; - jack_port_set_latency_range(p, JackCaptureLatency, &r); - return 0; -}''', - uselib = [ 'JACK' ], - msg = 'Checking for new JACK latency API', - okmsg = 'present', - mandatory = True, - errmsg = missing_jack_message) - - conf.check_cc(fragment = ''' -#include -int main(int argc, char **argv) { - jack_port_type_get_buffer_size((jack_client_t*)0, ""); - return 0; -}''', - uselib = [ 'JACK' ], - msg = 'Checking for new jack_port_type_get_buffer_size', - okmsg = 'present', - mandatory = True, - errmsg = missing_jack_message) - - conf.check_cc(fragment = ''' -#include -int main(int argc, char** argv) { - jack_position_t pos; - pos.valid & JackVideoFrameOffset; - return 0; -}''', - uselib= [ 'JACK' ], - msg = 'Checking for JackVideoFrameOffset', - define_name = 'HAVE_JACK_VIDEO_SUPPORT', - mandatory = False, - okmsg = 'present') - if flac_supported(): conf.define ('HAVE_FLAC', 1) if ogg_supported(): -- cgit v1.2.3 From 91e2eab01abe61be89b1860cdb2d24ca8b22c0bc Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Sep 2013 13:02:32 -0400 Subject: make use of measured latency values to set dialog controls, and use actual port latency to compute extra delay --- gtk2_ardour/engine_dialog.cc | 23 ++++++++++++++++++++++- gtk2_ardour/engine_dialog.h | 1 + libs/ardour/ardour/audioengine.h | 2 ++ libs/ardour/audioengine.cc | 10 ++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 17ff0f7217..873498f6ec 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -249,6 +249,7 @@ and microphone.\n\n\ xopt = AttachOptions(0); 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); lm_table.attach (lm_measure_button, 0, 2, row, row+1, xopt, (AttachOptions) 0); @@ -972,7 +973,10 @@ EngineControl::check_latency_measurement () return false; } - snprintf (buf, sizeof (buf), "%10.3lf frames %10.3lf ms", mtdm->del (), mtdm->del () * 1000.0f/sample_rate); + uint32_t frames_total = mtdm->del(); + uint32_t extra = frames_total - ARDOUR::AudioEngine::instance()->latency_signal_delay(); + + snprintf (buf, sizeof (buf), "%u samples %10.3lf ms", extra, extra * 1000.0f/sample_rate); bool solid = true; @@ -1016,3 +1020,20 @@ EngineControl::latency_button_toggled () update_latency_display (); } } + +void +EngineControl::use_latency_button_clicked () +{ + MTDM* mtdm = ARDOUR::AudioEngine::instance()->mtdm (); + + if (!mtdm) { + return; + } + + uint32_t frames_total = mtdm->del(); + uint32_t extra = frames_total - ARDOUR::AudioEngine::instance()->latency_signal_delay(); + uint32_t one_way = extra/2; + + input_latency_adjustment.set_value (one_way); + output_latency_adjustment.set_value (one_way); +} diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 360c438571..3872917add 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -164,6 +164,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { void on_response (int); void control_app_button_clicked (); + void use_latency_button_clicked (); void manage_control_app_sensitivity (); int push_state_to_backend (bool start); uint32_t _desired_sample_rate; diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index c9d789d746..cf4f91d4d0 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -191,6 +191,7 @@ public: void stop_latency_detection (); void set_latency_input_port (const std::string&); void set_latency_output_port (const std::string&); + uint32_t latency_signal_delay () const { return _latency_signal_latency; } private: AudioEngine (); @@ -222,6 +223,7 @@ public: framecnt_t _latency_flush_frames; std::string _latency_input_name; std::string _latency_output_name; + framecnt_t _latency_signal_latency; void meter_thread (); void start_metering_thread (); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 2a1ca2c852..329de68bee 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -79,6 +79,7 @@ AudioEngine::AudioEngine () , _latency_input_port (0) , _latency_output_port (0) , _latency_flush_frames (0) + , _latency_signal_latency (0) { g_atomic_int_set (&m_meter_exit, 0); discover_backends (); @@ -1012,6 +1013,15 @@ AudioEngine::start_latency_detection () pe.unregister_port (_latency_output_port); return; } + + LatencyRange lr; + _latency_signal_latency = 0; + lr = pe.get_latency_range (_latency_input_port, false); + _latency_signal_latency = lr.max; + lr = pe.get_latency_range (_latency_output_port, true); + _latency_signal_latency += lr.max; + + cerr << "latency signal pathway = " << _latency_signal_latency << endl; /* all created and connected, lets go */ -- cgit v1.2.3 From f85b362351a5f9167f93b6988f2c8a4c7e03a33c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Sep 2013 16:33:40 -0400 Subject: *maybe* fix issues with zombification during session loading --- libs/ardour/session.cc | 16 ++++++++++------ libs/ardour/session_state.cc | 4 ---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 6f0638bdc9..e89808e818 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -326,6 +326,16 @@ Session::Session (AudioEngine &eng, EndTimeChanged.connect_same_thread (*this, boost::bind (&Session::end_time_changed, this, _1)); _is_new = false; + + /* hook us up to the engine since we are now completely constructed */ + + BootMessage (_("Connect to engine")); + + _engine.set_session (this); + _engine.reset_timebase (); + + BootMessage (_("Session loading complete")); + } Session::~Session () @@ -727,12 +737,6 @@ Session::when_engine_running () initialize_latencies (); - /* hook us up to the engine */ - - BootMessage (_("Connect to engine")); - _engine.set_session (this); - _engine.reset_timebase (); - return 0; } diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index dbb2d4edcd..d90346073c 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -308,8 +308,6 @@ Session::post_engine_init () _state_of_the_state = Clean; - Port::set_connecting_blocked (false); - DirtyChanged (); /* EMIT SIGNAL */ if (_is_new) { @@ -320,8 +318,6 @@ Session::post_engine_init () state_was_pending = false; } - BootMessage (_("Session loading complete")); - return 0; } -- cgit v1.2.3 From 9f2ab81df6709d7b5d5701abbedc63d39e7330ab Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 11 Sep 2013 21:00:21 -0400 Subject: always add a timeout value of 200msec to jack, just like qjackctl does. THIS IS A HACK. LONG TERM GOAL: understand why ardour gets zombified on the way up. --- libs/backends/jack/jack_utils.cc | 7 ++++++- libs/backends/jack/jack_utils.h | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/libs/backends/jack/jack_utils.cc b/libs/backends/jack/jack_utils.cc index 77f3d95aa1..93fc3d440a 100644 --- a/libs/backends/jack/jack_utils.cc +++ b/libs/backends/jack/jack_utils.cc @@ -682,7 +682,7 @@ ARDOUR::JackCommandLineOptions::JackCommandLineOptions () } bool -ARDOUR::get_jack_command_line_string (const JackCommandLineOptions& options, string& command_line) +ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& command_line) { vector args; @@ -699,6 +699,11 @@ ARDOUR::get_jack_command_line_string (const JackCommandLineOptions& options, str } #endif + /* XXX hack to enforce qjackctl-like behaviour */ + if (options.timeout == 0) { + options.timeout = 200; + } + if (options.timeout) { args.push_back ("-t"); args.push_back (to_string (options.timeout, std::dec)); diff --git a/libs/backends/jack/jack_utils.h b/libs/backends/jack/jack_utils.h index 7565353198..a7521ad1c4 100644 --- a/libs/backends/jack/jack_utils.h +++ b/libs/backends/jack/jack_utils.h @@ -231,5 +231,5 @@ namespace ARDOUR { /** * @return true if able to build a valid command line based on options */ - bool get_jack_command_line_string (const JackCommandLineOptions& options, std::string& command_line); + bool get_jack_command_line_string (JackCommandLineOptions& options, std::string& command_line); } -- cgit v1.2.3 From 4df3666738607039445ebc9fa083bf5c23ac5539 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 12 Sep 2013 11:29:47 -0400 Subject: add AudioBackendNativeThread to serve the same role as jack_native_thread_t --- libs/ardour/ardour/audio_backend.h | 8 +++++++- libs/ardour/ardour/audioengine.h | 3 ++- libs/ardour/ardour/graph.h | 3 ++- libs/ardour/ardour/types.h | 11 +++++++++++ libs/ardour/audioengine.cc | 10 +++++++++- libs/ardour/graph.cc | 11 +++++------ libs/backends/jack/jack_audiobackend.cc | 8 ++++++++ libs/backends/jack/jack_audiobackend.h | 3 ++- 8 files changed, 46 insertions(+), 11 deletions(-) diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index ab37bea526..6c4a54da3e 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -399,7 +399,13 @@ class AudioBackend { * stacksize. The thread will begin executing @param func, and will exit * when that function returns. */ - virtual int create_process_thread (boost::function func, pthread_t*, size_t stacksize) = 0; + virtual int create_process_thread (boost::function func, AudioBackendNativeThread*, size_t stacksize) = 0; + + /** Wait for the thread specified by @param thread to exit. + * + * Return zero on success, non-zero on failure. + */ + virtual int wait_for_process_thread_exit (AudioBackendNativeThread thread) = 0; virtual void update_latencies () = 0; diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index cf4f91d4d0..21206da8fc 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -100,7 +100,8 @@ public: pframes_t sample_time_at_cycle_start (); pframes_t samples_since_cycle_start (); bool get_sync_offset (pframes_t& offset) const; - int create_process_thread (boost::function func, pthread_t*, size_t stacksize); + int create_process_thread (boost::function func, AudioBackendNativeThread*, size_t stacksize); + int wait_for_process_thread_exit (AudioBackendNativeThread); bool is_realtime() const; bool connected() const; diff --git a/libs/ardour/ardour/graph.h b/libs/ardour/ardour/graph.h index cac09d34af..08af6fb721 100644 --- a/libs/ardour/ardour/graph.h +++ b/libs/ardour/ardour/graph.h @@ -36,6 +36,7 @@ #include "pbd/semutils.h" #include "ardour/types.h" +#include "ardour/audio_backend.h" #include "ardour/session_handle.h" namespace ARDOUR @@ -92,7 +93,7 @@ protected: virtual void session_going_away (); private: - std::list _thread_list; + std::list _thread_list; volatile bool _quit_threads; void reset_thread_list (); diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index 17bffc20e4..f2319d7669 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -26,6 +26,7 @@ #include #include #include +#include #include @@ -609,6 +610,16 @@ namespace ARDOUR { uint32_t max; //< samples }; +/* PLATFORM SPECIFIC #ifdef's here */ + + /** Define the native thread type used on the platform */ + typedef pthread_t AudioBackendNativeThread; + static inline bool self_thread_equal (AudioBackendNativeThread thr) { + return pthread_equal (thr, pthread_self()); + } + +/* PLATFORM SPECIFIC #endif's here */ + } // namespace ARDOUR diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 329de68bee..ba5b5ad525 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -816,7 +816,7 @@ AudioEngine::get_sync_offset (pframes_t& offset) const } int -AudioEngine::create_process_thread (boost::function func, pthread_t* thr, size_t stacksize) +AudioEngine::create_process_thread (boost::function func, AudioBackendNativeThread* thr, size_t stacksize) { if (!_backend) { return -1; @@ -824,6 +824,14 @@ AudioEngine::create_process_thread (boost::function func, pthread_t* thr return _backend->create_process_thread (func, thr, stacksize); } +int +AudioEngine::wait_for_process_thread_exit (AudioBackendNativeThread thr) +{ + if (!_backend) { + return 0; + } + return _backend->wait_for_process_thread_exit (thr); +} int AudioEngine::set_device_name (const std::string& name) diff --git a/libs/ardour/graph.cc b/libs/ardour/graph.cc index cb0fa1b21a..c8e374cddc 100644 --- a/libs/ardour/graph.cc +++ b/libs/ardour/graph.cc @@ -101,7 +101,7 @@ Graph::reset_thread_list () } Glib::Threads::Mutex::Lock lm (_session.engine().process_lock()); - pthread_t a_thread; + AudioBackendNativeThread a_thread; if (!_thread_list.empty()) { drop_threads (); @@ -146,9 +146,8 @@ Graph::drop_threads () _callback_start_sem.signal (); - for (list::iterator i = _thread_list.begin(); i != _thread_list.end(); ++i) { - void* status; - pthread_join (*i, &status); + for (list::iterator i = _thread_list.begin(); i != _thread_list.end(); ++i) { + AudioEngine::instance()->wait_for_process_thread_exit (*i); } _thread_list.clear (); @@ -584,8 +583,8 @@ Graph::process_one_route (Route* route) bool Graph::in_process_thread () const { - for (list::const_iterator i = _thread_list.begin (); i != _thread_list.end(); ++i) { - if (*i == pthread_self()) { + for (list::const_iterator i = _thread_list.begin (); i != _thread_list.end(); ++i) { + if (self_thread_equal (*i)) { return true; } } diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index e004849896..89a93a76f6 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -789,6 +789,14 @@ JACKAudioBackend::create_process_thread (boost::function f, pthread_t* t return 0; } +int +JACKAudioBackend::wait_for_process_thread_exit (AudioBackendNativeThread thr) +{ + void* status; + /* this doesn't actively try to stop the thread, it just waits till it exits */ + return pthread_join (thr, &status); +} + void* JACKAudioBackend::_start_process_thread (void* arg) { diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index 1389e15c4a..61f1bbb602 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -100,7 +100,8 @@ class JACKAudioBackend : public AudioBackend { size_t raw_buffer_size (DataType t); - int create_process_thread (boost::function func, pthread_t*, size_t stacksize); + int create_process_thread (boost::function func, AudioBackendNativeThread*, size_t stacksize); + int wait_for_process_thread_exit (AudioBackendNativeThread); void transport_start (); void transport_stop (); -- cgit v1.2.3 From 6b3907d57f3f69df420529af308412eeb80306a4 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 12 Sep 2013 12:26:59 -0400 Subject: change names, add comment, improve return type to avoid extra call to get EngineControl::State* --- gtk2_ardour/engine_dialog.cc | 15 ++++++++------- gtk2_ardour/engine_dialog.h | 4 ++-- libs/ardour/session.cc | 4 ++++ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 873498f6ec..923024bdc2 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -538,7 +538,7 @@ EngineControl::get_matching_state (const string& backend, } EngineControl::State* -EngineControl::get_current_state () +EngineControl::get_saved_state_for_currently_displayed_backend_and_device () { boost::shared_ptr backend = ARDOUR::AudioEngine::instance()->current_backend(); @@ -554,11 +554,11 @@ EngineControl::get_current_state () device_combo.get_active_text()); } -void +EngineControl::State* EngineControl::save_state () { bool existing = true; - State* state = get_current_state (); + State* state = get_saved_state_for_currently_displayed_backend_and_device (); if (!state) { existing = false; @@ -578,12 +578,14 @@ EngineControl::save_state () if (!existing) { states.push_back (*state); } + + return state; } void EngineControl::maybe_display_saved_state () { - State* state = get_current_state (); + State* state = get_saved_state_for_currently_displayed_backend_and_device (); if (state) { ignore_changes++; @@ -792,11 +794,10 @@ EngineControl::push_state_to_backend (bool start) * necessary */ - State* state = get_current_state (); + State* state = get_saved_state_for_currently_displayed_backend_and_device (); if (!state) { - save_state (); - state = get_current_state (); + state = save_state (); assert (state); } diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 3872917add..88e5094948 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -154,9 +154,9 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { State* get_matching_state (const std::string& backend, const std::string& driver, const std::string& device); - State* get_current_state (); + State* get_saved_state_for_currently_displayed_backend_and_device (); void maybe_display_saved_state (); - void save_state (); + State* save_state (); static bool print_channel_count (Gtk::SpinButton*); diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index e89808e818..443738f777 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -285,6 +285,10 @@ Session::Session (AudioEngine &eng, } } } + + /* we need the audioengine to be up and usable to make much more + * progress with construction, so lets get that started if it isn't already. + */ if (_engine.current_backend() == 0 || _engine.setup_required()) { boost::optional r = AudioEngineSetupRequired (sr); -- cgit v1.2.3 From 9a884535c39867b7822221406f3f2630e3b95f2a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 12 Sep 2013 14:39:17 -0400 Subject: prevent key press in pre-main-window dialog(s) from crashing the program because there is no editor window to forward key presses to --- gtk2_ardour/utils.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc index 8b05eb7108..1b87a3d444 100644 --- a/gtk2_ardour/utils.cc +++ b/gtk2_ardour/utils.cc @@ -363,8 +363,15 @@ set_color (Gdk::Color& c, int rgb) bool relay_key_press (GdkEventKey* ev, Gtk::Window* win) { + PublicEditor& ed (PublicEditor::instance()); + + if (&ed == 0) { + /* early key press in pre-main-window-dialogs, no editor yet */ + return false; + } + if (!key_press_focus_accelerator_handler (*win, ev)) { - return PublicEditor::instance().on_key_press_event(ev); + return ed.on_key_press_event(ev); } else { return true; } -- cgit v1.2.3 From 9af75b2ac9245f15f9c0a2eac270aeb5de2928d3 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 12 Sep 2013 16:27:58 -0400 Subject: reinstate unblocking-of-connections in session setup, accidentally dropped in reorganization work --- libs/ardour/session_state.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index d90346073c..7914b21565 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -308,6 +308,8 @@ Session::post_engine_init () _state_of_the_state = Clean; + Port::set_connecting_blocked (false); + DirtyChanged (); /* EMIT SIGNAL */ if (_is_new) { -- cgit v1.2.3 From 7c8867068027c9f815606cce8136528269734053 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 12 Sep 2013 16:28:51 -0400 Subject: lots of changes to auto-start (and stop) the backend for latency measurements, and continuing work on the session construction/engine configuration flow --- gtk2_ardour/ardour_ui.cc | 25 +++------ gtk2_ardour/engine_dialog.cc | 116 +++++++++++++++++++++++++++++---------- gtk2_ardour/engine_dialog.h | 4 +- libs/ardour/ardour/audioengine.h | 2 + libs/ardour/audioengine.cc | 53 ++++++++++++++++-- libs/ardour/session.cc | 17 +++++- 6 files changed, 164 insertions(+), 53 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 4992e0a14b..8bdc694742 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -384,25 +384,8 @@ ARDOUR_UI::create_global_port_matrix (ARDOUR::DataType type) void ARDOUR_UI::attach_to_engine () { - AudioEngine::instance()->Stopped.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_stopped, this), gui_context()); AudioEngine::instance()->Running.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_running, this), gui_context()); - AudioEngine::instance()->SampleRateChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::update_sample_rate, this, _1), gui_context()); - - AudioEngine::instance()->Halted.connect_same_thread (halt_connection, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); - ARDOUR::Port::set_connecting_blocked (ARDOUR_COMMAND_LINE::no_connect_ports); - - /* if there is only one audio/midi backend, and it does not require setup, get our use of it underway - * right here (we need to know the client name and potential session ID - * to do this, which is why this is here, rather than in, say, - * ARDOUR::init(). - */ - - if (!AudioEngine::instance()->setup_required()) { - const AudioBackendInfo* backend = AudioEngine::instance()->available_backends().front(); - AudioEngine::instance()->set_backend (backend->name, ARDOUR_COMMAND_LINE::backend_client_name, ARDOUR_COMMAND_LINE::backend_session_uuid); - AudioEngine::instance()->start (); - } } void @@ -524,6 +507,12 @@ ARDOUR_UI::post_engine () */ ARDOUR::init_post_engine (); + + /* connect to important signals */ + + AudioEngine::instance()->Stopped.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::engine_stopped, this), gui_context()); + AudioEngine::instance()->SampleRateChanged.connect (forever_connections, MISSING_INVALIDATOR, boost::bind (&ARDOUR_UI::update_sample_rate, this, _1), gui_context()); + AudioEngine::instance()->Halted.connect_same_thread (halt_connection, boost::bind (&ARDOUR_UI::engine_halted, this, _1, false)); _tooltips.enable(); @@ -4161,6 +4150,8 @@ ARDOUR_UI::launch_audio_midi_setup () int ARDOUR_UI::do_audio_midi_setup (uint32_t desired_sample_rate) { + cerr << "DO-AMS\n"; + launch_audio_midi_setup (); _audio_midi_setup->set_desired_sample_rate (desired_sample_rate); diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 923024bdc2..d724f4f4d3 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -29,6 +29,7 @@ #include "pbd/error.h" #include "pbd/xml++.h" +#include "pbd/unwind.h" #include #include @@ -95,15 +96,6 @@ EngineControl::EngineControl () if (audio_setup) { set_state (*audio_setup); } - - ARDOUR::AudioEngine::instance()->Stopped.connect (*this, MISSING_INVALIDATOR, boost::bind (&EngineControl::disable_latency_tab, this), gui_context()); - - if (!ARDOUR::AudioEngine::instance()->connected()) { - ARDOUR::AudioEngine::instance()->Running.connect (*this, MISSING_INVALIDATOR, boost::bind (&EngineControl::enable_latency_tab, this), gui_context()); - disable_latency_tab (); - } else { - enable_latency_tab (); - } } void @@ -281,9 +273,18 @@ and microphone.\n\n\ 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)); - device_combo.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::device_changed)); + + notebook.signal_switch_page().connect (sigc::mem_fun (*this, &EngineControl::on_switch_page)); } EngineControl::~EngineControl () @@ -297,6 +298,8 @@ EngineControl::disable_latency_tab () vector empty; set_popdown_strings (lm_output_channel_combo, empty); set_popdown_strings (lm_input_channel_combo, empty); + lm_measure_button.set_sensitive (false); + lm_use_button.set_sensitive (false); } void @@ -311,6 +314,9 @@ EngineControl::enable_latency_tab () ARDOUR::AudioEngine::instance()->get_physical_inputs (ARDOUR::DataType::AUDIO, inputs); set_popdown_strings (lm_input_channel_combo, inputs); lm_input_channel_combo.set_active_text (inputs.front()); + + lm_measure_button.set_sensitive (true); + lm_use_button.set_sensitive (true); } void @@ -384,10 +390,26 @@ EngineControl::list_devices () set_popdown_strings (device_combo, available_devices); 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); + + /* changing the text in the combo will trigger device_changed() + which should populate the parameter controls + */ + device_combo.set_active_text (available_devices.front()); + } 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); } - - device_changed (); } void @@ -468,7 +490,13 @@ EngineControl::device_changed () ignore_changes--; + /* pick up any saved state for this device */ + maybe_display_saved_state (); + + /* and push it to the backend */ + + push_state_to_backend (false); } void @@ -483,6 +511,7 @@ EngineControl::sample_rate_changed () */ show_buffer_duration (); + push_state_to_backend (false); save_state (); } @@ -495,6 +524,7 @@ EngineControl::buffer_size_changed () } show_buffer_duration (); + push_state_to_backend (false); save_state (); } @@ -522,6 +552,14 @@ EngineControl::show_buffer_duration () buffer_size_duration_label.set_text (buf); } +void +EngineControl::parameter_changed () +{ + if (!ignore_changes) { + save_state (); + } +} + EngineControl::State* EngineControl::get_matching_state (const string& backend, const string& driver, @@ -927,23 +965,47 @@ EngineControl::set_desired_sample_rate (uint32_t sr) device_changed (); } -/* latency measurement */ - void -EngineControl::update_latency_display () +EngineControl::on_switch_page (GtkNotebookPage*, guint page_num) { - ARDOUR::framecnt_t const sample_rate = ARDOUR::AudioEngine::instance()->sample_rate(); - if (sample_rate == 0) { - lm_results.set_text (_("Disconnected from audio engine")); - } else { - char buf[64]; - //snprintf (buf, sizeof (buf), "%10.3lf frames %10.3lf ms", - //(float)_pi->latency(), (float)_pi->latency() * 1000.0f/sample_rate); - strcpy (buf, "got something"); - lm_results.set_text(buf); - } + if (page_num == 2) { + /* latency tab */ + + if (!ARDOUR::AudioEngine::instance()->running()) { + + PBD::Unwinder protect_ignore_changes (ignore_changes, ignore_changes + 1); + + /* save any existing latency values */ + + uint32_t il = (uint32_t) input_latency.get_value (); + uint32_t ol = (uint32_t) input_latency.get_value (); + + /* reset to zero so that our new test instance of JACK + will be clean of any existing latency measures. + */ + + input_latency.set_value (0); + output_latency.set_value (0); + + push_state_to_backend (false); + + /* reset control */ + + input_latency.set_value (il); + output_latency.set_value (ol); + } + + if (ARDOUR::AudioEngine::instance()->prepare_for_latency_measurement()) { + disable_latency_tab (); + } + enable_latency_tab (); + } else { + ARDOUR::AudioEngine::instance()->stop_latency_detection(); + } } +/* latency measurement */ + bool EngineControl::check_latency_measurement () { @@ -975,6 +1037,7 @@ EngineControl::check_latency_measurement () } uint32_t frames_total = mtdm->del(); + cerr << "total = " << frames_total << " delay = " << ARDOUR::AudioEngine::instance()->latency_signal_delay() << endl; uint32_t extra = frames_total - ARDOUR::AudioEngine::instance()->latency_signal_delay(); snprintf (buf, sizeof (buf), "%u samples %10.3lf ms", extra, extra * 1000.0f/sample_rate); @@ -992,7 +1055,6 @@ EngineControl::check_latency_measurement () } if (solid) { - // _pi->set_measured_latency (rint (mtdm->del())); lm_measure_button.set_active (false); lm_use_button.set_sensitive (true); strcat (buf, " (set)"); @@ -1010,7 +1072,6 @@ EngineControl::latency_button_toggled () ARDOUR::AudioEngine::instance()->set_latency_input_port (lm_input_channel_combo.get_active_text()); ARDOUR::AudioEngine::instance()->set_latency_output_port (lm_output_channel_combo.get_active_text()); - cerr << "latency detection on " << lm_input_channel_combo.get_active_text() << " => " << lm_output_channel_combo.get_active_text() << endl; ARDOUR::AudioEngine::instance()->start_latency_detection (); lm_results.set_text (_("Detecting ...")); latency_timeout = Glib::signal_timeout().connect (mem_fun (*this, &EngineControl::check_latency_measurement), 250); @@ -1018,7 +1079,6 @@ EngineControl::latency_button_toggled () } else { ARDOUR::AudioEngine::instance()->stop_latency_detection (); latency_timeout.disconnect (); - update_latency_display (); } } diff --git a/gtk2_ardour/engine_dialog.h b/gtk2_ardour/engine_dialog.h index 88e5094948..98ddf2c1b3 100644 --- a/gtk2_ardour/engine_dialog.h +++ b/gtk2_ardour/engine_dialog.h @@ -118,6 +118,7 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { void backend_changed (); void sample_rate_changed (); void buffer_size_changed (); + void parameter_changed (); uint32_t get_rate() const; uint32_t get_buffer_size() const; @@ -172,10 +173,11 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList { /* latency measurement */ void latency_button_toggled (); bool check_latency_measurement (); - void update_latency_display (); sigc::connection latency_timeout; void enable_latency_tab (); void disable_latency_tab (); + + void on_switch_page (GtkNotebookPage*, guint page_num); }; #endif /* __gtk2_ardour_engine_dialog_h__ */ diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 21206da8fc..5762e709b3 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -188,6 +188,7 @@ public: /* latency measurement */ MTDM* mtdm(); + int prepare_for_latency_measurement (); void start_latency_detection (); void stop_latency_detection (); void set_latency_input_port (const std::string&); @@ -225,6 +226,7 @@ public: std::string _latency_input_name; std::string _latency_output_name; framecnt_t _latency_signal_latency; + bool _started_for_latency; void meter_thread (); void start_metering_thread (); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index ba5b5ad525..819a166866 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -80,6 +80,7 @@ AudioEngine::AudioEngine () , _latency_output_port (0) , _latency_flush_frames (0) , _latency_signal_latency (0) + , _started_for_latency (false) { g_atomic_int_set (&m_meter_exit, 0); discover_backends (); @@ -202,6 +203,13 @@ AudioEngine::process_callback (pframes_t nframes) bool return_after_remove_check = false; if (_measuring_latency && _mtdm) { + /* run a normal cycle from the perspective of the PortManager + so that we get silence on all registered ports. + + we overwrite the silence on the two ports used for latency + measurement. + */ + PortManager::cycle_start (nframes); PortManager::silence (nframes); @@ -609,7 +617,9 @@ AudioEngine::start () start_metering_thread (); - Running(); /* EMIT SIGNAL */ + if (!_started_for_latency) { + Running(); /* EMIT SIGNAL */ + } return 0; } @@ -632,6 +642,7 @@ AudioEngine::stop () _measuring_latency = false; _latency_output_port = 0; _latency_input_port = 0; + _started_for_latency = false; stop_metering_thread (); Port::PortDrop (); @@ -982,6 +993,13 @@ AudioEngine::halted_callback (const char* why) bool AudioEngine::setup_required () const { + /* If there is only a single backend and it claims to be configured + * already there is no setup to be done. + * + * Primarily for a case where there is only a JACK backend and + * JACK is already running. + */ + if (_backends.size() == 1 && _backends.begin()->second->already_configured()) { return false; } @@ -995,9 +1013,28 @@ AudioEngine::mtdm() return _mtdm; } +int +AudioEngine::prepare_for_latency_measurement () +{ + if (!running()) { + _started_for_latency = true; + + if (start()) { + _started_for_latency = false; + return -1; + } + } + + return 0; +} + void AudioEngine::start_latency_detection () { + if (prepare_for_latency_measurement ()) { + return; + } + PortEngine& pe (port_engine()); delete _mtdm; @@ -1026,26 +1063,32 @@ AudioEngine::start_latency_detection () _latency_signal_latency = 0; lr = pe.get_latency_range (_latency_input_port, false); _latency_signal_latency = lr.max; + cerr << "Input port lm = " << lr.max; lr = pe.get_latency_range (_latency_output_port, true); _latency_signal_latency += lr.max; + cerr << " output port lm = " << lr.max << endl; - cerr << "latency signal pathway = " << _latency_signal_latency << endl; - /* all created and connected, lets go */ _mtdm = new MTDM (sample_rate()); _measuring_latency = true; _latency_flush_frames = samples_per_cycle(); - } void AudioEngine::stop_latency_detection () { + cerr << "Stop LD\n"; + + _measuring_latency = false; + port_engine().unregister_port (_latency_output_port); port_engine().unregister_port (_latency_input_port); - _measuring_latency = false; + + if (_started_for_latency) { + stop (); + } } void diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 443738f777..94882c13b3 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -289,13 +289,26 @@ Session::Session (AudioEngine &eng, /* we need the audioengine to be up and usable to make much more * progress with construction, so lets get that started if it isn't already. */ - - if (_engine.current_backend() == 0 || _engine.setup_required()) { + + if (_engine.current_backend() == 0) { + /* backend is unknown ... */ + boost::optional r = AudioEngineSetupRequired (sr); + if (r.get_value_or (-1) != 0) { + destroy (); + throw failed_constructor(); + } + } else if (_engine.setup_required()) { + /* backend is known, but setup is needed */ boost::optional r = AudioEngineSetupRequired (sr); if (r.get_value_or (-1) != 0) { destroy (); throw failed_constructor(); } + } else if (!_engine.running()) { + if (_engine.start()) { + destroy (); + throw failed_constructor (); + } } /* at this point the engine should be connected (i.e. interacting -- cgit v1.2.3 From 026a30a3b4cd9f4dffdf48a7a24977044da810a0 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 11 Sep 2013 18:32:39 +0200 Subject: tweak narrow-mixer-strip meters: nettings vs the_CLA. Round 3. --- gtk2_ardour/gain_meter.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index d4610da601..f9ab062750 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -277,16 +277,19 @@ GainMeterBase::setup_meters (int len) switch (_width) { case Wide: - meter_ticks1_area.show(); - meter_ticks2_area.show(); + //meter_ticks1_area.show(); + //meter_ticks2_area.show(); meter_metric_area.show(); if (_route && _route->shared_peak_meter()->input_streams().n_total() == 1) { meter_width = 10; } break; case Narrow: - meter_ticks1_area.hide(); - meter_ticks2_area.hide(); + if (_route && _route->shared_peak_meter()->input_streams().n_total() > 1) { + meter_width = 4; + } + //meter_ticks1_area.hide(); + //meter_ticks2_area.hide(); meter_metric_area.hide(); break; } -- cgit v1.2.3 From 8432f78346800a8e897d79deb61396b67cbd9c18 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 12 Sep 2013 22:46:11 +0200 Subject: vtl: export selected range --- gtk2_ardour/editor_videotimeline.cc | 2 +- gtk2_ardour/export_video_dialog.cc | 39 +++++++++++++++++++++++++++++++------ gtk2_ardour/export_video_dialog.h | 5 +++-- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/gtk2_ardour/editor_videotimeline.cc b/gtk2_ardour/editor_videotimeline.cc index 0a516fb748..6f3317eabd 100644 --- a/gtk2_ardour/editor_videotimeline.cc +++ b/gtk2_ardour/editor_videotimeline.cc @@ -138,7 +138,7 @@ Editor::export_video () break; } } - ExportVideoDialog dialog (*this, _session); + ExportVideoDialog dialog (_session, get_selection().time); Gtk::ResponseType r = (Gtk::ResponseType) dialog.run(); dialog.hide(); #if 0 diff --git a/gtk2_ardour/export_video_dialog.cc b/gtk2_ardour/export_video_dialog.cc index c7ef6efd9a..b1b59fa088 100644 --- a/gtk2_ardour/export_video_dialog.cc +++ b/gtk2_ardour/export_video_dialog.cc @@ -62,9 +62,9 @@ using namespace PBD; using namespace ARDOUR; using namespace VideoUtils; -ExportVideoDialog::ExportVideoDialog (PublicEditor& ed, Session* s) +ExportVideoDialog::ExportVideoDialog (Session* s, TimeSelection &tme) : ArdourDialog (_("Export Video File ")) - , editor (ed) + , export_range (tme) , outfn_path_label (_("File:"), Gtk::ALIGN_LEFT) , outfn_browse_button (_("Browse")) , invid_path_label (_("Video:"), Gtk::ALIGN_LEFT) @@ -150,6 +150,9 @@ ExportVideoDialog::ExportVideoDialog (PublicEditor& ed, Session* s) } else { insnd_combo.append_text (_("from the video's start to the video's end")); } + if (!export_range.empty()) { + insnd_combo.append_text (_("Selected range")); // TODO show export_range.start() -> export_range.end_frame() + } insnd_combo.set_active(0); outfn_path_entry.set_width_chars(38); @@ -507,6 +510,11 @@ ExportVideoDialog::launch_export () } end += av_offset; } + else if (insnd_combo.get_active_row_number() == 2) { + // TODO quantize to video-frame ?! + start = export_range.start(); + end = export_range.end_frame(); + } if (end <= 0) { start = _session->current_start_frame(); end = _session->current_end_frame(); @@ -694,9 +702,14 @@ ExportVideoDialog::encode_pass (int pass) double duration_s = 0; if (insnd_combo.get_active_row_number() == 0) { + /* session start to session end */ framecnt_t duration_f = _session->current_end_frame() - _session->current_start_frame(); duration_s = (double)duration_f / (double)_session->nominal_frame_rate(); + } else if (insnd_combo.get_active_row_number() == 2) { + /* selected range */ + duration_s = export_range.length() / (double)_session->nominal_frame_rate(); } else { + /* video start to end */ framecnt_t duration_f = ARDOUR_UI::instance()->video_timeline->get_duration(); if (av_offset < 0 ) { duration_f += av_offset; @@ -712,10 +725,16 @@ ExportVideoDialog::encode_pass (int pass) transcoder->set_duration(duration_s * transcoder->get_fps()); } - if (insnd_combo.get_active_row_number() == 0) { - const framepos_t start = _session->current_start_frame(); - const framepos_t snend = _session->current_end_frame(); + if (insnd_combo.get_active_row_number() == 0 || insnd_combo.get_active_row_number() == 2) { + framepos_t start, snend; const frameoffset_t vid_duration = ARDOUR_UI::instance()->video_timeline->get_duration(); + if (insnd_combo.get_active_row_number() == 0) { + start = _session->current_start_frame(); + snend = _session->current_end_frame(); + } else { + start = export_range.start(); + snend = export_range.end_frame(); + } #if 0 /* DEBUG */ printf("AV offset: %lld Vid-len: %lld Vid-end: %lld || start:%lld || end:%lld\n", @@ -730,9 +749,17 @@ ExportVideoDialog::encode_pass (int pass) } else if (av_offset + vid_duration < snend) { transcoder->set_leadinout(0, (snend - (av_offset + vid_duration)) / (double)_session->nominal_frame_rate()); transcoder->set_avoffset((av_offset - start) / (double)_session->nominal_frame_rate()); - } else { + } +#if 0 + else if (start > av_offset) { + std::ostringstream osstream; osstream << ((start - av_offset) / (double)_session->nominal_frame_rate()); + ffs["-ss"] = osstream.str(); + } +#endif + else { transcoder->set_avoffset((av_offset - start) / (double)_session->nominal_frame_rate()); } + } else if (av_offset < 0) { /* from 00:00:00:00 to video-end */ transcoder->set_avoffset(av_offset / (double)_session->nominal_frame_rate()); diff --git a/gtk2_ardour/export_video_dialog.h b/gtk2_ardour/export_video_dialog.h index 2594c2073b..7e3cf442a7 100644 --- a/gtk2_ardour/export_video_dialog.h +++ b/gtk2_ardour/export_video_dialog.h @@ -28,6 +28,7 @@ #include "ardour/template_utils.h" #include "ardour_dialog.h" +#include "time_selection.h" #include "transcode_ffmpeg.h" /** @class ExportVideoDialog @@ -40,13 +41,13 @@ class ExportVideoDialog : public ArdourDialog , public PBD::ScopedConnectionList { public: - ExportVideoDialog (PublicEditor&, ARDOUR::Session*); + ExportVideoDialog (ARDOUR::Session*, TimeSelection &tme); ~ExportVideoDialog (); std::string get_exported_filename () { return outfn_path_entry.get_text(); } private: - PublicEditor& editor; + TimeSelection &export_range; void on_show (); void abort_clicked (); -- cgit v1.2.3 From 28d692b4900d8c428c2cd3b9008c897ec8943724 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 12 Sep 2013 17:06:21 -0400 Subject: don't stop metering thread when session is removed; move engine-setup code into its own method. sorry, ardour build-from-source folk :) --- libs/ardour/ardour/session.h | 1 + libs/ardour/audioengine.cc | 2 -- libs/ardour/session.cc | 65 ++++++++++++++++++++++---------------------- 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 09bf75276d..1d81473f1d 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -1624,6 +1624,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi void setup_ltc (); void setup_click (); void setup_bundles (); + int ensure_engine (uint32_t desired_sample_rate); }; } // namespace ARDOUR diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 819a166866..08af41f5f8 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -425,8 +425,6 @@ AudioEngine::remove_session () if (_running) { - stop_metering_thread (); - if (_session) { session_remove_pending = true; session_removal_countdown = 0; diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 94882c13b3..cad869a577 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -286,39 +286,9 @@ Session::Session (AudioEngine &eng, } } - /* we need the audioengine to be up and usable to make much more - * progress with construction, so lets get that started if it isn't already. - */ - - if (_engine.current_backend() == 0) { - /* backend is unknown ... */ - boost::optional r = AudioEngineSetupRequired (sr); - if (r.get_value_or (-1) != 0) { - destroy (); - throw failed_constructor(); - } - } else if (_engine.setup_required()) { - /* backend is known, but setup is needed */ - boost::optional r = AudioEngineSetupRequired (sr); - if (r.get_value_or (-1) != 0) { - destroy (); - throw failed_constructor(); - } - } else if (!_engine.running()) { - if (_engine.start()) { - destroy (); - throw failed_constructor (); - } - } - - /* at this point the engine should be connected (i.e. interacting - with a backend device (or psuedo-device) and available to us - for determinining sample rates and other settings. - */ - - if (!_engine.connected()) { + if (ensure_engine (sr)) { destroy (); - throw failed_constructor(); + throw failed_constructor (); } if (post_engine_init ()) { @@ -363,6 +333,37 @@ Session::~Session () destroy (); } +int +Session::ensure_engine (uint32_t desired_sample_rate) +{ + if (_engine.current_backend() == 0) { + /* backend is unknown ... */ + boost::optional r = AudioEngineSetupRequired (desired_sample_rate); + if (r.get_value_or (-1) != 0) { + return -1; + } + } else if (_engine.setup_required()) { + /* backend is known, but setup is needed */ + boost::optional r = AudioEngineSetupRequired (desired_sample_rate); + if (r.get_value_or (-1) != 0) { + return -1; + } + } else if (!_engine.running()) { + if (_engine.start()) { + return -1; + } + } + + /* at this point the engine should be running + */ + + if (!_engine.running()) { + return -1; + } + + return 0; +} + void Session::destroy () { -- cgit v1.2.3 From ccc81f05bec222819707b8e8c8c6a8c6289b2b6c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 12 Sep 2013 17:24:45 -0400 Subject: remove some debug output messages --- gtk2_ardour/ardour_ui.cc | 2 -- libs/ardour/audioengine.cc | 4 ---- 2 files changed, 6 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 8bdc694742..3543405cf0 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -4150,8 +4150,6 @@ ARDOUR_UI::launch_audio_midi_setup () int ARDOUR_UI::do_audio_midi_setup (uint32_t desired_sample_rate) { - cerr << "DO-AMS\n"; - launch_audio_midi_setup (); _audio_midi_setup->set_desired_sample_rate (desired_sample_rate); diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 08af41f5f8..9c810a186f 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -1061,10 +1061,8 @@ AudioEngine::start_latency_detection () _latency_signal_latency = 0; lr = pe.get_latency_range (_latency_input_port, false); _latency_signal_latency = lr.max; - cerr << "Input port lm = " << lr.max; lr = pe.get_latency_range (_latency_output_port, true); _latency_signal_latency += lr.max; - cerr << " output port lm = " << lr.max << endl; /* all created and connected, lets go */ @@ -1077,8 +1075,6 @@ AudioEngine::start_latency_detection () void AudioEngine::stop_latency_detection () { - cerr << "Stop LD\n"; - _measuring_latency = false; port_engine().unregister_port (_latency_output_port); -- cgit v1.2.3 From b085a7993880e1292fb34e8c16d752a7fc4ec7c8 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 13 Sep 2013 10:19:01 -0400 Subject: explanatory comment --- libs/backends/jack/jack_audiobackend.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index 89a93a76f6..b41648cbe3 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -451,7 +451,9 @@ JACKAudioBackend::setup_jack_startup_command () string cmdline; if (!get_jack_command_line_string (options, cmdline)) { - /* error, somehow */ + /* error, somehow - we will still try to start JACK + * automatically but it will be without our preferred options + */ return; } -- cgit v1.2.3 From e3b954e16ff0a67c1a41868635022198d75e7d87 Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Thu, 12 Sep 2013 17:24:28 +0200 Subject: don't confuse arm with i686 --- wscript | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wscript b/wscript index c4cba628dd..b3902c1b49 100644 --- a/wscript +++ b/wscript @@ -157,6 +157,8 @@ def set_compiler_flags (conf,opt): conf.env['build_target'] = 'i386' elif re.search("powerpc", cpu) != None: conf.env['build_target'] = 'powerpc' + elif re.search("arm", cpu) != None: + conf.env['build_target'] = 'arm' else: conf.env['build_target'] = 'i686' else: -- cgit v1.2.3 From f9d08daa477230f90c194edc555f77c267b5078c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 13 Sep 2013 11:21:15 -0400 Subject: change inheritance so that an AudioBackend IS-A PortEngine This allows a derived (concrete) implementation to share information (e.g. sample rate, buffer size) between the audio backend side of things and the port management side of things. --- libs/ardour/ardour/audio_backend.h | 36 +++++++------- libs/ardour/ardour/audioengine.h | 2 - libs/ardour/ardour/port_engine.h | 22 ++++----- libs/ardour/ardour/port_manager.h | 9 ++-- libs/ardour/audioengine.cc | 5 +- libs/ardour/port.cc | 4 +- libs/ardour/port_manager.cc | 96 +++++++++++++++++++++----------------- 7 files changed, 89 insertions(+), 85 deletions(-) diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 6c4a54da3e..d9561a62e5 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -29,17 +29,15 @@ #include #include "ardour/types.h" +#include "ardour/audioengine.h" +#include "ardour/port_engine.h" namespace ARDOUR { -class AudioEngine; -class PortEngine; -class PortManager; - -class AudioBackend { +class AudioBackend : public PortEngine { public: - AudioBackend (AudioEngine& e) : engine (e){} + AudioBackend (AudioEngine& e) : PortEngine (e), engine (e) {} virtual ~AudioBackend () {} /** Return the name of this backend. @@ -49,17 +47,6 @@ class AudioBackend { */ virtual std::string name() const = 0; - /** Return a private, type-free pointer to any data - * that might be useful to a concrete implementation - */ - virtual void* private_handle() const = 0; - - /** Return true if the underlying mechanism/API is still available - * for us to utilize. return false if some or all of the AudioBackend - * API can no longer be effectively used. - */ - virtual bool connected() const = 0; - /** Return true if the callback from the underlying mechanism/API * (CoreAudio, JACK, ASIO etc.) occurs in a thread subject to realtime * constraints. Return false otherwise. @@ -416,11 +403,22 @@ class AudioBackend { struct AudioBackendInfo { const char* name; + /** Using arg1 and arg2, initialize this audiobackend. + * + * Returns zero on success, non-zero otherwise. + */ int (*instantiate) (const std::string& arg1, const std::string& arg2); + + /** Release all resources associated with this audiobackend + */ int (*deinstantiate) (void); - boost::shared_ptr (*backend_factory) (AudioEngine&); - boost::shared_ptr (*portengine_factory) (PortManager&); + /** Factory method to create an AudioBackend-derived class. + * + * Returns a valid shared_ptr to the object if successfull, + * or a "null" shared_ptr otherwise. + */ + boost::shared_ptr (*factory) (AudioEngine&); /** Return true if the underlying mechanism/API has been * configured and does not need (re)configuration in order diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index 5762e709b3..201d960479 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -200,8 +200,6 @@ public: static AudioEngine* _instance; - boost::shared_ptr _backend; - Glib::Threads::Mutex _process_lock; Glib::Threads::Cond session_removed; bool session_remove_pending; diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index 71f93ea05e..8c0ec9e754 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -79,6 +79,11 @@ class PortEngine { PortEngine (PortManager& pm) : manager (pm) {} virtual ~PortEngine() {} + /** Return a private, type-free pointer to any data + * that might be useful to a concrete implementation + */ + virtual void* private_handle() const = 0; + /* We use void* here so that the API can be defined for any implementation. * * We could theoretically use a template (PortEngine) and define @@ -89,21 +94,16 @@ class PortEngine { typedef void* PortHandle; - /** Return a typeless pointer to an object that may be of interest - * that understands the internals of a particular PortEngine - * implementation. - * - * XXX the existence of this method is a band-aid over some design - * issues and will it will be removed in the future - */ - virtual void* private_handle() const = 0; - - virtual bool connected() const = 0; - /** Return the name of this process as used by the port manager * when naming ports. */ virtual const std::string& my_name() const = 0; + + /** Return true if the underlying mechanism/API is still available + * for us to utilize. return false if some or all of the AudioBackend + * API can no longer be effectively used. + */ + virtual bool available() const = 0; /** Return the maximum size of a port name */ diff --git a/libs/ardour/ardour/port_manager.h b/libs/ardour/ardour/port_manager.h index 6d45597a41..ba15142d83 100644 --- a/libs/ardour/ardour/port_manager.h +++ b/libs/ardour/ardour/port_manager.h @@ -34,10 +34,12 @@ #include "ardour/chan_count.h" #include "ardour/midiport_manager.h" #include "ardour/port.h" -#include "ardour/port_engine.h" namespace ARDOUR { +class PortEngine; +class AudioBackend; + class PortManager { public: @@ -47,8 +49,7 @@ class PortManager PortManager (); virtual ~PortManager() {} - void set_port_engine (PortEngine& pe); - PortEngine& port_engine() { return *_impl; } + PortEngine& port_engine(); uint32_t port_name_size() const; std::string my_name() const; @@ -134,7 +135,7 @@ class PortManager PBD::Signal5, std::string, boost::weak_ptr, std::string, bool> PortConnectedOrDisconnected; protected: - boost::shared_ptr _impl; + boost::shared_ptr _backend; SerializedRCUManager ports; bool _port_remove_in_progress; diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 9c810a186f..73dee76a92 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -572,8 +572,7 @@ AudioEngine::set_backend (const std::string& name, const std::string& arg1, cons throw failed_constructor (); } - _backend = b->second->backend_factory (*this); - _impl = b->second->portengine_factory (*this); + _backend = b->second->factory (*this); } catch (exception& e) { error << string_compose (_("Could not create backend for %1: %2"), name, e.what()) << endmsg; @@ -704,7 +703,7 @@ AudioEngine::connected() const return false; } - return _backend->connected(); + return _backend->available(); } void diff --git a/libs/ardour/port.cc b/libs/ardour/port.cc index e8629cbf14..cf961d6828 100644 --- a/libs/ardour/port.cc +++ b/libs/ardour/port.cc @@ -122,7 +122,7 @@ Port::disconnect_all () bool Port::connected_to (std::string const & o) const { - if (!port_engine.connected()) { + if (!port_engine.available()) { return false; } @@ -132,7 +132,7 @@ Port::connected_to (std::string const & o) const int Port::get_connections (std::vector & c) const { - if (!port_engine.connected()) { + if (!port_engine.available()) { c.insert (c.end(), _connections.begin(), _connections.end()); return c.size(); } diff --git a/libs/ardour/port_manager.cc b/libs/ardour/port_manager.cc index 1758ea4a3f..c7adefc531 100644 --- a/libs/ardour/port_manager.cc +++ b/libs/ardour/port_manager.cc @@ -20,11 +20,12 @@ #include "pbd/error.h" #include "ardour/async_midi_port.h" -#include "ardour/debug.h" -#include "ardour/port_manager.h" +#include "ardour/audio_backend.h" #include "ardour/audio_port.h" +#include "ardour/debug.h" #include "ardour/midi_port.h" #include "ardour/midiport_manager.h" +#include "ardour/port_manager.h" #include "i18n.h" @@ -68,13 +69,13 @@ PortManager::remove_all_ports () string PortManager::make_port_name_relative (const string& portname) const { - if (!_impl) { + if (!_backend) { return portname; } string::size_type len; string::size_type n; - string self = _impl->my_name(); + string self = _backend->my_name(); len = portname.length(); @@ -100,7 +101,7 @@ PortManager::make_port_name_non_relative (const string& portname) const return portname; } - str = _impl->my_name(); + str = _backend->my_name(); str += ':'; str += portname; @@ -110,11 +111,11 @@ PortManager::make_port_name_non_relative (const string& portname) const bool PortManager::port_is_mine (const string& portname) const { - if (!_impl) { + if (!_backend) { return true; } - string self = _impl->my_name(); + string self = _backend->my_name(); if (portname.find_first_of (':') != string::npos) { if (portname.substr (0, self.length ()) != self) { @@ -128,54 +129,54 @@ PortManager::port_is_mine (const string& portname) const bool PortManager::port_is_physical (const std::string& portname) const { - if (!_impl) { + if (!_backend) { return false; } - PortEngine::PortHandle ph = _impl->get_port_by_name (portname); + PortEngine::PortHandle ph = _backend->get_port_by_name (portname); if (!ph) { return false; } - return _impl->port_is_physical (ph); + return _backend->port_is_physical (ph); } void PortManager::get_physical_outputs (DataType type, std::vector& s) { - if (!_impl) { + if (!_backend) { return; } - _impl->get_physical_outputs (type, s); + _backend->get_physical_outputs (type, s); } void PortManager::get_physical_inputs (DataType type, std::vector& s) { - if (!_impl) { + if (!_backend) { return; } - _impl->get_physical_inputs (type, s); + _backend->get_physical_inputs (type, s); } ChanCount PortManager::n_physical_outputs () const { - if (!_impl) { + if (!_backend) { return ChanCount::ZERO; } - return _impl->n_physical_outputs (); + return _backend->n_physical_outputs (); } ChanCount PortManager::n_physical_inputs () const { - if (!_impl) { + if (!_backend) { return ChanCount::ZERO; } - return _impl->n_physical_inputs (); + return _backend->n_physical_inputs (); } /** @param name Full or short name of port @@ -185,7 +186,7 @@ PortManager::n_physical_inputs () const boost::shared_ptr PortManager::get_port_by_name (const string& portname) { - if (!_impl) { + if (!_backend) { return boost::shared_ptr(); } @@ -204,7 +205,7 @@ PortManager::get_port_by_name (const string& portname) and cheap), and if so, rename the port (which will alter the port map as a side effect). */ - const std::string check = make_port_name_relative (_impl->get_port_name (x->second->port_handle())); + const std::string check = make_port_name_relative (_backend->get_port_name (x->second->port_handle())); if (check != rel) { x->second->set_name (check); } @@ -243,26 +244,26 @@ PortManager::get_ports (DataType type, PortList& pl) int PortManager::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) { - if (!_impl) { + if (!_backend) { return 0; } - return _impl->get_ports (port_name_pattern, type, flags, s); + return _backend->get_ports (port_name_pattern, type, flags, s); } void PortManager::port_registration_failure (const std::string& portname) { - if (!_impl) { + if (!_backend) { return; } - string full_portname = _impl->my_name(); + string full_portname = _backend->my_name(); full_portname += ':'; full_portname += portname; - PortEngine::PortHandle p = _impl->get_port_by_name (full_portname); + PortEngine::PortHandle p = _backend->get_port_by_name (full_portname); string reason; if (p) { @@ -356,17 +357,17 @@ PortManager::unregister_port (boost::shared_ptr port) bool PortManager::connected (const string& port_name) { - if (!_impl) { + if (!_backend) { return false; } - PortEngine::PortHandle handle = _impl->get_port_by_name (port_name); + PortEngine::PortHandle handle = _backend->get_port_by_name (port_name); if (!handle) { return false; } - return _impl->connected (handle); + return _backend->connected (handle); } int @@ -387,8 +388,8 @@ PortManager::connect (const string& source, const string& destination) } else { /* neither port is known to us ...hand-off to the PortEngine */ - if (_impl) { - ret = _impl->connect (s, d); + if (_backend) { + ret = _backend->connect (s, d); } else { ret = -1; } @@ -423,8 +424,8 @@ PortManager::disconnect (const string& source, const string& destination) } else { /* neither port is known to us ...hand-off to the PortEngine */ - if (_impl) { - ret = _impl->disconnect (s, d); + if (_backend) { + ret = _backend->disconnect (s, d); } else { ret = -1; } @@ -516,59 +517,59 @@ PortManager::registration_callback () bool PortManager::can_request_input_monitoring () const { - if (!_impl) { + if (!_backend) { return false; } - return _impl->can_monitor_input (); + return _backend->can_monitor_input (); } void PortManager::request_input_monitoring (const string& name, bool yn) const { - if (!_impl) { + if (!_backend) { return; } - PortEngine::PortHandle ph = _impl->get_port_by_name (name); + PortEngine::PortHandle ph = _backend->get_port_by_name (name); if (ph) { - _impl->request_input_monitoring (ph, yn); + _backend->request_input_monitoring (ph, yn); } } void PortManager::ensure_input_monitoring (const string& name, bool yn) const { - if (!_impl) { + if (!_backend) { return; } - PortEngine::PortHandle ph = _impl->get_port_by_name (name); + PortEngine::PortHandle ph = _backend->get_port_by_name (name); if (ph) { - _impl->ensure_input_monitoring (ph, yn); + _backend->ensure_input_monitoring (ph, yn); } } uint32_t PortManager::port_name_size() const { - if (!_impl) { + if (!_backend) { return 0; } - return _impl->port_name_size (); + return _backend->port_name_size (); } string PortManager::my_name() const { - if (!_impl) { + if (!_backend) { return string(); } - return _impl->my_name(); + return _backend->my_name(); } int @@ -657,3 +658,10 @@ PortManager::fade_out (gain_t base_gain, gain_t gain_step, pframes_t nframes) } } } + +PortEngine& +PortManager::port_engine() +{ + assert (_backend); + return *_backend; +} -- cgit v1.2.3 From 83a826095deaddb90b8236a757c384aa6f120e71 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 13 Sep 2013 11:21:43 -0400 Subject: update JACK backend to use new inheritance structure for AudioBackend --- libs/backends/jack/jack_api.cc | 18 ---- libs/backends/jack/jack_audiobackend.cc | 50 ++++++----- libs/backends/jack/jack_audiobackend.h | 81 ++++++++++++++++- libs/backends/jack/jack_portengine.cc | 151 ++++++++++---------------------- libs/backends/jack/jack_portengine.h | 132 ---------------------------- 5 files changed, 148 insertions(+), 284 deletions(-) delete mode 100644 libs/backends/jack/jack_portengine.h diff --git a/libs/backends/jack/jack_api.cc b/libs/backends/jack/jack_api.cc index 0136161181..e02ccde2f1 100644 --- a/libs/backends/jack/jack_api.cc +++ b/libs/backends/jack/jack_api.cc @@ -19,12 +19,10 @@ #include "jack_connection.h" #include "jack_audiobackend.h" -#include "jack_portengine.h" using namespace ARDOUR; static boost::shared_ptr backend; -static boost::shared_ptr port_engine; static boost::shared_ptr jack_connection; static boost::shared_ptr @@ -41,20 +39,6 @@ backend_factory (AudioEngine& ae) return backend; } -static boost::shared_ptr -portengine_factory (PortManager& pm) -{ - if (!jack_connection) { - return boost::shared_ptr(); - } - - if (!port_engine) { - port_engine.reset (new JACKPortEngine (pm, jack_connection)); - } - - return port_engine; -} - static int instantiate (const std::string& arg1, const std::string& arg2) { @@ -70,7 +54,6 @@ instantiate (const std::string& arg1, const std::string& arg2) static int deinstantiate () { - port_engine.reset (); backend.reset (); jack_connection.reset (); @@ -95,7 +78,6 @@ extern "C" { instantiate, deinstantiate, backend_factory, - portengine_factory, already_configured, }; } diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index b41648cbe3..c9bc2ad8ac 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -36,7 +36,6 @@ #include "jack_audiobackend.h" #include "jack_connection.h" -#include "jack_portengine.h" #include "jack_utils.h" #include "i18n.h" @@ -67,6 +66,7 @@ JACKAudioBackend::JACKAudioBackend (AudioEngine& e, boost::shared_ptrConnected.connect_same_thread (jack_connection_connection, boost::bind (&JACKAudioBackend::when_connected_to_jack, this)); _jack_connection->Disconnected.connect_same_thread (disconnect_connection, boost::bind (&JACKAudioBackend::disconnected, this, _1)); } @@ -87,7 +87,7 @@ JACKAudioBackend::private_handle() const } bool -JACKAudioBackend::connected() const +JACKAudioBackend::available() const { return (private_handle() != 0); } @@ -158,7 +158,7 @@ JACKAudioBackend::available_sample_rates (const string& /*device*/) const { vector f; - if (connected()) { + if (available()) { f.push_back (sample_rate()); return f; } @@ -186,7 +186,7 @@ JACKAudioBackend::available_buffer_sizes (const string& /*device*/) const { vector s; - if (connected()) { + if (available()) { s.push_back (buffer_size()); return s; } @@ -223,7 +223,7 @@ JACKAudioBackend::available_output_channel_count (const string& /*device*/) cons int JACKAudioBackend::set_device_name (const string& dev) { - if (connected()) { + if (available()) { /* need to stop and restart JACK for this to work, at present */ return -1; } @@ -235,7 +235,7 @@ JACKAudioBackend::set_device_name (const string& dev) int JACKAudioBackend::set_sample_rate (float sr) { - if (!connected()) { + if (!available()) { _target_sample_rate = sr; return 0; } @@ -252,7 +252,7 @@ JACKAudioBackend::set_sample_rate (float sr) int JACKAudioBackend::set_buffer_size (uint32_t nframes) { - if (!connected()) { + if (!available()) { _target_buffer_size = nframes; return 0; } @@ -293,7 +293,7 @@ JACKAudioBackend::set_interleaved (bool yn) int JACKAudioBackend::set_input_channels (uint32_t cnt) { - if (connected()) { + if (available()) { return -1; } @@ -305,7 +305,7 @@ JACKAudioBackend::set_input_channels (uint32_t cnt) int JACKAudioBackend::set_output_channels (uint32_t cnt) { - if (connected()) { + if (available()) { return -1; } @@ -317,7 +317,7 @@ JACKAudioBackend::set_output_channels (uint32_t cnt) int JACKAudioBackend::set_systemic_input_latency (uint32_t l) { - if (connected()) { + if (available()) { return -1; } @@ -329,7 +329,7 @@ JACKAudioBackend::set_systemic_input_latency (uint32_t l) int JACKAudioBackend::set_systemic_output_latency (uint32_t l) { - if (connected()) { + if (available()) { return -1; } @@ -343,7 +343,7 @@ JACKAudioBackend::set_systemic_output_latency (uint32_t l) std::string JACKAudioBackend::device_name () const { - if (connected()) { + if (available()) { return "???"; } @@ -353,7 +353,7 @@ JACKAudioBackend::device_name () const float JACKAudioBackend::sample_rate () const { - if (connected()) { + if (available()) { return _current_sample_rate; } return _target_sample_rate; @@ -362,7 +362,7 @@ JACKAudioBackend::sample_rate () const uint32_t JACKAudioBackend::buffer_size () const { - if (connected()) { + if (available()) { return _current_buffer_size; } return _target_buffer_size; @@ -383,7 +383,7 @@ JACKAudioBackend::interleaved () const uint32_t JACKAudioBackend::input_channels () const { - if (connected()) { + if (available()) { return n_physical (JackPortIsInput).n_audio(); } return _target_input_channels; @@ -392,7 +392,7 @@ JACKAudioBackend::input_channels () const uint32_t JACKAudioBackend::output_channels () const { - if (connected()) { + if (available()) { return n_physical (JackPortIsOutput).n_audio(); } return _target_output_channels; @@ -467,7 +467,7 @@ JACKAudioBackend::setup_jack_startup_command () int JACKAudioBackend::start () { - if (!connected()) { + if (!available()) { if (!_jack_connection->server_running()) { setup_jack_startup_command (); @@ -738,9 +738,9 @@ JACKAudioBackend::jack_sync_callback (jack_transport_state_t state, jack_positio int JACKAudioBackend::_xrun_callback (void *arg) { - JACKAudioBackend* ae = static_cast (arg); - if (ae->connected()) { - ae->engine.Xrun (); /* EMIT SIGNAL */ + JACKAudioBackend* jab = static_cast (arg); + if (jab->available()) { + jab->engine.Xrun (); /* EMIT SIGNAL */ } return 0; } @@ -749,8 +749,8 @@ JACKAudioBackend::_xrun_callback (void *arg) void JACKAudioBackend::_session_callback (jack_session_event_t *event, void *arg) { - JACKAudioBackend* ae = static_cast (arg); - ARDOUR::Session* session = ae->engine.session(); + JACKAudioBackend* jab = static_cast (arg); + ARDOUR::Session* session = jab->engine.session(); if (session) { session->jack_session_event (event); @@ -942,8 +942,10 @@ JACKAudioBackend::n_physical (unsigned long flags) const if (ports) { for (uint32_t i = 0; ports[i]; ++i) { if (!strstr (ports[i], "Midi-Through")) { - DataType t (jack_port_type (jack_port_by_name (_priv_jack, ports[i]))); - c.set (t, c.get (t) + 1); + DataType t = port_data_type (jack_port_by_name (_priv_jack, ports[i])); + if (t != DataType::NIL) { + c.set (t, c.get (t) + 1); + } } } diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index 61f1bbb602..655c939c51 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -44,10 +44,12 @@ class JACKAudioBackend : public AudioBackend { public: JACKAudioBackend (AudioEngine& e, boost::shared_ptr); ~JACKAudioBackend (); + + /* AUDIOBACKEND API */ std::string name() const; void* private_handle() const; - bool connected() const; + bool available() const; bool is_realtime () const; bool requires_driver_selection() const; @@ -115,9 +117,68 @@ class JACKAudioBackend : public AudioBackend { void update_latencies (); static bool already_configured(); + + /* PORTENGINE API */ + + const std::string& my_name() const; + uint32_t port_name_size() const; + + int set_port_name (PortHandle, const std::string&); + std::string get_port_name (PortHandle) const; + PortHandle* get_port_by_name (const std::string&) const; + + int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const; + + DataType port_data_type (PortHandle) const; + + PortHandle register_port (const std::string& shortname, ARDOUR::DataType, ARDOUR::PortFlags); + void unregister_port (PortHandle); + + bool connected (PortHandle, bool process_callback_safe); + bool connected_to (PortHandle, const std::string&, bool process_callback_safe); + bool physically_connected (PortHandle, bool process_callback_safe); + int get_connections (PortHandle, std::vector&, bool process_callback_safe); + int connect (PortHandle, const std::string&); + + int disconnect (PortHandle, const std::string&); + int disconnect_all (PortHandle); + int connect (const std::string& src, const std::string& dst); + int disconnect (const std::string& src, const std::string& dst); + + /* MIDI */ + + int midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index); + int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size); + uint32_t get_midi_event_count (void* port_buffer); + void midi_clear (void* port_buffer); + + /* Monitoring */ + + bool can_monitor_input() const; + int request_input_monitoring (PortHandle, bool); + int ensure_input_monitoring (PortHandle, bool); + bool monitoring_input (PortHandle); + + /* Latency management + */ + + void set_latency_range (PortHandle, bool for_playback, LatencyRange); + LatencyRange get_latency_range (PortHandle, bool for_playback); + + /* Physical ports */ + + bool port_is_physical (PortHandle) const; + void get_physical_outputs (DataType type, std::vector&); + void get_physical_inputs (DataType type, std::vector&); + ChanCount n_physical_outputs () const; + ChanCount n_physical_inputs () const; + + /* Getting access to the data buffer for a port */ + + void* get_buffer (PortHandle, pframes_t); private: - boost::shared_ptr _jack_connection; //< shared with JACKPortEngine + boost::shared_ptr _jack_connection; bool _running; bool _freewheeling; std::map _raw_buffer_sizes; @@ -158,8 +219,6 @@ class JACKAudioBackend : public AudioBackend { void* process_thread (); static void* _start_process_thread (void*); - ChanCount n_physical (unsigned long) const; - void setup_jack_startup_command (); /* pffooo */ @@ -183,6 +242,20 @@ class JACKAudioBackend : public AudioBackend { mutable DriverDeviceMap all_devices; PBD::ScopedConnection disconnect_connection; + + /* PORTENGINE RELATED */ + + static int _graph_order_callback (void *arg); + static void _registration_callback (jack_port_id_t, int, void *); + static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); + + void connect_callback (jack_port_id_t, jack_port_id_t, int); + + ChanCount n_physical (unsigned long flags) const; + void get_physical (DataType type, unsigned long flags, std::vector& phy) const; + + void when_connected_to_jack (); + PBD::ScopedConnection jack_connection_connection; }; } // namespace diff --git a/libs/backends/jack/jack_portengine.cc b/libs/backends/jack/jack_portengine.cc index bd352a2f11..0d66f50448 100644 --- a/libs/backends/jack/jack_portengine.cc +++ b/libs/backends/jack/jack_portengine.cc @@ -22,8 +22,9 @@ #include "pbd/error.h" -#include "jack_portengine.h" +#include "jack_audiobackend.h" #include "jack_connection.h" +#include "jack/midiport.h" #include "ardour/port_manager.h" @@ -85,24 +86,8 @@ ardour_data_type_to_jack_port_type (DataType d) return ""; } -JACKPortEngine::JACKPortEngine (PortManager& pm, boost::shared_ptr jc) - : PortEngine (pm) - , _jack_connection (jc) -{ - _jack_connection->Connected.connect_same_thread (jack_connection_connection, boost::bind (&JACKPortEngine::connected_to_jack, this)); -} - -JACKPortEngine::~JACKPortEngine () -{ - /* a default destructor would do this, and so would this one, - but we'll make it explicit in case we ever need to debug - the lifetime of the JACKConnection - */ - _jack_connection.reset (); -} - void -JACKPortEngine::connected_to_jack () +JACKAudioBackend::when_connected_to_jack () { /* register callbacks for stuff that is our responsibility */ @@ -119,57 +104,45 @@ JACKPortEngine::connected_to_jack () jack_set_graph_order_callback (client, _graph_order_callback, this); } -void* -JACKPortEngine::private_handle() const -{ - return _jack_connection->jack(); -} - -bool -JACKPortEngine::connected() const -{ - return _jack_connection->connected(); -} - int -JACKPortEngine::set_port_name (PortHandle port, const std::string& name) +JACKAudioBackend::set_port_name (PortHandle port, const std::string& name) { return jack_port_set_name ((jack_port_t*) port, name.c_str()); } string -JACKPortEngine::get_port_name (PortHandle port) const +JACKAudioBackend::get_port_name (PortHandle port) const { return jack_port_name ((jack_port_t*) port); } PortEngine::PortHandle* -JACKPortEngine:: get_port_by_name (const std::string& name) const +JACKAudioBackend:: get_port_by_name (const std::string& name) const { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); return (PortHandle*) jack_port_by_name (_priv_jack, name.c_str()); } void -JACKPortEngine::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg) +JACKAudioBackend::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg) { - static_cast (arg)->manager.registration_callback (); + static_cast (arg)->manager.registration_callback (); } int -JACKPortEngine::_graph_order_callback (void *arg) +JACKAudioBackend::_graph_order_callback (void *arg) { - return static_cast (arg)->manager.graph_order_callback (); + return static_cast (arg)->manager.graph_order_callback (); } void -JACKPortEngine::_connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn, void* arg) +JACKAudioBackend::_connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn, void* arg) { - static_cast (arg)->connect_callback (id_a, id_b, conn); + static_cast (arg)->connect_callback (id_a, id_b, conn); } void -JACKPortEngine::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn) +JACKAudioBackend::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int conn) { if (manager.port_remove_in_progress()) { return; @@ -184,7 +157,7 @@ JACKPortEngine::connect_callback (jack_port_id_t id_a, jack_port_id_t id_b, int } bool -JACKPortEngine::connected (PortHandle port, bool process_callback_safe) +JACKAudioBackend::connected (PortHandle port, bool process_callback_safe) { bool ret = false; @@ -207,7 +180,7 @@ JACKPortEngine::connected (PortHandle port, bool process_callback_safe) } bool -JACKPortEngine::connected_to (PortHandle port, const std::string& other, bool process_callback_safe) +JACKAudioBackend::connected_to (PortHandle port, const std::string& other, bool process_callback_safe) { bool ret = false; const char** ports; @@ -232,7 +205,7 @@ JACKPortEngine::connected_to (PortHandle port, const std::string& other, bool pr } bool -JACKPortEngine::physically_connected (PortHandle p, bool process_callback_safe) +JACKAudioBackend::physically_connected (PortHandle p, bool process_callback_safe) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, false); jack_port_t* port = (jack_port_t*) p; @@ -262,7 +235,7 @@ JACKPortEngine::physically_connected (PortHandle p, bool process_callback_safe) } int -JACKPortEngine::get_connections (PortHandle port, vector& s, bool process_callback_safe) +JACKAudioBackend::get_connections (PortHandle port, vector& s, bool process_callback_safe) { const char** ports; @@ -284,19 +257,19 @@ JACKPortEngine::get_connections (PortHandle port, vector& s, bool proces } DataType -JACKPortEngine::port_data_type (PortHandle p) const +JACKAudioBackend::port_data_type (PortHandle p) const { return jack_port_type_to_ardour_data_type (jack_port_type ((jack_port_t*) p)); } const string& -JACKPortEngine::my_name() const +JACKAudioBackend::my_name() const { return _jack_connection->client_name(); } bool -JACKPortEngine::port_is_physical (PortHandle ph) const +JACKAudioBackend::port_is_physical (PortHandle ph) const { if (!ph) { return false; @@ -306,7 +279,7 @@ JACKPortEngine::port_is_physical (PortHandle ph) const } int -JACKPortEngine::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) const +JACKAudioBackend::get_ports (const string& port_name_pattern, DataType type, PortFlags flags, vector& s) const { GET_PRIVATE_JACK_POINTER_RET (_priv_jack,0); @@ -329,44 +302,19 @@ JACKPortEngine::get_ports (const string& port_name_pattern, DataType type, PortF } ChanCount -JACKPortEngine::n_physical (unsigned long flags) const -{ - ChanCount c; - - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, c); - - const char ** ports = jack_get_ports (_priv_jack, NULL, NULL, JackPortIsPhysical | flags); - - if (ports) { - for (uint32_t i = 0; ports[i]; ++i) { - if (!strstr (ports[i], "Midi-Through")) { - DataType t = port_data_type (jack_port_by_name (_priv_jack, ports[i])); - if (t != DataType::NIL) { - c.set (t, c.get (t) + 1); - } - } - } - - jack_free (ports); - } - - return c; -} - -ChanCount -JACKPortEngine::n_physical_inputs () const +JACKAudioBackend::n_physical_inputs () const { return n_physical (JackPortIsInput); } ChanCount -JACKPortEngine::n_physical_outputs () const +JACKAudioBackend::n_physical_outputs () const { return n_physical (JackPortIsOutput); } void -JACKPortEngine::get_physical (DataType type, unsigned long flags, vector& phy) const +JACKAudioBackend::get_physical (DataType type, unsigned long flags, vector& phy) const { GET_PRIVATE_JACK_POINTER (_priv_jack); const char ** ports; @@ -390,7 +338,7 @@ JACKPortEngine::get_physical (DataType type, unsigned long flags, vector * a physical input connector. */ void -JACKPortEngine::get_physical_inputs (DataType type, vector& ins) +JACKAudioBackend::get_physical_inputs (DataType type, vector& ins) { get_physical (type, JackPortIsOutput, ins); } @@ -399,14 +347,14 @@ JACKPortEngine::get_physical_inputs (DataType type, vector& ins) * a physical output connector. */ void -JACKPortEngine::get_physical_outputs (DataType type, vector& outs) +JACKAudioBackend::get_physical_outputs (DataType type, vector& outs) { get_physical (type, JackPortIsInput, outs); } bool -JACKPortEngine::can_monitor_input () const +JACKAudioBackend::can_monitor_input () const { GET_PRIVATE_JACK_POINTER_RET (_priv_jack,false); const char ** ports; @@ -421,32 +369,23 @@ JACKPortEngine::can_monitor_input () const } int -JACKPortEngine::request_input_monitoring (PortHandle port, bool yn) +JACKAudioBackend::request_input_monitoring (PortHandle port, bool yn) { return jack_port_request_monitor ((jack_port_t*) port, yn); } int -JACKPortEngine::ensure_input_monitoring (PortHandle port, bool yn) +JACKAudioBackend::ensure_input_monitoring (PortHandle port, bool yn) { return jack_port_ensure_monitor ((jack_port_t*) port, yn); } bool -JACKPortEngine::monitoring_input (PortHandle port) +JACKAudioBackend::monitoring_input (PortHandle port) { return jack_port_monitoring_input ((jack_port_t*) port); } - -pframes_t -JACKPortEngine::sample_time_at_cycle_start () -{ - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - return jack_last_frame_time (_priv_jack); -} - - PortEngine::PortHandle -JACKPortEngine::register_port (const std::string& shortname, ARDOUR::DataType type, ARDOUR::PortFlags flags) +JACKAudioBackend::register_port (const std::string& shortname, ARDOUR::DataType type, ARDOUR::PortFlags flags) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); return jack_port_register (_priv_jack, shortname.c_str(), @@ -456,20 +395,20 @@ JACKPortEngine::register_port (const std::string& shortname, ARDOUR::DataType ty } void -JACKPortEngine::unregister_port (PortHandle port) +JACKAudioBackend::unregister_port (PortHandle port) { GET_PRIVATE_JACK_POINTER (_priv_jack); (void) jack_port_unregister (_priv_jack, (jack_port_t*) port); } int -JACKPortEngine::connect (PortHandle port, const std::string& other) +JACKAudioBackend::connect (PortHandle port, const std::string& other) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); return jack_connect (_priv_jack, jack_port_name ((jack_port_t*) port), other.c_str()); } int -JACKPortEngine::connect (const std::string& src, const std::string& dst) +JACKAudioBackend::connect (const std::string& src, const std::string& dst) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); @@ -478,28 +417,28 @@ JACKPortEngine::connect (const std::string& src, const std::string& dst) } int -JACKPortEngine::disconnect (PortHandle port, const std::string& other) +JACKAudioBackend::disconnect (PortHandle port, const std::string& other) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); return jack_disconnect (_priv_jack, jack_port_name ((jack_port_t*) port), other.c_str()); } int -JACKPortEngine::disconnect (const std::string& src, const std::string& dst) +JACKAudioBackend::disconnect (const std::string& src, const std::string& dst) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); return jack_disconnect (_priv_jack, src.c_str(), dst.c_str()); } int -JACKPortEngine::disconnect_all (PortHandle port) +JACKAudioBackend::disconnect_all (PortHandle port) { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); return jack_port_disconnect (_priv_jack, (jack_port_t*) port); } int -JACKPortEngine::midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) +JACKAudioBackend::midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index) { jack_midi_event_t ev; int ret; @@ -514,25 +453,25 @@ JACKPortEngine::midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** bu } int -JACKPortEngine::midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size) +JACKAudioBackend::midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size) { return jack_midi_event_write (port_buffer, timestamp, buffer, size); } uint32_t -JACKPortEngine::get_midi_event_count (void* port_buffer) +JACKAudioBackend::get_midi_event_count (void* port_buffer) { return jack_midi_get_event_count (port_buffer); } void -JACKPortEngine::midi_clear (void* port_buffer) +JACKAudioBackend::midi_clear (void* port_buffer) { jack_midi_clear_buffer (port_buffer); } void -JACKPortEngine::set_latency_range (PortHandle port, bool for_playback, LatencyRange r) +JACKAudioBackend::set_latency_range (PortHandle port, bool for_playback, LatencyRange r) { jack_latency_range_t range; @@ -543,7 +482,7 @@ JACKPortEngine::set_latency_range (PortHandle port, bool for_playback, LatencyRa } LatencyRange -JACKPortEngine::get_latency_range (PortHandle port, bool for_playback) +JACKAudioBackend::get_latency_range (PortHandle port, bool for_playback) { jack_latency_range_t range; LatencyRange ret; @@ -557,13 +496,13 @@ JACKPortEngine::get_latency_range (PortHandle port, bool for_playback) } void* -JACKPortEngine::get_buffer (PortHandle port, pframes_t nframes) +JACKAudioBackend::get_buffer (PortHandle port, pframes_t nframes) { return jack_port_get_buffer ((jack_port_t*) port, nframes); } uint32_t -JACKPortEngine::port_name_size() const +JACKAudioBackend::port_name_size() const { return jack_port_name_size (); } diff --git a/libs/backends/jack/jack_portengine.h b/libs/backends/jack/jack_portengine.h deleted file mode 100644 index 0e1eb48c5c..0000000000 --- a/libs/backends/jack/jack_portengine.h +++ /dev/null @@ -1,132 +0,0 @@ -/* - 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. - -*/ - -#ifndef __libardour_jack_portengine_h__ -#define __libardour_jack_portengine_h__ - -#include -#include - -#include - -#include -#include - -#include - -#include "pbd/signals.h" - -#include "ardour/port_engine.h" -#include "ardour/types.h" - -namespace ARDOUR { - -class JackConnection; - -class JACKPortEngine : public PortEngine -{ - public: - JACKPortEngine (PortManager&, boost::shared_ptr); - ~JACKPortEngine(); - - void* private_handle() const; - bool connected() const; - - const std::string& my_name() const; - - uint32_t port_name_size() const; - - int set_port_name (PortHandle, const std::string&); - std::string get_port_name (PortHandle) const; - PortHandle* get_port_by_name (const std::string&) const; - - int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector&) const; - - DataType port_data_type (PortHandle) const; - - PortHandle register_port (const std::string& shortname, ARDOUR::DataType, ARDOUR::PortFlags); - void unregister_port (PortHandle); - - bool connected (PortHandle, bool process_callback_safe); - bool connected_to (PortHandle, const std::string&, bool process_callback_safe); - bool physically_connected (PortHandle, bool process_callback_safe); - int get_connections (PortHandle, std::vector&, bool process_callback_safe); - int connect (PortHandle, const std::string&); - - int disconnect (PortHandle, const std::string&); - int disconnect_all (PortHandle); - int connect (const std::string& src, const std::string& dst); - int disconnect (const std::string& src, const std::string& dst); - - /* MIDI */ - - int midi_event_get (pframes_t& timestamp, size_t& size, uint8_t** buf, void* port_buffer, uint32_t event_index); - int midi_event_put (void* port_buffer, pframes_t timestamp, const uint8_t* buffer, size_t size); - uint32_t get_midi_event_count (void* port_buffer); - void midi_clear (void* port_buffer); - - /* Monitoring */ - - bool can_monitor_input() const; - int request_input_monitoring (PortHandle, bool); - int ensure_input_monitoring (PortHandle, bool); - bool monitoring_input (PortHandle); - - /* Latency management - */ - - void set_latency_range (PortHandle, bool for_playback, LatencyRange); - LatencyRange get_latency_range (PortHandle, bool for_playback); - - /* Physical ports */ - - bool port_is_physical (PortHandle) const; - void get_physical_outputs (DataType type, std::vector&); - void get_physical_inputs (DataType type, std::vector&); - ChanCount n_physical_outputs () const; - ChanCount n_physical_inputs () const; - - /* Getting access to the data buffer for a port */ - - void* get_buffer (PortHandle, pframes_t); - - /* Miscellany */ - - pframes_t sample_time_at_cycle_start (); - - private: - boost::shared_ptr _jack_connection; - - static int _graph_order_callback (void *arg); - static void _registration_callback (jack_port_id_t, int, void *); - static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *); - - void connect_callback (jack_port_id_t, jack_port_id_t, int); - - ChanCount n_physical (unsigned long flags) const; - void get_physical (DataType type, unsigned long flags, std::vector& phy) const; - - PBD::ScopedConnection jack_connection_connection; - void connected_to_jack (); - -}; - -} // namespace - -#endif /* __libardour_jack_portengine_h__ */ -- cgit v1.2.3 From dce6b71e825397ff086562b6177453369e48cec9 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 13 Sep 2013 12:32:50 -0400 Subject: use visibility control on JACK audio backend, so that we can import this change into windows branch --- libs/ardour/ardour/audio_backend.h | 8 +++++++ libs/ardour/ardour/visibility.h | 44 ++++++++++++++++++++++++++++++++++++++ libs/ardour/audioengine.cc | 10 +++++---- libs/backends/jack/jack_api.cc | 24 ++++++++------------- libs/backends/jack/wscript | 5 +++-- 5 files changed, 70 insertions(+), 21 deletions(-) create mode 100644 libs/ardour/ardour/visibility.h diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index d9561a62e5..4d57f0b43d 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -31,6 +31,14 @@ #include "ardour/types.h" #include "ardour/audioengine.h" #include "ardour/port_engine.h" +#include "ardour/visibility.h" + +#ifdef ARDOURBACKEND_DLL_EXPORTS // defined if we are building the ARDOUR Panners DLLs (instead of using them) + #define ARDOURBACKEND_API LIBARDOUR_HELPER_DLL_EXPORT +#else + #define ARDOURBACKEND_API LIBARDOUR_HELPER_DLL_IMPORT +#endif +#define ARDOURBACKEND_LOCAL LIBARDOUR_HELPER_DLL_LOCAL namespace ARDOUR { diff --git a/libs/ardour/ardour/visibility.h b/libs/ardour/ardour/visibility.h new file mode 100644 index 0000000000..09287b877d --- /dev/null +++ b/libs/ardour/ardour/visibility.h @@ -0,0 +1,44 @@ +/* + 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. + +*/ + +#ifndef __libardour_visibility_h__ +#define __libardour_visibility_h__ + +/* _WIN32 is defined by most compilers targetting Windows, but within the + * ardour source tree, we also define COMPILER_MSVC or COMPILER_MINGW depending + * on how a Windows build is built. + */ + +#if defined _WIN32 || defined __CYGWIN__ || defined(COMPILER_MSVC) || defined(COMPILER_MINGW) + #define LIBARDOUR_HELPER_DLL_IMPORT __declspec(dllimport) + #define LIBARDOUR_HELPER_DLL_EXPORT __declspec(dllexport) + #define LIBARDOUR_HELPER_DLL_LOCAL +#else + #if __GNUC__ >= 4 + #define LIBARDOUR_HELPER_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBARDOUR_HELPER_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBARDOUR_HELPER_DLL_LOCAL __attribute__ ((visibility ("hidden"))) + #else + #define LIBARDOUR_HELPER_DLL_IMPORT + #define LIBARDOUR_HELPER_DLL_EXPORT + #define LIBARDOUR_HELPER_DLL_LOCAL + #endif +#endif + +#endif /* __libardour_visibility_h__ */ diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 73dee76a92..567f3c7671 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -505,7 +505,8 @@ AudioEngine::backend_discover (const string& path) { Glib::Module module (path); AudioBackendInfo* info; - void* sym = 0; + AudioBackendInfo* (*dfunc)(void); + void* func = 0; if (!module) { error << string_compose(_("AudioEngine: cannot load module \"%1\" (%2)"), path, @@ -513,15 +514,16 @@ AudioEngine::backend_discover (const string& path) return 0; } - if (!module.get_symbol ("descriptor", sym)) { - error << string_compose(_("AudioEngine: backend at \"%1\" has no descriptor."), path) << endmsg; + if (!module.get_symbol ("descriptor", func)) { + error << string_compose(_("AudioEngine: backend at \"%1\" has no descriptor function."), path) << endmsg; error << Glib::Module::get_last_error() << endmsg; return 0; } module.make_resident (); - info = (AudioBackendInfo*) sym; + dfunc = (AudioBackendInfo* (*)(void))func; + info = dfunc(); return info; } diff --git a/libs/backends/jack/jack_api.cc b/libs/backends/jack/jack_api.cc index e02ccde2f1..836acfda11 100644 --- a/libs/backends/jack/jack_api.cc +++ b/libs/backends/jack/jack_api.cc @@ -66,19 +66,13 @@ already_configured () return JackConnection::server_running (); } -extern "C" { - - - /* functions looked up using dlopen-and-cousins, and so naming scope - * must be non-mangled. - */ - - ARDOUR::AudioBackendInfo descriptor = { - "JACK", - instantiate, - deinstantiate, - backend_factory, - already_configured, - }; -} +static ARDOUR::AudioBackendInfo _descriptor = { + "JACK", + instantiate, + deinstantiate, + backend_factory, + already_configured, +}; + +extern "C" ARDOURBACKEND_API ARDOUR::AudioBackendInfo* descriptor() { return &_descriptor; } diff --git a/libs/backends/jack/wscript b/libs/backends/jack/wscript index 3c47f3a652..98c39c7b16 100644 --- a/libs/backends/jack/wscript +++ b/libs/backends/jack/wscript @@ -38,8 +38,9 @@ def build(bld): obj.use = 'ardour libpbd' obj.vnum = JACKBACKEND_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'backends') - obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"'] - + obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"', + 'ARDOURBACKEND_DLL_EXPORTS' + ] # # device discovery code in the jack backend needs ALSA -- cgit v1.2.3 From 6b23417ae0a93e5ff26477a62e3abcbcaa5efd64 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 14 Sep 2013 16:17:24 -0400 Subject: move creation of Graph till after we have the engine running, since we need access to the backend --- libs/ardour/session_state.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 7914b21565..e847ba45ce 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -177,13 +177,6 @@ Session::pre_engine_init (string fullpath) set_history_depth (Config->get_history_depth()); - if (how_many_dsp_threads () > 1) { - /* For now, only create the graph if we are using >1 DSP threads, as - it is a bit slower than the old code with 1 thread. - */ - _process_graph.reset (new Graph (*this)); - } - /* default: assume simple stereo speaker configuration */ _speakers->setup_default_speakers (2); @@ -217,6 +210,13 @@ Session::post_engine_init () set_block_size (_engine.samples_per_cycle()); set_frame_rate (_engine.sample_rate()); + if (how_many_dsp_threads () > 1) { + /* For now, only create the graph if we are using >1 DSP threads, as + it is a bit slower than the old code with 1 thread. + */ + _process_graph.reset (new Graph (*this)); + } + n_physical_outputs = _engine.n_physical_outputs (); n_physical_inputs = _engine.n_physical_inputs (); -- cgit v1.2.3 From 76a08ad9e95498bcaf65974fb68f03c2bf0167a0 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 14 Sep 2013 16:17:49 -0400 Subject: fix return value from thread creation function when not connected to JACK --- libs/backends/jack/jack_audiobackend.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index c9bc2ad8ac..b3dbdcae71 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -44,8 +44,6 @@ using namespace ARDOUR; using namespace PBD; using std::string; using std::vector; -using std::cerr; -using std::endl; #define GET_PRIVATE_JACK_POINTER(localvar) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return; } #define GET_PRIVATE_JACK_POINTER_RET(localvar,r) jack_client_t* localvar = _jack_connection->jack(); if (!(localvar)) { return r; } @@ -780,7 +778,7 @@ JACKAudioBackend::_latency_callback (jack_latency_callback_mode_t mode, void* ar int JACKAudioBackend::create_process_thread (boost::function f, pthread_t* thread, size_t stacksize) { - GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, -1); ThreadData* td = new ThreadData (this, f, stacksize); if (jack_client_create_thread (_priv_jack, thread, jack_client_real_time_priority (_priv_jack), -- cgit v1.2.3 From f5191e62578bd2ba2b3e2adf8cfc3634aa4b929c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 14 Sep 2013 16:18:17 -0400 Subject: cerr output when JACK halt callback is executed --- libs/backends/jack/jack_connection.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libs/backends/jack/jack_connection.cc b/libs/backends/jack/jack_connection.cc index da0127c584..07af4b8ade 100644 --- a/libs/backends/jack/jack_connection.cc +++ b/libs/backends/jack/jack_connection.cc @@ -32,6 +32,8 @@ using namespace ARDOUR; using namespace PBD; using std::string; using std::vector; +using std::cerr; +using std::endl; static void jack_halted_callback (void* arg) { @@ -137,7 +139,7 @@ JackConnection::close () { GET_PRIVATE_JACK_POINTER_RET (_jack, -1); - if (_priv_jack) { + if (_priv_jack) { int ret = jack_client_close (_priv_jack); _jack = 0; Disconnected (""); /* EMIT SIGNAL */ @@ -151,6 +153,7 @@ void JackConnection::halted_callback () { _jack = 0; + cerr << "JACK HALTED\n"; Disconnected (""); } @@ -158,6 +161,7 @@ void JackConnection::halted_info_callback (jack_status_t /*status*/, const char* reason) { _jack = 0; + cerr << "JACK HALTED: " << reason << endl; Disconnected (reason); } -- cgit v1.2.3