diff options
Diffstat (limited to 'libs')
247 files changed, 7015 insertions, 11133 deletions
diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 175fc5bbf3..cdfd4971c8 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -32,14 +32,13 @@ #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 + #define ARDOURBACKEND_API LIBARDOUR_DLL_EXPORT #else - #define ARDOURBACKEND_API LIBARDOUR_HELPER_DLL_IMPORT + #define ARDOURBACKEND_API LIBARDOUR_DLL_IMPORT #endif -#define ARDOURBACKEND_LOCAL LIBARDOUR_HELPER_DLL_LOCAL +#define ARDOURBACKEND_LOCAL LIBARDOUR_DLL_LOCAL namespace ARDOUR { @@ -118,6 +117,17 @@ class LIBARDOUR_API AudioBackend : public PortEngine { * at any time. */ virtual std::vector<float> available_sample_rates (const std::string& device) const = 0; + + /* Returns the default sample rate that will be shown to the user when + * configuration options are first presented. If the derived class + * needs or wants to override this, it can. It also MUST override this + * if there is any chance that an SR of 44.1kHz is not in the list + * returned by available_sample_rates() + */ + virtual float default_sample_rate () const { + return 44100.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 @@ -127,6 +137,16 @@ class LIBARDOUR_API AudioBackend : public PortEngine { */ virtual std::vector<uint32_t> available_buffer_sizes (const std::string& device) const = 0; + /* Returns the default buffer size that will be shown to the user when + * configuration options are first presented. If the derived class + * needs or wants to override this, it can. It also MUST override this + * if there is any chance that a buffer size of 1024 is not in the list + * returned by available_buffer_sizes() + */ + virtual uint32_t default_buffer_size () const { + return 1024; + } + /** 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 @@ -262,17 +282,7 @@ class LIBARDOUR_API AudioBackend : public PortEngine { virtual std::string midi_option () const = 0; /* State Control */ - - /* non-virtual method to avoid possible overrides of default - * parameters. See Scott Meyers or other books on C++ to - * understand this pattern, or possibly just this: - * - * http://stackoverflow.com/questions/12139786/good-pratice-default-arguments-for-pure-virtual-method - */ - int start (bool for_latency_measurement=false) { - return _start (for_latency_measurement); - } - + /** Start using the device named in the most recent call * to set_device(), with the parameters set by various * the most recent calls to set_sample_rate() etc. etc. @@ -288,8 +298,24 @@ class LIBARDOUR_API AudioBackend : public PortEngine { * any existing systemic latency settings. * * Return zero if successful, negative values otherwise. - */ - virtual int _start (bool for_latency_measurement) = 0; + * + * + * + * + * Why is this non-virtual but ::_start() is virtual ? + * Virtual methods with default parameters create possible ambiguity + * because a derived class may implement the same method with a different + * type or value of default parameter. + * + * So we make this non-virtual method to avoid possible overrides of + * default parameters. See Scott Meyers or other books on C++ to understand + * this pattern, or possibly just this: + * + * http://stackoverflow.com/questions/12139786/good-pratice-default-arguments-for-pure-virtual-method + */ + int start (bool for_latency_measurement=false) { + return _start (for_latency_measurement); + } /** Stop using the device currently in use. * @@ -307,20 +333,6 @@ class LIBARDOUR_API AudioBackend : public PortEngine { */ 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 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 - */ - 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. Once process_callback() has returned, it @@ -349,7 +361,7 @@ class LIBARDOUR_API AudioBackend : public PortEngine { * Implementations can feel free to smooth the values returned over * time (e.g. high pass filtering, or its equivalent). */ - virtual float cpu_load() const = 0; + virtual float dsp_load() const = 0; /* Transport Control (JACK is the only audio API that currently offers the concept of shared transport control) @@ -458,8 +470,25 @@ class LIBARDOUR_API AudioBackend : public PortEngine { virtual void update_latencies () = 0; + /** Set @param speed and @param position to the current speed and position + * indicated by some transport sync signal. Return whether the current + * transport state is pending, or finalized. + * + * Derived classes only need implement this if they provide some way to + * sync to a transport sync signal (e.g. Sony 9 Pin) that is not + * handled by Ardour itself (LTC and MTC are both handled by Ardour). + * The canonical example is JACK Transport. + */ + virtual bool speed_and_position (double& speed, framepos_t& position) { + speed = 0.0; + position = 0; + return false; + } + protected: AudioEngine& engine; + + virtual int _start (bool for_latency_measurement) = 0; }; struct LIBARDOUR_API AudioBackendInfo { diff --git a/libs/ardour/ardour/audio_buffer.h b/libs/ardour/ardour/audio_buffer.h index 58157a7919..a32e679b69 100644 --- a/libs/ardour/ardour/audio_buffer.h +++ b/libs/ardour/ardour/audio_buffer.h @@ -33,17 +33,7 @@ public: AudioBuffer(size_t capacity); ~AudioBuffer(); - void silence (framecnt_t len, framecnt_t offset = 0) { - if (!_silent) { - assert(_capacity > 0); - assert(offset + len <= _capacity); - memset(_data + offset, 0, sizeof (Sample) * len); - if (len == _capacity) { - _silent = true; - } - } - _written = true; - } + void silence (framecnt_t len, framecnt_t offset = 0); /** Read @a len frames @a src starting at @a src_offset into self starting at @ dst_offset*/ void read_from (const Sample* src, framecnt_t len, framecnt_t dst_offset = 0, framecnt_t src_offset = 0) { @@ -204,10 +194,11 @@ public: Sample* data (framecnt_t offset = 0) { assert(offset <= _capacity); + _silent = false; return _data + offset; } - bool check_silence (pframes_t, pframes_t&) const; + bool check_silence (pframes_t, bool, pframes_t&) const; void prepare () { _written = false; _silent = false; } bool written() const { return _written; } diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h index e769b9eec1..75954e6ca9 100644 --- a/libs/ardour/ardour/audioengine.h +++ b/libs/ardour/ardour/audioengine.h @@ -86,9 +86,8 @@ public: int start (bool for_latency_measurement=false); int stop (bool for_latency_measurement=false); - int pause (); int freewheel (bool start_stop); - float get_cpu_load() const ; + float get_dsp_load() const ; void transport_start (); void transport_stop (); TransportState transport_state (); diff --git a/libs/ardour/ardour/audiofile_tagger.h b/libs/ardour/ardour/audiofile_tagger.h index 0c551ecbc9..88789f9036 100644 --- a/libs/ardour/ardour/audiofile_tagger.h +++ b/libs/ardour/ardour/audiofile_tagger.h @@ -23,9 +23,9 @@ #include <string> -#include "taglib/tag.h" -#include "taglib/toolkit/taglib.h" -#include "taglib/ogg/xiphcomment.h" +#include <taglib/tag.h> +#include <taglib/taglib.h> +#include <taglib/xiphcomment.h> #include "ardour/libardour_visibility.h" diff --git a/libs/ardour/ardour/buffer.h b/libs/ardour/ardour/buffer.h index 479d739be0..d6f333a5a1 100644 --- a/libs/ardour/ardour/buffer.h +++ b/libs/ardour/ardour/buffer.h @@ -62,7 +62,6 @@ public: DataType type() const { return _type; } bool silent() const { return _silent; } - void set_is_silent(bool yn) { _silent = yn; } /** Reallocate the buffer used internally to handle at least @a size_t units of data. * @@ -81,8 +80,8 @@ public: virtual void merge_from (const Buffer& src, framecnt_t len, framecnt_t dst_offset = 0, framecnt_t src_offset = 0) = 0; protected: - Buffer(DataType type, size_t capacity) - : _type(type), _capacity(capacity), _size(0), _silent(true) + Buffer(DataType type) + : _type(type), _capacity(0), _size(0), _silent (true) {} DataType _type; diff --git a/libs/ardour/ardour/buffer_set.h b/libs/ardour/ardour/buffer_set.h index 617feae269..34e26d5b3a 100644 --- a/libs/ardour/ardour/buffer_set.h +++ b/libs/ardour/ardour/buffer_set.h @@ -87,7 +87,6 @@ public: const ChanCount& count() const { return _count; } ChanCount& count() { return _count; } - void set_is_silent(bool yn); void silence (framecnt_t nframes, framecnt_t offset); bool is_mirror() const { return _is_mirror; } diff --git a/libs/ardour/ardour/control_protocol_manager.h b/libs/ardour/ardour/control_protocol_manager.h index 98494476f9..0c8c9014f0 100644 --- a/libs/ardour/ardour/control_protocol_manager.h +++ b/libs/ardour/ardour/control_protocol_manager.h @@ -65,8 +65,8 @@ class LIBARDOUR_API ControlProtocolManager : public PBD::Stateful, public ARDOUR void load_mandatory_protocols (); void midi_connectivity_established (); - ControlProtocol* instantiate (ControlProtocolInfo&); - int teardown (ControlProtocolInfo&); + int activate (ControlProtocolInfo&); + int deactivate (ControlProtocolInfo&); std::list<ControlProtocolInfo*> control_protocol_info; @@ -89,6 +89,8 @@ class LIBARDOUR_API ControlProtocolManager : public PBD::Stateful, public ARDOUR int control_protocol_discover (std::string path); ControlProtocolDescriptor* get_descriptor (std::string path); ControlProtocolInfo* cpi_by_name (std::string); + ControlProtocol* instantiate (ControlProtocolInfo&); + int teardown (ControlProtocolInfo&); }; } // namespace diff --git a/libs/ardour/ardour/cycle_timer.h b/libs/ardour/ardour/cycle_timer.h index 0335375c8a..cab389ee69 100644 --- a/libs/ardour/ardour/cycle_timer.h +++ b/libs/ardour/ardour/cycle_timer.h @@ -49,6 +49,8 @@ class LIBARDOUR_API CycleTimer { } _entry = get_cycles(); } +#else + (void) name; #endif } diff --git a/libs/ardour/ardour/filesystem_paths.h b/libs/ardour/ardour/filesystem_paths.h index b96cd05137..0bf25c5153 100644 --- a/libs/ardour/ardour/filesystem_paths.h +++ b/libs/ardour/ardour/filesystem_paths.h @@ -43,14 +43,14 @@ namespace ARDOUR { * @return the search path to be used when looking for per-system * configuration files. This may include user configuration files. */ - LIBARDOUR_API PBD::SearchPath ardour_config_search_path (); + LIBARDOUR_API PBD::Searchpath ardour_config_search_path (); /** * @return the search path to be used when looking for data files * that could be shared by systems (h/w and configuration independent * files, such as icons, XML files, etc) */ - LIBARDOUR_API PBD::SearchPath ardour_data_search_path (); + LIBARDOUR_API PBD::Searchpath ardour_data_search_path (); } // namespace ARDOUR diff --git a/libs/ardour/ardour/iec1ppmdsp.h b/libs/ardour/ardour/iec1ppmdsp.h index 3e0637716d..b6f1501db7 100644 --- a/libs/ardour/ardour/iec1ppmdsp.h +++ b/libs/ardour/ardour/iec1ppmdsp.h @@ -29,11 +29,11 @@ public: Iec1ppmdsp (void); ~Iec1ppmdsp (void); - void process (float *p, int n); + void process (float const *p, int n); float read (void); void reset (); - static void init (float fsamp); + static void init (float fsamp); private: diff --git a/libs/ardour/ardour/iec2ppmdsp.h b/libs/ardour/ardour/iec2ppmdsp.h index aa5a90cdb9..6a3852da1d 100644 --- a/libs/ardour/ardour/iec2ppmdsp.h +++ b/libs/ardour/ardour/iec2ppmdsp.h @@ -29,11 +29,11 @@ public: Iec2ppmdsp (void); ~Iec2ppmdsp (void); - void process (float *p, int n); + void process (float const *p, int n); float read (void); void reset (); - static void init (float fsamp); + static void init (float fsamp); private: diff --git a/libs/ardour/ardour/kmeterdsp.h b/libs/ardour/ardour/kmeterdsp.h index 374afff50e..7fe2b9d11b 100644 --- a/libs/ardour/ardour/kmeterdsp.h +++ b/libs/ardour/ardour/kmeterdsp.h @@ -29,7 +29,7 @@ public: Kmeterdsp (void); ~Kmeterdsp (void); - void process (float *p, int n); + void process (float const *p, int n); float read (); void reset (); diff --git a/libs/ardour/ardour/libardour_visibility.h b/libs/ardour/ardour/libardour_visibility.h index ed5cacf261..917307732c 100644 --- a/libs/ardour/ardour/libardour_visibility.h +++ b/libs/ardour/ardour/libardour_visibility.h @@ -20,37 +20,26 @@ #ifndef __libardour_libardour_visibility_h__ #define __libardour_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) +#if defined(COMPILER_MSVC) #define LIBARDOUR_DLL_IMPORT __declspec(dllimport) #define LIBARDOUR_DLL_EXPORT __declspec(dllexport) #define LIBARDOUR_DLL_LOCAL #else - #if __GNUC__ >= 4 - #define LIBARDOUR_DLL_IMPORT __attribute__ ((visibility ("default"))) - #define LIBARDOUR_DLL_EXPORT __attribute__ ((visibility ("default"))) - #define LIBARDOUR_DLL_LOCAL __attribute__ ((visibility ("hidden"))) - #else - #define LIBARDOUR_DLL_IMPORT - #define LIBARDOUR_DLL_EXPORT - #define LIBARDOUR_DLL_LOCAL - #endif + #define LIBARDOUR_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBARDOUR_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBARDOUR_DLL_LOCAL __attribute__ ((visibility ("hidden"))) #endif -#ifdef LIBARDOUR_DLL // libardour is a DLL -#ifdef LIBARDOUR_DLL_EXPORTS // defined if we are building the libardour DLL (instead of using it) - #define LIBARDOUR_API LIBARDOUR_DLL_EXPORT -#else - #define LIBARDOUR_API LIBARDOUR_DLL_IMPORT -#endif -#define LIBARDOUR_LOCAL LIBARDOUR_DLL_LOCAL -#else /* static lib, not DLL */ +#ifdef LIBARDOUR_STATIC // libardour is not a DLL #define LIBARDOUR_API #define LIBARDOUR_LOCAL +#else + #ifdef LIBARDOUR_DLL_EXPORTS // defined if we are building the libardour DLL (instead of using it) + #define LIBARDOUR_API LIBARDOUR_DLL_EXPORT + #else + #define LIBARDOUR_API LIBARDOUR_DLL_IMPORT + #endif + #define LIBARDOUR_LOCAL LIBARDOUR_DLL_LOCAL #endif #endif /* __libardour_libardour_visibility_h__ */ diff --git a/libs/ardour/ardour/midi_model.h b/libs/ardour/ardour/midi_model.h index 98743969f7..e76a993b41 100644 --- a/libs/ardour/ardour/midi_model.h +++ b/libs/ardour/ardour/midi_model.h @@ -222,6 +222,8 @@ public: uint8_t new_program; int new_bank; }; + + Change() : patch_id (-1) {} }; typedef std::list<Change> ChangeList; diff --git a/libs/ardour/ardour/midi_ui.h b/libs/ardour/ardour/midi_ui.h index e99d6bf499..85a8a15e21 100644 --- a/libs/ardour/ardour/midi_ui.h +++ b/libs/ardour/ardour/midi_ui.h @@ -52,8 +52,6 @@ class LIBARDOUR_API MidiControlUI : public AbstractUI<MidiUIRequest> static MidiControlUI* instance() { return _instance; } - static BaseUI::RequestType PortChange; - void change_midi_ports (); protected: @@ -64,7 +62,6 @@ class LIBARDOUR_API MidiControlUI : public AbstractUI<MidiUIRequest> typedef std::list<GSource*> PortSources; PortSources port_sources; ARDOUR::Session& _session; - PBD::ScopedConnection rebind_connection; bool midi_input_handler (Glib::IOCondition, AsyncMIDIPort*); void reset_ports (); diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h index 7dd9de6e0a..48f583c185 100644 --- a/libs/ardour/ardour/panner.h +++ b/libs/ardour/ardour/panner.h @@ -34,14 +34,18 @@ #include "ardour/types.h" #include "ardour/automation_control.h" #include "ardour/automatable.h" -#include "ardour/visibility.h" -#ifdef ARDOURPANNER_DLL_EXPORTS // defined if we are building the ARDOUR Panners DLLs (instead of using them) - #define ARDOURPANNER_API LIBARDOUR_HELPER_DLL_EXPORT -#else - #define ARDOURPANNER_API LIBARDOUR_HELPER_DLL_IMPORT -#endif -#define ARDOURPANNER_LOCAL LIBARDOUR_HELPER_DLL_LOCAL + +/* This section is for actual panners to use. They will include this file, + * declare ARDOURPANNER_DLL_EXPORTS during compilation, and ... voila. + */ + +#ifdef ARDOURPANNER_DLL_EXPORTS // defined if we are building a panner implementation + #define ARDOURPANNER_API LIBARDOUR_DLL_EXPORT + #else + #define ARDOURPANNER_API LIBARDOUR_DLL_IMPORT + #endif +#define ARDOURPANNER_LOCAL LIBARDOUR_DLL_LOCAL namespace ARDOUR { @@ -183,8 +187,11 @@ protected: extern "C" { struct LIBARDOUR_API PanPluginDescriptor { std::string name; + std::string panner_uri; + std::string gui_uri; int32_t in; int32_t out; + uint32_t priority; ARDOUR::Panner* (*factory)(boost::shared_ptr<ARDOUR::Pannable>, boost::shared_ptr<ARDOUR::Speakers>); }; } diff --git a/libs/ardour/ardour/panner_manager.h b/libs/ardour/ardour/panner_manager.h index 1db4a27e52..80f8e8010a 100644 --- a/libs/ardour/ardour/panner_manager.h +++ b/libs/ardour/ardour/panner_manager.h @@ -50,7 +50,8 @@ public: void discover_panners (); std::list<PannerInfo*> panner_info; - PannerInfo* select_panner (ChanCount in, ChanCount out); + PannerInfo* select_panner (ChanCount in, ChanCount out, std::string const uri = ""); + PannerInfo* get_by_uri (std::string uri); private: PannerManager(); diff --git a/libs/ardour/ardour/panner_shell.h b/libs/ardour/ardour/panner_shell.h index b78573212a..76df20489f 100644 --- a/libs/ardour/ardour/panner_shell.h +++ b/libs/ardour/ardour/panner_shell.h @@ -37,6 +37,7 @@ namespace ARDOUR { class Session; +class Route; class Panner; class BufferSet; class AudioBuffer; @@ -71,11 +72,23 @@ public: bool bypassed () const; void set_bypassed (bool); + std::string current_panner_uri() const { return _current_panner_uri; } + std::string user_selected_panner_uri() const { return _user_selected_panner_uri; } + std::string panner_gui_uri() const { return _panner_gui_uri; } + private: + friend class Route; void distribute_no_automation (BufferSet& src, BufferSet& dest, pframes_t nframes, gain_t gain_coeff); + bool set_user_selected_panner_uri (std::string const uri); + boost::shared_ptr<Panner> _panner; boost::shared_ptr<Pannable> _pannable; bool _bypassed; + + std::string _current_panner_uri; + std::string _user_selected_panner_uri; + std::string _panner_gui_uri; + bool _force_reselect; }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h index 7043460d52..a69b87efbd 100644 --- a/libs/ardour/ardour/plugin.h +++ b/libs/ardour/ardour/plugin.h @@ -97,12 +97,23 @@ class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public Latent struct ParameterDescriptor { - /* XXX: it would probably be nice if this initialised everything */ ParameterDescriptor () - : enumeration (false) + : integer_step(false) + , toggled (false) + , logarithmic (false) + , sr_dependent (false) + , lower (0) + , upper (0) + , step (0) + , smallstep (0) + , largestep (0) + , min_unbound (0) + , max_unbound (0) + , enumeration (false) + , midinote(false) {} - /* essentially a union of LADSPA and VST info */ + /* essentially a union of LADSPA, VST and LV2 info */ bool integer_step; bool toggled; @@ -117,6 +128,7 @@ class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public Latent bool min_unbound; bool max_unbound; bool enumeration; + bool midinote; ///< only used if integer_step is also true }; XMLNode& get_state (); diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index 51e1356d12..627c847513 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -123,8 +123,7 @@ class LIBARDOUR_API PluginInsert : public Processor } PBD::Signal2<void,BufferSet*, BufferSet*> AnalysisDataGathered; - /** Emitted when the return value of splitting () has changed */ - PBD::Signal0<void> SplittingChanged; + PBD::Signal0<void> PluginIoReConfigure; /** Enumeration of the ways in which we can match our insert's * IO to that of the plugin(s). diff --git a/libs/ardour/ardour/port_engine.h b/libs/ardour/ardour/port_engine.h index 16d3da3576..62996b7cdf 100644 --- a/libs/ardour/ardour/port_engine.h +++ b/libs/ardour/ardour/port_engine.h @@ -118,10 +118,11 @@ class LIBARDOUR_API PortEngine { * 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. + * an "empty" PortHandle (analogous to a null pointer) if no such port exists. */ - virtual PortHandle* get_port_by_name (const std::string&) const = 0; + virtual PortHandle get_port_by_name (const std::string&) const = 0; /** Find the set of ports whose names, types and flags match * specified values, place the names of each port into @param ports, diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 7000dde3ca..23973f6a1a 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -155,6 +155,7 @@ CONFIG_VARIABLE (MeterLineUp, meter_line_up_din, "meter-line-up-din", MeteringLi CONFIG_VARIABLE (float, meter_peak, "meter-peak", 0.0f) CONFIG_VARIABLE (bool, meter_style_led, "meter-style-led", true) CONFIG_VARIABLE (bool, show_editor_meter, "show-editor-meter", true) +CONFIG_VARIABLE (double, waveform_clip_level, "waveform-clip-level", -0.0933967) /* units of dB */ /* miscellany */ @@ -173,7 +174,6 @@ CONFIG_VARIABLE (bool, use_overlap_equivalency, "use-overlap-equivalency", false CONFIG_VARIABLE (bool, periodic_safety_backups, "periodic-safety-backups", true) CONFIG_VARIABLE (uint32_t, periodic_safety_backup_interval, "periodic-safety-backup-interval", 120) CONFIG_VARIABLE (float, automation_interval_msecs, "automation-interval-msecs", 30) -CONFIG_VARIABLE (bool, sync_all_route_ordering, "sync-all-route-ordering", true) CONFIG_VARIABLE (bool, only_copy_imported_files, "only-copy-imported-files", false) CONFIG_VARIABLE (bool, keep_tearoffs, "keep-tearoffs", false) CONFIG_VARIABLE (bool, new_plugins_active, "new-plugins-active", true) diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index a7eeace7b4..5cd17ee24e 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -102,10 +102,9 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou bool set_name (const std::string& str); static void set_name_in_state (XMLNode &, const std::string &); - uint32_t order_key (RouteSortOrderKey) const; - bool has_order_key (RouteSortOrderKey) const; - void set_order_key (RouteSortOrderKey, uint32_t); - void sync_order_keys (RouteSortOrderKey); + uint32_t order_key () const; + bool has_order_key () const; + void set_order_key (uint32_t); bool is_auditioner() const { return _flags & Auditioner; } bool is_master() const { return _flags & MasterOut; } @@ -257,6 +256,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou int remove_processor (boost::shared_ptr<Processor>, ProcessorStreams* err = 0, bool need_process_lock = true); int remove_processors (const ProcessorList&, ProcessorStreams* err = 0); int reorder_processors (const ProcessorList& new_order, ProcessorStreams* err = 0); + void set_custom_panner_uri (std::string const panner_uri); void disable_processors (Placement); void disable_processors (); void disable_plugins (Placement); @@ -427,7 +427,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou void set_remote_control_id (uint32_t id, bool notify_class_listeners = true); uint32_t remote_control_id () const; - void set_remote_control_id_from_order_key (RouteSortOrderKey, uint32_t order_key); + void set_remote_control_id_explicit (uint32_t order_key); /* for things concerned about *this* route's RID */ @@ -436,7 +436,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou /* for things concerned about *any* route's RID changes */ static PBD::Signal0<void> RemoteControlIDChange; - static PBD::Signal1<void,RouteSortOrderKey> SyncOrderKeys; + static PBD::Signal0<void> SyncOrderKeys; bool has_external_redirects() const; @@ -547,8 +547,8 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou int set_state_2X (const XMLNode&, int); void set_processor_state_2X (XMLNodeList const &, int); - typedef std::map<RouteSortOrderKey,uint32_t> OrderKeys; - OrderKeys order_keys; + uint32_t _order_key; + bool _has_order_key; uint32_t _remote_control_id; void input_change_handler (IOChange, void *src); diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 381f9fbf4b..08f4c1315a 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -36,6 +36,8 @@ #include <glibmm/threads.h> +#include <ltc.h> + #include "pbd/error.h" #include "pbd/event_loop.h" #include "pbd/rcu.h" @@ -48,7 +50,6 @@ #include "midi++/types.h" #include "timecode/time.h" -#include "ltc/ltc.h" #include "ardour/ardour.h" #include "ardour/chan_count.h" @@ -140,7 +141,7 @@ class WindowsVSTPlugin; extern void setup_enum_writer (); -class LIBARDOUR_API LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionList, public SessionEventManager +class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionList, public SessionEventManager { public: enum RecordState { @@ -241,8 +242,9 @@ class LIBARDOUR_API LIBARDOUR_API Session : public PBD::StatefulDestructible, pu bool operator() (boost::shared_ptr<Route>, boost::shared_ptr<Route> b); }; + void set_order_hint (uint32_t order_hint) {_order_hint = order_hint;}; void notify_remote_id_change (); - void sync_order_keys (RouteSortOrderKey); + void sync_order_keys (); template<class T> void foreach_route (T *obj, void (T::*func)(Route&)); template<class T> void foreach_route (T *obj, void (T::*func)(boost::shared_ptr<Route>)); @@ -502,7 +504,7 @@ class LIBARDOUR_API LIBARDOUR_API Session : public PBD::StatefulDestructible, pu void timecode_time_subframes (framepos_t when, Timecode::Time&); void timecode_duration (framecnt_t, Timecode::Time&) const; - void timecode_duration_string (char *, framecnt_t) const; + void timecode_duration_string (char *, size_t len, framecnt_t) const; framecnt_t convert_to_frames (AnyTime const & position); framecnt_t any_duration_to_frames (framepos_t position, AnyTime const & duration); @@ -1594,6 +1596,7 @@ class LIBARDOUR_API LIBARDOUR_API Session : public PBD::StatefulDestructible, pu GraphEdges _current_route_graph; uint32_t next_control_id () const; + uint32_t _order_hint; bool ignore_route_processor_changes; MidiClockTicker* midi_clock; @@ -1610,7 +1613,7 @@ class LIBARDOUR_API LIBARDOUR_API Session : public PBD::StatefulDestructible, pu void setup_ltc (); void setup_click (); - void setup_click_state (const XMLNode&); + void setup_click_state (const XMLNode*); void setup_bundles (); static int get_session_info_from_path (XMLTree& state_tree, const std::string& xmlpath); diff --git a/libs/ardour/ardour/session_configuration_vars.h b/libs/ardour/ardour/session_configuration_vars.h index 5e93c01b79..6349692e77 100644 --- a/libs/ardour/ardour/session_configuration_vars.h +++ b/libs/ardour/ardour/session_configuration_vars.h @@ -63,5 +63,6 @@ CONFIG_VARIABLE (bool, show_midi_on_meterbridge, "show-midi-on-meterbridge", tru CONFIG_VARIABLE (bool, show_rec_on_meterbridge, "show-rec-on-meterbridge", true) CONFIG_VARIABLE (bool, show_mute_on_meterbridge, "show-mute-on-meterbridge", false) CONFIG_VARIABLE (bool, show_solo_on_meterbridge, "show-solo-on-meterbridge", false) +CONFIG_VARIABLE (bool, show_monitor_on_meterbridge, "show-monitor-on-meterbridge", false) CONFIG_VARIABLE (bool, show_name_on_meterbridge, "show-name-on-meterbridge", true) CONFIG_VARIABLE (uint32_t, meterbridge_label_height, "meterbridge-label-height", 0) diff --git a/libs/ardour/ardour/slave.h b/libs/ardour/ardour/slave.h index faeb3be357..7e80055f94 100644 --- a/libs/ardour/ardour/slave.h +++ b/libs/ardour/ardour/slave.h @@ -25,11 +25,11 @@ #include <glibmm/threads.h> #include <jack/jack.h> +#include <ltc.h> #include "pbd/signals.h" #include "timecode/time.h" -#include "ltc/ltc.h" #include "ardour/libardour_visibility.h" #include "ardour/types.h" @@ -184,12 +184,14 @@ class LIBARDOUR_API Slave { class LIBARDOUR_API ISlaveSessionProxy { public: virtual ~ISlaveSessionProxy() {} - virtual TempoMap& tempo_map() const { return *((TempoMap *) 0); } - virtual framecnt_t frame_rate() const { return 0; } - virtual framepos_t audible_frame () const { return 0; } - virtual framepos_t transport_frame () const { return 0; } - virtual pframes_t frames_since_cycle_start () const { return 0; } - virtual framepos_t frame_time () const { return 0; } + virtual TempoMap& tempo_map() const { return *((TempoMap *) 0); } + virtual framecnt_t frame_rate() const { return 0; } + virtual pframes_t frames_per_cycle() const { return 0; } + virtual framepos_t audible_frame () const { return 0; } + virtual framepos_t transport_frame () const { return 0; } + virtual pframes_t frames_since_cycle_start () const { return 0; } + virtual pframes_t sample_time_at_cycle_start() const { return 0; } + virtual framepos_t frame_time () const { return 0; } virtual void request_locate (framepos_t /*frame*/, bool with_roll = false) { (void) with_roll; @@ -205,12 +207,14 @@ class LIBARDOUR_API SlaveSessionProxy : public ISlaveSessionProxy { public: SlaveSessionProxy(Session &s) : session(s) {} - TempoMap& tempo_map() const; - framecnt_t frame_rate() const; - framepos_t audible_frame () const; - framepos_t transport_frame () const; - pframes_t frames_since_cycle_start () const; - framepos_t frame_time () const; + TempoMap& tempo_map() const; + framecnt_t frame_rate() const; + pframes_t frames_per_cycle() const; + framepos_t audible_frame () const; + framepos_t transport_frame () const; + pframes_t frames_since_cycle_start () const; + pframes_t sample_time_at_cycle_start() const; + framepos_t frame_time () const; void request_locate (framepos_t frame, bool with_roll = false); void request_transport_speed (double speed); diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index ee43d1f30f..50a96030b1 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -187,7 +187,8 @@ namespace ARDOUR { MeterIEC1NOR = 0x080, MeterIEC2BBC = 0x100, MeterIEC2EBU = 0x200, - MeterVU = 0x400 + MeterVU = 0x400, + MeterK12 = 0x800 }; enum TrackMode { @@ -353,11 +354,6 @@ namespace ARDOUR { PostFader }; - enum RouteSortOrderKey { - EditorSort, - MixerSort - }; - enum MonitorModel { HardwareMonitoring, ///< JACK does monitoring SoftwareMonitoring, ///< Ardour does monitoring @@ -419,8 +415,7 @@ namespace ARDOUR { enum RemoteModel { UserOrdered, - MixerOrdered, - EditorOrdered + MixerOrdered }; enum CrossfadeModel { diff --git a/libs/ardour/ardour/utils.h b/libs/ardour/ardour/utils.h index f0030557e9..6dba01c797 100644 --- a/libs/ardour/ardour/utils.h +++ b/libs/ardour/ardour/utils.h @@ -58,6 +58,7 @@ static inline float f_max(float x, float a) { LIBARDOUR_API std::string bump_name_once(const std::string& s, char delimiter); LIBARDOUR_API int cmp_nocase (const std::string& s, const std::string& s2); +LIBARDOUR_API int cmp_nocase_utf8 (const std::string& s1, const std::string& s2); LIBARDOUR_API int touch_file(std::string path); diff --git a/libs/ardour/ardour/visibility.h b/libs/ardour/ardour/visibility.h deleted file mode 100644 index b702e94edb..0000000000 --- a/libs/ardour/ardour/visibility.h +++ /dev/null @@ -1,74 +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_visibility_h__ -#define __libardour_visibility_h__ - -#ifdef LIBARDOUR_IS_IN_WIN_STATIC_LIB // #define if your project uses libardour (under Windows) as a static library -#define LIBARDOUR_IS_IN_WINDLL 0 -#endif - -#if !defined(LIBARDOUR_IS_IN_WINDLL) - #if defined(COMPILER_MSVC) || defined(COMPILER_MINGW) - // If you need '__declspec' compatibility, add extra compilers to the above as necessary - #define LIBARDOUR_IS_IN_WINDLL 1 - #else - #define LIBARDOUR_IS_IN_WINDLL 0 - #endif -#endif - -#if LIBARDOUR_IS_IN_WINDLL && !defined(LIBARDOUR_API) - #if defined(BUILDING_LIBARDOUR) - #define LIBARDOUR_API __declspec(dllexport) - #define LIBARDOUR_APICALLTYPE __cdecl - #elif defined(COMPILER_MSVC) || defined(COMPILER_MINGW) // Probably needs Cygwin too, at some point - #define LIBARDOUR_API __declspec(dllimport) - #define LIBARDOUR_APICALLTYPE __cdecl - #else - #error "Attempting to define __declspec with an incompatible compiler !" - #endif -#elif !defined(LIBARDOUR_API) - // Other compilers / platforms could be accommodated here (as an example, see LIBARDOUR_HELPER_DLL, below) - #define LIBARDOUR_API - #define LIBARDOUR_APICALLTYPE -#endif - - -/* _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/ardour/vumeterdsp.h b/libs/ardour/ardour/vumeterdsp.h index f8abc7fa93..1271276d68 100644 --- a/libs/ardour/ardour/vumeterdsp.h +++ b/libs/ardour/ardour/vumeterdsp.h @@ -29,11 +29,11 @@ public: Vumeterdsp (void); ~Vumeterdsp (void); - void process (float *p, int n); + void process (float const *p, int n); float read (void); void reset (); - static void init (float fsamp); + static void init (float fsamp); private: diff --git a/libs/ardour/audio_buffer.cc b/libs/ardour/audio_buffer.cc index 1fd0337dd1..b4e2a55ac2 100644 --- a/libs/ardour/audio_buffer.cc +++ b/libs/ardour/audio_buffer.cc @@ -28,15 +28,15 @@ using namespace PBD; using namespace ARDOUR; AudioBuffer::AudioBuffer(size_t capacity) - : Buffer(DataType::AUDIO, capacity) + : Buffer (DataType::AUDIO) , _owns_data (false) , _data (0) { - if (_capacity > 0) { + if (capacity) { _owns_data = true; // prevent resize() from gagging - resize (_capacity); + resize (capacity); _silent = false; // force silence on the intial buffer state - silence (_capacity); + clear (); } } @@ -50,30 +50,52 @@ void AudioBuffer::resize (size_t size) { if (!_owns_data) { + /* XXX how the hell is this enforced? */ + _capacity = size; return; } - if (size < _capacity) { - _size = size; + if (_data && size < _capacity) { + /* buffer is already large enough */ + + if (size < _size) { + /* truncate */ + _size = size; + } + return; } free (_data); + cache_aligned_malloc ((void**) &_data, sizeof (Sample) * size); + _capacity = size; - _size = size; + _size = 0; _silent = false; - - cache_aligned_malloc ((void**) &_data, sizeof (Sample) * _capacity); } bool -AudioBuffer::check_silence (pframes_t nframes, pframes_t& n) const +AudioBuffer::check_silence (pframes_t nframes, bool wholebuffer, pframes_t& n) const { - for (n = 0; n < _size && n < nframes; ++n) { + for (n = 0; (wholebuffer || n < _size) && n < nframes; ++n) { if (_data[n] != Sample (0)) { return false; } } return true; } + +void +AudioBuffer::silence (framecnt_t len, framecnt_t offset) { + pframes_t n = 0; + if (!_silent) { + assert(_capacity > 0); + assert(offset + len <= _capacity); + memset(_data + offset, 0, sizeof (Sample) * len); + if (len == _capacity) { + _silent = true; + } + } + _written = true; +} diff --git a/libs/ardour/audio_port.cc b/libs/ardour/audio_port.cc index 6a86360b69..2fecbf9392 100644 --- a/libs/ardour/audio_port.cc +++ b/libs/ardour/audio_port.cc @@ -56,14 +56,11 @@ AudioPort::cycle_start (pframes_t nframes) } void -AudioPort::cycle_end (pframes_t) +AudioPort::cycle_end (pframes_t nframes) { if (sends_output() && !_buffer->written()) { - /* we can't use nframes here because the current buffer capacity may - be shorter than the full buffer size if we split the cycle. - */ - if (_buffer->capacity () > 0) { - _buffer->silence (_buffer->capacity()); + if (_buffer->capacity() >= nframes) { + _buffer->silence (nframes); } } } diff --git a/libs/ardour/audioanalyser.cc b/libs/ardour/audioanalyser.cc index cf8329ae9c..fd30744a74 100644 --- a/libs/ardour/audioanalyser.cc +++ b/libs/ardour/audioanalyser.cc @@ -19,7 +19,7 @@ #include <cstring> -#include "vamp-hostsdk/PluginLoader.h" +#include <vamp-hostsdk/PluginLoader.h> #include <glibmm/miscutils.h> #include <glibmm/fileutils.h> diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index ae40b089db..cb167c9595 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -670,23 +670,6 @@ AudioEngine::stop (bool for_latency) } int -AudioEngine::pause () -{ - if (!_backend) { - return 0; - } - - if (_backend->pause ()) { - return -1; - } - - _running = false; - - Stopped(); /* EMIT SIGNAL */ - return 0; -} - -int AudioEngine::freewheel (bool start_stop) { if (!_backend) { @@ -699,12 +682,12 @@ AudioEngine::freewheel (bool start_stop) } float -AudioEngine::get_cpu_load() const +AudioEngine::get_dsp_load() const { if (!_backend) { return 0.0; } - return _backend->cpu_load (); + return _backend->dsp_load (); } bool @@ -1089,8 +1072,8 @@ AudioEngine::start_latency_detection () /* find the ports we will connect to */ - PortEngine::PortHandle* out = pe.get_port_by_name (_latency_output_name); - PortEngine::PortHandle* in = pe.get_port_by_name (_latency_input_name); + PortEngine::PortHandle out = pe.get_port_by_name (_latency_output_name); + PortEngine::PortHandle in = pe.get_port_by_name (_latency_input_name); if (!out || !in) { stop (true); diff --git a/libs/ardour/audiofile_tagger.cc b/libs/ardour/audiofile_tagger.cc index 53b9afdd3e..61a05d49ce 100644 --- a/libs/ardour/audiofile_tagger.cc +++ b/libs/ardour/audiofile_tagger.cc @@ -24,12 +24,12 @@ #include "pbd/convert.h" -#include "taglib/fileref.h" -#include "taglib/flac/flacfile.h" -#include "taglib/ogg/oggfile.h" -#include "taglib/tag.h" -#include "taglib/toolkit/taglib.h" -#include "taglib/ogg/xiphcomment.h" +#include <taglib/fileref.h> +#include <taglib/flacfile.h> +#include <taglib/oggfile.h> +#include <taglib/tag.h> +#include <taglib/taglib.h> +#include <taglib/xiphcomment.h> /* Convert string to TagLib::String */ #define TL_STR(string) TagLib::String ((string).c_str(), TagLib::String::UTF8) diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc index 0909140f91..331de043cd 100644 --- a/libs/ardour/audioregion.cc +++ b/libs/ardour/audioregion.cc @@ -744,7 +744,7 @@ AudioRegion::read_from_sources (SourceList const & srcs, framecnt_t limit, Sampl /* copy an existing channel's data in for this non-existant one */ - uint32_t channel = n_channels() % chan_n; + uint32_t channel = chan_n % n_channels(); boost::shared_ptr<AudioSource> src = boost::dynamic_pointer_cast<AudioSource> (srcs[channel]); if (src->read (buf, _start + internal_offset, to_read) != to_read) { diff --git a/libs/ardour/buffer_set.cc b/libs/ardour/buffer_set.cc index e67aee6be7..9db99d20ce 100644 --- a/libs/ardour/buffer_set.cc +++ b/libs/ardour/buffer_set.cc @@ -167,7 +167,7 @@ BufferSet::ensure_buffers(DataType type, size_t num_buffers, size_t buffer_capac // If there's not enough or they're too small, just nuke the whole thing and // rebuild it (so I'm lazy..) if (bufs.size() < num_buffers - || (bufs.size() > 0 && bufs[0]->capacity() < buffer_capacity)) { + || (bufs.size() > 0 && bufs[0]->capacity() < buffer_capacity)) { // Nuke it for (BufferVec::iterator i = bufs.begin(); i != bufs.end(); ++i) { @@ -179,7 +179,7 @@ BufferSet::ensure_buffers(DataType type, size_t num_buffers, size_t buffer_capac for (size_t i = 0; i < num_buffers; ++i) { bufs.push_back(Buffer::create(type, buffer_capacity)); } - + _available.set(type, num_buffers); _count.set (type, num_buffers); } @@ -468,16 +468,5 @@ BufferSet::silence (framecnt_t nframes, framecnt_t offset) } } -void -BufferSet::set_is_silent (bool yn) -{ - for (std::vector<BufferVec>::iterator i = _buffers.begin(); i != _buffers.end(); ++i) { - for (BufferVec::iterator b = i->begin(); b != i->end(); ++b) { - (*b)->set_is_silent (yn); - } - } - -} - } // namespace ARDOUR diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc index 06c9c72cb4..d9cefb44f2 100644 --- a/libs/ardour/control_protocol_manager.cc +++ b/libs/ardour/control_protocol_manager.cc @@ -74,26 +74,54 @@ ControlProtocolManager::set_session (Session* s) for (list<ControlProtocolInfo*>::iterator i = control_protocol_info.begin(); i != control_protocol_info.end(); ++i) { if ((*i)->requested || (*i)->mandatory) { - - instantiate (**i); - (*i)->requested = false; - - if ((*i)->protocol) { - if ((*i)->state) { - (*i)->protocol->set_state (*(*i)->state, Stateful::loading_state_version); - } else { - /* guarantee a call to - set_state() whether we have - existing state or not - */ - (*i)->protocol->set_state (XMLNode(""), Stateful::loading_state_version); - } - } + (void) activate (**i); } } } } +int +ControlProtocolManager::activate (ControlProtocolInfo& cpi) +{ + ControlProtocol* cp; + + cpi.requested = true; + + if ((cp = instantiate (cpi)) == 0) { + return -1; + } + + /* we split the set_state() and set_active() operations so that + protocols that need state to configure themselves (e.g. "What device + is connected, or supposed to be connected?") can get it before + actually starting any interaction. + */ + + if (cpi.state) { + /* force this by tweaking the internals of the state + * XMLNode. Ugh. + */ + cp->set_state (*cpi.state, Stateful::loading_state_version); + } else { + /* guarantee a call to + set_state() whether we have + existing state or not + */ + cp->set_state (XMLNode(""), Stateful::loading_state_version); + } + + cp->set_active (true); + + return 0; +} + +int +ControlProtocolManager::deactivate (ControlProtocolInfo& cpi) +{ + cpi.requested = false; + return teardown (cpi); +} + void ControlProtocolManager::session_going_away() { @@ -165,6 +193,12 @@ ControlProtocolManager::teardown (ControlProtocolInfo& cpi) if (cpi.mandatory) { return 0; } + + /* save current state */ + + delete cpi.state; + cpi.state = new XMLNode (cpi.protocol->get_state()); + cpi.state->add_property (X_("active"), "no"); cpi.descriptor->destroy (cpi.descriptor, cpi.protocol); @@ -381,22 +415,21 @@ ControlProtocolManager::get_state () for (list<ControlProtocolInfo*>::iterator i = control_protocol_info.begin(); i != control_protocol_info.end(); ++i) { - XMLNode * child; - if ((*i)->protocol) { - child = &((*i)->protocol->get_state()); - child->add_property (X_("active"), "yes"); - // should we update (*i)->state here? probably. - root->add_child_nocopy (*child); + XMLNode& child_state ((*i)->protocol->get_state()); + child_state.add_property (X_("active"), "yes"); + root->add_child_nocopy (child_state); } else if ((*i)->state) { - // keep ownership clear - root->add_child_copy (*(*i)->state); + XMLNode* child_state = new XMLNode (*(*i)->state); + child_state->add_property (X_("active"), "no"); + root->add_child_nocopy (*child_state); } else { - child = new XMLNode (X_("Protocol")); - child->add_property (X_("name"), (*i)->name); - child->add_property (X_("active"), "no"); - root->add_child_nocopy (*child); + XMLNode* child_state = new XMLNode (X_("Protocol")); + child_state->add_property (X_("name"), (*i)->name); + child_state->add_property (X_("active"), "no"); + root->add_child_nocopy (*child_state); } + } return *root; diff --git a/libs/ardour/engine_slave.cc b/libs/ardour/engine_slave.cc index eb55c9ba54..849b7320d3 100644 --- a/libs/ardour/engine_slave.cc +++ b/libs/ardour/engine_slave.cc @@ -21,6 +21,7 @@ #include <cerrno> #include "ardour/audioengine.h" +#include "ardour/audio_backend.h" #include "ardour/slave.h" using namespace std; @@ -54,26 +55,13 @@ Engine_Slave::ok() const bool Engine_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; + boost::shared_ptr<AudioBackend> backend = engine.current_backend(); + + if (backend) { + _starting = backend->speed_and_position (sp, position); + } else { _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/enums.cc b/libs/ardour/enums.cc index 2a38cd2c8a..e32fe329af 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -95,7 +95,6 @@ setup_enum_writer () AutoState _AutoState; AutoStyle _AutoStyle; AutoConnectOption _AutoConnectOption; - RouteSortOrderKey _RouteSortOrderKey; Session::StateOfTheState _Session_StateOfTheState; Route::Flag _Route_Flag; Source::Flag _Source_Flag; @@ -180,6 +179,7 @@ setup_enum_writer () REGISTER_ENUM (MeterKrms); REGISTER_ENUM (MeterK20); REGISTER_ENUM (MeterK14); + REGISTER_ENUM (MeterK12); REGISTER_ENUM (MeterIEC1DIN); REGISTER_ENUM (MeterIEC1NOR); REGISTER_ENUM (MeterIEC2BBC); @@ -281,8 +281,13 @@ setup_enum_writer () REGISTER_ENUM (UserOrdered); REGISTER_ENUM (MixerOrdered); - REGISTER_ENUM (EditorOrdered); REGISTER (_RemoteModel); + /* + * EditorOrdered has been deprecated + * since the removal of independent + * editor / mixer ordering. + */ + enum_writer.add_to_hack_table ("EditorOrdered", "MixerOrdered"); REGISTER_ENUM (FullCrossfade); REGISTER_ENUM (ShortCrossfade); @@ -434,10 +439,6 @@ setup_enum_writer () REGISTER_CLASS_ENUM (Route, MonitorOut); REGISTER_BITS (_Route_Flag); - REGISTER_ENUM (MixerSort); - REGISTER_ENUM (EditorSort); - REGISTER (_RouteSortOrderKey); - REGISTER_CLASS_ENUM (Source, Writable); REGISTER_CLASS_ENUM (Source, CanRename); REGISTER_CLASS_ENUM (Source, Broadcast); diff --git a/libs/ardour/export_channel.cc b/libs/ardour/export_channel.cc index 82e5d80244..296bfc9022 100644 --- a/libs/ardour/export_channel.cc +++ b/libs/ardour/export_channel.cc @@ -131,7 +131,7 @@ RegionExportChannelFactory::RegionExportChannelFactory (Session * session, Audio mixdown_buffer.reset (new Sample [frames_per_cycle]); gain_buffer.reset (new Sample [frames_per_cycle]); - memset (gain_buffer.get(), 1.0, sizeof (Sample) * frames_per_cycle); + std::fill_n (gain_buffer.get(), frames_per_cycle, Sample (1.0)); break; case Processed: @@ -239,7 +239,11 @@ RouteExportChannel::read (Sample const *& data, framecnt_t frames) const { assert(processor); AudioBuffer const & buffer = processor->get_capture_buffers().get_audio (channel); +#ifndef NDEBUG + (void) frames; +#else assert (frames <= (framecnt_t) buffer.size()); +#endif data = buffer.data(); } diff --git a/libs/ardour/export_handler.cc b/libs/ardour/export_handler.cc index 5710ecc452..20abc80de1 100644 --- a/libs/ardour/export_handler.cc +++ b/libs/ardour/export_handler.cc @@ -26,12 +26,14 @@ #include "pbd/convert.h" +#include "ardour/audiofile_tagger.h" #include "ardour/export_graph_builder.h" #include "ardour/export_timespan.h" #include "ardour/export_channel_configuration.h" #include "ardour/export_status.h" #include "ardour/export_format_specification.h" #include "ardour/export_filename.h" +#include "ardour/session_metadata.h" #include "i18n.h" @@ -281,13 +283,18 @@ ExportHandler::finish_timespan () while (config_map.begin() != timespan_bounds.second) { ExportFormatSpecPtr fmt = config_map.begin()->second.format; + std::string filename = config_map.begin()->second.filename->get_path(fmt); if (fmt->with_cue()) { - export_cd_marker_file (current_timespan, fmt, config_map.begin()->second.filename->get_path(fmt), CDMarkerCUE); - } + export_cd_marker_file (current_timespan, fmt, filename, CDMarkerCUE); + } if (fmt->with_toc()) { - export_cd_marker_file (current_timespan, fmt, config_map.begin()->second.filename->get_path(fmt), CDMarkerTOC); + export_cd_marker_file (current_timespan, fmt, filename, CDMarkerTOC); + } + + if (fmt->tag()) { + AudiofileTagger::tag_file(filename, *SessionMetadata::Metadata()); } config_map.erase (config_map.begin()); diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index 84693af541..5874ac3b1b 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -539,8 +539,8 @@ ARDOUR::set_translations_enabled (bool yn) c = '0'; } - ::write (fd, &c, 1); - ::close (fd); + (void) ::write (fd, &c, 1); + (void) ::close (fd); return true; } diff --git a/libs/ardour/iec1ppmdsp.cc b/libs/ardour/iec1ppmdsp.cc index 79a572da1c..842d33b8b5 100644 --- a/libs/ardour/iec1ppmdsp.cc +++ b/libs/ardour/iec1ppmdsp.cc @@ -41,7 +41,7 @@ Iec1ppmdsp::~Iec1ppmdsp (void) } -void Iec1ppmdsp::process (float *p, int n) +void Iec1ppmdsp::process (float const *p, int n) { float z1, z2, m, t; diff --git a/libs/ardour/iec2ppmdsp.cc b/libs/ardour/iec2ppmdsp.cc index caca744c52..d65f51b3fa 100644 --- a/libs/ardour/iec2ppmdsp.cc +++ b/libs/ardour/iec2ppmdsp.cc @@ -41,7 +41,7 @@ Iec2ppmdsp::~Iec2ppmdsp (void) } -void Iec2ppmdsp::process (float *p, int n) +void Iec2ppmdsp::process (float const *p, int n) { float z1, z2, m, t; diff --git a/libs/ardour/kmeterdsp.cc b/libs/ardour/kmeterdsp.cc index 35c95c2daf..add026797d 100644 --- a/libs/ardour/kmeterdsp.cc +++ b/libs/ardour/kmeterdsp.cc @@ -42,7 +42,7 @@ void Kmeterdsp::init (int fsamp) _omega = 9.72f / fsamp; // ballistic filter coefficient } -void Kmeterdsp::process (float *p, int n) +void Kmeterdsp::process (float const *p, int n) { // Called by JACK's process callback. // diff --git a/libs/ardour/linux_vst_support.cc b/libs/ardour/linux_vst_support.cc index 1fccf79968..9d36905f48 100644 --- a/libs/ardour/linux_vst_support.cc +++ b/libs/ardour/linux_vst_support.cc @@ -242,7 +242,15 @@ vstfx_load (const char *path) /*Find the main entry point into the plugin*/ - if ((fhandle->main_entry = (main_entry_t) dlsym(fhandle->dll, "main")) == 0) + fhandle->main_entry = (main_entry_t) dlsym(fhandle->dll, "main"); + + if (fhandle->main_entry == 0) { + if ((fhandle->main_entry = (main_entry_t) dlsym(fhandle->dll, "VSTPluginMain")) != 0) { + PBD::warning << path << _(": is a VST >= 2.4 - this plugin may or may not function correctly with this version of Ardour.") << endmsg; + } + } + + if (fhandle->main_entry == 0) { /*If it can't be found, unload the plugin and return a 0 handle*/ diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index 6288616824..e6b3c2d56e 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -144,6 +144,8 @@ public: LilvNode* ui_GtkUI; LilvNode* ui_external; LilvNode* ui_externalkx; + LilvNode* units_unit; + LilvNode* units_midiNote; private: bool _bundle_checked; @@ -1092,7 +1094,12 @@ LV2Plugin::do_save_preset(string name) lilv_state_free(state); - return Glib::filename_to_uri(Glib::build_filename(bundle, file_name)); + std::string uri = Glib::filename_to_uri(Glib::build_filename(bundle, file_name)); + LilvNode *node = lilv_new_uri(_world.world, uri.c_str()); + lilv_world_load_bundle(_world.world, node); + lilv_world_load_resource(_world.world, node); + lilv_node_free(node); + return uri; } void @@ -1161,10 +1168,14 @@ LV2Plugin::write_from_ui(uint32_t index, * e.g 48kSPS / 128fpp -> audio-periods = 375 Hz * ui-periods = 25 Hz (SuperRapidScreenUpdate) * default minimumSize = 32K (see LV2Plugin::allocate_atom_event_buffers() - * -> 15 * 32K - * it is safe to overflow (but the plugin state may be inconsistent). + * + * it is NOT safe to overflow (msg.size will be misinterpreted) */ - rbs = max((size_t) 32768 * 6, rbs); + uint32_t bufsiz = 32768; + if (_atom_ev_buffers && _atom_ev_buffers[0]) { + bufsiz = lv2_evbuf_get_capacity(_atom_ev_buffers[0]); + } + rbs = max((size_t) bufsiz * 8, rbs); _from_ui = new RingBuffer<uint8_t>(rbs); } @@ -1193,8 +1204,12 @@ LV2Plugin::enable_ui_emmission() { if (!_to_ui) { /* see note in LV2Plugin::write_from_ui() */ + uint32_t bufsiz = 32768; + if (_atom_ev_buffers && _atom_ev_buffers[0]) { + bufsiz = lv2_evbuf_get_capacity(_atom_ev_buffers[0]); + } size_t rbs = _session.engine().raw_buffer_size(DataType::MIDI) * NBUFS; - rbs = max((size_t) 32768 * 8, rbs); + rbs = max((size_t) bufsiz * 8, rbs); _to_ui = new RingBuffer<uint8_t>(rbs); } } @@ -1329,8 +1344,10 @@ LV2Plugin::get_parameter_descriptor(uint32_t which, ParameterDescriptor& desc) c { const LilvPort* port = lilv_plugin_get_port_by_index(_impl->plugin, which); + LilvNodes* portunits; LilvNode *def, *min, *max; lilv_port_get_range(_impl->plugin, port, &def, &min, &max); + portunits = lilv_port_get_value(_impl->plugin, port, _world.units_unit); desc.integer_step = lilv_port_has_property(_impl->plugin, port, _world.lv2_integer); desc.toggled = lilv_port_has_property(_impl->plugin, port, _world.lv2_toggled); @@ -1339,6 +1356,8 @@ LV2Plugin::get_parameter_descriptor(uint32_t which, ParameterDescriptor& desc) c desc.label = lilv_node_as_string(lilv_port_get_name(_impl->plugin, port)); desc.lower = min ? lilv_node_as_float(min) : 0.0f; desc.upper = max ? lilv_node_as_float(max) : 1.0f; + desc.midinote = lilv_nodes_contains(portunits, _world.units_midiNote); + if (desc.sr_dependent) { desc.lower *= _session.frame_rate (); desc.upper *= _session.frame_rate (); @@ -1363,6 +1382,7 @@ LV2Plugin::get_parameter_descriptor(uint32_t which, ParameterDescriptor& desc) c lilv_node_free(def); lilv_node_free(min); lilv_node_free(max); + lilv_nodes_free(portunits); return 0; } @@ -1502,7 +1522,7 @@ LV2Plugin::allocate_atom_event_buffers() return; } - DEBUG_TRACE(DEBUG::LV2, string_compose("allocate %1 atom_ev_buffers\n", total_atom_buffers)); + DEBUG_TRACE(DEBUG::LV2, string_compose("allocate %1 atom_ev_buffers of %d bytes\n", total_atom_buffers, minimumSize)); _atom_ev_buffers = (LV2_Evbuf**) malloc((total_atom_buffers + 1) * sizeof(LV2_Evbuf*)); for (int i = 0; i < total_atom_buffers; ++i ) { _atom_ev_buffers[i] = lv2_evbuf_new(minimumSize, LV2_EVBUF_ATOM, @@ -1675,6 +1695,9 @@ LV2Plugin::connect_and_run(BufferSet& bufs, } } else if (!valid) { // Nothing we understand or care about, connect to scratch + // see note for midi-buffer size above + scratch_bufs.ensure_lv2_bufsize((flags & PORT_INPUT), + 0, _port_minimumSize[port_index]); _ev_buffers[port_index] = scratch_bufs.get_lv2_midi( (flags & PORT_INPUT), 0, (flags & PORT_EVENT)); } @@ -1966,10 +1989,14 @@ LV2World::LV2World() 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"); + units_unit = lilv_new_uri(world, "http://lv2plug.in/ns/extensions/units#unit"); + units_midiNote = lilv_new_uri(world, "http://lv2plug.in/ns/extensions/units#midiNote"); } LV2World::~LV2World() { + lilv_node_free(units_midiNote); + lilv_node_free(units_unit); lilv_node_free(ui_externalkx); lilv_node_free(ui_external); lilv_node_free(ui_GtkUI); diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc index 6c5470bbb9..80690bd744 100644 --- a/libs/ardour/meter.cc +++ b/libs/ardour/meter.cc @@ -108,8 +108,12 @@ PeakMeter::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end_fr // Meter audio in to the rest of the peaks for (uint32_t i = 0; i < n_audio; ++i, ++n) { - _peak_signal[n] = compute_peak (bufs.get_audio(i).data(), nframes, _peak_signal[n]); - if (_meter_type & (MeterKrms | MeterK20 | MeterK14)) { + if (bufs.get_audio(i).silent()) { + _peak_signal[n] = .0f; + } else { + _peak_signal[n] = compute_peak (bufs.get_audio(i).data(), nframes, _peak_signal[n]); + } + if (_meter_type & (MeterKrms | MeterK20 | MeterK14 | MeterK12)) { _kmeter[i]->process(bufs.get_audio(i).data(), nframes); } if (_meter_type & (MeterIEC1DIN | MeterIEC1NOR)) { @@ -289,7 +293,7 @@ PeakMeter::meter () /* 0.01f ^= 100 Hz update rate */ const float midi_meter_falloff = Config->get_meter_falloff() * 0.01f; /* kmeters: 24dB / 2 sec */ - const float audio_meter_falloff = (_meter_type & (MeterK20 | MeterK14)) ? 0.12f : midi_meter_falloff; + const float audio_meter_falloff = (_meter_type & (MeterK20 | MeterK14 | MeterK12)) ? 0.12f : midi_meter_falloff; for (size_t n = 0; n < limit; ++n) { @@ -346,6 +350,7 @@ PeakMeter::meter_level(uint32_t n, MeterType type) { case MeterKrms: case MeterK20: case MeterK14: + case MeterK12: { const uint32_t n_midi = current_meters.n_midi(); if (CHECKSIZE(_kmeter)) { @@ -405,7 +410,7 @@ PeakMeter::set_type(MeterType t) _meter_type = t; - if (t & (MeterKrms | MeterK20 | MeterK14)) { + if (t & (MeterKrms | MeterK20 | MeterK14 | MeterK12)) { const size_t n_audio = current_meters.n_audio(); for (size_t n = 0; n < n_audio; ++n) { _kmeter[n]->reset(); diff --git a/libs/ardour/midi_buffer.cc b/libs/ardour/midi_buffer.cc index d75b861ea1..1a6cb7fa26 100644 --- a/libs/ardour/midi_buffer.cc +++ b/libs/ardour/midi_buffer.cc @@ -33,12 +33,12 @@ using namespace PBD; // FIXME: mirroring for MIDI buffers? MidiBuffer::MidiBuffer(size_t capacity) - : Buffer(DataType::MIDI, capacity) - , _data(0) + : Buffer (DataType::MIDI) + , _data (0) { if (capacity) { - resize(_capacity); - silence(_capacity); + resize (capacity); + silence (capacity); } } @@ -50,17 +50,22 @@ MidiBuffer::~MidiBuffer() void MidiBuffer::resize(size_t size) { - assert(size > 0); + if (_data && size < _capacity) { + + if (_size < size) { + /* truncate */ + _size = size; + } - if (size < _capacity) { return; } - free(_data); + free (_data); + + cache_aligned_malloc ((void**) &_data, size); _size = 0; _capacity = size; - cache_aligned_malloc ((void**) &_data, _capacity); assert(_data); } diff --git a/libs/ardour/midi_clock_slave.cc b/libs/ardour/midi_clock_slave.cc index a52854d954..8c95272fde 100644 --- a/libs/ardour/midi_clock_slave.cc +++ b/libs/ardour/midi_clock_slave.cc @@ -44,7 +44,7 @@ using namespace PBD; MIDIClock_Slave::MIDIClock_Slave (Session& s, MidiPort& p, int ppqn) : ppqn (ppqn) - , bandwidth (10.0 / 60.0) // 1 BpM = 1 / 60 Hz + , bandwidth (2.0 / 60.0) // 1 BpM = 1 / 60 Hz { session = (ISlaveSessionProxy *) new SlaveSessionProxy(s); rebind (p); @@ -54,7 +54,7 @@ MIDIClock_Slave::MIDIClock_Slave (Session& s, MidiPort& p, int ppqn) MIDIClock_Slave::MIDIClock_Slave (ISlaveSessionProxy* session_proxy, int ppqn) : session(session_proxy) , ppqn (ppqn) - , bandwidth (10.0 / 60.0) // 1 BpM = 1 / 60 Hz + , bandwidth (2.0 / 60.0) // 1 BpM = 1 / 60 Hz { reset (); } @@ -122,6 +122,8 @@ MIDIClock_Slave::update_midi_clock (Parser& /*parser*/, framepos_t timestamp) return; } + pframes_t cycle_offset = timestamp - session->sample_time_at_cycle_start(); + calculate_one_ppqn_in_frames_at(should_be_position); framepos_t elapsed_since_start = timestamp - first_timestamp; @@ -133,6 +135,8 @@ MIDIClock_Slave::update_midi_clock (Parser& /*parser*/, framepos_t timestamp) first_timestamp = timestamp; elapsed_since_start = should_be_position; + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("first clock message after start received @ %1\n", timestamp)); + // calculate filter coefficients calculate_filter_coefficients(); @@ -152,7 +156,7 @@ MIDIClock_Slave::update_midi_clock (Parser& /*parser*/, framepos_t timestamp) // we use session->transport_frame() instead of t1 here // because t1 is used to calculate the transport speed, // so the loop will compensate for accumulating rounding errors - error = (double(should_be_position) - double(session->transport_frame())); + error = (double(should_be_position) - (double(session->transport_frame()) + double(cycle_offset))); e = error / double(session->frame_rate()); current_delta = error; @@ -162,21 +166,23 @@ MIDIClock_Slave::update_midi_clock (Parser& /*parser*/, framepos_t timestamp) e2 += c * e; } - DEBUG_TRACE (DEBUG::MidiClock, string_compose ("clock #%1 @ %2 arrived %3 (theoretical) audible %4 transport %5 error %6 " - "read delta %7 should-be delta %8 t1-t0 %9 t0 %10 t1 %11 framerate %12 appspeed %13\n", - midi_clock_count, - elapsed_since_start, - should_be_position, - session->audible_frame(), - session->transport_frame(), - error, - timestamp - last_timestamp, - one_ppqn_in_frames, - (t1 -t0) * session->frame_rate(), - t0 * session->frame_rate(), - t1 * session->frame_rate(), - session->frame_rate(), - ((t1 - t0) * session->frame_rate()) / one_ppqn_in_frames)); + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("clock #%1 @ %2 should-be %3 transport %4 error %5 appspeed %6 " + "read-delta %7 should-be delta %8 t1-t0 %9 t0 %10 t1 %11 framerate %12 engine %13\n", + midi_clock_count, // # + elapsed_since_start, // @ + should_be_position, // should-be + session->transport_frame(), // transport + error, // error + ((t1 - t0) * session->frame_rate()) / one_ppqn_in_frames, // appspeed + timestamp - last_timestamp, // read delta + one_ppqn_in_frames, // should-be delta + (t1 - t0) * session->frame_rate(), // t1-t0 + t0 * session->frame_rate(), // t0 + t1 * session->frame_rate(), // t1 + session->frame_rate(), // framerate + session->frame_time() + + )); last_timestamp = timestamp; } @@ -184,7 +190,7 @@ MIDIClock_Slave::update_midi_clock (Parser& /*parser*/, framepos_t timestamp) void MIDIClock_Slave::start (Parser& /*parser*/, framepos_t timestamp) { - DEBUG_TRACE (DEBUG::MidiClock, string_compose ("MIDIClock_Slave got start message at time %1 engine time %2\n", timestamp, session->frame_time())); + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("MIDIClock_Slave got start message at time %1 engine time %2 transport_frame %3\n", timestamp, session->frame_time(), session->transport_frame())); if (!_started) { reset(); @@ -199,6 +205,8 @@ MIDIClock_Slave::start (Parser& /*parser*/, framepos_t timestamp) void MIDIClock_Slave::reset () { + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("MidiClock_Slave reset(): calculated filter bandwidth is %1 for period size %2\n", bandwidth, session->frames_per_cycle())); + should_be_position = session->transport_frame(); last_timestamp = 0; @@ -344,7 +352,7 @@ MIDIClock_Slave::speed_and_position (double& speed, framepos_t& pos) pos = should_be_position; } - DEBUG_TRACE (DEBUG::MidiClock, string_compose ("speed_and_position: %1 & %2 <-> %3 (transport)\n", speed, pos, session->transport_frame())); + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("speed_and_position: speed %1 should-be %2 transport %3 \n", speed, pos, session->transport_frame())); return true; } diff --git a/libs/ardour/midi_model.cc b/libs/ardour/midi_model.cc index 5c1f65d96b..716d511798 100644 --- a/libs/ardour/midi_model.cc +++ b/libs/ardour/midi_model.cc @@ -1018,6 +1018,7 @@ MidiModel::PatchChangeDiffCommand::change_channel (PatchChangePtr patch, uint8_t c.patch = patch; c.old_channel = patch->channel (); c.new_channel = channel; + c.patch_id = patch->id(); _changes.push_back (c); } @@ -1030,6 +1031,7 @@ MidiModel::PatchChangeDiffCommand::change_program (PatchChangePtr patch, uint8_t c.patch = patch; c.old_program = patch->program (); c.new_program = program; + c.patch_id = patch->id(); _changes.push_back (c); } diff --git a/libs/ardour/midi_port.cc b/libs/ardour/midi_port.cc index de2263fad6..55280eb942 100644 --- a/libs/ardour/midi_port.cc +++ b/libs/ardour/midi_port.cc @@ -158,13 +158,13 @@ MidiPort::resolve_notes (void* port_buffer, MidiBuffer::TimeType when) */ 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; + cerr << "failed to deliver sustain-zero on channel " << (int)channel << " on port " << name() << endl; } ev[1] = MIDI_CTL_ALL_NOTES_OFF; 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; + cerr << "failed to deliver ALL NOTES OFF on channel " << (int)channel << " on port " << name() << endl; } } } @@ -174,12 +174,21 @@ MidiPort::flush_buffers (pframes_t nframes) { if (sends_output ()) { - void* port_buffer = port_engine.get_buffer (_port_handle, nframes); + void* port_buffer = 0; if (_resolve_required) { + port_buffer = port_engine.get_buffer (_port_handle, nframes); /* resolve all notes at the start of the buffer */ resolve_notes (port_buffer, 0); _resolve_required = false; + } + + if (_buffer->empty()) { + return; + } + + if (!port_buffer) { + port_buffer = port_engine.get_buffer (_port_handle, nframes); } for (MidiBuffer::iterator i = _buffer->begin(); i != _buffer->end(); ++i) { @@ -196,11 +205,16 @@ MidiPort::flush_buffers (pframes_t nframes) << ev.time() << " > " << _global_port_buffer_offset + _port_buffer_offset << endl; } } else { - cerr << "drop flushed event on the floor, time " << ev + cerr << "drop flushed event on the floor, time " << ev.time() << " to early for " << _global_port_buffer_offset << " + " << _port_buffer_offset << endl; } } + + /* done.. the data has moved to the port buffer, mark it so + */ + + _buffer->clear (); } } diff --git a/libs/ardour/midi_ui.cc b/libs/ardour/midi_ui.cc index e6d49175bd..06940c1e34 100644 --- a/libs/ardour/midi_ui.cc +++ b/libs/ardour/midi_ui.cc @@ -39,7 +39,6 @@ using namespace Glib; #include "i18n.h" -BaseUI::RequestType MidiControlUI::PortChange = BaseUI::new_request_type(); MidiControlUI* MidiControlUI::_instance = 0; #include "pbd/abstract_ui.cc" /* instantiate the template */ @@ -60,25 +59,10 @@ MidiControlUI::~MidiControlUI () void MidiControlUI::do_request (MidiUIRequest* req) { - if (req->type == PortChange) { - - /* restart event loop with new ports */ - DEBUG_TRACE (DEBUG::MidiIO, "reset ports\n"); - reset_ports (); - + if (req->type == Quit) { + BaseUI::quit (); } else if (req->type == CallSlot) { - -#ifndef NDEBUG - if (getenv ("DEBUG_THREADED_SIGNALS")) { - cerr << "MIDI UI calls a slot\n"; - } -#endif - req->the_slot (); - - } else if (req->type == Quit) { - - BaseUI::quit (); } } @@ -119,23 +103,37 @@ MidiControlUI::clear_ports () void MidiControlUI::reset_ports () { - if (port_sources.empty()) { - AsyncMIDIPort* async = dynamic_cast<AsyncMIDIPort*> (_session.midi_input_port()); - - if (!async) { - return; - } - - int fd; + if (!port_sources.empty()) { + return; + } + + vector<AsyncMIDIPort*> ports; + AsyncMIDIPort* p; + + if ((p = dynamic_cast<AsyncMIDIPort*> (_session.midi_input_port()))) { + ports.push_back (p); + } + + + if ((p = dynamic_cast<AsyncMIDIPort*> (_session.mmc_input_port()))) { + ports.push_back (p); + } + + if (ports.empty()) { + return; + } + + int fd; + for (vector<AsyncMIDIPort*>::const_iterator pi = ports.begin(); pi != ports.end(); ++pi) { - if ((fd = async->selectable ()) >= 0) { + if ((fd = (*pi)->selectable ()) >= 0) { Glib::RefPtr<IOSource> psrc = IOSource::create (fd, IO_IN|IO_HUP|IO_ERR); - psrc->connect (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), async)); + psrc->connect (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), *pi)); psrc->attach (_main_loop->get_context()); - + // glibmm hack: for now, store only the GSource* - + port_sources.push_back (psrc->gobj()); g_source_ref (psrc->gobj()); } diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc index d17401cee8..6de0436586 100644 --- a/libs/ardour/midiport_manager.cc +++ b/libs/ardour/midiport_manager.cc @@ -68,11 +68,11 @@ MidiPortManager::create_ports () return; } - _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_in = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("MIDI control in"), true); + _midi_out = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("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, X_("MMC in"), true); + _mmc_out = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("MMC out"), true); /* XXX nasty type conversion needed because of the mixed inheritance * required to integrate MIDI::IPMidiPort and ARDOUR::AsyncMIDIPort. @@ -93,14 +93,14 @@ MidiPortManager::create_ports () boost::shared_ptr<ARDOUR::Port> p; - p = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MTC in")); + p = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("MTC in")); _mtc_input_port = boost::dynamic_pointer_cast<MidiPort> (p); - p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MTC out")); + p = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("MTC out")); _mtc_output_port= boost::dynamic_pointer_cast<MidiPort> (p); - p = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MIDI Clock in")); + p = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("MIDI Clock in")); _midi_clock_input_port = boost::dynamic_pointer_cast<MidiPort> (p); - p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MIDI Clock out")); + p = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("MIDI Clock out")); _midi_clock_output_port= boost::dynamic_pointer_cast<MidiPort> (p); /* These ports all need their incoming data handled in diff --git a/libs/ardour/panner_manager.cc b/libs/ardour/panner_manager.cc index 8611c7bc86..3c9623f3e6 100644 --- a/libs/ardour/panner_manager.cc +++ b/libs/ardour/panner_manager.cc @@ -24,7 +24,8 @@ #include "pbd/error.h" #include "pbd/compose.h" -#include "pbd/file_utils.h" +#include "pbd/pathscanner.h" +#include "pbd/stl_delete.h" #include "ardour/debug.h" #include "ardour/panner_manager.h" @@ -60,29 +61,31 @@ PannerManager::instance () return *_instance; } +static bool panner_filter (const string& str, void */*arg*/) +{ +#ifdef __APPLE__ + return str[0] != '.' && (str.length() > 6 && str.find (".dylib") == (str.length() - 6)); +#else + return str[0] != '.' && (str.length() > 3 && (str.find (".so") == (str.length() - 3) || str.find (".dll") == (str.length() - 4))); +#endif +} + void PannerManager::discover_panners () { - vector<std::string> panner_modules; - - Glib::PatternSpec so_extension_pattern("*.so"); - Glib::PatternSpec dylib_extension_pattern("*.dylib"); - Glib::PatternSpec dll_extension_pattern("*.dll"); - - find_matching_files_in_search_path (panner_search_path (), - so_extension_pattern, panner_modules); + PathScanner scanner; + std::vector<std::string *> *panner_modules; + std::string search_path = panner_search_path().to_string(); - find_matching_files_in_search_path (panner_search_path (), - dylib_extension_pattern, panner_modules); + DEBUG_TRACE (DEBUG::Panning, string_compose (_("looking for panners in %1\n"), search_path)); - find_matching_files_in_search_path (panner_search_path (), - dll_extension_pattern, panner_modules); + panner_modules = scanner (search_path, panner_filter, 0, false, true, 1, true); - DEBUG_TRACE (DEBUG::Panning, string_compose (_("looking for panners in %1"), panner_search_path().to_string())); - - for (vector<std::string>::iterator i = panner_modules.begin(); i != panner_modules.end(); ++i) { - panner_discover (*i); + for (vector<std::string *>::iterator i = panner_modules->begin(); i != panner_modules->end(); ++i) { + panner_discover (**i); } + + vector_delete (panner_modules); } int @@ -102,7 +105,7 @@ PannerManager::panner_discover (string path) if (i == panner_info.end()) { panner_info.push_back (pinfo); - DEBUG_TRACE (DEBUG::Panning, string_compose(_("Panner discovered: \"%1\" in %2"), pinfo->descriptor.name, path)); + DEBUG_TRACE (DEBUG::Panning, string_compose(_("Panner discovered: \"%1\" in %2\n"), pinfo->descriptor.name, path)); } } @@ -145,53 +148,87 @@ PannerManager::get_descriptor (string path) } PannerInfo* -PannerManager::select_panner (ChanCount in, ChanCount out) +PannerManager::select_panner (ChanCount in, ChanCount out, std::string const uri) { + PannerInfo* rv = NULL; PanPluginDescriptor* d; int32_t nin = in.n_audio(); int32_t nout = out.n_audio(); + uint32_t priority = 0; + + /* look for user-preference -- check if channels match */ + for (list<PannerInfo*>::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { + d = &(*p)->descriptor; + if (d->panner_uri != uri) continue; + if (d->in != nin && d->in != -1) continue; + if (d->out != nout && d->out != -1) continue; + return *p; + } /* look for exact match first */ for (list<PannerInfo*>::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { d = &(*p)->descriptor; - if (d->in == nin && d->out == nout) { - return *p; + if (d->in == nin && d->out == nout && d->priority > priority) { + priority = d->priority; + rv = *p; } } + if (rv) { return rv; } /* no exact match, look for good fit on inputs and variable on outputs */ + priority = 0; for (list<PannerInfo*>::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { d = &(*p)->descriptor; - if (d->in == nin && d->out == -1) { - return *p; + if (d->in == nin && d->out == -1 && d->priority > priority) { + priority = d->priority; + rv = *p; } } + if (rv) { return rv; } /* no exact match, look for good fit on outputs and variable on inputs */ + priority = 0; for (list<PannerInfo*>::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { d = &(*p)->descriptor; - if (d->in == -1 && d->out == nout) { - return *p; + if (d->in == -1 && d->out == nout && d->priority > priority) { + priority = d->priority; + rv = *p; } } + if (rv) { return rv; } /* no exact match, look for variable fit on inputs and outputs */ + priority = 0; for (list<PannerInfo*>::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { d = &(*p)->descriptor; - if (d->in == -1 && d->out == -1) { - return *p; + if (d->in == -1 && d->out == -1 && d->priority > priority) { + priority = d->priority; + rv = *p; } } + if (rv) { return rv; } warning << string_compose (_("no panner discovered for in/out = %1/%2"), nin, nout) << endmsg; return 0; } + +PannerInfo* +PannerManager::get_by_uri (std::string uri) +{ + PannerInfo* pi = NULL; + for (list<PannerInfo*>::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { + if ((*p)->descriptor.panner_uri != uri) continue; + pi = (*p); + break; + } + return pi; +} diff --git a/libs/ardour/panner_search_path.cc b/libs/ardour/panner_search_path.cc index 100c406edd..2889063ca4 100644 --- a/libs/ardour/panner_search_path.cc +++ b/libs/ardour/panner_search_path.cc @@ -37,8 +37,12 @@ panner_search_path () Searchpath spath(user_config_directory ()); spath += ardour_dll_directory (); spath.add_subdirectory_to_paths(panner_dir_name); +<<<<<<< HEAD + spath += SearchPath(Glib::getenv(panner_env_variable_name)); +======= spath += Searchpath(Glib::getenv(panner_env_variable_name)); +>>>>>>> windows+cc return spath; } diff --git a/libs/ardour/panner_shell.cc b/libs/ardour/panner_shell.cc index 1aeb94eb7e..a25cb49ab5 100644 --- a/libs/ardour/panner_shell.cc +++ b/libs/ardour/panner_shell.cc @@ -63,6 +63,10 @@ PannerShell::PannerShell (string name, Session& s, boost::shared_ptr<Pannable> p : SessionObject (s, name) , _pannable (p) , _bypassed (false) + , _current_panner_uri("") + , _user_selected_panner_uri("") + , _panner_gui_uri("") + , _force_reselect (false) { set_name (name); } @@ -82,7 +86,7 @@ PannerShell::configure_io (ChanCount in, ChanCount out) the config hasn't changed, we're done. */ - if (_panner && (_panner->in().n_audio() == nins) && (_panner->out().n_audio() == nouts)) { + if (!_force_reselect && _panner && (_panner->in().n_audio() == nins) && (_panner->out().n_audio() == nouts)) { return; } @@ -90,17 +94,21 @@ PannerShell::configure_io (ChanCount in, ChanCount out) /* no need for panning with less than 2 outputs or no inputs */ if (_panner) { _panner.reset (); + _current_panner_uri = ""; + _panner_gui_uri = ""; Changed (); /* EMIT SIGNAL */ } return; } - PannerInfo* pi = PannerManager::instance().select_panner (in, out); + PannerInfo* pi = PannerManager::instance().select_panner (in, out, _user_selected_panner_uri); if (!pi) { cerr << "No panner found: check that panners are being discovered correctly during startup.\n"; assert (pi); } + DEBUG_TRACE (DEBUG::Panning, string_compose (_("select panner: %1\n"), pi->descriptor.name.c_str())); + boost::shared_ptr<Speakers> speakers = _session.get_speakers (); if (nouts != speakers->size()) { @@ -116,6 +124,8 @@ PannerShell::configure_io (ChanCount in, ChanCount out) // boost_debug_shared_ptr_mark_interesting (p, "Panner"); _panner.reset (p); _panner->configure_io (in, out); + _current_panner_uri = pi->descriptor.panner_uri; + _panner_gui_uri = pi->descriptor.gui_uri; Changed (); /* EMIT SIGNAL */ } @@ -126,6 +136,7 @@ PannerShell::get_state () XMLNode* node = new XMLNode ("PannerShell"); node->add_property (X_("bypassed"), _bypassed ? X_("yes") : X_("no")); + node->add_property (X_("user-panner"), _user_selected_panner_uri); if (_panner) { node->add_child_nocopy (_panner->get_state ()); @@ -146,12 +157,29 @@ PannerShell::set_state (const XMLNode& node, int version) set_bypassed (string_is_affirmative (prop->value ())); } + if ((prop = node.property (X_("user-panner"))) != 0) { + _user_selected_panner_uri = prop->value (); + } + _panner.reset (); for (niter = nlist.begin(); niter != nlist.end(); ++niter) { if ((*niter)->name() == X_("Panner")) { + if ((prop = (*niter)->property (X_("uri")))) { + PannerInfo* p = PannerManager::instance().get_by_uri(prop->value()); + if (p) { + _panner.reset (p->descriptor.factory (_pannable, _session.get_speakers ())); + _current_panner_uri = p->descriptor.panner_uri; + _panner_gui_uri = p->descriptor.gui_uri; + if (_panner->set_state (**niter, version) == 0) { + return -1; + } + } + } + + else /* backwards compatibility */ if ((prop = (*niter)->property (X_("type")))) { list<PannerInfo*>::iterator p; @@ -166,6 +194,8 @@ PannerShell::set_state (const XMLNode& node, int version) */ _panner.reset ((*p)->descriptor.factory (_pannable, _session.get_speakers ())); + _current_panner_uri = (*p)->descriptor.panner_uri; + _panner_gui_uri = (*p)->descriptor.gui_uri; if (_panner->set_state (**niter, version) == 0) { return -1; @@ -347,3 +377,19 @@ PannerShell::bypassed () const { return _bypassed; } + +/* set custom-panner config + * + * This function is intended to be only called from + * Route::set_custom_panner() + * which will trigger IO-reconfigutaion if this fn return true + */ +bool +PannerShell::set_user_selected_panner_uri (std::string const uri) +{ + if (uri == _user_selected_panner_uri) return false; + _user_selected_panner_uri = uri; + if (uri == _current_panner_uri) return false; + _force_reselect = true; + return true; +} diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index b191cf4890..10368bfb42 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -346,9 +346,8 @@ PluginInsert::connect_and_run (BufferSet& bufs, pframes_t nframes, framecnt_t of /* XXX: audio only */ uint32_t first_idx = in_map.get (DataType::AUDIO, 0, &valid); if (valid) { - Sample const * mono = bufs.get_audio (first_idx).data (offset); for (uint32_t i = in_streams.n_audio(); i < natural_input_streams().n_audio(); ++i) { - memcpy (bufs.get_audio (in_map.get (DataType::AUDIO, i, &valid)).data (offset), mono, sizeof (Sample) * nframes); + bufs.get_audio(in_map.get (DataType::AUDIO, i, &valid)).read_from(bufs.get_audio(first_idx), nframes, offset, offset); } } } @@ -490,8 +489,9 @@ PluginInsert::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end /* not active, but something has make up for any channel count increase */ - for (uint32_t n = out - in; n < out; ++n) { - memcpy (bufs.get_audio (n).data(), bufs.get_audio(in - 1).data(), sizeof (Sample) * nframes); + // TODO: option round-robin (n % in) or silence additional buffers ?? + for (uint32_t n = in; n < out; ++n) { + bufs.get_audio(n).read_from(bufs.get_audio(in - 1), nframes); } } @@ -505,7 +505,6 @@ PluginInsert::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end * all buffers appropriately. */ - bufs.set_is_silent (false); } void @@ -651,6 +650,8 @@ bool PluginInsert::configure_io (ChanCount in, ChanCount out) { Match old_match = _match; + ChanCount old_in = input_streams (); + ChanCount old_out = output_streams (); /* set the matching method and number of plugins that we will use to meet this configuration */ _match = private_can_support_io_configuration (in, out); @@ -658,9 +659,12 @@ PluginInsert::configure_io (ChanCount in, ChanCount out) return false; } - /* a signal needs emitting if we start or stop splitting */ - if (old_match.method != _match.method && (old_match.method == Split || _match.method == Split)) { - SplittingChanged (); /* EMIT SIGNAL */ + if ( (old_match.method != _match.method && (old_match.method == Split || _match.method == Split)) + || old_in != in + || old_out != out + ) + { + PluginIoReConfigure (); /* EMIT SIGNAL */ } /* configure plugins */ @@ -1208,10 +1212,23 @@ double PluginInsert::PluginControl::internal_to_interface (double val) const { if (_logarithmic) { + /* some plugins have a log-scale range "0.." + * ideally we'd map the range down to infinity somehow :) + * + * one solution could be to use + * val = exp(lower + log(range) * value); + * (log(val) - lower) / range) + * This approach would require access to the actual range (ie + * Plugin::ParameterDescriptor) and also require handling + * of unbound ranges.. + * + * currently an arbitrarly low number is assumed to represnt + * log(0) as hot-fix solution. + */ if (val > 0) { val = log (val); } else { - val = 0; + val = -8; // ~ -70dB = 20 * log10(exp(-8)) } } @@ -1222,7 +1239,12 @@ double PluginInsert::PluginControl::interface_to_internal (double val) const { if (_logarithmic) { - val = exp (val); + if (val <= -8) { + /* see note in PluginInsert::PluginControl::internal_to_interface() */ + val= 0; + } else { + val = exp (val); + } } return val; diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index 8d209cc78e..e93566068b 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -643,6 +643,10 @@ PluginManager::lxvst_discover_from_path (string path) vector<string *>::iterator x; int ret = 0; +#ifndef NDEBUG + (void) path; +#endif + DEBUG_TRACE (DEBUG::PluginManager, string_compose ("Discovering linuxVST plugins along %1\n", path)); plugin_objects = scanner (lxvst_path, lxvst_filter, 0, false, true); diff --git a/libs/ardour/po/cs.po b/libs/ardour/po/cs.po index 6df4ac1894..9554921194 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-09-03 07:59-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2013-06-13 22:47+0200\n" "Last-Translator: Pavel Fric <pavelfric@seznam.cz>\n" "Language-Team: Czech <kde-i18n-doc@kde.org>\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:643 -#: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 +#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "Chyba v programovánÃ: %1" @@ -203,65 +203,21 @@ msgstr "Nelze nahrát pÅ™Ãdavný modul VAMP \"%1\"" msgid "VAMP Plugin \"%1\" could not be loaded" msgstr "PÅ™Ãdavný modul VAMP \"%1\" se nepodaÅ™ilo nahrát" -#: audioengine.cc:186 -msgid "" -"This version of JACK is old - you should upgrade to a newer version that " -"supports jack_port_type_get_buffer_size()" +#: audioengine.cc:488 +msgid "looking for backends in %1\n" msgstr "" -"tato verze JACK je stará - MÄ›l byste provést povýšenà na novÄ›jÅ¡Ã verzi, " -"která podporuje jack_port_type_get_buffer_size()" - -#: audioengine.cc:190 -msgid "Connect session to engine" -msgstr "Spojit sezenà se strojem" -#: audioengine.cc:843 -msgid "" -"a port with the name \"%1\" already exists: check for duplicated track/bus " -"names" +#: audioengine.cc:511 +msgid "AudioEngine: cannot load module \"%1\" (%2)" msgstr "" -"PÅ™Ãpojka s názvem \"%1\" již existuje: Prověřte na zdvojené názvy stop/" -"sbÄ›rnic" -#: 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." +#: audioengine.cc:517 +msgid "AudioEngine: backend at \"%1\" has no descriptor function." 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:848 -msgid "AudioEngine: cannot register port \"%1\": %2" -msgstr "AudioEngine: Nelze zaregistrovat pÅ™Ãpojku \"%1\": %2" -#: audioengine.cc:878 -msgid "unable to create port: %1" -msgstr "Nelze vytvoÅ™it pÅ™Ãpojku: %1" - -#: audioengine.cc:932 -msgid "connect called before engine was started" -msgstr "Zavolánà connect (spojenÃ) pÅ™ed spuÅ¡tÄ›nÃm stroje" - -#: audioengine.cc:958 -msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" -msgstr "AudioEngine: Nelze spojit %1 (%2) s %3 (%4)" - -#: 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: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:1104 -msgid "get_ports called before engine was started" -msgstr "Zavolánà get_ports pÅ™ed spuÅ¡tÄ›nÃm stroje" - -#: audioengine.cc:1427 -msgid "failed to connect to JACK" -msgstr "NepodaÅ™ilo se spojit se s JACK" +#: audioengine.cc:589 +msgid "Could not create backend for %1: %2" +msgstr "" #: audioregion.cc:1643 msgid "" @@ -462,7 +418,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:1791 session.cc:1794 msgid "MIDI" msgstr "MIDI" @@ -577,7 +533,7 @@ msgstr "TrojúhelnÃkový" msgid "Rectangular" msgstr "ObdélnÃkový" -#: export_formats.cc:52 session.cc:4861 session.cc:4877 +#: export_formats.cc:52 session.cc:5014 session.cc:5030 msgid "None" msgstr "Žádný" @@ -688,7 +644,7 @@ msgid "" 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:2807 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" @@ -790,25 +746,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:205 +#: globals.cc:207 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:207 +#: globals.cc:209 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:211 +#: globals.cc:213 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:215 +#: globals.cc:217 msgid "Could not get system open files limit (%1)" msgstr "NepodaÅ™ilo se dostat systémové omezenà pro otevÅ™ené soubory (%1)" -#: globals.cc:266 +#: globals.cc:268 msgid "Loading configuration" msgstr "Nahrává se nastavenÃ" @@ -929,47 +885,47 @@ msgstr "IO: Å patnÄ› utvoÅ™ený Å™etÄ›zec v uzlu XML pro výstupy \"%1\"" msgid "IO: bad output string in XML node \"%1\"" msgstr "IO: Å patný Å™etÄ›zec pro výstup v uzlu XML \"%1\"" -#: io.cc:1410 +#: io.cc:1411 #, c-format msgid "%s %u" msgstr "%s %u" -#: io.cc:1457 +#: io.cc:1458 #, c-format msgid "%s in" msgstr "%s vstup" -#: io.cc:1459 +#: io.cc:1460 #, c-format msgid "%s out" msgstr "%s výstup" -#: io.cc:1534 session.cc:494 session.cc:523 +#: io.cc:1535 session.cc:686 session.cc:715 msgid "mono" msgstr "Mono" -#: io.cc:1536 session.cc:507 session.cc:537 +#: io.cc:1537 session.cc:699 session.cc:729 msgid "L" msgstr "L" -#: io.cc:1536 session.cc:509 session.cc:539 +#: io.cc:1537 session.cc:701 session.cc:731 msgid "R" msgstr "P" -#: io.cc:1538 io.cc:1544 +#: io.cc:1539 io.cc:1545 #, c-format msgid "%d" msgstr "%d" -#: ladspa_plugin.cc:88 +#: ladspa_plugin.cc:86 msgid "LADSPA: module has no descriptor function." msgstr "LADSPA: Modul nemá žádnou funkci popisu" -#: ladspa_plugin.cc:93 +#: ladspa_plugin.cc:91 msgid "LADSPA: plugin has gone away since discovery!" msgstr "LADSPA: PÅ™Ãdavný modul už nenà vÃce nalezitelný!" -#: ladspa_plugin.cc:100 +#: ladspa_plugin.cc:98 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\"" @@ -1050,7 +1006,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:4362 session_state.cc:1114 +#: location.cc:842 session.cc:4516 session_state.cc:1031 msgid "session" msgstr "SezenÃ" @@ -1227,11 +1183,11 @@ msgstr "Ovládánà polarity" msgid "solo control" msgstr "Ovládánà sóla" -#: mtc_slave.cc:235 +#: mtc_slave.cc:238 msgid "MTC Slave: atomic read of current time failed, sleeping!" msgstr "MTC Slave: Chyba pÅ™i atomickém Ätenà nynÄ›jÅ¡Ãho Äasu, spánek!" -#: mtc_slave.cc:359 +#: mtc_slave.cc:361 msgid "" "Unknown rate/drop value %1 in incoming MTC stream, session values used " "instead" @@ -1239,11 +1195,11 @@ msgstr "" "Neznámá hodnota %1 pro rychlost snÃmkovánÃ/zahozené snÃmky v pÅ™ÃchozÃm " "datovém proudu MTC, mÃsto nà se použÃvajà hodnoty sezenÃ" -#: mtc_slave.cc:379 +#: mtc_slave.cc:381 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 +#: mtc_slave.cc:395 msgid "Session and MTC framerate mismatch: MTC:%1 %2:%3." msgstr "Rychlost snÃmkovánà sezenà a MTC se neshodujÃ: MTC: %1 %2:%3." @@ -1307,19 +1263,19 @@ msgstr "CÃli vyváženà pÅ™edána data XML pro %1 - pÅ™ehlÞà se" msgid "looking for panners in %1" msgstr "Hledánà vyváženà v %1" -#: panner_manager.cc:99 +#: panner_manager.cc:100 msgid "Panner discovered: \"%1\" in %2" msgstr "Vyváženà nalezeno: \"%1\" v %2" -#: panner_manager.cc:116 +#: panner_manager.cc:117 msgid "PannerManager: cannot load module \"%1\" (%2)" msgstr "SprávceVyváženÃ: Nelze nahrát modul \"%1\" (%2)" -#: panner_manager.cc:123 +#: panner_manager.cc:124 msgid "PannerManager: module \"%1\" has no descriptor function." msgstr "SprávceVyváženÃ: Modul \"%1\" nemá žádnou funkci popisu" -#: panner_manager.cc:186 +#: panner_manager.cc:187 msgid "no panner discovered for in/out = %1/%2" msgstr "Nenalezeno žádné vyváženà pro vstupy/výstupy %1/%2" @@ -1439,11 +1395,7 @@ msgstr "" msgid "unknown plugin type \"%1\" - ignored" msgstr "Neznámý typ pÅ™Ãdavného modulu \"%1\" - pÅ™ehlÞà se" -#: port.cc:367 -msgid "get_connected_latency_range() called while disconnected from JACK" -msgstr "Zavolánà get_connected_latency_range() bÄ›hem odpojenà od JACK" - -#: port.cc:450 +#: port.cc:410 msgid "could not reregister %1" msgstr "NepodaÅ™ilo se znovu zaregistrovat %1" @@ -1460,6 +1412,36 @@ msgid "non-port insert XML used for port plugin insert" msgstr "" "XML pro vloženà ne-pÅ™Ãpojky použito ke vloženà pÅ™Ãdavného modulu pÅ™Ãpojky" +#: port_manager.cc:270 +msgid "" +"a port with the name \"%1\" already exists: check for duplicated track/bus " +"names" +msgstr "" +"PÅ™Ãpojka s názvem \"%1\" již existuje: Prověřte na zdvojené názvy stop/" +"sbÄ›rnic" + +#: port_manager.cc:272 +msgid "" +"No more ports are available. You will need to stop %1 and restart with more " +"ports if you need this many tracks." +msgstr "" + +#: port_manager.cc:275 +msgid "AudioEngine: cannot register port \"%1\": %2" +msgstr "AudioEngine: Nelze zaregistrovat pÅ™Ãpojku \"%1\": %2" + +#: port_manager.cc:314 +msgid "unable to create port: %1" +msgstr "Nelze vytvoÅ™it pÅ™Ãpojku: %1" + +#: port_manager.cc:401 +msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" +msgstr "AudioEngine: Nelze spojit %1 (%2) s %3 (%4)" + +#: port_manager.cc:453 port_manager.cc:454 +msgid "Re-establising port %1 failed" +msgstr "" + #: processor.cc:207 msgid "No %1 property flag in element %2" msgstr "Žádný pÅ™Ãznak pro vlastnost \"%1\" v prvku %2" @@ -1468,19 +1450,19 @@ msgstr "Žádný pÅ™Ãznak pro vlastnost \"%1\" v prvku %2" msgid "No child node with active property" msgstr "Žádný uzel potomka s vlastnostà \"Äinný\"" -#: rc_configuration.cc:93 +#: rc_configuration.cc:88 msgid "Loading system configuration file %1" msgstr "Nahrává se soubor s nastavenÃm systému %1" -#: rc_configuration.cc:97 +#: rc_configuration.cc:92 msgid "%1: cannot read system configuration file \"%2\"" msgstr "%1: Nelze pÅ™eÄÃst soubor s nastavenÃm systému \"%2\"" -#: rc_configuration.cc:102 +#: rc_configuration.cc:97 msgid "%1: system configuration file \"%2\" not loaded successfully." msgstr "%1: Soubor s nastavenÃm systému \"%2\" se nepodaÅ™ilo nahrát." -#: rc_configuration.cc:106 +#: rc_configuration.cc:101 msgid "" "Your system %1 configuration file is empty. This probably means that there " "was an error installing %1" @@ -1488,23 +1470,23 @@ msgstr "" "Váš soubor s nastavenÃm systému %1 je prázdný. To zÅ™ejmÄ› znamená, že pÅ™i " "instalaci %1 se vyskytla chyba." -#: rc_configuration.cc:121 +#: rc_configuration.cc:116 msgid "Loading user configuration file %1" msgstr "Nahrává se soubor s uživatelovým nastavenÃm %1" -#: rc_configuration.cc:125 +#: rc_configuration.cc:120 msgid "%1: cannot read configuration file \"%2\"" msgstr "%1: Nelze pÅ™eÄÃst soubor s nastavenÃm\"%2\"" -#: rc_configuration.cc:130 +#: rc_configuration.cc:125 msgid "%1: user configuration file \"%2\" not loaded successfully." msgstr "%1: Soubor s uživatelovým nastavenÃm \"%2\" se nepodaÅ™ilo nahrát." -#: rc_configuration.cc:134 +#: rc_configuration.cc:129 msgid "your %1 configuration file is empty. This is not normal." msgstr "Váš soubor s nastavenÃm %1 je prázdný. To nenà obvyklé." -#: rc_configuration.cc:151 +#: rc_configuration.cc:146 msgid "Config file %1 not saved" msgstr "Soubor s nastavenÃm %1 nebyl uložen" @@ -1544,38 +1526,42 @@ msgstr "ZavedenÃ: Chyba v src_new() : %1" msgid "return %1" msgstr "Vrácená hodnota: %1" -#: route.cc:1105 route.cc:2581 +#: route.cc:1075 route.cc:2528 msgid "unknown Processor type \"%1\"; ignored" msgstr "Neznámý typ procesoru \"%1\"; pÅ™ehlÞà se" -#: route.cc:1117 +#: route.cc:1087 msgid "processor could not be created. Ignored." msgstr "Procesor se nepodaÅ™ilo vytvoÅ™it. PÅ™ehlÞà se." -#: route.cc:2007 route.cc:2234 +#: route.cc:1962 route.cc:2187 msgid "Bad node sent to Route::set_state() [%1]" msgstr "Å patný uzel poslán Route::set_state() [%1]" -#: route.cc:2067 +#: route.cc:2022 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:2137 route.cc:2141 route.cc:2348 route.cc:2352 +#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305 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Ã! " "[%1] ... PÅ™ehlÞà se." +#: route.cc:2311 +msgid "Converting deprecated order key for %1 using Editor order %2" +msgstr "" + #: route_group.cc:459 msgid "You cannot subgroup MIDI tracks at this time" msgstr "Stopy MIDI nelze nynà sdružit do podskupin" -#: rb_effect.cc:233 rb_effect.cc:274 +#: rb_effect.cc:234 rb_effect.cc:275 msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" msgstr "tempoize: Chyba pÅ™i Ätenà dat z %1 v %2 (žádáno %3, obdrženo %4)" -#: rb_effect.cc:303 rb_effect.cc:325 +#: rb_effect.cc:304 rb_effect.cc:326 msgid "error writing tempo-adjusted data to %1" msgstr "Chyba pÅ™i zápisu dat s upraveným tempem do %1" @@ -1591,104 +1577,80 @@ 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 -msgid "Set block size and sample rate" -msgstr "Nastavit velikost bloku a vzorkovacà kmitoÄet" - -#: session.cc:352 -msgid "Using configuration" -msgstr "PoužÃvané nastavenÃ" +#: session.cc:344 +msgid "Connect to engine" +msgstr "Spojit se strojem" -#: session.cc:377 -msgid "LTC In" -msgstr "Vstup LTC" +#: session.cc:349 +msgid "Session loading complete" +msgstr "Nahránà sezenà dokonÄeno" -#: session.cc:378 -msgid "LTC Out" -msgstr "Výstup LTC" +#: session.cc:421 +msgid "Set up LTC" +msgstr "" -#: session.cc:404 -msgid "LTC-in" -msgstr "Vstup LTC" +#: session.cc:423 +msgid "Set up Click" +msgstr "" -#: session.cc:405 -msgid "LTC-out" -msgstr "Výstup LTC" +#: session.cc:425 +msgid "Set up standard connections" +msgstr "Nastavit standardnà spojenÃ" -#: session.cc:434 +#: session.cc:635 msgid "could not setup Click I/O" msgstr "NepodaÅ™ilo se nastavit vstup/výstup metronomu" -#: session.cc:461 -msgid "cannot setup Click I/O" -msgstr "Nelze nastavit vstup/výstup metronomu" - -#: session.cc:464 -msgid "Compute I/O Latencies" -msgstr "VypoÄÃtat prodlevy vstupu/výstupu" - -#: session.cc:470 -msgid "Set up standard connections" -msgstr "Nastavit standardnà spojenÃ" - -#: session.cc:491 +#: session.cc:683 #, c-format msgid "out %<PRIu32>" msgstr "Výstup %<PRIu32>" -#: session.cc:505 +#: session.cc:697 #, c-format msgid "out %<PRIu32>+%<PRIu32>" msgstr "Výstup %<PRIu32>+%<PRIu32>" -#: session.cc:520 +#: session.cc:712 #, c-format msgid "in %<PRIu32>" msgstr "Vstup %<PRIu32>" -#: session.cc:534 +#: session.cc:726 #, c-format msgid "in %<PRIu32>+%<PRIu32>" msgstr "Vstup %<PRIu32>+%<PRIu32>" -#: session.cc:570 -msgid "Setup signal flow and plugins" -msgstr "Nastavit signálový tok a pÅ™Ãdavné moduly" - -#: session.cc:614 -msgid "Connect to engine" -msgstr "Spojit se strojem" - -#: session.cc:645 +#: session.cc:790 msgid "cannot connect master output %1 to %2" msgstr "Nelze spojit hlavnà výstup %1 s %2" -#: session.cc:704 +#: session.cc:849 msgid "monitor" msgstr "SledovánÃ" -#: session.cc:749 +#: session.cc:894 msgid "cannot connect control input %1 to %2" msgstr "Nelze spojit vstup ovládánà %1 s %2" -#: session.cc:769 +#: session.cc:914 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:945 msgid "cannot connect control output %1 to %2" msgstr "Nelze spojit výstup ovládánà %1 s %2" -#: session.cc:864 +#: session.cc:1009 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:1193 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:1233 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" @@ -1696,83 +1658,91 @@ 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:1547 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:1843 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:1849 +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 "" +"Nejsou dostupné dalÅ¡Ã pÅ™Ãpojky JACK. Pokud potÅ™ebujete tolik stop, musÃte " +"zastavit %1 a spustit JACK znovu s vÃce pÅ™Ãpojkami." + +#: session.cc:2026 session.cc:2029 msgid "Audio" msgstr "Zvuk" -#: session.cc:1902 session.cc:1910 session.cc:1987 session.cc:1995 +#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146 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:2084 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:2116 session.cc:2119 msgid "Bus" msgstr "SbÄ›rnice" -#: session.cc:2018 +#: session.cc:2169 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:2228 session.cc:2238 msgid "Session: UINT_MAX routes? impossible!" msgstr "SezenÃ: Cesty UINT_MAX? Nemožné!" -#: session.cc:2109 +#: session.cc:2260 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:2286 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:2315 msgid "Adding new tracks/busses failed" msgstr "Chyba pÅ™i pÅ™idávánà nové stopy/sbÄ›rnice" -#: session.cc:3265 +#: session.cc:3419 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:3539 session.cc:3597 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:3987 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:3999 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:4011 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:4023 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:4150 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:4179 msgid "too many bounced versions of playlist \"%1\"" msgstr "PÅ™ÃliÅ¡ mnoho odhozených verzà seznamu skladeb \"%1\"" -#: session.cc:4035 +#: session.cc:4189 msgid "cannot create new audio file \"%1\" for %2" msgstr "Nelze vytvoÅ™it nový zvukový soubor \"%1\" pro %2" @@ -1815,11 +1785,11 @@ msgstr "Adresář se sezenÃm v cestÄ› %1 neexistuje" msgid "Session: cannot have two events of type %1 at the same frame (%2)." msgstr "SezenÃ: Nenà možné mÃt ve stejném snÃmku (%2) dvÄ› události typu %1." -#: session_export.cc:126 +#: session_export.cc:125 msgid "%1: cannot seek to %2 for export" msgstr "%1: Polohu souboru %2 nelze vyhledat pro vyvedenÃ" -#: session_export.cc:183 +#: session_export.cc:182 msgid "Export ended unexpectedly: %1" msgstr "Vyvedenà skonÄilo neoÄekávanÄ›: %1" @@ -1831,10 +1801,6 @@ 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:428 -msgid "Session: could not send full MIDI time code" -msgstr "SezenÃ: NepodaÅ™ilo se poslat úplný Äasový kód MIDI" - #: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "SezenÃ: Nelze poslat quarter-frame MTC (%1)" @@ -1843,92 +1809,96 @@ 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:133 +#: session_process.cc:132 msgid "Session: error in no roll for %1" msgstr "SezenÃ: Chyba v no_roll pro %1" -#: session_process.cc:1158 +#: session_process.cc:1157 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 +#: session_state.cc:140 msgid "Could not use path %1 (%2)" msgstr "NepodaÅ™ilo se použÃt cestu %1 (%2)" -#: session_state.cc:267 +#: session_state.cc:184 msgid "solo cut control (dB)" msgstr "Nastavenà Solo Cut (dB)" -#: session_state.cc:360 +#: session_state.cc:208 +msgid "Set block size and sample rate" +msgstr "Nastavit velikost bloku a vzorkovacà kmitoÄet" + +#: session_state.cc:213 +msgid "Using configuration" +msgstr "PoužÃvané nastavenÃ" + +#: session_state.cc:325 msgid "Reset Remote Controls" msgstr "Nastavit dálkové ovládánà znovu" -#: session_state.cc:385 -msgid "Session loading complete" -msgstr "Nahránà sezenà dokonÄeno" - -#: session_state.cc:452 +#: session_state.cc:417 msgid "Session: cannot create session peakfile folder \"%1\" (%2)" msgstr "SezenÃ: Nelze vytvoÅ™it složku Peakfile \"%1\" (%2)" -#: session_state.cc:459 +#: session_state.cc:424 msgid "Session: cannot create session sounds dir \"%1\" (%2)" msgstr "SezenÃ: Nelze vytvoÅ™it adresář sezenà pro zvuková data \"%1\" (%2)" -#: session_state.cc:466 +#: session_state.cc:431 msgid "Session: cannot create session midi dir \"%1\" (%2)" msgstr "SezenÃ: Nelze vytvoÅ™it adresář sezenà pro MIDI \"%1\" (%2)" -#: session_state.cc:473 +#: session_state.cc:438 msgid "Session: cannot create session dead sounds folder \"%1\" (%2)" msgstr "" "SezenÃ: Nelze vytvoÅ™it odpadkový koÅ¡ sezenà pro zahozený zvuk \"%1\" (%2)" -#: session_state.cc:480 +#: session_state.cc:445 msgid "Session: cannot create session export folder \"%1\" (%2)" msgstr "SezenÃ: Nelze vytvoÅ™it složku sezenà pro vyvedené soubory \"%1\" (%2)" -#: session_state.cc:487 +#: session_state.cc:452 msgid "Session: cannot create session analysis folder \"%1\" (%2)" msgstr "SezenÃ: Nelze vytvoÅ™it složku sezenà pro data rozboru \"%1\" (%2)" -#: session_state.cc:494 +#: session_state.cc:459 msgid "Session: cannot create session plugins folder \"%1\" (%2)" msgstr "SezenÃ: Nelze vytvoÅ™it složku sezenà pro pÅ™Ãdavné moduly \"%1\" (%2)" -#: session_state.cc:501 +#: session_state.cc:466 msgid "Session: cannot create session externals folder \"%1\" (%2)" msgstr "SezenÃ: Nelze vytvoÅ™it složku sezenà pro vnÄ›jÅ¡Ã \"%1\" (%2)" -#: session_state.cc:515 +#: session_state.cc:480 msgid "Session: cannot create session folder \"%1\" (%2)" msgstr "SezenÃ: Nelze vytvoÅ™it složku sezenà \"%1\" (%2)" -#: session_state.cc:548 +#: session_state.cc:514 msgid "Could not open %1 for writing session template" msgstr "NepodaÅ™ilo se otevÅ™Ãt %1 pro zápis pÅ™edlohy sezenÃ" -#: session_state.cc:554 +#: session_state.cc:520 msgid "Could not open session template %1 for reading" msgstr "NepodaÅ™ilo se otevÅ™Ãt pÅ™edlohu sezenà %1 pro ÄtenÃ" -#: session_state.cc:573 +#: session_state.cc:539 msgid "master" msgstr "Master" -#: session_state.cc:636 +#: session_state.cc:600 msgid "Could not remove pending capture state at path \"%1\" (%2)" msgstr "NepodaÅ™ilo se odstranit pÅ™edběžný stav nahrávánà v cestÄ› \"%1\" (%2)" -#: session_state.cc:660 +#: session_state.cc:624 msgid "could not rename snapshot %1 to %2 (%3)" msgstr "NepodaÅ™ilo se pÅ™ejmenovat snÃmek obrazovky %1 na %2 (%3)" -#: session_state.cc:688 +#: session_state.cc:652 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:669 msgid "" "the %1 audio engine is not connected and state saving would lose all I/O " "connections. Session not saved" @@ -1936,134 +1906,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:720 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:722 session_state.cc:733 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:730 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:798 msgid "%1: session file \"%2\" doesn't exist!" msgstr "%1: Soubor se sezenÃm \"%2\" neexistuje!" -#: session_state.cc:902 +#: session_state.cc:810 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:819 msgid "Session file %1 is not a session" msgstr "Soubor se sezenÃm %1 nenà sezenÃm" -#: session_state.cc:1208 +#: session_state.cc:1125 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:1179 msgid "Session: XML state has no options section" msgstr "SezenÃ: XML nemá žádnou Äást \"options\"" -#: session_state.cc:1262 +#: session_state.cc:1184 msgid "Session: XML state has no metadata section" msgstr "SezenÃ: XML nemá žádnou Äást \"metadata\"" -#: session_state.cc:1273 +#: session_state.cc:1195 msgid "Session: XML state has no sources section" msgstr "SezenÃ: XML nemá žádnou Äást \"sources\"" -#: session_state.cc:1280 +#: session_state.cc:1202 msgid "Session: XML state has no Tempo Map section" msgstr "SezenÃ: XML nemá žádnou Äást \"Tempo Map\"" -#: session_state.cc:1287 +#: session_state.cc:1209 msgid "Session: XML state has no locations section" msgstr "SezenÃ: XML nemá žádnou Äást \"locations\"" -#: session_state.cc:1313 +#: session_state.cc:1235 msgid "Session: XML state has no Regions section" msgstr "SezenÃ: XML nemá žádnou Äást \"Regions\"" -#: session_state.cc:1320 +#: session_state.cc:1242 msgid "Session: XML state has no playlists section" msgstr "SezenÃ: XML nemá žádnou Äást \"playlists\"" -#: session_state.cc:1340 +#: session_state.cc:1262 msgid "Session: XML state has no bundles section" msgstr "SezenÃ: XML nemá žádnou Äást \"bundles\"" -#: session_state.cc:1352 +#: session_state.cc:1274 msgid "Session: XML state has no diskstreams section" msgstr "SezenÃ: XML nemá žádnou Äást \"diskstreams\"" -#: session_state.cc:1360 +#: session_state.cc:1282 msgid "Session: XML state has no routes section" msgstr "SezenÃ: XML nemá žádnou Äást \"routes\"" -#: session_state.cc:1372 +#: session_state.cc:1294 msgid "Session: XML state has no route groups section" msgstr "SezenÃ: XML nemá žádnou Äást \"route groups\"" -#: session_state.cc:1381 +#: session_state.cc:1303 msgid "Session: XML state has no edit groups section" msgstr "SezenÃ: XML nemá žádnou Äást \"edit groups\"" -#: session_state.cc:1388 +#: session_state.cc:1310 msgid "Session: XML state has no mix groups section" msgstr "SezenÃ: XML nemá žádnou Äást \"mix groups\"" -#: session_state.cc:1396 +#: session_state.cc:1318 msgid "Session: XML state has no click section" msgstr "SezenÃ: XML nemá žádnou Äást \"click\"" -#: session_state.cc:1444 +#: session_state.cc:1360 msgid "Session: cannot create Route from XML description." msgstr "SezenÃ: Nelze vytvoÅ™it cestu z popisu XML" -#: session_state.cc:1448 +#: session_state.cc:1364 msgid "Loaded track/bus %1" msgstr "Byla nahrána stopa/sbÄ›rnice %1" -#: session_state.cc:1546 +#: session_state.cc:1462 msgid "Could not find diskstream for route" msgstr "NepodaÅ™ilo se najÃt Diskstream pro cestu" -#: session_state.cc:1600 +#: session_state.cc:1516 msgid "Session: cannot create Region from XML description." msgstr "SezenÃ: Nelze vytvoÅ™it oblast z popisu XML" -#: session_state.cc:1604 +#: session_state.cc:1520 msgid "Can not load state for region '%1'" msgstr "Nelze nahrát stav pro oblast '%1'" -#: session_state.cc:1640 +#: session_state.cc:1556 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:1584 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:1596 msgid "Cannot reconstruct nested source for region %1" msgstr "Nelze obnovit vnoÅ™ený zdroj pro oblast %1" -#: session_state.cc:1742 +#: session_state.cc:1658 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:1666 session_state.cc:1687 session_state.cc:1707 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:1672 session_state.cc:1693 session_state.cc:1713 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" @@ -2071,7 +2041,7 @@ msgstr "" "SezenÃ: Uzel XML k popisu zvukové oblasti odkazuje na ID nezvukového zdroje =" "%1" -#: session_state.cc:1820 +#: session_state.cc:1736 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" @@ -2079,23 +2049,23 @@ msgstr "" "SezenÃ: Uzlu XML k popisu zvukové oblasti chybà nÄ›které hlavnà zdroje; " "pÅ™ehlÞà se" -#: session_state.cc:1854 +#: session_state.cc:1770 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:1778 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:1784 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:1852 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" @@ -2103,122 +2073,122 @@ 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:1875 msgid "Session: cannot create Source from XML description." msgstr "SezenÃ: Nelze vytvoÅ™it zdroj z popisu XML" -#: session_state.cc:1993 +#: session_state.cc:1909 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:1932 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:1949 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:1962 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:1968 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:1978 msgid "template not saved" msgstr "PÅ™edloha neuložena" -#: session_state.cc:2072 +#: session_state.cc:1988 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:2183 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:2725 session_state.cc:2731 msgid "Cannot expand path %1 (%2)" msgstr "Nelze rozÅ¡ÃÅ™it cestu %1 (%2)" -#: session_state.cc:2868 +#: session_state.cc:2784 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:2823 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:2841 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "Nelze odstranit vrcholový soubor %1 pro %2 (%3)" -#: session_state.cc:3227 +#: session_state.cc:3143 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:3156 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:3159 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:3163 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:3188 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:3194 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:3236 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "NepodaÅ™ilo se najÃt MidiSource pro NoteDiffCommand" -#: session_state.cc:3331 +#: session_state.cc:3247 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "NepodaÅ™ilo se najÃt MidiSource pro SysExDiffCommand" -#: session_state.cc:3342 +#: session_state.cc:3258 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "NepodaÅ™ilo se najÃt MidiSource pro PatchChangeDiffCommand" -#: session_state.cc:3350 +#: session_state.cc:3266 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:3502 msgid "Session: unknown diskstream type in XML" msgstr "SezenÃ: Neznámý typ Diskstream v XML" -#: session_state.cc:3607 +#: session_state.cc:3507 msgid "Session: could not load diskstream via XML state" msgstr "SezenÃ: NepodaÅ™ilo se nahrát Diskstream pomocà stavu XML" -#: session_time.cc:215 -msgid "Unknown JACK transport state %1 in sync callback" -msgstr "Neznámý stav transportu JACK v Sync-Callback" +#: session_time.cc:214 +msgid "Unknown transport state %1 in sync callback" +msgstr "" -#: session_transport.cc:168 +#: session_transport.cc:167 msgid "Cannot loop - no loop range defined" msgstr "Nelze pÅ™ehrávat ve smyÄce - Nestanovena žádná oblast smyÄky" -#: session_transport.cc:728 +#: session_transport.cc:739 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" @@ -2226,7 +2196,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:1094 +#: session_transport.cc:1105 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2377,7 +2347,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:507 utils.cc:531 utils.cc:545 utils.cc:564 +#: sndfilesource.cc:396 utils.cc:510 utils.cc:534 utils.cc:548 utils.cc:567 msgid "programming error: %1 %2" msgstr "Chyba v programovánÃ: %1 %2" @@ -2614,19 +2584,19 @@ msgstr "Zamknout" msgid "programming error: unknown edit mode string \"%1\"" msgstr "Chyba v programovánÃ: neznámý Å™etÄ›zec pro režim úprav \"%1\"" -#: utils.cc:389 utils.cc:418 +#: utils.cc:389 utils.cc:421 msgid "MIDI Timecode" msgstr "ÄŒasový kód MIDI" -#: utils.cc:389 utils.cc:416 +#: utils.cc:389 utils.cc:419 msgid "MTC" msgstr "MTC" -#: utils.cc:393 utils.cc:425 +#: utils.cc:393 utils.cc:428 msgid "MIDI Clock" msgstr "Hodiny MIDI" -#: utils.cc:397 utils.cc:412 utils.cc:432 +#: utils.cc:397 utils.cc:415 utils.cc:435 msgid "JACK" msgstr "JACK" @@ -2634,50 +2604,18 @@ msgstr "JACK" msgid "programming error: unknown sync source string \"%1\"" msgstr "Chyba v programovánÃ: neznámý Å™etÄ›zec pro zdroj seÅ™Ãzenà \"%1\"" -#: utils.cc:423 +#: utils.cc:426 msgid "M-Clock" msgstr "M-Clock" -#: utils.cc:429 +#: utils.cc:432 msgid "LTC" msgstr "LTC" -#: utils.cc:599 +#: utils.cc:602 msgid "programming error: unknown native header format: %1" msgstr "Chyba v programovánÃ: neznámý nativnà formát hlaviÄky: %1" -#: utils.cc:614 +#: utils.cc:617 msgid "cannot open directory %1 (%2)" msgstr "Nelze otevÅ™Ãt adresář %1 (%2)" - -#~ msgid "Session" -#~ msgstr "SezenÃ" - -#~ msgid "midi" -#~ msgstr "midi" - -#~ msgid "MidiDiskstream: XML property channel-mask out of range" -#~ msgstr "MidiDiskstream: PÅ™ekroÄenà hodnoty masky kanálu vlastnosti XML" - -#~ msgid "timefx code failure. please notify ardour-developers." -#~ msgstr "Chyba v kódu TimeFX. Vyrozumte, prosÃm, vývojáře Ardouru." - -#~ msgid "" -#~ "Copying old session file %1 to %2\n" -#~ "Use %2 with %3 versions before 2.0 from now on" -#~ msgstr "" -#~ "KopÃruje se starý soubor se sezenÃm %1 do %2\n" -#~ "Od nynÄ›jÅ¡ka dál použÃvejte %2 s verzemi %3 pÅ™ed 2.0" - -#~ msgid "Session: you can't use a mark for auto loop" -#~ msgstr "Session: Sie können diesen Marker nicht für Auto-Loop verwenden " - -#~ msgid "" -#~ "No more JACK ports are available. You will need to stop %1 and restart " -#~ "JACK with ports if you need this many tracks." -#~ msgstr "" -#~ "Keine JACK-Ports mehr verfügbar. Sie müssen %1 stoppen und JACK mit mehr " -#~ "Ports neustarten, wenn Sie so viele Spuren benötigen." - -#~ msgid "Could not understand ardour file %1" -#~ msgstr "Konnte die Projektdatei %1 nicht verstehen" diff --git a/libs/ardour/po/de.po b/libs/ardour/po/de.po index f92bf49d1e..8cf15b4488 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-09-26 16:09+0200\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2013-09-26 16:32+0200\n" "Last-Translator: Edgar Aichinger <edogawa@aon.at>\n" "Language-Team: German <ardour-dev@lists.ardour.org>\n" @@ -137,7 +137,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:643 -#: rb_effect.cc:332 session.cc:2606 session.cc:2639 session.cc:3784 +#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "Programmierfehler: %1" @@ -206,19 +206,19 @@ msgstr "kann VAMP-Plugin \"%1\" nicht laden" msgid "VAMP Plugin \"%1\" could not be loaded" msgstr "VAMP-Plugin \"%1\" konnte nicht geladen werden" -#: audioengine.cc:489 +#: audioengine.cc:488 msgid "looking for backends in %1\n" msgstr "Suche nach Backends in %1\n" -#: audioengine.cc:512 +#: audioengine.cc:511 msgid "AudioEngine: cannot load module \"%1\" (%2)" msgstr "AudioEngine: kann Modul \"%1\" nicht laden (%2)" -#: audioengine.cc:518 +#: audioengine.cc:517 msgid "AudioEngine: backend at \"%1\" has no descriptor function." msgstr "AudioEngine: Backend an \"%1\" hat keine Beschreibungsfunktion." -#: audioengine.cc:580 +#: audioengine.cc:589 msgid "Could not create backend for %1: %2" msgstr "Konnte Backend für %1 nicht erzeugen: %2" @@ -272,8 +272,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)" @@ -423,7 +423,7 @@ msgstr "kann CPU-Takt in /proc/cpuinfo nicht finden" msgid "audio" msgstr "Audio" -#: data_type.cc:28 session.cc:1781 session.cc:1784 +#: data_type.cc:28 session.cc:1791 session.cc:1794 msgid "MIDI" msgstr "MIDI" @@ -538,7 +538,7 @@ msgstr "Dreieck" msgid "Rectangular" msgstr "Rechteck" -#: export_formats.cc:52 session.cc:5002 session.cc:5018 +#: export_formats.cc:52 session.cc:5014 session.cc:5030 msgid "None" msgstr "Kein" @@ -652,7 +652,7 @@ msgstr "" "% unterstützt nur %2 Kanäle, in Ihrer Kanalkonfiguration befinden sich " "jedoch %3 Kanäle" -#: file_source.cc:198 session_state.cc:2813 +#: file_source.cc:198 session_state.cc:2807 msgid "" "there are already 1000 files with names like %1; versioning discontinued" msgstr "" @@ -910,15 +910,15 @@ msgstr "%s in" msgid "%s out" msgstr "%s out" -#: io.cc:1535 session.cc:676 session.cc:705 +#: io.cc:1535 session.cc:686 session.cc:715 msgid "mono" msgstr "Mono" -#: io.cc:1537 session.cc:689 session.cc:719 +#: io.cc:1537 session.cc:699 session.cc:729 msgid "L" msgstr "L" -#: io.cc:1537 session.cc:691 session.cc:721 +#: io.cc:1537 session.cc:701 session.cc:731 msgid "R" msgstr "R" @@ -1019,7 +1019,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:4503 session_state.cc:1031 +#: location.cc:842 session.cc:4516 session_state.cc:1031 msgid "session" msgstr "Projekt" @@ -1166,38 +1166,6 @@ msgstr "Fehlende Eigenschaft \"state\" bei AutomationState" msgid "MIDI stretch created non-MIDI source" msgstr "MIDI Streckung erzeugte Nicht-MIDI Quelle" -#: midiport_manager.cc:71 -msgid "MIDI control in" -msgstr "MIDI control in" - -#: midiport_manager.cc:72 -msgid "MIDI control out" -msgstr "MIDI control out" - -#: midiport_manager.cc:74 -msgid "MMC in" -msgstr "MMC in" - -#: midiport_manager.cc:75 -msgid "MMC out" -msgstr "MMC out" - -#: midiport_manager.cc:96 -msgid "MTC in" -msgstr "MTC in" - -#: midiport_manager.cc:98 -msgid "MTC out" -msgstr "MTC out" - -#: midiport_manager.cc:101 -msgid "MIDI Clock in" -msgstr "MIDI Clock in" - -#: midiport_manager.cc:103 -msgid "MIDI Clock out" -msgstr "MIDI Clock out" - #: monitor_processor.cc:53 msgid "monitor dim" msgstr "Monitor dämpfen" @@ -1582,39 +1550,43 @@ msgstr "Import: Fehler in src_new() : %1" msgid "return %1" msgstr "Rückgabewert: %1" -#: route.cc:1105 route.cc:2581 +#: route.cc:1075 route.cc:2528 msgid "unknown Processor type \"%1\"; ignored" msgstr "unbekannter Prozessortyp \"%1\"; ignoriert" -#: route.cc:1117 +#: route.cc:1087 msgid "processor could not be created. Ignored." msgstr "Prozessor konnte nicht erzeugt werden. Ignoriert." -#: route.cc:2007 route.cc:2234 +#: route.cc:1962 route.cc:2187 msgid "Bad node sent to Route::set_state() [%1]" msgstr "Schlechter Knoten an Route::set_state() gesendet [%1]" -#: route.cc:2067 +#: route.cc:2022 msgid "Pannable state found for route (%1) without a panner!" msgstr "Pannerziel-Status für Route (%1) ohne Panner gefunden!" -#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 +#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" "schlecht geformte Zeichenkette für den Schlüssel der Sortierreihenfolge in " "der Projektdatei! [%1] ... ignoriert" +#: route.cc:2311 +msgid "Converting deprecated order key for %1 using Editor order %2" +msgstr "" + #: route_group.cc:459 msgid "You cannot subgroup MIDI tracks at this time" msgstr "MIDI-Spuren können zur Zeit nicht zu Subgruppen zusammengefasst werden" -#: rb_effect.cc:233 rb_effect.cc:274 +#: rb_effect.cc:234 rb_effect.cc:275 msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" msgstr "" "tempoize: Fehler beim Lesen der Daten von %1 an %2 (%3 erwünscht, %4 " "erhalten)" -#: rb_effect.cc:303 rb_effect.cc:325 +#: rb_effect.cc:304 rb_effect.cc:326 msgid "error writing tempo-adjusted data to %1" msgstr "Fehler beim Schreiben der tempo-angepassten Daten nach %1" @@ -1630,98 +1602,82 @@ msgstr "Send %1" msgid "programming error: send created using role %1" msgstr "Programmierfehler: Send erzeugt mittels Rolle %1" -#: session.cc:343 +#: session.cc:344 msgid "Connect to engine" msgstr "Verbinde zur Engine" -#: session.cc:348 +#: session.cc:349 msgid "Session loading complete" msgstr "Laden des Projektes abgeschlossen" -#: session.cc:420 +#: session.cc:421 msgid "Set up LTC" msgstr "LTC einrichten" -#: session.cc:422 +#: session.cc:423 msgid "Set up Click" msgstr "Klick einrichten" -#: session.cc:424 +#: session.cc:425 msgid "Set up standard connections" msgstr "Richte Standard-Verbindungen ein" -#: session.cc:561 -msgid "LTC In" -msgstr "LTC In" - -#: session.cc:562 -msgid "LTC Out" -msgstr "LTC Out" - -#: session.cc:588 -msgid "LTC-in" -msgstr "LTC-in" - -#: session.cc:589 -msgid "LTC-out" -msgstr "LTC-out" - -#: session.cc:625 +#: session.cc:635 msgid "could not setup Click I/O" msgstr "konnte Metronom-E/A nicht einrichten" -#: session.cc:673 +#: session.cc:683 #, c-format msgid "out %<PRIu32>" msgstr "out %<PRIu32>" -#: session.cc:687 +#: session.cc:697 #, c-format msgid "out %<PRIu32>+%<PRIu32>" msgstr "out %<PRIu32>+%<PRIu32>" -#: session.cc:702 +#: session.cc:712 #, c-format msgid "in %<PRIu32>" msgstr "in %<PRIu32>" -#: session.cc:716 +#: session.cc:726 #, c-format msgid "in %<PRIu32>+%<PRIu32>" msgstr "in %<PRIu32>+%<PRIu32>" -#: session.cc:780 +#: session.cc:790 msgid "cannot connect master output %1 to %2" msgstr "kann Master-Ausgang %1 nicht mit %2 verbinden" -#: session.cc:839 +#: session.cc:849 msgid "monitor" msgstr "Monitor" -#: session.cc:884 +#: session.cc:894 msgid "cannot connect control input %1 to %2" msgstr "kann Kontrolleingang %1 nicht mit %2 verbinden" -#: session.cc:904 +#: session.cc:914 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "Bevorzugte E/A für den Monitorbus (%1) kann nicht gefunden werden" -#: session.cc:935 +#: session.cc:945 msgid "cannot connect control output %1 to %2" msgstr "kann Kontrollausgang %1 nicht mit %2 verbinden" -#: session.cc:999 +#: session.cc:1009 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "" "Kann das Vorhör-System nicht einrichten: kein Vorhören von Regionen möglich" -#: session.cc:1183 +#: session.cc:1193 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "" "Session: Sie können diese Position nicht für Auto-Punch verwenden (Start <= " "Ende) " -#: session.cc:1223 +#: session.cc:1233 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" @@ -1729,15 +1685,15 @@ msgstr "" "Sie können diese Position nicht für \"automatische Schleife\" verwenden, da " "sie keine oder eine negative Länge hat" -#: session.cc:1537 +#: session.cc:1547 msgid "feedback loop setup between %1 and %2" msgstr "Feedbackschleife zwischen %1 und %2 erkannt" -#: session.cc:1833 +#: session.cc:1843 msgid "Session: could not create new midi track." msgstr "Session: konnte keine neue MIDI-Spur erzeugen." -#: session.cc:1839 +#: session.cc:1849 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." @@ -1745,76 +1701,76 @@ msgstr "" "Keine JACK-Ports mehr verfügbar. Wenn Sie so viele Spuren benötigen, müssen " "Sie %1 stoppen und JACK mit mehr Ports neu starten." -#: session.cc:2016 session.cc:2019 +#: session.cc:2026 session.cc:2029 msgid "Audio" msgstr "Audio" -#: session.cc:2043 session.cc:2051 session.cc:2128 session.cc:2136 +#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "kann %1 ein/%2 aus für neue Audiospur nicht konfigurieren" -#: session.cc:2074 +#: session.cc:2084 msgid "Session: could not create new audio track." msgstr "Session: konnte keine neue Audios.pur erzeugen" -#: session.cc:2106 session.cc:2109 +#: session.cc:2116 session.cc:2119 msgid "Bus" msgstr "Bus" -#: session.cc:2159 +#: session.cc:2169 msgid "Session: could not create new audio route." msgstr "Session: konnte keine neueAudio-Route erzeugen" -#: session.cc:2218 session.cc:2228 +#: session.cc:2228 session.cc:2238 msgid "Session: UINT_MAX routes? impossible!" msgstr "Session: UINT_MAX Routen? unmöglich!" -#: session.cc:2250 +#: session.cc:2260 msgid "Session: cannot create track/bus from template description" msgstr "Session: Kann die Route aus der Vorlagenbeschreibung nicht erzeugen" -#: session.cc:2276 +#: session.cc:2286 msgid "Session: could not create new route from template" msgstr "Session: konnte keine neue Route aus der Vorlage erzeugen." -#: session.cc:2305 +#: session.cc:2315 msgid "Adding new tracks/busses failed" msgstr "Fehler beim Hinzufügen neuer Spuren/Busse" -#: session.cc:3406 +#: session.cc:3419 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "" "FATALER FEHLER! Konnte keine passende Version von %1 zum Umbenennen finden" -#: session.cc:3526 session.cc:3584 +#: session.cc:3539 session.cc:3597 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "Es gibt bereits %1 Aufnahmen für %2, was ich als zu viele erachte." -#: session.cc:3974 +#: session.cc:3987 msgid "send ID %1 appears to be in use already" msgstr "Send ID %1 ist offenbar schon in Gebrauch" -#: session.cc:3986 +#: session.cc:3999 msgid "aux send ID %1 appears to be in use already" msgstr "Aux-Send ID %1 ist offenbar schon in Gebrauch" -#: session.cc:3998 +#: session.cc:4011 msgid "return ID %1 appears to be in use already" msgstr "Return ID %1 ist offenbar schon in Gebrauch" -#: session.cc:4010 +#: session.cc:4023 msgid "insert ID %1 appears to be in use already" msgstr "Insert ID %1 ist offenbar schon in Gebrauch" -#: session.cc:4137 +#: session.cc:4150 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "Kann einen Bereich mit Ende <= Start nicht schreiben (z.B. %1 <= %2)" -#: session.cc:4166 +#: session.cc:4179 msgid "too many bounced versions of playlist \"%1\"" msgstr "zu viele gebouncete Versionen der Wiedergabeliste \"%1\"" -#: session.cc:4176 +#: session.cc:4189 msgid "cannot create new audio file \"%1\" for %2" msgstr "kann keine neue Audiodatei \"%1\" für %2 erzeugen" @@ -2072,55 +2028,55 @@ msgstr "Session: XML hat keinen Abschnitt \"mix groups\"" msgid "Session: XML state has no click section" msgstr "Session: XML hat keinen Abschnitt \"click\"" -#: session_state.cc:1366 +#: session_state.cc:1360 msgid "Session: cannot create Route from XML description." msgstr "Session: Kann die Route aus der XML-Beschreibung nicht erzeugen" -#: session_state.cc:1370 +#: session_state.cc:1364 msgid "Loaded track/bus %1" msgstr "Spur/Bus %1 wurde geladen" -#: session_state.cc:1468 +#: session_state.cc:1462 msgid "Could not find diskstream for route" msgstr "Konnte Diskstream für Route nicht finden" -#: session_state.cc:1522 +#: session_state.cc:1516 msgid "Session: cannot create Region from XML description." msgstr "Session: kann Region nicht aus XML-Beschreibung erzeugen" -#: session_state.cc:1526 +#: session_state.cc:1520 msgid "Can not load state for region '%1'" msgstr "Kann Status für Region '%1' nicht laden" -#: session_state.cc:1562 +#: session_state.cc:1556 msgid "Regions in compound description not found (ID's %1 and %2): ignored" msgstr "" "Regionen der Verbindungsbeschreibung nicht gefunden (IDs %1 and %2): " "ignoriert" -#: session_state.cc:1590 +#: session_state.cc:1584 msgid "Nested source has no ID info in session file! (ignored)" msgstr "" "Verschachtelte Quelle hat keine ID-Information in Projektdatei! (ignoriert)" -#: session_state.cc:1602 +#: session_state.cc:1596 msgid "Cannot reconstruct nested source for region %1" msgstr "Kann verschachtelte Quelle für Region %1 nicht wiederherstellen" -#: session_state.cc:1664 +#: session_state.cc:1658 msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" msgstr "" "Session: XML-Knoten zur Beschreibung einer Audioregion ist unvollständig " "(Quelle fehlt)" -#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713 +#: session_state.cc:1666 session_state.cc:1687 session_state.cc:1707 msgid "" "Session: XMLNode describing a AudioRegion references an unknown source id =%1" msgstr "" "Session: XML-Knoten zur Beschreibung einer Audioregion referenziert eine " "unbekannte Quell-ID =%1" -#: session_state.cc:1678 session_state.cc:1699 session_state.cc:1719 +#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" @@ -2128,7 +2084,7 @@ msgstr "" "Session: XML-Knoten zur Beschreibung einer Audioregion referenziert eine " "Nicht-Audio Quell-ID =%1" -#: session_state.cc:1742 +#: session_state.cc:1736 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" @@ -2136,27 +2092,27 @@ msgstr "" "Session: dem XML-Knoten zur Beschreibung einer Audioregion fehlen einige " "Hauptquellen; ignoriert" -#: session_state.cc:1776 +#: session_state.cc:1770 msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" msgstr "" "Session: XML-Knoten zur Beschreibung einer MIDI-Region ist unvollständig " "(Quelle fehlt)" -#: session_state.cc:1784 +#: session_state.cc:1778 msgid "" "Session: XMLNode describing a MidiRegion references an unknown source id =%1" msgstr "" "Session: XML-Knoten zur Beschreibung einer MIDI-Region referenziert eine " "unbekannte Quell-ID =%1" -#: session_state.cc:1790 +#: session_state.cc:1784 msgid "" "Session: XMLNode describing a MidiRegion references a non-midi source id =%1" msgstr "" "Session: XML-Knoten zur Beschreibung einer MIDI-Region referenziert eine " "Nicht-MIDI Quell-ID =%1" -#: session_state.cc:1858 +#: session_state.cc:1852 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" @@ -2164,109 +2120,109 @@ msgstr "" "kann keine neue Datei aus dem Regionennamen \"%1\" mit ident = \"%2\" " "erzeugen: zu viele Dateien mit ähnlichen Namen existieren" -#: session_state.cc:1881 +#: session_state.cc:1875 msgid "Session: cannot create Source from XML description." msgstr "Session: Kann Quelle aus der XML-Beschreibung nicht erzeugen" -#: session_state.cc:1915 +#: session_state.cc:1909 msgid "A sound file is missing. It will be replaced by silence." msgstr "Eine Audiodatei fehlt. Sie wird durch Stille ersetzt werden." -#: session_state.cc:1938 +#: session_state.cc:1932 msgid "Found a sound file that cannot be used by %1. Talk to the progammers." msgstr "" "Eine nicht mit %1 benutzbare Audiodatei wurde gefunden. Sprechen Sie mit den " "Programmierern." -#: session_state.cc:1955 +#: session_state.cc:1949 msgid "Could not create templates directory \"%1\" (%2)" msgstr "Konnte Vorlagenverzeichnis \"%1\" nicht erzeugen (%2)" -#: session_state.cc:1968 +#: session_state.cc:1962 msgid "Template \"%1\" already exists - new version not created" msgstr "Vorlage \"%1\" existiert bereits - neue Version wurde nicht erzeugt" -#: session_state.cc:1974 +#: session_state.cc:1968 msgid "Could not create directory for Session template\"%1\" (%2)" msgstr "Konnte kein Verzeichnis für Projektvorlage \"%1\" erzeugen (%2)" -#: session_state.cc:1984 +#: session_state.cc:1978 msgid "template not saved" msgstr "Vorlage nicht gesichert" -#: session_state.cc:1994 +#: session_state.cc:1988 msgid "Could not create directory for Session template plugin state\"%1\" (%2)" msgstr "" "Konnte Verzeichnis für Projektvorlagen-Pluginstatus \"%1\" nicht erzeugen " "(%2)" -#: session_state.cc:2189 +#: session_state.cc:2183 msgid "Unknown node \"%1\" found in Bundles list from session file" msgstr "Unbekannter Knoten \"%1\" in Bündelliste der Projektdatei gefunden" -#: session_state.cc:2731 session_state.cc:2737 +#: session_state.cc:2725 session_state.cc:2731 msgid "Cannot expand path %1 (%2)" msgstr "Kann Pfad %1 nicht expandieren (%2)" -#: session_state.cc:2790 +#: session_state.cc:2784 msgid "Session: cannot create dead file folder \"%1\" (%2)" msgstr "Session: kann den Mülleimer \"%1\" nicht erzeugen (%2)" -#: session_state.cc:2829 +#: session_state.cc:2823 msgid "cannot rename unused file source from %1 to %2 (%3)" msgstr "kann unbenutzte Dateiquelle nicht von %1 nach %2 umbenennen (%3)" -#: session_state.cc:2847 +#: session_state.cc:2841 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "kann Peakdatei %1 für %2 nicht entfernen (%3)" -#: session_state.cc:3149 +#: session_state.cc:3143 msgid "could not backup old history file, current history not saved" msgstr "" "konnte kein Backup der alten Aktionsliste erstellen, momentane Aktionsliste " "ungesichert" -#: session_state.cc:3162 +#: session_state.cc:3156 msgid "history could not be saved to %1" msgstr "Aktionsliste konnte nicht nach %1 gesichert werden" -#: session_state.cc:3165 +#: session_state.cc:3159 msgid "Could not remove history file at path \"%1\" (%2)" msgstr "Konnte Aktionslistendatei im Pfad \"%1\" nicht entfernen (%2)" -#: session_state.cc:3169 +#: session_state.cc:3163 msgid "could not restore history file from backup %1 (%2)" msgstr "konnte Aktionslistendatei nicht aus dem Backup %1 restaurieren (%2)" -#: session_state.cc:3194 +#: session_state.cc:3188 msgid "%1: no history file \"%2\" for this session." msgstr "%1: keine Aktionslistendatei \"%2\" für dieses Projekt." -#: session_state.cc:3200 +#: session_state.cc:3194 msgid "Could not understand session history file \"%1\"" msgstr "Konnte Projekt-Aktionslistendatei \"%1\" nicht verstehen" -#: session_state.cc:3242 +#: session_state.cc:3236 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "MidiSource für NoteDiffCommand nicht auffindbar" -#: session_state.cc:3253 +#: session_state.cc:3247 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "MidiSource für SysExDiffCommand nicht auffindbar" -#: session_state.cc:3264 +#: session_state.cc:3258 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "MidiSource für PatchChangeDiffCommand nicht auffindbar" -#: session_state.cc:3272 +#: session_state.cc:3266 msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "Konnte im XML-Knoten \"%1\" keinen Befehl erkennen." -#: session_state.cc:3524 +#: session_state.cc:3502 msgid "Session: unknown diskstream type in XML" msgstr "Session: Unbekannter Diskstream im XML" -#: session_state.cc:3529 +#: session_state.cc:3507 msgid "Session: could not load diskstream via XML state" msgstr "Session: konnte Diskstream nicht via XML-Status laden" @@ -2710,56 +2666,3 @@ msgstr "Programmierfehler: unbekanntes natives Dateikopfformat: %1" #: utils.cc:617 msgid "cannot open directory %1 (%2)" msgstr "kann Verzeichnis %1 nicht öffnen (%2)" - -#~ msgid "Setup signal flow and plugins" -#~ msgstr "Richte Signalfluss and Plugins ein" - -#~ msgid "cannot setup Click I/O" -#~ msgstr "kann Metronom-E/A nicht einrichten" - -#~ msgid "Compute I/O Latencies" -#~ msgstr "Berechne E/A-Latenzen" - -#~ msgid "" -#~ "This version of JACK is old - you should upgrade to a newer version that " -#~ "supports jack_port_type_get_buffer_size()" -#~ msgstr "" -#~ "Diese JACK-Version ist alt - Sie sollten auf eine Version upgraden, die " -#~ "jack_port_type_get_buffer_size() unterstützt" - -#~ msgid "Connect session to engine" -#~ msgstr "Verbinde Projekt mit Engine" - -#~ msgid "connect called before engine was started" -#~ msgstr "Aufruf von connect vor dem Start der Engine" - -#~ msgid "disconnect called before engine was started" -#~ msgstr "Aufruf von disconnect vor dem Start der Engine" - -#~ msgid "get_port_by_name() called before engine was started" -#~ msgstr "Aufruf von get_port_by_name() vor dem Start der Engine" - -#~ msgid "get_ports called before engine was started" -#~ msgstr "Aufruf von get_ports vor dem Start der Engine" - -#~ msgid "failed to connect to JACK" -#~ msgstr "Verbindung zu JACK fehlgeschlagen" - -#~ msgid "get_connected_latency_range() called while disconnected from JACK" -#~ msgstr "Aufruf von get_connected_latency_range(), während von JACK getrennt" - -#~ msgid "Session: could not send full MIDI time code" -#~ msgstr "Session: konnte vollständigen MIDI-Timecode nicht senden" - -#~ msgid "Session" -#~ msgstr "Projekt" - -#~ msgid "MidiDiskstream: XML property channel-mask out of range" -#~ msgstr "MidiDiskstream: Wertüberschreitung der XML-Eigenschaft Kanalmaske" - -#~ msgid "" -#~ "Copying old session file %1 to %2\n" -#~ "Use %2 with %3 versions before 2.0 from now on" -#~ msgstr "" -#~ "Kopiere alte Projektdatei %1 nach %2\n" -#~ "Benutzen Sie von jetzt an %2 mit %3-Versionen vor 2.0" diff --git a/libs/ardour/po/el.po b/libs/ardour/po/el.po index 5801300003..b7b350bdd9 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-09-03 07:59-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2007-04-16 00:38+0200\n" "Last-Translator: Klearchos Gourgourinis <muadib@in.gr>\n" "Language-Team: Hellenic(Greek)\n" @@ -108,14 +108,12 @@ msgid "Audio Playlists" msgstr "" #: audio_playlist_importer.cc:161 -#, fuzzy msgid "region" -msgstr "Ï€Ïόσθεση πεÏιοχής" +msgstr "" #: audio_playlist_importer.cc:163 -#, fuzzy msgid "regions" -msgstr "Ï€Ïόσθεση πεÏιοχής" +msgstr "" #: audio_playlist_importer.cc:174 audio_track_importer.cc:245 msgid "A playlist with this name already exists, please rename it." @@ -132,15 +130,14 @@ 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:643 -#: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 +#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1" #: audio_region_importer.cc:75 -#, fuzzy msgid "Audio Regions" -msgstr "χτίσιμο πεÏιοχών" +msgstr "" #: audio_region_importer.cc:145 msgid "Length: " @@ -159,24 +156,20 @@ msgid "" msgstr "" #: audio_track.cc:167 -#, fuzzy msgid "Unknown bundle \"%1\" listed for input of %2" -msgstr "Άγνωστη σÏνδεση \"%1\" στη λίστα εισόδου του %2" +msgstr "" #: audio_track.cc:169 msgid "in 1" msgstr "" #: audio_track.cc:170 -#, fuzzy msgid "No input bundles available as a replacement" -msgstr "Καμία διαθÎσιμη input σÏνδεση ως εναλλακτική" +msgstr "" #: audio_track.cc:174 -#, fuzzy msgid "Bundle %1 was not available - \"in 1\" used instead" msgstr "" -"Η ΣÏνδεση %1 δεν ήταν διαθÎσιμη - Αντ'αυτής χÏησιμοποιήθηκε η \"in 1\" " #: audio_track.cc:183 msgid "improper input channel list in XML node (%1)" @@ -202,62 +195,22 @@ msgstr "" msgid "VAMP Plugin \"%1\" could not be loaded" msgstr "" -#: audioengine.cc:186 -msgid "" -"This version of JACK is old - you should upgrade to a newer version that " -"supports jack_port_type_get_buffer_size()" -msgstr "" - -#: audioengine.cc:190 -msgid "Connect session to engine" +#: audioengine.cc:488 +msgid "looking for backends in %1\n" msgstr "" -#: audioengine.cc:843 -msgid "" -"a port with the name \"%1\" already exists: check for duplicated track/bus " -"names" +#: audioengine.cc:511 +msgid "AudioEngine: cannot load module \"%1\" (%2)" msgstr "" -#: 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." +#: audioengine.cc:517 +msgid "AudioEngine: backend at \"%1\" has no descriptor function." msgstr "" -#: audioengine.cc:848 -#, fuzzy -msgid "AudioEngine: cannot register port \"%1\": %2" -msgstr "IO: δεν μποÏεί να καταχώÏηθεί η θÏÏα εισόδου %1" - -#: audioengine.cc:878 -msgid "unable to create port: %1" +#: audioengine.cc:589 +msgid "Could not create backend for %1: %2" msgstr "" -#: audioengine.cc:932 -msgid "connect called before engine was started" -msgstr "η σÏνδεση εκλήθη Ï€Ïιν να εκκινηθεί η engine" - -#: audioengine.cc:958 -msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" -msgstr "AudioEngine: αδÏνατη η σÏνδεση %1 (%2) σε %3 (%4)" - -#: audioengine.cc:973 audioengine.cc:1004 -msgid "disconnect called before engine was started" -msgstr "η αποσÏνδεση εκλήθη Ï€Ïιν να εκκινηθεί η engine" - -#: audioengine.cc:1052 -#, fuzzy -msgid "get_port_by_name() called before engine was started" -msgstr "η Ïουτίνα get_port_by_name() εκλήθη Ï€Ïιν να εκκινηθεί η engine" - -#: audioengine.cc:1104 -msgid "get_ports called before engine was started" -msgstr "η Ïουτίνα get_ports εκλήθη Ï€Ïιν να εκκινηθεί η engine" - -#: audioengine.cc:1427 -msgid "failed to connect to JACK" -msgstr "Αποτυχία συνδÎσεως με τον JACK" - #: audioregion.cc:1643 msgid "" "You have requested an operation that requires audio analysis.\n" @@ -287,22 +240,17 @@ msgstr "" "δεν μποÏÏŽ να διαβάσω δεδομÎνα δείγματος για υπολογισμό μη-κλιμακώτου peak" #: audiosource.cc:387 -#, fuzzy msgid "AudioSource: cannot open peakpath (a) \"%1\" (%2)" -msgstr "AudioSource: δεν μποÏÏŽ να ανοίξω το peakpath \"%1\" (%2)" +msgstr "" #: audiosource.cc:463 -#, fuzzy msgid "AudioSource: cannot open peakpath (b) \"%1\" (%2)" -msgstr "AudioSource: δεν μποÏÏŽ να ανοίξω το peakpath \"%1\" (%2)" +msgstr "" #: audiosource.cc:587 -#, fuzzy msgid "" "AudioSource[%1]: peak read - cannot read %2 samples at offset %3 of %4 (%5)" msgstr "" -"AudioSource[%1]: ανάγνωση peak - δεν μποÏÏŽ να διαβάσω %2 δείγματα στο " -"(offset) %3" #: audiosource.cc:667 msgid "%1: could not write read raw data for peak computation (%2)" @@ -311,18 +259,16 @@ msgstr "" "peak (%2)" #: audiosource.cc:706 -#, fuzzy msgid "AudioSource: cannot open peakpath (c) \"%1\" (%2)" -msgstr "AudioSource: δεν μποÏÏŽ να ανοίξω το peakpath \"%1\" (%2)" +msgstr "" #: audiosource.cc:773 audiosource.cc:886 msgid "%1: could not write peak file data (%2)" msgstr "%1: δεν μπόÏεσα να γÏάψω δεδομÎνα του αÏχείου peak (%2)" #: audiosource.cc:924 -#, fuzzy msgid "could not truncate peakfile %1 to %2 (error: %3)" -msgstr "δεν μποÏÏŽ να απαλοίψω το peakfile %1 για %2 (%3)" +msgstr "" #: auditioner.cc:87 msgid "no outputs available for auditioner - manual connection required" @@ -337,26 +283,20 @@ msgid "Cannot setup auditioner processing flow for %1 channels" msgstr "" #: automatable.cc:81 -#, fuzzy msgid "Automation node has no path property" -msgstr "%1: Ο Κόμβος Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Î´ÎµÎ½ Îχει οÏισμÎνο path" +msgstr "" #: automatable.cc:101 -#, fuzzy msgid "cannot open %2 to load automation data (%3)" -msgstr "%1: δεν μποÏÏŽ να ανοίξω %2 για ανάκληση δεδομÎνων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï (%3)" +msgstr "" #: automatable.cc:129 -#, fuzzy msgid "cannot load automation data from %2" -msgstr "%1: δεν μποÏοÏν να ανακληθοÏν δεδομÎνα Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Î±Ï€ÏŒ %2" +msgstr "" #: automation_list.cc:353 -#, fuzzy msgid "automation list: cannot load coordinates from XML, all points ignored" msgstr "" -"λίστα αυτοματισμοÏ: καμία x-συντεταγμÎνη αποθηκευμÎνη για σημείο ελÎγχου (το " -"σημείο αγνοήθηκε)" #: automation_list.cc:399 msgid "" @@ -394,9 +334,8 @@ msgid "poll on butler request pipe failed (%1)" msgstr "" #: butler.cc:163 -#, fuzzy msgid "Error on butler thread request pipe: fd=%1 err=%2" -msgstr "Σφάλμα στο butler thread request pipe" +msgstr "" #: butler.cc:201 msgid "Error reading from butler request pipe" @@ -458,14 +397,13 @@ msgstr "δεν ευÏÎθη το cpu MHz στο /proc/cpuinfo" msgid "audio" msgstr "" -#: data_type.cc:28 session.cc:1640 session.cc:1643 +#: data_type.cc:28 session.cc:1791 session.cc:1794 msgid "MIDI" msgstr "" #: data_type.cc:29 -#, fuzzy msgid "unknown" -msgstr "Άγνωστο" +msgstr "" #: delivery.cc:114 msgid "main outs" @@ -484,9 +422,8 @@ msgid "Could not get port for export channel \"%1\", dropping the channel" msgstr "" #: export_failed.cc:32 -#, fuzzy msgid "Export failed: %1" -msgstr "Εισαγωγή: src_new() απÎτυχε : %1" +msgstr "" #: export_filename.cc:118 msgid "Existing export folder for this session (%1) does not exist - ignored" @@ -545,18 +482,16 @@ msgid "Session rate" msgstr "" #: export_format_specification.cc:537 -#, fuzzy msgid "normalize" -msgstr "εξομαλÏνθηκε στα %.2fdB" +msgstr "" #: export_format_specification.cc:541 msgid "trim" msgstr "" #: export_format_specification.cc:543 -#, fuzzy msgid "trim start" -msgstr "Ï€ÏωταÏχική κατάσταση" +msgstr "" #: export_format_specification.cc:545 msgid "trim end" @@ -574,7 +509,7 @@ msgstr "" msgid "Rectangular" msgstr "" -#: export_formats.cc:52 session.cc:4861 session.cc:4877 +#: export_formats.cc:52 session.cc:5014 session.cc:5030 msgid "None" msgstr "" @@ -619,9 +554,8 @@ msgid "Editor: cannot open \"%1\" as export file for CD marker file" msgstr "" #: export_handler.cc:417 export_handler.cc:420 -#, fuzzy msgid "an error occured while writing a TOC/CUE file: %1" -msgstr "παÏουσιάστηκε σφάλμα κάτα την μετατÏοπή του ÏÏ…Î¸Î¼Î¿Ï Î´ÎµÎ¹Î³Î¼Î±Ï„Î¿Î»Î·ÏˆÎ¯Î±Ï‚: %1" +msgstr "" #: export_handler.cc:642 export_handler.cc:700 msgid "Cannot convert %1 to Latin-1 text" @@ -632,29 +566,24 @@ msgid "Searching for export formats in %1" msgstr "" #: export_profile_manager.cc:99 -#, fuzzy msgid "Unable to create export format directory %1: %2" -msgstr "δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\"; αγνοήθηκε" +msgstr "" #: export_profile_manager.cc:257 -#, fuzzy msgid "Unable to remove export preset %1: %2" -msgstr "δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\"; αγνοήθηκε" +msgstr "" #: export_profile_manager.cc:347 -#, fuzzy msgid "Selection" -msgstr "ανάλυση" +msgstr "" #: export_profile_manager.cc:600 -#, fuzzy msgid "Unable to rename export format %1 to %2: %3" -msgstr "δεν μποÏÏŽ να μετονομάσω την πηγή του audio file από %1 σε %2 (%3)" +msgstr "" #: export_profile_manager.cc:632 -#, fuzzy msgid "Unable to remove export profile %1: %2" -msgstr "δεν μποÏÏŽ να ελÎγξω το αÏχείο κατάστασεως %1 (%2)" +msgstr "" #: export_profile_manager.cc:649 msgid "empty format" @@ -690,15 +619,14 @@ msgid "" "configuration" msgstr "" -#: file_source.cc:198 session_state.cc:2891 +#: file_source.cc:198 session_state.cc:2807 msgid "" "there are already 1000 files with names like %1; versioning discontinued" msgstr "ΥπάÏχουν ήδη 1000 αÏχεία με ονόματα όπως %1; μη-συνεχÎÏ‚ versioning" #: file_source.cc:207 -#, fuzzy msgid "cannot rename file source from %1 to %2 (%3)" -msgstr "δεν μποÏÏŽ να μετονομάσω την πηγή του audio file από %1 σε %2 (%3)" +msgstr "" #: file_source.cc:250 file_source.cc:378 msgid "FileSource: search path not set" @@ -732,14 +660,12 @@ msgid "" msgstr "" #: file_source.cc:540 -#, fuzzy msgid "cannot rename file %1 to %2 (%3)" -msgstr "δεν μποÏÏŽ να απαλοίψω το peakfile %1 για %2 (%3)" +msgstr "" #: filesystem_paths.cc:73 -#, fuzzy msgid "Cannot create Configuration directory %1 - cannot run" -msgstr "δεν μποÏÏŽ να δημιουÏγήσω τον φάκελο 'sounds' \"%1\"; αγνοήθηκε" +msgstr "" #: filesystem_paths.cc:78 msgid "" @@ -760,16 +686,12 @@ msgid "ARDOUR_DATA_PATH not set in environment - exiting\n" msgstr "" #: filter.cc:66 -#, fuzzy msgid "filter: error creating name for new file based on %1" msgstr "" -"audiofilter: σφάλμα στη δημιουÏγία ονόματος για νÎο audio file βασισμÎνο σε " -"%1" #: filter.cc:78 -#, fuzzy msgid "filter: error creating new file %1 (%2)" -msgstr "audiofilter: σφάλμα στη δημιουÏγία νÎου audio file %1 (%2)" +msgstr "" #: find_session.cc:51 msgid "Could not resolve path: %1 (%2)" @@ -784,9 +706,8 @@ msgid "cannot check statefile %1 (%2)" msgstr "δεν μποÏÏŽ να ελÎγξω το αÏχείο κατάστασεως %1 (%2)" #: find_session.cc:125 -#, fuzzy msgid "%1 is not a snapshot file" -msgstr "Το %1 δεν Îιναι αÏχείο-στιγμιότυπο του Ardour" +msgstr "" #: find_session.cc:142 msgid "cannot determine current working directory (%1)" @@ -796,28 +717,25 @@ msgstr "δεν μποÏÏŽ να καθοÏίσω τον Ï„ÏÎχοντα ÎµÎ½ÎµÏ msgid "unknown file type for session %1" msgstr "άγνωστος Ï„Ïπος αÏχείου για την συνεδÏία %1" -#: globals.cc:205 +#: globals.cc:207 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:207 -#, fuzzy +#: globals.cc:209 msgid "Could not set system open files limit to %1" -msgstr "αδÏνατη η επαναφοÏά του state file από backup %1" +msgstr "" -#: globals.cc:211 +#: globals.cc:213 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:215 -#, fuzzy +#: globals.cc:217 msgid "Could not get system open files limit (%1)" -msgstr "%1: δεν μπόÏεσα να γÏάψω δεδομÎνα του αÏχείου peak (%2)" +msgstr "" -#: globals.cc:266 -#, fuzzy +#: globals.cc:268 msgid "Loading configuration" -msgstr "Ανάκληση αÏχείου Ïυθμίσεων χÏήστη %1" +msgstr "" #: import.cc:207 msgid "Could not find a source for %1 even though we are updating this file!" @@ -848,9 +766,8 @@ msgid "Import: cannot open input sound file \"%1\"" msgstr "Εισαγωγή: δεν μποÏÏŽ να ανοίξω το εισαγμÎνο αÏχείο ήχου \"%1\"" #: import.cc:510 -#, fuzzy msgid "Import: error opening MIDI file" -msgstr "Εισαγωγή: σφάλμα κατά την Ï„Ïοποποίηση αÏχείου \"%1\"" +msgstr "" #: import.cc:549 msgid "Loading MIDI file %1" @@ -861,9 +778,8 @@ msgid "Failed to remove some files after failed/cancelled import operation" msgstr "" #: instrument_info.cc:40 instrument_info.cc:61 -#, fuzzy msgid "Unknown" -msgstr "Άγνωστο" +msgstr "" #: instrument_info.cc:230 msgid "preset %1 (bank %2)" @@ -874,9 +790,8 @@ msgid "%1 - cannot find any track/bus with the ID %2 to connect to" msgstr "" #: io.cc:208 -#, fuzzy msgid "IO: cannot disconnect port %1 from %2" -msgstr "IO: δεν μποÏει να αποσυνδεθεί η θÏÏα εισόδου %1 από %2" +msgstr "" #: io.cc:343 io.cc:428 msgid "IO: cannot register input port %1" @@ -895,9 +810,8 @@ msgid "in" msgstr "" #: io.cc:706 -#, fuzzy msgid "out" -msgstr "κοπή" +msgstr "" #: io.cc:707 msgid "input" @@ -908,20 +822,16 @@ msgid "output" msgstr "" #: io.cc:717 -#, fuzzy msgid "Unknown bundle \"%1\" listed for %2 of %3" -msgstr "Άγνωστη σÏνδεση \"%1\" στη λίστα εισόδου του %2" +msgstr "" #: io.cc:783 -#, fuzzy msgid "Bundle %1 was not available - \"%2\" used instead" msgstr "" -"Η ΣÏνδεση %1 δεν ήταν διαθÎσιμη - Αντ'αυτής χÏησιμοποιήθηκε η \"in 1\" " #: io.cc:786 -#, fuzzy msgid "No %1 bundles available as a replacement" -msgstr "Καμία διαθÎσιμη input σÏνδεση ως εναλλακτική" +msgstr "" #: io.cc:889 msgid "%1: cannot create I/O ports" @@ -943,61 +853,57 @@ msgstr "IO: δÏσμοÏφη γÏαμμή στον κόμβο XML για τις msgid "IO: bad output string in XML node \"%1\"" msgstr "IO: κακή γÏαμμή εξόδουστον κόμβο XML \"%1\"" -#: io.cc:1410 +#: io.cc:1411 #, c-format msgid "%s %u" msgstr "" -#: io.cc:1457 +#: io.cc:1458 #, c-format msgid "%s in" msgstr "" -#: io.cc:1459 +#: io.cc:1460 #, c-format msgid "%s out" msgstr "" -#: io.cc:1534 session.cc:494 session.cc:523 +#: io.cc:1535 session.cc:686 session.cc:715 msgid "mono" msgstr "" -#: io.cc:1536 session.cc:507 session.cc:537 +#: io.cc:1537 session.cc:699 session.cc:729 msgid "L" msgstr "" -#: io.cc:1536 session.cc:509 session.cc:539 +#: io.cc:1537 session.cc:701 session.cc:731 msgid "R" msgstr "" -#: io.cc:1538 io.cc:1544 +#: io.cc:1539 io.cc:1545 #, c-format msgid "%d" msgstr "" -#: ladspa_plugin.cc:88 +#: ladspa_plugin.cc:86 msgid "LADSPA: module has no descriptor function." msgstr "LADSPA: το module δεν Îχει ενδεικτική λειτουÏγία." -#: ladspa_plugin.cc:93 +#: ladspa_plugin.cc:91 msgid "LADSPA: plugin has gone away since discovery!" msgstr "LADSPA: το plugin την 'κοπάνισε' μετά την ανακάλυψη του!" -#: ladspa_plugin.cc:100 +#: ladspa_plugin.cc:98 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" "LADSPA: \"%1\" δεν μποÏεί να χÏησιμοποιηθεί, εφ'όσον δεν μποÏεί να κάνει επι " "τόπου επεξεÏγασία" #: ladspa_plugin.cc:297 -#, fuzzy msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " "in the plugin design, and presets may be invalid" msgstr "" -"παÏάνομος αÏιθμός παÏαμÎÏ„Ïου σε χÏήση με το plugin \"%1\". Ίσως να " -"ενδείκνυται αλλαγή στο σχεδιασμό του plugin, και οι Ïυθμίσεις ίσως να είναι " -"άκυÏες" #: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" @@ -1016,9 +922,8 @@ msgid "LADSPA: cannot load module from \"%1\"" msgstr "LADSPA: δεν μποÏÏŽ να φοÏτώσω module από \"%1\"" #: ladspa_plugin.cc:827 -#, fuzzy msgid "Could not locate HOME. Preset not removed." -msgstr "Δεν μπόÏεσα να βÏÏŽ το HOME. Î Ïο-ÏÏθμιση δεν αποθηκεÏθηκε." +msgstr "" #: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" @@ -1041,9 +946,8 @@ msgid "incorrect XML node passed to Location::set_state" msgstr "λανθασμÎνος κόμβος XML Ï€ÎÏασε στην Τοποθεσία::set_state" #: location.cc:455 -#, fuzzy msgid "XML node for Location has no ID information" -msgstr "Ο κόμβος XML για την Τοποθεσία δεν Îχει πληÏοφοÏίες Ï„Îλους" +msgstr "" #: location.cc:459 msgid "XML node for Location has no name information" @@ -1071,7 +975,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "λανθασμÎνο XML mode Ï€ÎÏασε στις Τοποθεσίες::set_state" -#: location.cc:842 session.cc:4362 session_state.cc:1114 +#: location.cc:842 session.cc:4516 session_state.cc:1031 msgid "session" msgstr "" @@ -1136,45 +1040,32 @@ msgid "" msgstr "" #: midi_diskstream.cc:219 -#, fuzzy msgid "MidiDiskstream: Playlist \"%1\" isn't a midi playlist" -msgstr "AudioDiskStream: Η Λίστα \"%1\" δεν είναι ηχητική λίστα αναπαÏ/γής" +msgstr "" #: midi_diskstream.cc:270 -#, fuzzy msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" msgstr "" -"AudioDiskstream %1: δεν υπάÏχει λίστα αναπαÏ/γής για να γίνει αντιγÏαφή!" #: 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:834 -#, fuzzy msgid "MidiDiskstream %1: cannot write to disk" -msgstr "AudioDiskstream %1: δεν μποÏÏŽ να γÏάψω στο δίσκο" +msgstr "" #: midi_diskstream.cc:868 -#, fuzzy msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" msgstr "" -"AudioDiskstream \"%1\": αδÏνατη η εκκαθάÏιση δειγματοληπτικών δεδομÎνων στο " -"δίσκο!" #: midi_diskstream.cc:955 -#, fuzzy msgid "%1: could not create region for complete midi file" -msgstr "%1: δεν μπόÏεσα να δημιουÏγήσω πεÏιοχή για ολόκληÏο audio file" +msgstr "" #: midi_diskstream.cc:992 -#, fuzzy msgid "MidiDiskstream: could not create region for captured midi!" msgstr "" -"AudioDiskstream: δεν μπόÏεσα να δημιουÏγήσω πεÏιοχή για δειγματοληψίες!" #: midi_model.cc:634 msgid "No NoteID found for note property change - ignored" @@ -1213,64 +1104,57 @@ msgid "MIDI stretch created non-MIDI source" msgstr "" #: monitor_processor.cc:53 -#, fuzzy msgid "monitor dim" -msgstr "monitor" +msgstr "" #: monitor_processor.cc:54 -#, fuzzy msgid "monitor cut" -msgstr "monitor" +msgstr "" #: monitor_processor.cc:55 -#, fuzzy msgid "monitor mono" -msgstr "monitor" +msgstr "" #: monitor_processor.cc:58 -#, fuzzy msgid "monitor dim level" -msgstr "monitor" +msgstr "" #: monitor_processor.cc:62 msgid "monitor solo boost level" msgstr "" #: monitor_processor.cc:512 -#, fuzzy msgid "cut control %1" -msgstr "[Îλεγχος]" +msgstr "" #: monitor_processor.cc:513 -#, fuzzy msgid "dim control" -msgstr "[Îλεγχος]" +msgstr "" #: monitor_processor.cc:514 msgid "polarity control" msgstr "" #: monitor_processor.cc:515 -#, fuzzy msgid "solo control" -msgstr "[Îλεγχος]" +msgstr "" -#: mtc_slave.cc:235 +#: mtc_slave.cc:238 msgid "MTC Slave: atomic read of current time failed, sleeping!" msgstr "" "MTC Slave: ατομική ανάγνωση του Ï„ÏÎχοντος χÏόνου απÎτυχε, πίσω για Ïπνο!" -#: mtc_slave.cc:359 +#: mtc_slave.cc:361 msgid "" "Unknown rate/drop value %1 in incoming MTC stream, session values used " "instead" msgstr "" -#: mtc_slave.cc:379 +#: mtc_slave.cc:381 msgid "Session framerate adjusted from %1 TO: MTC's %2." msgstr "" -#: mtc_slave.cc:393 +#: mtc_slave.cc:395 msgid "Session and MTC framerate mismatch: MTC:%1 %2:%3." msgstr "" @@ -1283,52 +1167,44 @@ msgid "paste" msgstr "επικόλληση" #: operations.cc:26 -#, fuzzy msgid "duplicate region" -msgstr "αντικατάσταση πεÏιοχής" +msgstr "" #: operations.cc:27 msgid "insert file" msgstr "" #: operations.cc:28 -#, fuzzy msgid "insert region" -msgstr "χτίσιμο πεÏιοχής" +msgstr "" #: operations.cc:29 msgid "drag region brush" msgstr "" #: operations.cc:30 -#, fuzzy msgid "region drag" -msgstr "Ï€Ïόσθεση πεÏιοχής" +msgstr "" #: operations.cc:31 -#, fuzzy msgid "selection grab" -msgstr "ανάλυση" +msgstr "" #: operations.cc:32 -#, fuzzy msgid "region fill" -msgstr "Ï€Ïόσθεση πεÏιοχής" +msgstr "" #: operations.cc:33 -#, fuzzy msgid "fill selection" -msgstr "ανάλυση" +msgstr "" #: operations.cc:34 -#, fuzzy msgid "create region" -msgstr "αντικατάσταση πεÏιοχής" +msgstr "" #: operations.cc:35 -#, fuzzy msgid "region copy" -msgstr "Ï€Ïόσθεση πεÏιοχής" +msgstr "" #: operations.cc:36 msgid "fixed time region copy" @@ -1342,21 +1218,19 @@ msgstr "" msgid "looking for panners in %1" msgstr "" -#: panner_manager.cc:99 +#: panner_manager.cc:100 msgid "Panner discovered: \"%1\" in %2" msgstr "" -#: panner_manager.cc:116 -#, fuzzy +#: panner_manager.cc:117 msgid "PannerManager: cannot load module \"%1\" (%2)" -msgstr "ControlProtocolManager: δεν μποÏÏŽ να φοÏτώσω το module \"%1\" (%2)" +msgstr "" -#: panner_manager.cc:123 -#, fuzzy +#: panner_manager.cc:124 msgid "PannerManager: module \"%1\" has no descriptor function." -msgstr "ControlProtocolManager: το module \"%1\" δεν Îχει descriptor function." +msgstr "" -#: panner_manager.cc:186 +#: panner_manager.cc:187 msgid "no panner discovered for in/out = %1/%2" msgstr "" @@ -1373,9 +1247,8 @@ msgid "region state node has no ID, ignored" msgstr "" #: playlist.cc:2088 -#, fuzzy msgid "Playlist: cannot create region from XML" -msgstr "Playlist: αδÏνατη η δημιουÏγία ΠεÏιοχής από αÏχείο καταστάσεως" +msgstr "" #: playlist_source.cc:99 msgid "No playlist ID in PlaylistSource XML!" @@ -1402,9 +1275,8 @@ msgid "programming error: " msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: " #: plugin_insert.cc:926 -#, fuzzy msgid "XML node describing plugin is missing the `type' field" -msgstr "Στον κόμβο XML που πεÏιγÏάφει το insert λείπει το πεδίο `type'" +msgstr "" #: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" @@ -1431,14 +1303,12 @@ msgid "PluginInsert: Auto: port id out of range" msgstr "PluginInsert: Auto: το id θÏÏας είναι εκτός πεδίου" #: plugin_insert.cc:1137 -#, fuzzy msgid "PluginInsert: automatable control %1 not found - ignored" -msgstr "αβÎβαιο συμβάν Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï ÎµÏ…ÏÎθηκε (και αγνοήθηκε)" +msgstr "" #: plugin_manager.cc:161 -#, fuzzy msgid "Discovering Plugins" -msgstr "μετατÏοπή ήχου" +msgstr "" #: plugin_manager.cc:335 msgid "Could not parse rdf file: %1" @@ -1453,38 +1323,26 @@ msgid "LADSPA: module \"%1\" has no descriptor function." msgstr "LADSPA: το module \"%1\" δεν Îχει λειτουÏγία πεÏιγÏαφής." #: plugin_manager.cc:602 -#, fuzzy msgid "" "VST plugin %1 does not support processReplacing, and so cannot be used in %2 " "at this time" msgstr "" -"Το VST plugin %1 δεν υποστηÏίζει processReplacing, και Îτσι δεν μποÏεί να " -"χÏησιμοποιηθεί στον ardour αυτή τη φοÏά" #: plugin_manager.cc:709 -#, fuzzy msgid "" "linuxVST plugin %1 does not support processReplacing, and so cannot be used " "in %2 at this time" msgstr "" -"Το VST plugin %1 δεν υποστηÏίζει processReplacing, και Îτσι δεν μποÏεί να " -"χÏησιμοποιηθεί στον ardour αυτή τη φοÏά" #: plugin_manager.cc:870 -#, fuzzy msgid "unknown plugin status type \"%1\" - all entries ignored" -msgstr "άγνωστος Ï„Ïπος Λήψης(Insert) \"%1\"... αγνοήθηκε" +msgstr "" #: plugin_manager.cc:887 -#, fuzzy msgid "unknown plugin type \"%1\" - ignored" -msgstr "άγνωστος Ï„Ïπος Λήψης(Insert) \"%1\"... αγνοήθηκε" - -#: port.cc:367 -msgid "get_connected_latency_range() called while disconnected from JACK" msgstr "" -#: port.cc:450 +#: port.cc:410 msgid "could not reregister %1" msgstr "αδÏνατη η επανακαταγÏαφή %1" @@ -1493,14 +1351,41 @@ msgid "insert %1" msgstr "" #: port_insert.cc:198 -#, fuzzy msgid "XML node describing port insert is missing the `type' field" -msgstr "Στον κόμβο XML που πεÏιγÏάφει το insert λείπει το πεδίο `type'" +msgstr "" #: port_insert.cc:203 msgid "non-port insert XML used for port plugin insert" msgstr "εισαγωγή μη-θÏÏας XML για χÏήση σε εισαγωγή plugin θÏÏας" +#: port_manager.cc:270 +msgid "" +"a port with the name \"%1\" already exists: check for duplicated track/bus " +"names" +msgstr "" + +#: port_manager.cc:272 +msgid "" +"No more ports are available. You will need to stop %1 and restart with more " +"ports if you need this many tracks." +msgstr "" + +#: port_manager.cc:275 +msgid "AudioEngine: cannot register port \"%1\": %2" +msgstr "" + +#: port_manager.cc:314 +msgid "unable to create port: %1" +msgstr "" + +#: port_manager.cc:401 +msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" +msgstr "AudioEngine: αδÏνατη η σÏνδεση %1 (%2) σε %3 (%4)" + +#: port_manager.cc:453 port_manager.cc:454 +msgid "Re-establising port %1 failed" +msgstr "" + #: processor.cc:207 msgid "No %1 property flag in element %2" msgstr "" @@ -1509,47 +1394,41 @@ msgstr "" msgid "No child node with active property" msgstr "" -#: rc_configuration.cc:93 +#: rc_configuration.cc:88 msgid "Loading system configuration file %1" msgstr "Ανάκληση αÏχείου Ïυθμίσεων συστήματος %1" -#: rc_configuration.cc:97 -#, fuzzy +#: rc_configuration.cc:92 msgid "%1: cannot read system configuration file \"%2\"" msgstr "" -"Ardour: δεν μποÏÏŽ να διαβάσω το αÏχείο διαÏÏυθμίσεως του συστήματος \"%1\"" -#: rc_configuration.cc:102 -#, fuzzy +#: rc_configuration.cc:97 msgid "%1: system configuration file \"%2\" not loaded successfully." msgstr "" -"Ardour: το αÏχείο διαÏÏυθμίσεως του συστήματος \"%1\" δεν φοÏτώθηκε επιτυχώς." -#: rc_configuration.cc:106 +#: rc_configuration.cc:101 msgid "" "Your system %1 configuration file is empty. This probably means that there " "was an error installing %1" msgstr "" -#: rc_configuration.cc:121 +#: rc_configuration.cc:116 msgid "Loading user configuration file %1" msgstr "Ανάκληση αÏχείου Ïυθμίσεων χÏήστη %1" -#: rc_configuration.cc:125 -#, fuzzy +#: rc_configuration.cc:120 msgid "%1: cannot read configuration file \"%2\"" -msgstr "Ardour: αÏχείο διαÏÏυθμίσεως μή αναγνώσιμο \"%1\"" +msgstr "" -#: rc_configuration.cc:130 -#, fuzzy +#: rc_configuration.cc:125 msgid "%1: user configuration file \"%2\" not loaded successfully." -msgstr "Ardour: αÏχείο Ïυθμίσεων χÏήστη \"%1\" δεν φοÏτώθηκε επιτυχώς." +msgstr "" -#: rc_configuration.cc:134 +#: rc_configuration.cc:129 msgid "your %1 configuration file is empty. This is not normal." msgstr "" -#: rc_configuration.cc:151 +#: rc_configuration.cc:146 msgid "Config file %1 not saved" msgstr "ΑÏχείο Ïυθμίσεων %1 δεν αποθηκεÏθηκε" @@ -1559,11 +1438,9 @@ msgstr "δεν μποÏÏŽ να ανοίξω το Ï€Ïόσφατο αÏχείο Ï #: region_factory.cc:67 region_factory.cc:109 region_factory.cc:150 #: region_factory.cc:192 -#, fuzzy msgid "" "programming error: RegionFactory::create() called with unknown Region type" msgstr "" -"σφάλμα Ï€ÏογÏαμματισμοÏ: Playlist::createRegion εκλήθη με άγνωστο Ï„Ïπο Πε" #: region_factory.cc:554 msgid "%1 compound-%2 (%3)" @@ -1589,40 +1466,41 @@ msgstr "Εισαγωγή: src_new() απÎτυχε : %1" msgid "return %1" msgstr "" -#: route.cc:1105 route.cc:2581 -#, fuzzy +#: route.cc:1075 route.cc:2528 msgid "unknown Processor type \"%1\"; ignored" -msgstr "άγνωστος Ï„Ïπος Λήψης(Insert) \"%1\"... αγνοήθηκε" +msgstr "" -#: route.cc:1117 -#, fuzzy +#: route.cc:1087 msgid "processor could not be created. Ignored." -msgstr "εισαγωγή δεν μπόÏεσε να δημιουÏγηθεί. Αγνοήθηκε." +msgstr "" -#: route.cc:2007 route.cc:2234 +#: route.cc:1962 route.cc:2187 msgid "Bad node sent to Route::set_state() [%1]" msgstr "Κακός κόμβος εστάλη στο Route::set_state() [%1]" -#: route.cc:2067 +#: route.cc:2022 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 +#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" "δÏσμοÏφη γÏαμμή ÎºÎ»ÎµÎ¹Î´Î¹Î¿Ï Ï„Î±Î¾Î¹Î½Î¿Î¼Î®ÏƒÎµÏ‰Ï‚ στο αÏχείο καταστάσεως ! [%1] ... " "αγνοήθηκε." +#: route.cc:2311 +msgid "Converting deprecated order key for %1 using Editor order %2" +msgstr "" + #: route_group.cc:459 msgid "You cannot subgroup MIDI tracks at this time" msgstr "" -#: rb_effect.cc:233 rb_effect.cc:274 -#, fuzzy +#: rb_effect.cc:234 rb_effect.cc:275 msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" -msgstr "tempoize: σφάλμα στην ανάγνωση δεδομÎνων από %1" +msgstr "" -#: rb_effect.cc:303 rb_effect.cc:325 +#: rb_effect.cc:304 rb_effect.cc:326 msgid "error writing tempo-adjusted data to %1" msgstr "σφάλμα στην εγγÏαφή χÏονο-ÏυθμισμÎνων δεδομÎνων στο %1" @@ -1635,199 +1513,172 @@ msgid "send %1" msgstr "" #: send.cc:65 -#, fuzzy msgid "programming error: send created using role %1" -msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: άγνωστος Ï„Ïπος of Redirect διεγÏάφη!" - -#: session.cc:347 -msgid "Set block size and sample rate" msgstr "" -#: session.cc:352 -#, fuzzy -msgid "Using configuration" -msgstr "Ανάκληση αÏχείου Ïυθμίσεων χÏήστη %1" +#: session.cc:344 +msgid "Connect to engine" +msgstr "" -#: session.cc:377 -msgid "LTC In" +#: session.cc:349 +msgid "Session loading complete" msgstr "" -#: session.cc:378 -msgid "LTC Out" +#: session.cc:421 +msgid "Set up LTC" msgstr "" -#: session.cc:404 -msgid "LTC-in" +#: session.cc:423 +msgid "Set up Click" msgstr "" -#: session.cc:405 -msgid "LTC-out" +#: session.cc:425 +msgid "Set up standard connections" msgstr "" -#: session.cc:434 +#: session.cc:635 msgid "could not setup Click I/O" msgstr "Δεν μπόÏεσα να διαμοÏφώσω το I/O του ΜετÏονόμου(click)" -#: session.cc:461 -msgid "cannot setup Click I/O" -msgstr "Δεν μποÏÏŽ να διαμοÏφώσω το I/O του ΜετÏονόμου(click)" - -#: session.cc:464 -msgid "Compute I/O Latencies" -msgstr "" - -#: session.cc:470 -msgid "Set up standard connections" -msgstr "" - -#: session.cc:491 +#: session.cc:683 #, c-format msgid "out %<PRIu32>" msgstr "" -#: session.cc:505 +#: session.cc:697 #, c-format msgid "out %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:520 +#: session.cc:712 #, c-format msgid "in %<PRIu32>" msgstr "" -#: session.cc:534 +#: session.cc:726 #, c-format msgid "in %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:570 -msgid "Setup signal flow and plugins" -msgstr "" - -#: session.cc:614 -msgid "Connect to engine" -msgstr "" - -#: session.cc:645 -#, fuzzy +#: session.cc:790 msgid "cannot connect master output %1 to %2" -msgstr "IO: δεν μποÏεί να συνδεθεί η θÏÏα εξόδου %1 στο %2" +msgstr "" -#: session.cc:704 +#: session.cc:849 msgid "monitor" msgstr "monitor" -#: session.cc:749 -#, fuzzy +#: session.cc:894 msgid "cannot connect control input %1 to %2" -msgstr "IO: δεν μποÏεί να συνδεθεί η θÏÏα εισόδου %1 στο %2" +msgstr "" -#: session.cc:769 +#: session.cc:914 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "" -#: session.cc:800 -#, fuzzy +#: session.cc:945 msgid "cannot connect control output %1 to %2" -msgstr "IO: δεν μποÏεί να συνδεθεί η θÏÏα εξόδου %1 στο %2" +msgstr "" -#: session.cc:864 +#: session.cc:1009 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "δεν μποÏÏŽ να δημιουÏγήσω τον ΑκÏοατή: καμία ακÏόαση πεÏιοχών δυνατή" -#: session.cc:1043 +#: session.cc:1193 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "" "ΣυνεδÏία: δεν μποÏείτε να χÏησιμοποιήσετε αυτήν την τοποθεσία για auto punch " "(αÏχή <= Ï„Îλος)" -#: session.cc:1083 +#: session.cc:1233 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" msgstr "" -#: session.cc:1396 +#: session.cc:1547 msgid "feedback loop setup between %1 and %2" msgstr "διαμόÏφωση feedback loop ανάμεσα σε %1 και %2" -#: session.cc:1692 -#, fuzzy +#: session.cc:1843 msgid "Session: could not create new midi track." -msgstr "ΣυνεδÏία: δεν μπόÏεσα να δημιουÏγήσω νÎο κανάλι ήχου." +msgstr "" + +#: session.cc:1849 +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 "" -#: session.cc:1875 session.cc:1878 +#: session.cc:2026 session.cc:2029 msgid "Audio" msgstr "" -#: session.cc:1902 session.cc:1910 session.cc:1987 session.cc:1995 +#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "δεν μποÏÏŽ να διαμοÏφώσω %1 in/%2 out διάταξη για νÎο κανάλι ήχου" -#: session.cc:1933 +#: session.cc:2084 msgid "Session: could not create new audio track." msgstr "ΣυνεδÏία: δεν μπόÏεσα να δημιουÏγήσω νÎο κανάλι ήχου." -#: session.cc:1965 session.cc:1968 +#: session.cc:2116 session.cc:2119 msgid "Bus" msgstr "" -#: session.cc:2018 -#, fuzzy +#: session.cc:2169 msgid "Session: could not create new audio route." -msgstr "ΣυνεδÏία: δεν μπόÏεσα να δημιουÏγήσω διαδÏομή." +msgstr "" -#: session.cc:2077 session.cc:2087 +#: session.cc:2228 session.cc:2238 msgid "Session: UINT_MAX routes? impossible!" msgstr "" -#: session.cc:2109 -#, fuzzy +#: session.cc:2260 msgid "Session: cannot create track/bus from template description" -msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω Πηγή από XML πεÏιγÏαφή." +msgstr "" -#: session.cc:2135 -#, fuzzy +#: session.cc:2286 msgid "Session: could not create new route from template" -msgstr "ΣυνεδÏία: δεν μπόÏεσα να δημιουÏγήσω διαδÏομή." +msgstr "" -#: session.cc:2164 +#: session.cc:2315 msgid "Adding new tracks/busses failed" msgstr "" -#: session.cc:3265 +#: session.cc:3419 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "" -#: session.cc:3385 session.cc:3443 +#: session.cc:3539 session.cc:3597 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "ΥπάÏχουν ήδη %1 εγγÏαφÎÏ‚ για %2, τις οποίες θεωÏÏŽ πάÏα πολλÎÏ‚." -#: session.cc:3833 +#: session.cc:3987 msgid "send ID %1 appears to be in use already" msgstr "" -#: session.cc:3845 +#: session.cc:3999 msgid "aux send ID %1 appears to be in use already" msgstr "" -#: session.cc:3857 +#: session.cc:4011 msgid "return ID %1 appears to be in use already" msgstr "" -#: session.cc:3869 +#: session.cc:4023 msgid "insert ID %1 appears to be in use already" msgstr "" -#: session.cc:3996 +#: session.cc:4150 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "" -#: session.cc:4025 +#: session.cc:4179 msgid "too many bounced versions of playlist \"%1\"" msgstr "πάÏα πολλÎÏ‚ bounced εκδόσεις της Playlist \"%1\"" -#: session.cc:4035 +#: session.cc:4189 msgid "cannot create new audio file \"%1\" for %2" msgstr "δεν μποÏÏŽ να δημιουÏγήσω νÎο αÏχείο ήχου \"%1\" για %2" @@ -1855,9 +1706,8 @@ msgid "" msgstr "" #: session_directory.cc:59 -#, fuzzy msgid "Cannot create Session directory at path %1 Error: %2" -msgstr "δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\"; αγνοήθηκε" +msgstr "" #: session_directory.cc:76 msgid "Session subdirectory does not exist at path %1" @@ -1869,11 +1719,11 @@ msgstr "" "ΣυνεδÏία: δεν γίνεται να υπάÏχουν δÏο συμβάντα του Ï„Ïπου %1 στο ίδιο frame " "(%2)." -#: session_export.cc:126 +#: session_export.cc:125 msgid "%1: cannot seek to %2 for export" msgstr "%1: δεν μποÏÏŽ να αναζητήσω στο %2 για εξαγωγή" -#: session_export.cc:183 +#: session_export.cc:182 msgid "Export ended unexpectedly: %1" msgstr "" @@ -1883,10 +1733,6 @@ msgid "" "of this session." msgstr "" -#: session_midi.cc:428 -msgid "Session: could not send full MIDI time code" -msgstr "ΣυνεδÏία: δεν μπόÏεσα να στείλω ολόκληÏο MIDI time code" - #: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "ΣυνεδÏία: δεν μποÏÏŽ να στείλω Ï„ÎταÏτο-frame MTC μήνυμα (%1)" @@ -1895,255 +1741,232 @@ msgstr "ΣυνεδÏία: δεν μποÏÏŽ να στείλω Ï„ÎταÏτο-fra msgid "Session: cannot create Playlist from XML description." msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω την Playlist από την XML πεÏιγÏαφή." -#: session_process.cc:133 +#: session_process.cc:132 msgid "Session: error in no roll for %1" msgstr "ΣυνεδÏία: σφάλμα στο no roll για %1" -#: session_process.cc:1158 +#: session_process.cc:1157 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" "Σφάλμα Ï€ÏογÏαμματισμοÏ: παÏάνομος Ï„Ïπος συμβάντος στο process_event (%1)" -#: session_state.cc:139 -#, fuzzy +#: session_state.cc:140 msgid "Could not use path %1 (%2)" -msgstr "ΑδÏνατη η χÏήση του path %1 (%s)" +msgstr "" -#: session_state.cc:267 -#, fuzzy +#: session_state.cc:184 msgid "solo cut control (dB)" -msgstr "[Îλεγχος]" +msgstr "" -#: session_state.cc:360 -msgid "Reset Remote Controls" +#: session_state.cc:208 +msgid "Set block size and sample rate" msgstr "" -#: session_state.cc:385 -msgid "Session loading complete" +#: session_state.cc:213 +msgid "Using configuration" msgstr "" -#: session_state.cc:452 -#, fuzzy +#: session_state.cc:325 +msgid "Reset Remote Controls" +msgstr "" + +#: session_state.cc:417 msgid "Session: cannot create session peakfile folder \"%1\" (%2)" -msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω peakfile dir συνεδÏίας \"%1\" (%2)" +msgstr "" -#: session_state.cc:459 +#: session_state.cc:424 msgid "Session: cannot create session sounds dir \"%1\" (%2)" msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο ήχων συνεδÏίας \"%1\" (%2)" -#: session_state.cc:466 -#, fuzzy +#: session_state.cc:431 msgid "Session: cannot create session midi dir \"%1\" (%2)" -msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\" (%2)" +msgstr "" -#: session_state.cc:473 -#, fuzzy +#: session_state.cc:438 msgid "Session: cannot create session dead sounds folder \"%1\" (%2)" msgstr "" -"ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο 'νεκÏών' ήχων συνεδÏίας \"%1\" (%2)" -#: session_state.cc:480 -#, fuzzy +#: session_state.cc:445 msgid "Session: cannot create session export folder \"%1\" (%2)" -msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\" (%2)" +msgstr "" -#: session_state.cc:487 -#, fuzzy +#: session_state.cc:452 msgid "Session: cannot create session analysis folder \"%1\" (%2)" -msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\" (%2)" +msgstr "" -#: session_state.cc:494 -#, fuzzy +#: session_state.cc:459 msgid "Session: cannot create session plugins folder \"%1\" (%2)" -msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\" (%2)" +msgstr "" -#: session_state.cc:501 -#, fuzzy +#: session_state.cc:466 msgid "Session: cannot create session externals folder \"%1\" (%2)" -msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\" (%2)" +msgstr "" -#: session_state.cc:515 -#, fuzzy +#: session_state.cc:480 msgid "Session: cannot create session folder \"%1\" (%2)" -msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\" (%2)" +msgstr "" -#: session_state.cc:548 -#, fuzzy +#: session_state.cc:514 msgid "Could not open %1 for writing session template" -msgstr "Δεν μπόÏεσα να ανοίξω %1 για γÏάψιμο του Ï€Ïοσχεδίου μίξεως" +msgstr "" -#: session_state.cc:554 -#, fuzzy +#: session_state.cc:520 msgid "Could not open session template %1 for reading" -msgstr "Δεν μπόÏεσα να ανοίξω Ï€ÏοσχÎδιο μίξεως %1 για ανάγνωση" +msgstr "" -#: session_state.cc:573 +#: session_state.cc:539 msgid "master" msgstr "master" -#: session_state.cc:636 -#, fuzzy +#: session_state.cc:600 msgid "Could not remove pending capture state at path \"%1\" (%2)" -msgstr "ΑδÏνατη η εÏÏεση path: %1 (%2)" +msgstr "" -#: session_state.cc:660 -#, fuzzy +#: session_state.cc:624 msgid "could not rename snapshot %1 to %2 (%3)" -msgstr "ΑδÏνατη η επανασÏνδεση %1 και %2 (err = %3)" +msgstr "" -#: session_state.cc:688 -#, fuzzy +#: session_state.cc:652 msgid "Could not remove session file at path \"%1\" (%2)" -msgstr "ΑδÏνατη η εÏÏεση path: %1 (%2)" +msgstr "" -#: session_state.cc:761 +#: session_state.cc:669 msgid "" "the %1 audio engine is not connected and state saving would lose all I/O " "connections. Session not saved" msgstr "" -#: session_state.cc:812 +#: session_state.cc:720 msgid "state could not be saved to %1" msgstr "η κατάσταση δεν μποÏοÏσε να σωθεί στο %1" -#: session_state.cc:814 session_state.cc:825 -#, fuzzy +#: session_state.cc:722 session_state.cc:733 msgid "Could not remove temporary session file at path \"%1\" (%2)" -msgstr "ΑδÏνατη η εÏÏεση path: %1 (%2)" +msgstr "" -#: session_state.cc:822 -#, fuzzy +#: session_state.cc:730 msgid "could not rename temporary session file %1 to %2" -msgstr "δεν μποÏÏŽ να μετονομάσω το audio file για το %1 σε %2" +msgstr "" -#: session_state.cc:890 -#, fuzzy +#: session_state.cc:798 msgid "%1: session file \"%2\" doesn't exist!" -msgstr "%1: το αÏχείο πληÏοφοÏιών καταστάσεως συνεδÏίας \"%2\" δεν υπάÏχει!" +msgstr "" -#: session_state.cc:902 -#, fuzzy +#: session_state.cc:810 msgid "Could not understand session file %1" -msgstr "Δεν μπόÏεσα να κατανοήσω το ardour αÏχείο %1" +msgstr "" -#: session_state.cc:911 -#, fuzzy +#: session_state.cc:819 msgid "Session file %1 is not a session" -msgstr "ΑÏχείο Ïυθμίσεων %1 δεν αποθηκεÏθηκε" +msgstr "" -#: session_state.cc:1208 +#: session_state.cc:1125 msgid "programming error: Session: incorrect XML node sent to set_state()" msgstr "" "σφάλμα Ï€ÏογÏαμματισμοÏ: ΣυνεδÏία: λανθασμÎνος κόμβος XML εστάλη στην " "set_state()" -#: session_state.cc:1257 +#: session_state.cc:1179 msgid "Session: XML state has no options section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα επιλογών(options)" -#: session_state.cc:1262 -#, fuzzy +#: session_state.cc:1184 msgid "Session: XML state has no metadata section" -msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα διαδÏομών" +msgstr "" -#: session_state.cc:1273 +#: session_state.cc:1195 msgid "Session: XML state has no sources section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα πηγών" -#: session_state.cc:1280 +#: session_state.cc:1202 msgid "Session: XML state has no Tempo Map section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα Tempo Map" -#: session_state.cc:1287 +#: session_state.cc:1209 msgid "Session: XML state has no locations section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα τοποθεσιών" -#: session_state.cc:1313 +#: session_state.cc:1235 msgid "Session: XML state has no Regions section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα ΠεÏιοχών" -#: session_state.cc:1320 +#: session_state.cc:1242 msgid "Session: XML state has no playlists section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα playlists" -#: session_state.cc:1340 -#, fuzzy +#: session_state.cc:1262 msgid "Session: XML state has no bundles section" -msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα διαδÏομών" +msgstr "" -#: session_state.cc:1352 +#: session_state.cc:1274 msgid "Session: XML state has no diskstreams section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα diskstreams" -#: session_state.cc:1360 +#: session_state.cc:1282 msgid "Session: XML state has no routes section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα διαδÏομών" -#: session_state.cc:1372 -#, fuzzy +#: session_state.cc:1294 msgid "Session: XML state has no route groups section" -msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα διαδÏομών" +msgstr "" -#: session_state.cc:1381 +#: session_state.cc:1303 msgid "Session: XML state has no edit groups section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα επεξεÏ/σίας ομάδων" -#: session_state.cc:1388 +#: session_state.cc:1310 msgid "Session: XML state has no mix groups section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα μίξεως ομάδων" -#: session_state.cc:1396 +#: session_state.cc:1318 msgid "Session: XML state has no click section" msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα μετÏονόμου" -#: session_state.cc:1444 +#: session_state.cc:1360 msgid "Session: cannot create Route from XML description." msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω ΔιαδÏομή από XML πεÏιγÏαφή." -#: session_state.cc:1448 +#: session_state.cc:1364 msgid "Loaded track/bus %1" msgstr "" -#: session_state.cc:1546 -#, fuzzy +#: session_state.cc:1462 msgid "Could not find diskstream for route" -msgstr "Δεν ευÏÎθη το αÏχείο μÎλους" +msgstr "" -#: session_state.cc:1600 +#: session_state.cc:1516 msgid "Session: cannot create Region from XML description." msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω ΠεÏιοχή από XML πεÏιγÏαφή." -#: session_state.cc:1604 -#, fuzzy +#: session_state.cc:1520 msgid "Can not load state for region '%1'" -msgstr "δεν μποÏÏŽ να δημιουÏγήσω νÎο όνομα για την πεÏιοχή \"%1\"" +msgstr "" -#: session_state.cc:1640 +#: session_state.cc:1556 msgid "Regions in compound description not found (ID's %1 and %2): ignored" msgstr "" -#: session_state.cc:1668 +#: session_state.cc:1584 msgid "Nested source has no ID info in session file! (ignored)" msgstr "" -#: session_state.cc:1680 -#, fuzzy +#: session_state.cc:1596 msgid "Cannot reconstruct nested source for region %1" -msgstr "δεν μποÏÏŽ να δημιουÏγήσω νÎο όνομα για την πεÏιοχή \"%1\"" +msgstr "" -#: session_state.cc:1742 +#: session_state.cc:1658 msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" msgstr "" "ΣυνεδÏία: Ο XMLΚόμβος που πεÏιγÏάφει AudioΠεÏιοχή είναι ημιτελής (δίχως πηγή)" -#: session_state.cc:1750 session_state.cc:1771 session_state.cc:1791 +#: session_state.cc:1666 session_state.cc:1687 session_state.cc:1707 msgid "" "Session: XMLNode describing a AudioRegion references an unknown source id =%1" msgstr "" "ΣυνεδÏία: Ο XMLΚόμβος που πεÏιγÏάφει AudioΠεÏιοχή αναφÎÏει άγνωστο id πηγής =" "%1" -#: session_state.cc:1756 session_state.cc:1777 session_state.cc:1797 +#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" @@ -2151,188 +1974,151 @@ msgstr "" "ΣυνεδÏία: Ο XMLNode που πεÏιγÏάφει AudioRegion αναφÎÏει μη-ηχητική πηγή με " "id =%1" -#: session_state.cc:1820 -#, fuzzy +#: session_state.cc:1736 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" msgstr "" -"ΣυνεδÏία: Ο XMLΚόμβος που πεÏιγÏάφει AudioΠεÏιοχή είναι ημιτελής (δίχως πηγή)" -#: session_state.cc:1854 -#, fuzzy +#: session_state.cc:1770 msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" msgstr "" -"ΣυνεδÏία: Ο XMLΚόμβος που πεÏιγÏάφει AudioΠεÏιοχή είναι ημιτελής (δίχως πηγή)" -#: session_state.cc:1862 -#, fuzzy +#: session_state.cc:1778 msgid "" "Session: XMLNode describing a MidiRegion references an unknown source id =%1" msgstr "" -"ΣυνεδÏία: Ο XMLΚόμβος που πεÏιγÏάφει AudioΠεÏιοχή αναφÎÏει άγνωστο id πηγής =" -"%1" -#: session_state.cc:1868 -#, fuzzy +#: session_state.cc:1784 msgid "" "Session: XMLNode describing a MidiRegion references a non-midi source id =%1" msgstr "" -"ΣυνεδÏία: Ο XMLNode που πεÏιγÏάφει AudioRegion αναφÎÏει μη-ηχητική πηγή με " -"id =%1" -#: session_state.cc:1936 +#: session_state.cc:1852 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" msgstr "" -#: session_state.cc:1959 +#: session_state.cc:1875 msgid "Session: cannot create Source from XML description." msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω Πηγή από XML πεÏιγÏαφή." -#: session_state.cc:1993 +#: session_state.cc:1909 msgid "A sound file is missing. It will be replaced by silence." msgstr "" -#: session_state.cc:2016 -#, fuzzy +#: session_state.cc:1932 msgid "Found a sound file that cannot be used by %1. Talk to the progammers." msgstr "" -"ΕυÏÎθη sound file που δεν μποÏεί να χÏησιμοποιηθεί από τον Ardour. " -"Επικοινωνήστε με τους Ï€ÏογÏαμματιστÎÏ‚." -#: session_state.cc:2033 -#, fuzzy +#: session_state.cc:1949 msgid "Could not create templates directory \"%1\" (%2)" -msgstr "Δεν μπόÏεσα να δημιουÏγήσω φάκελο Ï€Ïοσχεδίων μίξεως \"%1\" (%2)" +msgstr "" -#: session_state.cc:2046 +#: session_state.cc:1962 msgid "Template \"%1\" already exists - new version not created" msgstr "Το Ï€ÏοσχÎδιο \"%1\" ήδη υπάÏχει - νÎα Îκδοση δεν δημιουÏγήθηκε" -#: session_state.cc:2052 -#, fuzzy +#: session_state.cc:1968 msgid "Could not create directory for Session template\"%1\" (%2)" -msgstr "Δεν μπόÏεσα να δημιουÏγήσω φάκελο Ï€Ïοσχεδίων μίξεως \"%1\" (%2)" +msgstr "" -#: session_state.cc:2062 -#, fuzzy +#: session_state.cc:1978 msgid "template not saved" -msgstr "Ï€ÏοσχÎδιο μίξεως δεν αποθηκεÏτηκε" +msgstr "" -#: session_state.cc:2072 -#, fuzzy +#: session_state.cc:1988 msgid "Could not create directory for Session template plugin state\"%1\" (%2)" -msgstr "Δεν μπόÏεσα να δημιουÏγήσω φάκελο Ï€Ïοσχεδίων μίξεως \"%1\" (%2)" +msgstr "" -#: session_state.cc:2267 -#, fuzzy +#: session_state.cc:2183 msgid "Unknown node \"%1\" found in Bundles list from session file" msgstr "" -"Άγνωστος κόμβος \"%1\" ευÏÎθη στη λίστα 'ΣυνδÎσεις' από το αÏχείο καταστάσεως" -#: session_state.cc:2809 session_state.cc:2815 -#, fuzzy +#: session_state.cc:2725 session_state.cc:2731 msgid "Cannot expand path %1 (%2)" -msgstr "δεν μποÏÏŽ να ελÎγξω το μονοπάτι συνεδÏίας %1 (%2)" +msgstr "" -#: session_state.cc:2868 -#, fuzzy +#: session_state.cc:2784 msgid "Session: cannot create dead file folder \"%1\" (%2)" -msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω peakfile dir συνεδÏίας \"%1\" (%2)" +msgstr "" -#: session_state.cc:2907 -#, fuzzy +#: session_state.cc:2823 msgid "cannot rename unused file source from %1 to %2 (%3)" -msgstr "δεν μποÏÏŽ να μετονομάσω την πηγή του audio file από %1 σε %2 (%3)" +msgstr "" -#: session_state.cc:2925 +#: session_state.cc:2841 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "δεν μποÏÏŽ να απαλοίψω το peakfile %1 για %2 (%3)" -#: session_state.cc:3227 -#, fuzzy +#: session_state.cc:3143 msgid "could not backup old history file, current history not saved" msgstr "" -"δεν μπόÏεσα να διασώσω το παλαιό αÏχείο καταστάσεως, η Ï„ÏÎχουσα κατάσταση " -"δεν αποθηκεÏτηκε." -#: session_state.cc:3240 -#, fuzzy +#: session_state.cc:3156 msgid "history could not be saved to %1" -msgstr "η κατάσταση δεν μποÏοÏσε να σωθεί στο %1" +msgstr "" -#: session_state.cc:3243 -#, fuzzy +#: session_state.cc:3159 msgid "Could not remove history file at path \"%1\" (%2)" -msgstr "αδÏνατη η επαναφοÏά του state file από backup %1" +msgstr "" -#: session_state.cc:3247 -#, fuzzy +#: session_state.cc:3163 msgid "could not restore history file from backup %1 (%2)" -msgstr "αδÏνατη η επαναφοÏά του state file από backup %1" +msgstr "" -#: session_state.cc:3272 +#: session_state.cc:3188 msgid "%1: no history file \"%2\" for this session." msgstr "" -#: session_state.cc:3278 -#, fuzzy +#: session_state.cc:3194 msgid "Could not understand session history file \"%1\"" -msgstr "Δεν μπόÏεσα να κατανοήσω το ardour αÏχείο %1" +msgstr "" -#: session_state.cc:3320 +#: session_state.cc:3236 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "" -#: session_state.cc:3331 +#: session_state.cc:3247 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "" -#: session_state.cc:3342 +#: session_state.cc:3258 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "" -#: session_state.cc:3350 +#: session_state.cc:3266 msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "" -#: session_state.cc:3602 -#, fuzzy +#: session_state.cc:3502 msgid "Session: unknown diskstream type in XML" -msgstr "ΣυνεδÏία: δεν μπόÏεσα να φοÏτώσω diskstream μÎσω καταστάσεως XML" +msgstr "" -#: session_state.cc:3607 +#: session_state.cc:3507 msgid "Session: could not load diskstream via XML state" msgstr "ΣυνεδÏία: δεν μπόÏεσα να φοÏτώσω diskstream μÎσω καταστάσεως XML" -#: session_time.cc:215 -msgid "Unknown JACK transport state %1 in sync callback" -msgstr "Άγνωστη κατάσταση του JACK transport %1 στην ανάκληση sync" +#: session_time.cc:214 +msgid "Unknown transport state %1 in sync callback" +msgstr "" -#: session_transport.cc:168 +#: session_transport.cc:167 msgid "Cannot loop - no loop range defined" msgstr "Δεν γίνεται loop - κανÎνα διάστημα loop δεν Ï€ÏοσδιοÏίστηκε" -#: session_transport.cc:728 -#, fuzzy +#: session_transport.cc:739 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -"Μονοκόμματο looping δεν υποστηÏίζεται ενώ ο Ardour χÏησιμοποιεί το JACK " -"transport.\n" -"ΣυνιστοÏμε την αλλαγή των διαμοÏφωμÎνων Ïυθμίσεων" -#: session_transport.cc:1094 -#, fuzzy +#: session_transport.cc:1105 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" msgstr "" -"Η Global varispeed δεν μποÏεί να υποστηÏιχθεί ενώ ο Ardour είναι " -"συνδεδεμÎνος με τον JACK transport control" #: smf_source.cc:252 msgid "Unable to read event prefix, corrupt MIDI ring" @@ -2351,9 +2137,8 @@ msgid "Skipping event with unordered time %1" msgstr "" #: smf_source.cc:410 -#, fuzzy msgid "cannot open MIDI file %1 for write" -msgstr "δεν μποÏÏŽ να δημιουÏγήσω νÎο αÏχείο ήχου \"%1\" για %2" +msgstr "" #: sndfile_helpers.cc:32 msgid "WAV" @@ -2428,18 +2213,16 @@ msgid "Signed 8 bit PCM" msgstr "" #: sndfile_helpers.cc:68 -#, fuzzy msgid "32 bit float" -msgstr "32 bit" +msgstr "" #: sndfile_helpers.cc:81 msgid "Little-endian (Intel)" msgstr "Little-endian (Intel)" #: sndfile_helpers.cc:82 -#, fuzzy msgid "Big-endian (PowerPC)" -msgstr "Big-endian (Mac)" +msgstr "" #: sndfilesource.cc:201 msgid "SndFileSource: cannot open file \"%1\" for %2 (%3)" @@ -2462,25 +2245,23 @@ msgstr "" "info για αυτό το αÏχείο" #: sndfilesource.cc:302 -#, fuzzy msgid "could not allocate file %1 for reading." -msgstr "Δεν μπόÏεσα να ανοίξω Ï€ÏοσχÎδιο μίξεως %1 για ανάγνωση" +msgstr "" #: sndfilesource.cc:337 msgid "SndFileSource: could not seek to frame %1 within %2 (%3)" msgstr "SndFileSource: δεν μποÏοÏσα να αναζητήσω στο frame %1 μÎσα στο %2 (%3)" #: sndfilesource.cc:347 -#, fuzzy msgid "" "SndFileSource: @ %1 could not read %2 within %3 (%4) (len = %5, ret was %6)" -msgstr "SndFileSource: δεν μποÏοÏσα να αναζητήσω στο frame %1 μÎσα στο %2 (%3)" +msgstr "" #: sndfilesource.cc:391 sndfilesource.cc:420 msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 +#: sndfilesource.cc:396 utils.cc:510 utils.cc:534 utils.cc:548 utils.cc:567 msgid "programming error: %1 %2" msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1 %2" @@ -2506,20 +2287,16 @@ msgid "attempt to set BWF info for an un-opened audio file source (%1)" msgstr "" #: sndfilesource.cc:614 -#, fuzzy msgid "%1: cannot seek to %2 (libsndfile error: %3)" -msgstr "%1: δεν μποÏÏŽ να αναζητήσω στο %2 για εξαγωγή" +msgstr "" #: sndfilesource.cc:727 -#, fuzzy msgid "SndFileSource: \"%1\" bad read retval: %2 of %5 (%3: %4)" msgstr "" -"ΚαταστÏεπτικήΠηγήΑÏχείου: \"%1\" κακή ανάγνωση retval: %2 of %5 (%3: %4)" #: sndfilesource.cc:740 sndfilesource.cc:790 sndfilesource.cc:797 -#, fuzzy msgid "SndFileSource: \"%1\" bad write (%2)" -msgstr "FileSource: \"%1\" κακή εγγÏαφή (%2)" +msgstr "" #: sndfilesource.cc:820 msgid "" @@ -2560,18 +2337,16 @@ msgid "TempoSection XML node has an illegal \"beats_per_minute\" value" msgstr "Κόμβος του TempoSection XML Îχει αθÎμιτη \"κτÏπων_ανά_λεπτό\" αξία" #: tempo.cc:108 -#, fuzzy msgid "TempoSection XML node has an illegal \"note-type\" value" -msgstr "Κόμβος του MeterSection XML Îχει αθÎμιτη \"Ï„Ïπος-νότας\" αξία" +msgstr "" #: tempo.cc:114 msgid "TempoSection XML node has no \"movable\" property" msgstr "Κόμβος του TempoSection XML δεν Îχει \"κινητή\" ιδιότητα" #: tempo.cc:124 -#, fuzzy msgid "TempoSection XML node has an illegal \"bar-offset\" value" -msgstr "Κόμβος του TempoSection XML Îχει αθÎμιτη αξία \"ÎναÏξη\"" +msgstr "" #: tempo.cc:201 msgid "MeterSection XML node has no \"start\" property" @@ -2582,18 +2357,16 @@ msgid "MeterSection XML node has an illegal \"start\" value" msgstr "Κόμβος του MeterSection XML Îχει αθÎμιτη \"ÎναÏξη\" αξία" #: tempo.cc:219 -#, fuzzy msgid "" "MeterSection XML node has no \"beats-per-bar\" or \"divisions-per-bar\" " "property" -msgstr "Κόμβος του MeterSection XML δεν Îχει \"κτÏπων-ανά-μπάÏα\" ιδιότητα" +msgstr "" #: tempo.cc:225 -#, fuzzy msgid "" "MeterSection XML node has an illegal \"beats-per-bar\" or \"divisions-per-bar" "\" value" -msgstr "Κόμβος του MeterSection XML Îχει αθÎμιτη \"κτÏπων-ανά-μπάÏα\" αξία" +msgstr "" #: tempo.cc:230 msgid "MeterSection XML node has no \"note-type\" property" @@ -2671,9 +2444,8 @@ msgid "" msgstr "" #: user_bundle.cc:47 -#, fuzzy msgid "Node for Bundle has no \"name\" property" -msgstr "Κόμβος Ï€Ïος ΣÏνδεση δεν Îχει \"όνομα\" ιδιότητα" +msgstr "" #: user_bundle.cc:59 user_bundle.cc:80 #, c-format @@ -2681,24 +2453,20 @@ msgid "Unknown node \"%s\" in Bundle" msgstr "" #: user_bundle.cc:64 -#, fuzzy msgid "Node for Channel has no \"name\" property" -msgstr "Κόμβος Ï€Ïος ΣÏνδεση δεν Îχει \"όνομα\" ιδιότητα" +msgstr "" #: user_bundle.cc:70 -#, fuzzy msgid "Node for Channel has no \"type\" property" -msgstr "Κόμβος Ï€Ïος ΣÏνδεση δεν Îχει \"όνομα\" ιδιότητα" +msgstr "" #: user_bundle.cc:85 -#, fuzzy msgid "Node for Port has no \"name\" property" -msgstr "Κόμβος Ï€Ïος ΣÏνδεση δεν Îχει \"όνομα\" ιδιότητα" +msgstr "" #: utils.cc:358 utils.cc:382 -#, fuzzy msgid "Splice" -msgstr "αντιγÏαφή" +msgstr "" #: utils.cc:360 utils.cc:375 msgid "Slide" @@ -2709,1027 +2477,41 @@ msgid "Lock" msgstr "" #: utils.cc:365 -#, fuzzy msgid "programming error: unknown edit mode string \"%1\"" -msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: άγνωστος Ï„Ïπος of Redirect διεγÏάφη!" +msgstr "" -#: utils.cc:389 utils.cc:418 +#: utils.cc:389 utils.cc:421 msgid "MIDI Timecode" msgstr "" -#: utils.cc:389 utils.cc:416 +#: utils.cc:389 utils.cc:419 msgid "MTC" msgstr "" -#: utils.cc:393 utils.cc:425 +#: utils.cc:393 utils.cc:428 msgid "MIDI Clock" msgstr "" -#: utils.cc:397 utils.cc:412 utils.cc:432 +#: utils.cc:397 utils.cc:415 utils.cc:435 msgid "JACK" msgstr "" #: utils.cc:401 -#, fuzzy msgid "programming error: unknown sync source string \"%1\"" -msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: άγνωστος Ï„Ïπος Εισόδου εδημιουÏγήθη!" +msgstr "" -#: utils.cc:423 +#: utils.cc:426 msgid "M-Clock" msgstr "" -#: utils.cc:429 +#: utils.cc:432 msgid "LTC" msgstr "" -#: utils.cc:599 -#, fuzzy +#: utils.cc:602 msgid "programming error: unknown native header format: %1" -msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: άγνωστος Ï„Ïπος Redirect εδημιουÏγήθη!" +msgstr "" -#: utils.cc:614 -#, fuzzy +#: utils.cc:617 msgid "cannot open directory %1 (%2)" -msgstr "δεν μποÏÏŽ να ανοίξω το Ï€Ïόσφατο αÏχείο συνεδÏίας %1 (%2)" - -#, fuzzy -#~ msgid "MidiDiskstream: XML property channel-mask out of range" -#~ msgstr "AudioDiskstream: κανάλι %1 εκτός διαστήματος" - -#~ msgid "timefx code failure. please notify ardour-developers." -#~ msgstr "" -#~ "αποτυχία κώδικα timefx. παÏακαλώ ειδοποιήστε τους Ï€ÏογÏαμματιστÎÏ‚ του " -#~ "ardour." - -#~ msgid "Session: you can't use a mark for auto loop" -#~ msgstr "ΣυνεδÏία: δεν μποÏείτε να χÏησιμοποιήσετε στίγμα για auto loop" - -#~ msgid "Could not understand ardour file %1" -#~ msgstr "Δεν μπόÏεσα να κατανοήσω το ardour αÏχείο %1" - -#, fuzzy -#~ msgid "control protocol XML node has no name property. Ignored." -#~ msgstr "Το όνομα Ï€Ïωτοκόλλου ελÎγχου \"%1\" δεν Îχει descriptor" - -#, fuzzy -#~ msgid "control protocol \"%1\" is not known. Ignored" -#~ msgstr "Το όνομα Ï€Ïωτοκόλλου ελÎγχου \"%1\" δεν Îχει descriptor" - -#~ msgid "" -#~ "programming error: non-audio Region passed to remove_overlap in audio " -#~ "playlist" -#~ msgstr "" -#~ "σφάλμα Ï€ÏογÏαμματισμοÏ: μη-ηχητική ΠεÏιοχή Ï€ÎÏασε σε remove_overlap στην " -#~ "audio playlist" - -#~ msgid "" -#~ "programming error: non-audio Region tested for overlap in audio playlist" -#~ msgstr "" -#~ "σφάλμα Ï€ÏογÏαμματισμοÏ: μη-ηχητική ΠεÏιοχή ελÎγχθη για υπεÏπήδηση" -#~ "(overlap) στην λίστα αναπαÏ/γής του ήχου" - -#~ msgid "Crossfade: no \"in\" region in state" -#~ msgstr "Crossfade: χωÏίς \"in\" πεÏιοχή σε κατάσταση" - -#, fuzzy -#~ msgid "" -#~ "Crossfade: no \"in\" region %1 found in playlist %2 nor in region map" -#~ msgstr "Crossfade: no \"in\" πεÏιοχή %1 δεν ευÏÎθη στη λίστα αναπαÏ/γής %2" - -#~ msgid "Crossfade: no \"out\" region in state" -#~ msgstr "Crossfade: χωÏίς \"out\" πεÏιοχή σε κατάσταση" - -#, fuzzy -#~ msgid "" -#~ "Crossfade: no \"out\" region %1 found in playlist %2 nor in region map" -#~ msgstr "" -#~ "Crossfade: no \"out\" πεÏιοχή %1 δεν ευÏÎθη στη λίστα αναπαÏ/γής %2" - -#~ msgid "old-style crossfade information - no position information" -#~ msgstr "παλαιοÏ-Ï„Ïπου crossfade πληÏοφοÏία - καμία πληÏοφοÏία θÎσεως" - -#~ msgid "Chunk %1 uses an unknown playlist \"%2\"" -#~ msgstr "Το κομμάτι %1 χÏησιμοποιεί άγνωστη λίστα αναπαÏ/γής \"%2\"" - -#~ msgid "Chunk %1 contains malformed playlist information" -#~ msgstr "" -#~ "Το κομμάτι %1 πεÏιÎχει δÏσμοÏφες πληÏοφοÏίες για τη λίστα αναπαÏ/γής" - -#~ msgid "signal" -#~ msgstr "σήμα" - -#, fuzzy -#~ msgid "editor" -#~ msgstr "monitor" - -#, fuzzy -#~ msgid "Template \"%1\" already exists - template not renamed" -#~ msgstr "Το Ï€ÏοσχÎδιο \"%1\" ήδη υπάÏχει - νÎα Îκδοση δεν δημιουÏγήθηκε" - -#~ msgid "Session: cannot create Named Selection from XML description." -#~ msgstr "" -#~ "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω την ονομασμÎνη επιλογή από την XML " -#~ "πεÏιγÏαφή." - -#, fuzzy -#~ msgid "Unable to create a backup copy of file %1 (%2)" -#~ msgstr "audiofilter: σφάλμα στη δημιουÏγία νÎου audio file %1 (%2)" - -#, fuzzy -#~ msgid "programming error: realpath(%1) failed, errcode %2" -#~ msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1 %2" - -#~ msgid "illegal or badly-formed string used for path (%1)" -#~ msgstr "αθÎμιτη ή κακοσχηματισμÎνη γÏαμμή για το μονοπάτι (%1)" - -#~ msgid "path (%1) is ambiguous" -#~ msgstr "Το μονοπάτι (%1) είναι αμφίβολο" - -#, fuzzy -#~ msgid "Could not move capture file from %1" -#~ msgstr "αδÏνατη η επαναφοÏά του state file από backup %1" - -#~ msgid "cannot open click emphasis soundfile %1 (%2)" -#~ msgstr "δεν μποÏÏŽ να ανοίξω το soundfile εμφάσεως μετÏονόμου %1 (%2)" - -#~ msgid "cannot read data from click emphasis soundfile" -#~ msgstr "δεν μποÏÏŽ να διαβάσω δεδομÎνα από το soundfile εμφάσεως μετÏονόμου" - -#, fuzzy -#~ msgid "Reset Control Protocols" -#~ msgstr "Î Ïωτόκολλο ελÎγχου %1 μη χÏησιμοποιήσιμο" - -#, fuzzy -#~ msgid "Session: cannot create session stub sounds dir \"%1\" (%2)" -#~ msgstr "" -#~ "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο ήχων συνεδÏίας \"%1\" (%2)" - -#, fuzzy -#~ msgid "Session: cannot create session stub midi dir \"%1\" (%2)" -#~ msgstr "" -#~ "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο ήχων συνεδÏίας \"%1\" (%2)" - -#, fuzzy -#~ msgid "Session: XML state has no speakers section - assuming simple stereo" -#~ msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα πηγών" - -#, fuzzy -#~ msgid "could not allocate file %1" -#~ msgstr "αδÏνατη η διαγÏαφή αÏχείου διεφθαÏμÎνης state %1" - -#~ msgid "" -#~ "badly formatted pan automation event record at line %1 of %2 (ignored) " -#~ "[%3]" -#~ msgstr "" -#~ "δÏσμοÏφη εγγÏαφή συμβάντος pan Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï ÏƒÏ„Î· γÏαμμή %1 of %2 " -#~ "(αγνοήθηκε) [%3]" - -#~ msgid "badly-formed positional data for Multi2dPanner - ignored" -#~ msgstr "δÏσμοÏφα δεδομÎνα θÎσεως για το Multi2dPanner - αγνοήθηκε" - -#~ msgid "programming error:" -#~ msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ:" - -#~ msgid "cannot open pan automation file %1 (%2)" -#~ msgstr "δεν μποÏÏŽ να ανοίξω αÏχείο Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… pan %1 (%2)" - -#~ msgid "badly formed version number in pan automation event file \"%1\"" -#~ msgstr "" -#~ "δÏσμοÏφος αÏιθμός εκδόσεως στο αÏχείο συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… pan " -#~ "\"%1\"" - -#~ msgid "" -#~ "no version information in pan automation event file \"%1\" (first line = " -#~ "%2)" -#~ msgstr "" -#~ "καμία πληÏοφοÏία εκδόσεως στο αÏχείο συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… pan " -#~ "\"%1\" (Ï€Ïώτη γÏαμμή = %2)" - -#~ msgid "too many panner states found in pan automation file %1" -#~ msgstr "" -#~ "πάÏα πολλÎÏ‚ καταστάσεις panner ευÏÎθησαν στο αÏχείο των αυτοματισμών pan " -#~ "%1" - -#~ msgid "AudioDiskstream: Session doesn't know about a Playlist called \"%1\"" -#~ msgstr "" -#~ "AudioDiskStream: Η ΣυνεδÏία δεν γνωÏίζει για λίστα ΑναπαÏ/γής με όνομα " -#~ "\"%1\"" - -#~ msgid "%1: cannot create region from pending capture sources" -#~ msgstr "%1: δεν μπόÏεσα να δημιουÏγήσω πεÏιοχή για τις απαιτοÏμενες πηγÎÏ‚" - -#~ msgid "xfade change" -#~ msgstr "αλλαγή xfade" - -#~ msgid "region modified" -#~ msgstr "η πεÏιοχή μετεβλήθη" - -#~ msgid "AudioTrack: diskstream \"%1\" not known by session" -#~ msgstr "" -#~ "AudioTrack: το diskstream \"%1\" είναι μή αναγνωÏίσιμο από τη συνεδÏία" - -#~ msgid "" -#~ "MIDI rec_enable control specification for %1 is incomplete, so it has " -#~ "been ignored" -#~ msgstr "" -#~ "Η Ï€ÏοδιαγÏαφή ελÎγχου του MIDI rec_enable για το %1 είναι ημιτελής, με " -#~ "αποτÎλεσμα να αγνοηθεί" - -#~ msgid "programming error: AudioTrack given state without diskstream!" -#~ msgstr "" -#~ "σφάλμα Ï€ÏογÏαμματισμοÏ: εδόθη κατάσταση στην AudioTrack δίχως diskstream!" - -#~ msgid "cannot activate JACK client" -#~ msgstr "Ο JACK δεν μποÏεί να ενεÏγοποιηθεί" - -#~ msgid "register audio input port called before engine was started" -#~ msgstr "η register audio input port εκλήθη Ï€Ïιν να εκκινηθεί η engine" - -#~ msgid "register audio output port called before engine was started" -#~ msgstr "η register audio output port εκλήθη Ï€Ïίν να εκκινηθεί η engine" - -#~ msgid "get_nth_physical called before engine was started" -#~ msgstr "η Ïουτίνα get_nth_physical εκλήθη Ï€Ïιν να εκκινηθεί η engine" - -#~ msgid "get_port_total_latency() called with no JACK client connection" -#~ msgstr "" -#~ "η Ïουτίνα get_port_total_latency() εκλήθη χωÏίς την εκκίνηση κάποιου JACK " -#~ "client" - -#~ msgid "get_port_total_latency() called before engine was started" -#~ msgstr "" -#~ "η Ïουτίνα get_port_total_latency() εκλήθη Ï€Ïιν να εκκινηθεί η engine" - -#~ msgid "Unable to connect to JACK server" -#~ msgstr "ΑδÏνατη η σÏνδεση στον JACK server" - -#~ msgid "Could not connect to JACK server as \"%1\"" -#~ msgstr "ΑδÏνατη η σÏνδεση στον JACK server ως \"%1\"" - -#~ msgid "JACK server started" -#~ msgstr "ΈναÏξη JACK server" - -#~ msgid "cannot shutdown connection to JACK" -#~ msgstr "ΑδÏνατος ο τεÏματισμός συνδÎσεως με τον JACK" - -#~ msgid "fade in change" -#~ msgstr "αλλαγή fade in" - -#~ msgid "envelope change" -#~ msgstr "αλλαγή envelope" - -#~ msgid "Error on peak thread request pipe" -#~ msgstr "Σφάλμα στο peak thread request pipe" - -#~ msgid "Error reading from peak request pipe" -#~ msgstr "Σφάλμα στην ανάγνωση από peak request pipe" - -#~ msgid "UI: cannot set O_NONBLOCK on peak request pipe (%1)" -#~ msgstr "UI: δεν μποÏÏŽ να θÎσω O_NONBLOCK στο peak read pipe (%1)" - -#~ msgid "AudioSource: could not create peak thread" -#~ msgstr "AudioSource: δεν μπόÏεσα να δημιουÏγήσω peak thread" - -#~ msgid "initial" -#~ msgstr "Ï€ÏωταÏχικό" - -#~ msgid "cleared" -#~ msgstr "εκκαθαÏίσθη" - -#~ msgid "added event" -#~ msgstr "συμβάν Ï€ÏοστÎθηκε" - -#~ msgid "removed event" -#~ msgstr "συμβάν απαλοίφθηκε" - -#~ msgid "removed multiple events" -#~ msgstr "πολλαπλά συμβάντα απαλοίφθηκαν" - -#~ msgid "removed range" -#~ msgstr "διάστημα απαλοίφθηκε" - -#~ msgid "event range adjusted" -#~ msgstr "διάστημα συμβάντων Ïυθμίστηκε" - -#~ msgid "event adjusted" -#~ msgstr "συμβάν Ïυθμίστηκε" - -#~ msgid "cut/copy/clear" -#~ msgstr "κοπή/αντιγÏαφή/εκκαθάÏιση" - -#~ msgid "copy" -#~ msgstr "αντιγÏαφή" - -#~ msgid "ill-formed MIDI port specification in ardour rcfile (ignored)" -#~ msgstr "" -#~ "κακοσχηματισμÎνος καθοÏισμός MIDI θÏÏας στο ardour rcfile (αγνοήθηκε)" - -#~ msgid "Node for Connection has no \"connections\" property" -#~ msgstr "Κόμβος Ï€Ïος ΣÏνδεση δεν Îχει \"συνδÎσεις\" ιδιότητα" - -#~ msgid "active changed" -#~ msgstr "αλλαγή ενεÏγοÏ" - -#~ msgid "DestructiveFileSource: \"%1\" bad write (%2)" -#~ msgstr "DestructiveFileSource: \"%1\" κακή εγγÏαφή (%2)" - -#~ msgid "no MIDI ports specified: no MMC or MTC control possible" -#~ msgstr "καμία MIDI θÏÏα δεν επελÎχθη: Îλεγχος MMC ή MTC αδÏνατος" - -#~ msgid "MIDI port specifications for \"%1\" are not understandable." -#~ msgstr "Οι Ï€ÏοδιαγÏαφÎÏ‚ της θÏÏας MIDI για το \"%1\" δεν είναι κατανοητÎÏ‚." - -#~ msgid "default" -#~ msgstr "Ï€ÏοκαθοÏισμÎνο" - -#~ msgid "No MMC control (MIDI port \"%1\" not available)" -#~ msgstr "ΧωÏίς Îλεγχο MMC (θÏÏα MIDI \"%1\" μη διαθÎσιμη)" - -#~ msgid "No MTC support (MIDI port \"%1\" not available)" -#~ msgstr "ΧωÏίς Îλεγχο MTC (θÏÏα MIDI \"%1\" μη διαθÎσιμη)" - -#~ msgid "No MIDI parameter support (MIDI port \"%1\" not available)" -#~ msgstr "ΧωÏίς υποστήÏιξη MIDI παÏαμÎÏ„Ïων (θÏÏα MIDI \"%1\" μη διαθÎσιμη)" - -#~ msgid "resampling audio" -#~ msgstr "επανά-ληψη(resampling) ήχου" - -#~ msgid "Import: cannot open converted sound file \"%1\"" -#~ msgstr "Εισαγωγή: δεν μποÏÏŽ να ανοίξω το Ï„ÏοποποιημÎνο αÏχείο ήχου \"%1\"" - -#~ msgid "" -#~ "Session::import_audiofile: cannot open new file source for channel %1" -#~ msgstr "" -#~ "ΣυνεδÏία::εισαγωγή_αÏχείου: δεν μποÏÏŽ να ανοίξω νÎα πηγή αÏχείου για το " -#~ "κανάλι %1" - -#~ msgid "Import: could not open temp file: %1" -#~ msgstr "Εισαγωγή: δεν μπόÏεσα να ανοίξω το temp αÏχείο: %1" - -#~ msgid "XML node describing insert is missing the `id' field" -#~ msgstr "Στον κόμβο XML που πεÏιγÏάφει το insert λείπει το πεδίο `id'" - -#~ msgid "XML node describing insert is missing a Redirect node" -#~ msgstr "Στον κόμβο XML που πεÏιγÏάφει το insert λείπει Îνας κόμβος Redirect" - -#~ msgid "XML node describing a plugin insert is missing the `%1' information" -#~ msgstr "" -#~ "Στον κόμβο XML που πεÏιγÏάφει Îνα plugin insert λείπουν οι πληÏοφοÏίες `" -#~ "%1' " - -#~ msgid "" -#~ "XML node describing a port automation is missing the `%1' information" -#~ msgstr "" -#~ "Στον κόμβο XML που πεÏιγÏάφει Îναν αυτοματισμό θÏÏας λείπουν οι " -#~ "πληÏοφοÏίες `%1' " - -#~ msgid "PortInsert: cannot add input port" -#~ msgstr "PortInsert: δεν μποÏεί να Ï€Ïοστεθει θÏÏα εισόδου" - -#~ msgid "PortInsert: cannot add output port" -#~ msgstr "PortInsert: δεν μποÏεί να Ï€Ïοστεθεί θÏÏα εξόδου" - -#~ msgid "IO: cannot disconnect output port %1 from %2" -#~ msgstr "IO: δεν μποÏεί να αποσυνδεθεί η θÏÏα εξόδου %1 από %2" - -#~ msgid "%s/out" -#~ msgstr "%s/out" - -#~ msgid "%s/out %u" -#~ msgstr "%s/out %u" - -#~ msgid "%s/in" -#~ msgstr "%s/in" - -#~ msgid "%s/in %u" -#~ msgstr "%s/in %u" - -#~ msgid "IO::connecting_became_legal() called without a pending state node" -#~ msgstr "" -#~ "IO::connecting_became_legal() εκλήθη χωÏίς κόμβο καταστάσεως εν αναμονή" - -#~ msgid "IO::ports_became_legal() called without a pending state node" -#~ msgstr "IO::ports_became_legal() εκλήθη χωÏίς κόμβο καταστάσεως εν αναμονή" - -#~ msgid "" -#~ "MIDI gain control specification for %1 is incomplete, so it has been " -#~ "ignored" -#~ msgstr "" -#~ "Η Ï€ÏοδιαγÏαφή ελÎγχου του MIDI gain για το %1 είναι ημιτελής, με " -#~ "αποτÎλεσμα να αγνοηθεί" - -#~ msgid "Unknown connection \"%1\" listed for output of %2" -#~ msgstr "Άγνωστη σÏνδεση \"%1\" καταχωÏήθη για την Îξοδο του %2" - -#~ msgid "No output connections available as a replacement" -#~ msgstr "Καμία σÏνδεση output διαθÎσιμη σαν εναλλακτική" - -#~ msgid "Connection %1 was not available - \"out 1\" used instead" -#~ msgstr "" -#~ "Η σÏνδεση %1 δεν ήταν διαθÎσιμη - αντ'αυτής χÏησιμοποιήθηκε η \"out 1\" " - -#~ msgid "improper output channel list in XML node (%1)" -#~ msgstr "ασαφής λίστα καναλιών εξόδου στον κόμβο XML (%1)" - -#~ msgid "%1: could not open automation event file \"%2\"" -#~ msgstr "%1: δεν μπόÏεσα να ανοίξω το αÏχείο συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï \"%2\"" - -#~ msgid "%1: cannot open automation event file \"%2\"" -#~ msgstr "%1: δεν μποÏÏŽ να ανοίξω το αÏχείο συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï \"%2\"" - -#~ msgid "badly formed version number in automation event file \"%1\"" -#~ msgstr "δÏσμοÏφος αÏιθμός εκδόσεως στο αÏχείο συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï \"%1\"" - -#~ msgid "no version information in automation event file \"%1\"" -#~ msgstr "" -#~ "δεν υπάÏχουν πληÏοφοÏίες πεÏί εκδόσεων στο αÏχείο συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï " -#~ "\"%1\"" - -#~ msgid "mismatched automation event file version (%1)" -#~ msgstr "αταίÏιαστη Îκδοση αÏχείου συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï (%1)" - -#~ msgid "badly formatted automation event record at line %1 of %2 (ignored)" -#~ msgstr "" -#~ "κακώς φοÏμαÏισμÎνη καταγÏαφή συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï ÏƒÏ„Î· γÏαμμή %1 of %2 " -#~ "(αγνοήθηκε)" - -#~ msgid "loaded from disk" -#~ msgstr "φοÏτώθηκε από το δίσκο" - -#~ msgid "automation write/touch" -#~ msgstr "αυτοματισμός εγγÏαφή/αφή(write/touch)" - -#~ msgid "" -#~ "LADSPA LadspaPlugin MIDI control specification for port %1 is incomplete, " -#~ "so it has been ignored" -#~ msgstr "" -#~ "Ο καθοÏισμός ελÎγχου LADSPA LadspaPlugin για MIDI για την θÏÏα %1 είναι " -#~ "ημιτελής, Îτσι αγνοήθηκε." - -#~ msgid "clear" -#~ msgstr "εκκαθάÏιση" - -#~ msgid "clear markers" -#~ msgstr "εκκαθάÏιση στιγμάτων" - -#~ msgid "clear ranges" -#~ msgstr "εκκαθάÏιση διαστημάτων" - -#~ msgid "add" -#~ msgstr "Ï€Ïόσθεση" - -#~ msgid "remove" -#~ msgstr "απαλοιφή" - -#~ msgid "MIDI pan control specification is incomplete, so it has been ignored" -#~ msgstr "" -#~ "Η Ï€ÏοδιαγÏαφή ελÎγχου του MIDI pan είναι ημιτελής, με αποτÎλεσμα να " -#~ "αγνοηθεί" - -#~ msgid "automation write pass" -#~ msgstr "Ï€ÎÏασμα εγγÏαφής αυτοματισμοÏ" - -#~ msgid "error writing pan automation file (%s)" -#~ msgstr "σφάλμα στην εγγÏαφή του pan στο αÏχείο Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï (%s)" - -#~ msgid "cannot open pan automation file \"%1\" for saving (%s)" -#~ msgstr "" -#~ "δεν μποÏÏŽ να ανοίξω αÏχείο Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Ï„Î¿Ï… pan \"%1\" για αποθήκευση (%s)" - -#~ msgid "mismatched pan automation event file version (%1)" -#~ msgstr "αταίÏιαστη Îκδοση αÏχείου συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Î³Î¹Î± το pan (%1)" - -#~ msgid "playlist const copy constructor called" -#~ msgstr "λίστα αναπαÏ/γής const εκλήθη από κατασκευαστή αντιγÏάφου" - -#~ msgid "playlist non-const copy constructor called" -#~ msgstr "λίστα αναπαÏ/γής non-const εκλήθη από κατασκευαστή αντιγÏάφου" - -#~ msgid "remove region" -#~ msgstr "απαλοιφή πεÏιοχής" - -#~ msgid "separate" -#~ msgstr "ξεχωÏιστό" - -#~ msgid "split" -#~ msgstr "διαχωÏισμός" - -#~ msgid "%1: bounds changed received for region (%2)not in playlist" -#~ msgstr "" -#~ "%1: τα αλλαγμÎνα ÏŒÏια που ελήφθησαν για την πεÏιοχή (%2)δεν είναι στη " -#~ "λίστα αναπαÏ/γής" - -#~ msgid "nudged" -#~ msgstr "νυχθÎν" - -#~ msgid "" -#~ "programming error: Playlist::copyPlaylist called with unknown Playlist " -#~ "type" -#~ msgstr "" -#~ "σφάλμα Ï€ÏογÏαμματισμοÏ: Playlist::copyPlaylist με άγνωστο Ï„Ïπο Playlist" - -#~ msgid "VST: cannot load module from \"%1\"" -#~ msgstr "VST: δεν μποÏÏŽ να φοÏτώσω module από \"%1\"" - -#~ msgid "You asked ardour to not use any VST plugins" -#~ msgstr "Ζητήσατε απ'το Ardour να μή χÏησιμοποιήσει VST plugins" - -#~ msgid "This version of ardour has no support for VST plugins" -#~ msgstr "Η παÏοÏσα Îκδοση του ardour δεν υποστηÏίζει VST plugins" - -#~ msgid "programming error: unknown Redirect type in Redirect::Clone!\n" -#~ msgstr "" -#~ "σφάλμα Ï€ÏογÏαμματισμοÏ: άγνωστος Ï„Ïπος Redirect στο Redirect::Clone!\n" - -#~ msgid "pre" -#~ msgstr "pre" - -#~ msgid "post" -#~ msgstr "post" - -#~ msgid "Redirect: unknown placement string \"%1\" (ignored)" -#~ msgstr "Redirect: άγνωστη γÏαμμή τοποθετήσεως \"%1\" (αγνοήθηκε)" - -#~ msgid "%1: cannot open %2 to store automation data (%3)" -#~ msgstr "" -#~ "%1: δεν μποÏÏŽ να ανοίξω %2 για αποθήκευση δεδομÎνων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï (%3)" - -#~ msgid "%1: could not save automation state to %2" -#~ msgstr "%1: δεν μπόÏεσα να αποθηκεÏσω την κατάσταση Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï ÏƒÏ„Î¿ %2" - -#~ msgid "" -#~ "Could not get state from Redirect (%1). Problem with save_automation" -#~ msgstr "" -#~ "Δεν μπόÏεσα να πάÏω κατάσταση από το Redirect (%1). Î Ïόβλημα με την " -#~ "αποθήκευση_αυτοματισμοÏ" - -#~ msgid "incorrect XML node \"%1\" passed to Redirect object" -#~ msgstr "λανθασμÎνος κόμβος XML \"%1\" Ï€ÎÏασε στο αντικείμενο Redirect" - -#~ msgid "XML node describing an IO is missing an IO node" -#~ msgstr "Στον κόμβο XML που πεÏιγÏάφει I/O λείπει Îνας κόμβος IO" - -#~ msgid "XML node describing a redirect is missing the `active' field" -#~ msgstr "" -#~ "Στον κόμβο XML που πεÏιγÏάφει Îνα redirect λείπει το πεδίο " -#~ "`ενεÏγό'(active)" - -#~ msgid "XML node describing a redirect is missing the `placement' field" -#~ msgstr "" -#~ "Στον κόμβο XML που πεÏιγÏάφει Îνα redirect λείπει το πεδίο " -#~ "`τοποθÎτηση'(placement)" - -#~ msgid "active_changed" -#~ msgstr "αλλαγή_ενεÏγοÏ" - -#~ msgid "Session: XMLNode describing a Region is incomplete (no id)" -#~ msgstr "" -#~ "ΣυνεδÏία: XMLΚόμβος που πεÏιγÏάφει ΠεÏιοχή είναι ημιτελής (χωÏίς id)" - -#~ msgid "Session: XMLNode describing a Region is incomplete (no name)" -#~ msgstr "" -#~ "ΣυνεδÏία: XMLΚόμβος που πεÏιγÏάφει ΠεÏιοχή είναι ημιτελής (χωÏίς όνομα)" - -#~ msgid "Could not get state of route. Problem with save_automation" -#~ msgstr "" -#~ "Δεν μπόÏεσα να πάÏω κατάσταση διαδÏομής. Î Ïόβλημα με " -#~ "αποθήκευση_αυτοματισμοÏ" - -#~ msgid "Send construction failed" -#~ msgstr "Αποστολή κατασκευής απÎτυχε" - -#~ msgid "Insert XML node has no type property" -#~ msgstr "ΕισηχθÎντας κόμβος XML δεν Îχει στοιχεία Ï„Ïπου" - -#~ msgid "Route %1: unknown edit group \"%2 in saved state (ignored)" -#~ msgstr "" -#~ "Route %1: άγνωστη ομάδα επεξεÏγασίας \"%2 στην αποθηκευμÎνη κατάσταση " -#~ "(αγνοήθηκε)" - -#~ msgid "Route %1: unknown mix group \"%2 in saved state (ignored)" -#~ msgstr "" -#~ "Route %1: άγνωστη ομάδα μίξεως \"%2 στην αποθηκευμÎνη κατάσταση " -#~ "(αγνοήθηκε)" - -#~ msgid "" -#~ "MIDI mute control specification for %1 is incomplete, so it has been " -#~ "ignored" -#~ msgstr "" -#~ "Η Ï€ÏοδιαγÏαφή ελÎγχου του MIDI mute για το %1 είναι ημιτελής, με " -#~ "αποτÎλεσμα να αγνοηθεί" - -#~ msgid "XML node describing a send is missing a Redirect node" -#~ msgstr "" -#~ "Στον κόμβο XML όπου πεÏιγÏάφεται Îνα send λείπει Îνας κόμβος Redirect" - -#~ msgid "cannot setup master inputs" -#~ msgstr "δεν μποÏÏŽ να διαμοÏφώσω τις master εισόδους" - -#~ msgid "cannot setup master outputs" -#~ msgstr "δεν μποÏÏŽ να διαμοÏφώσω τις master εξόδους" - -#~ msgid "cannot setup control inputs" -#~ msgstr "δεν μποÏÏŽ να διαμοÏφώσω τις εισόδους ελÎγχου" - -#~ msgid "cannot set up master outputs" -#~ msgstr "δεν μποÏÏŽ να διαμοÏφώσω τις εξόδους ελÎγχου" - -#~ msgid "too many regions with names like %1" -#~ msgstr "πάÏα πολλÎÏ‚ πεÏιοχÎÏ‚ με ονόματα σαν %1" - -#~ msgid "programming error: unknown type of Insert deleted!" -#~ msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: άγνωστος Ï„Ïπος of Insert διεγÏάφη!" - -#~ msgid "Export: no output file specified" -#~ msgstr "Εξαγωγή: κανÎνα αÏχείο εξόδου δεν Ï€ÏοσδιοÏίστηκε" - -#~ msgid "illegal frame range in export specification" -#~ msgstr "παÏάνομο διάστημα frame στον Ï€ÏοσδιοÏισμό εξαγωγής" - -#~ msgid "Bad data width size. Report me!" -#~ msgstr "Κακό μÎγεθος εÏÏους δεδομÎνων. ΑνάφεÏΠμε!" - -#~ msgid "Export: cannot open output file \"%1\" (%2)" -#~ msgstr "Εξαγωγή: δεν μποÏÏŽ να ανοίξω αÏχείο εξόδου \"%1\" (%2)" - -#~ msgid "cannot initialize sample rate conversion: %1" -#~ msgstr "δεν μποÏÏŽ να καλÎσω την μετατÏοπή του ÏÏ…Î¸Î¼Î¿Ï Î´ÎµÎ¹Î³Î¼Î±Ï„Î¿Î»Î·ÏˆÎ¯Î±Ï‚: %1" - -#~ msgid "warning, leftover frames overflowed, glitches might occur in output" -#~ msgstr "" -#~ "Ï€Ïοσοχή, παÏατημÎνα frames διÎÏÏευσαν, πιθανόν να παÏουσιαστοÏν ατÎλειες " -#~ "στην Îξοδο" - -#~ msgid "Export: could not write data to output file (%1)" -#~ msgstr "Εξαγωγή: δεν μπόÏεσα να γÏάψω δεδομÎνα στο αÏχείο εξόδου (%1)" - -#~ msgid "Ardour is slaved to MTC - port cannot be reset" -#~ msgstr "Το Ardour υπακοÏει το MTC - η θÏÏα δεν γίνεται reset" - -#~ msgid "unknown port %1 requested for MTC" -#~ msgstr "Εζητήθη άγνωστη θÏÏα %1 για το MTC" - -#~ msgid "Error reading from MIDI port %1" -#~ msgstr "Σφάλμα στην ανάγνωση της θÏÏας MIDI %1" - -#~ msgid "MMC: cannot send command %1%2%3" -#~ msgstr "MMC: δεν μποÏÏŽ να στείλω την εντολή %1%2%3" - -#~ msgid "UI: cannot set O_NONBLOCK on signal read pipe (%1)" -#~ msgstr "UI: δεν μποÏÏŽ να θÎσω O_NONBLOCK στο signal read pipe (%1)" - -#~ msgid "UI: cannot set O_NONBLOCK on signal write pipe (%1)" -#~ msgstr "UI: δεν μποÏÏŽ να θÎσω O_NONBLOCK στο signal write pipe (%1)" - -#~ msgid "Session: could not create transport thread" -#~ msgstr "ΣυνεδÏία: δεν μπόÏεσα να δημιουÏγήσω δÎσμη με transport" - -#~ msgid "cannot send signal to midi thread! (%1)" -#~ msgstr "δεν μποÏÏŽ να στείλω σήμα στη δÎσμη midi! (%1)" - -#~ msgid "MIDI thread poll failed (%1)" -#~ msgstr "Αίτηση δÎσμης MIDI απÎτυχε (%1)" - -#~ msgid "Error on transport thread request pipe" -#~ msgstr "Σφάλμα στο transport thread request pipe" - -#~ msgid "Error reading from transport request pipe" -#~ msgstr "Σφάλμα στην ανάγνωση από transport request pipe" - -#~ msgid "end" -#~ msgstr "Ï„Îλος" - -#~ msgid "Session: cannot create session tape dir \"%1\" (%2)" -#~ msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω tape dir συνεδÏίας \"%1\" (%2)" - -#~ msgid "Session: cannot create session automation dir \"%1\" (%2)" -#~ msgstr "" -#~ "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο αυτοματισμών της συνεδÏίας " -#~ "\"%1\" (%2)" - -#~ msgid "Session already exists. Not overwriting" -#~ msgstr "Η ΣυνεδÏία ήδη υπάÏχει. ΑκÏÏωση overwriting" - -#~ msgid "Session: XML state has no connections section" -#~ msgstr "ΣυνεδÏία: η XML κατάσταση δεν Îχει τομÎα συνδÎσεων" - -#~ msgid "cannot create dead sounds directory \"%1\"; ignored" -#~ msgstr "δεν μποÏÏŽ να δημιουÏγήσω τον φάκελο 'dead sounds' \"%1\"; αγνοήθηκε" - -#~ msgid "cannot create peak file directory \"%1\"; ignored" -#~ msgstr "αδÏνατη η δημιουÏγία φακÎλου peak file \"%1\"; αγνοήθηκε" - -#~ msgid "cannot remove dead sound file %1 (%2)" -#~ msgstr "δεν μποÏÏŽ να απαλοίψω το 'νεκÏο' ηχο-αÏχείο %1 (%2)" - -#~ msgid "tempoize: error creating name for new audio file based on %1" -#~ msgstr "" -#~ "tempoize: σφάλμα στη δημιουÏγία ονόματος για νÎο αÏχείο ήχου βασισμÎνο σε " -#~ "%1" - -#~ msgid "tempoize: error creating new audio file %1 (%2)" -#~ msgstr "tempoize: σφάλμα στη δημιουÏγία νÎου αÏχείου ήχου %1 (%2)" - -#~ msgid "please stop the transport before adjusting slave settings" -#~ msgstr "" -#~ "παÏακαλώ σταματήστε το transport Ï€Ïιν την ÏÏθμιση των επιλογων εξαÏτήσεως" - -#~ msgid "No MTC port defined: MTC slaving is impossible." -#~ msgstr "" -#~ "Καμμία θÏÏα MTC δεν Ï€ÏοσδιοÏίστηκε: η εξάÏτηση του MTC (slaving) είναι " -#~ "αδÏνατη." - -#~ msgid "PAF (Ensoniq Paris)" -#~ msgstr "PAF (Ensoniq Paris)" - -#~ msgid "AU (Sun/NeXT)" -#~ msgstr "AU (Sun/NeXT)" - -#~ msgid "IRCAM" -#~ msgstr "IRCAM" - -#~ msgid "16 bit" -#~ msgstr "16 bit" - -#~ msgid "24 bit" -#~ msgstr "24 bit" - -#~ msgid "8 bit" -#~ msgstr "8 bit" - -#~ msgid "FileSource: cannot get host information for BWF header (%1)" -#~ msgstr "" -#~ "FileSource: δεν μποÏÏŽ να βÏÏŽ πληÏοφοÏίες οικοδεσπότη(host) για " -#~ "επικεφαλίδα BWF (%1)" - -#~ msgid "" -#~ "cannot set broadcast info for audio file %1; Dropping broadcast info for " -#~ "this file" -#~ msgstr "" -#~ "Δεν ετÎθησαν broadcast info για το audio file %1; ΑπόÏÏιψη broadcast info " -#~ "για αυτό το αÏχείο" - -#~ msgid "%1: cannot seek to %2" -#~ msgstr "%1: αδÏνατη η αναζήτηση στο %2" - -#~ msgid "cleared history" -#~ msgstr "εκκαθάÏιση ιστοÏικοÏ" - -#~ msgid "" -#~ "programming error: illegal state ID (%1) passed to StateManager::set_state" -#~ "() (range = 0-%2)" -#~ msgstr "" -#~ "σφάλμα Ï€ÏογÏαμματισμοÏ: αθÎμιτη κατάσταση ID (%1) Ï€ÎÏασε στον " -#~ "StateManager::set_state() (range = 0-%2)" - -#~ msgid "Error: could not write %1" -#~ msgstr "Σφάλμα: δεν μπόÏεσα να γÏάψω %1" - -#~ msgid "Could not understand XML file %1" -#~ msgstr "Δεν μπόÏεσα να κατανοήσω το XML αÏχείο %1" - -#~ msgid "move metric" -#~ msgstr "μετακίνηση μετÏικοÏ" - -#~ msgid "metric removed" -#~ msgstr "μετÏικό απεσÏÏθη" - -#~ msgid "add tempo" -#~ msgstr "Ï€Ïόσθεση ÏυθμοÏ" - -#~ msgid "replace tempo" -#~ msgstr "αντικατάσταση ÏυθμοÏ" - -#~ msgid "add meter" -#~ msgstr "Ï€Ïόσθεση μετÏητή" - -#~ msgid "replaced meter" -#~ msgstr "αντικατεστημÎνος μετÏητής" - -#~ msgid "load XML data" -#~ msgstr "ΦόÏτωμα δεδομÎνων XML" - -#~ msgid "cannot create VST chunk directory: %1" -#~ msgstr "δεν μποÏÏŽ να δημιουÏγήσω φάκελο κομματιών VST: %1" - -#~ msgid "cannot check VST chunk directory: %1" -#~ msgstr "δεν μποÏÏŽ να ελÎγξω το φάκελο κομματιών VST: %1" - -#~ msgid "%1 exists but is not a directory" -#~ msgstr "%1 υπάÏχει αλλά δεν είναι φάκελος" - -#~ msgid "Bad node sent to VSTPlugin::set_state" -#~ msgstr "Κακός κόμβος εστάλη στο VSTPlugin::set_state" - -#~ msgid "no support for presets using chunks at this time" -#~ msgstr "" -#~ "καμμία υποστήÏιξη αυτή τη στιγμή για Ïυθμίσεις που χÏησιμοποιοÏν κομμάτια" - -#~ msgid "" -#~ "CoreAudioSource: file only contains %1 channels; %2 is invalid as a " -#~ "channel number" -#~ msgstr "" -#~ "CoreAudioSource: το αÏχείο πεÏιÎχει μόνο %1 κανάλια; το %2 δεν Îχει αξία " -#~ "σαν αÏιθμός καναλιών" - -#~ msgid "CoreAudioSource: could not seek to frame %1 within %2 (%3)" -#~ msgstr "" -#~ "CoreAudioSource: δεν μποÏοÏσα να αναζητήσω στο frame %1 μÎσα στο %2 (%3)" - -#~ msgid "FileSource: \"%1\" not found when searching %2 using %3" -#~ msgstr "FileSource: \"%1\" δεν ευÏÎθη όταν αναζητείτο %2 χÏησιμοποιώντας %3" - -#~ msgid "FileSource: could not open \"%1\": (%2)" -#~ msgstr "FileSource: δεν μπόÏεσα να ανοίξω \"%1\": (%2)" - -#~ msgid "FileSource: cannot write header in %1" -#~ msgstr "FileSource: δεν μποÏÏŽ να γÏάψω επικεφαλίδα στο %1" - -#~ msgid "FileSource: cannot locate chunks in %1" -#~ msgstr "FileSource: δεν μποÏÏŽ να ανιχνεÏσω κομμάτια στο %1" - -#~ msgid "FileSource: cannot read header in %1" -#~ msgstr "FileSource: δεν μποÏÏŽ να διαβάσω επικεφαλίδα στο %1" - -#~ msgid "FileSource: cannot check header in %1" -#~ msgstr "FileSource: δεν μποÏÏŽ να ελÎγξω επικεφαλίδα στο %1" - -#, fuzzy -#~ msgid "FileSource: cannot initialize peakfile for %1 as %2" -#~ msgstr "FileSource: δεν μποÏÏŽ να εκκινήσω το peakfile για %1" - -#~ msgid "FileSource: cannot seek to end of file" -#~ msgstr "FileSource: δεν μποÏÏŽ να ανιχνεÏσω το Ï„Îλος του αÏχείου" - -#~ msgid "FileSource: cannot read RIFF/WAVE chunk from file" -#~ msgstr "FileSource: δεν μποÏÏŽ να διαβάσω κομμάτι RIFF/WAVE από το αÏχείο" - -#~ msgid "FileSource %1: not a RIFF/WAVE file" -#~ msgstr "FileSource %1: δεν είναι RIFF/WAVE αÏχείο" - -#~ msgid "FileSource: can't read a chunk" -#~ msgstr "FileSource: δεν μποÏÏŽ να διαβάσω κομμάτι" - -#~ msgid "FileSource: cannot get user information for BWF header (%1)" -#~ msgstr "" -#~ "FileSource: δεν μποÏÏŽ να βÏÏŽ πληÏοφοÏίες χÏήστη για επικεφαλίδα BWF (%1)" - -#~ msgid "FileSource[%1]: cannot update data size: %2" -#~ msgstr "FileSource[%1]: δεν μποÏÏŽ να ανανεώσω το μÎγεθος δεδομÎνων: %2" - -#~ msgid "FileSource: can't find RIFF chunk info" -#~ msgstr "FileSource: δεν ευÏÎθησαν πληÏοφοÏίες για RIFF κομμάτι" - -#, fuzzy -#~ msgid "FileSource: can't find RIFX chunk info" -#~ msgstr "FileSource: δεν ευÏÎθησαν πληÏοφοÏίες για RIFF κομμάτι" - -#~ msgid "FileSource: can't read RIFF chunk" -#~ msgstr "FileSource: δεν μποÏÏŽ να διαβάσω RIFF κομμάτι" - -#~ msgid "FileSource: can't find format chunk info" -#~ msgstr "FileSource: δεν ευÏÎθησαν πληÏοφοÏίες για το κομμάτι φοÏμαÏίσματος" - -#~ msgid "FileSource: can't read format chunk" -#~ msgstr "FileSource: δεν μποÏÏŽ να διαβάσω το κομμάτι φοÏμαÏίσματος" - -#~ msgid "FileSource: can't find data chunk info" -#~ msgstr "FileSource: δεν μποÏÏŽ να βÏÏŽ πληÏοφοÏίες για το κομμάτι δεδομÎνων" - -#~ msgid "FileSource: can't read data chunk" -#~ msgstr "FileSource: δεν μποÏÏŽ να διαβάσω το κομμάτι δεδομÎνων" - -#~ msgid "" -#~ "FileSource: cannot read Broadcast Wave data from existing audio file " -#~ "\"%1\" (%2)" -#~ msgstr "" -#~ "FileSource: δεν μποÏÏŽ να διαβάσω δεδομÎνα Broadcast Wave από το υπάÏχον " -#~ "αÏχείο \"%1\" (%2)" - -#~ msgid "" -#~ "FileSource: cannot read Broadcast Wave coding history from audio file " -#~ "\"%1\" (%2)" -#~ msgstr "" -#~ "FileSource: δεν μποÏÏŽ να διαβάσω το ιστοÏικό του κώδικα Broadcast Wave " -#~ "από το αÏχείο \"%1\" (%2)" - -#, fuzzy -#~ msgid "" -#~ "FileSource \"%1\" does not use valid sample format.\n" -#~ "This is probably a programming error." -#~ msgstr "" -#~ "FileSource \"%1\" δεν χÏησιμοποιεί format μεταβλητής υποδιαστολής.\n" -#~ "Αυτό πιθανόν να είναι σφάλμα Ï€ÏογÏαμματισμοÏ." - -#~ msgid "FileSource \"%1\" has no \"data\" chunk" -#~ msgstr "FileSource \"%1\" δεν Îχει \"data\" κομμάτι" - -#~ msgid "" -#~ "%1: data length in header (%2) differs from implicit size in file (%3)" -#~ msgstr "" -#~ "%1: το μÎγεθος δεδομÎνων της επικεφαλίδας (%2) διαφÎÏει από το δεδηλωμÎνο " -#~ "μÎγεθος στο αÏχείο (%3)" - -#~ msgid "\"%1\" has a sample rate of %2 instead of %3 as used by this session" -#~ msgstr "" -#~ "\"%1\" Îχει Ïυθμό δειγματοληψίας %2 αντί του %3 όπως στην παÏοÏσα συνεδÏία" - -#~ msgid "FileSource: cannot write WAVE chunk: %1" -#~ msgstr "FileSource: δεν μποÏÏŽ να γÏάψω WAVE κομμάτι: %1" - -#~ msgid "FileSource: cannot write format chunk: %1" -#~ msgstr "FileSource: δεν μποÏÏŽ να γÏάψω format κομμάτι: %1" - -#~ msgid "FileSource: cannot data chunk: %1" -#~ msgstr "FileSource: cδεν μποÏÏŽ να γÏάψω κομμάτι δεδομÎνων: %1" - -#, fuzzy -#~ msgid "cannot create feedback request pipe (%1)" -#~ msgstr "Δεν μποÏÏŽ να δημιουÏγήσω transport request signal pipe (%1)" - -#, fuzzy -#~ msgid "Session: could not create feedback thread" -#~ msgstr "ΣυνεδÏία: δεν μπόÏεσα να δημιουÏγήσω δÎσμη με τον butler" - -#, fuzzy -#~ msgid "Feedback thread poll failed (%1)" -#~ msgstr "Αίτηση δÎσμης MIDI απÎτυχε (%1)" - -#, fuzzy -#~ msgid "Error on feedback thread request pipe" -#~ msgstr "Σφάλμα στο transport thread request pipe" - -#, fuzzy -#~ msgid "Error reading from feedback request pipe" -#~ msgstr "Σφάλμα στην ανάγνωση από transport request pipe" - -#~ msgid "could not create crossfade object in playlist %1" -#~ msgstr "δεν Îγινε δημιουÏγία αντικειμÎνου crossfade στη λίστα αναπαÏ/γής%1" - -#~ msgid "" -#~ "There are too many frozen versions of playlist \"%1\" to create another " -#~ "one" -#~ msgstr "" -#~ "ΠάÏα πολλÎÏ‚ εκδόσεις λίστας αναπαÏ/γής \"%1\" για τη δημιουÏγία άλλης" - -#~ msgid "alsa_pcm:playback_1" -#~ msgstr "alsa_pcm:playback_1" - -#~ msgid "alsa_pcm:playback_2" -#~ msgstr "alsa_pcm:playback_2" - -#, fuzzy -#~ msgid "Could not find a template called %1 in %2" -#~ msgstr "Δεν μπόÏεσα να ανοίξω Ï€ÏοσχÎδιο μίξεως %1 για ανάγνωση" - -#, fuzzy -#~ msgid "Source: cannot stat peakfile \"%1\" or \"%2\"" -#~ msgstr "Source: δεν μποÏÏŽ να μετÏήσω το αυτοστιγμεί peakfile \"%1\"" - -#~ msgid "Transport: error polling extra MIDI port #1 (revents =%1%2%3" -#~ msgstr "" -#~ "Transport: σφάλμα στην αίτηση επιπλÎον θÏÏας MIDI #1 (revents =%1%2%3" - -#~ msgid "Transport: error polling extra MIDI port #2 (revents =%1%2%3" -#~ msgstr "" -#~ "Transport: σφάλμα στην αίτηση επιπλÎον θÏÏας MIDI #2 (revents =%1%2%3" - -#~ msgid "Source: cannot seek to frame %1 in peakfile!" -#~ msgstr "Source: δεν μποÏÏŽ να αναζητήσω το frame %1 στο peakfile!" - -#~ msgid "Source[%1]: cannot seek to frame %2 in peakfile!" -#~ msgstr "Source[%1]: δεν μποÏÏŽ να αναζητήσω το frame %2 στο peakfile!" - -#~ msgid "%1: could not seek to byte %2 in peakfile (%3" -#~ msgstr "%1: δεν μποÏÏŽ να αναζητήσω σε byte %2 στο peakfile (%3" - -#~ msgid "could not register an input port called \"%1\"" -#~ msgstr "δεν μπόÏεσα να register μία θÏÏα εισόδου με όνομα \"%1\"" - -#~ msgid "could not register an output port called \"%1\"" -#~ msgstr "δεν μπόÏεσα να register μία θÏÏα εξόδου με όνομα \"%1\"" - -#~ msgid "%1: disk stream error at frame %2 (%3)" -#~ msgstr "%1: σφάλμα disk stream στο frame %2 (%3)" - -#~ msgid "Playlist: cannot create from state." -#~ msgstr "Playlist: δεν μποÏÏŽ να δημιουÏγήσω από κατάσταση." - -#~ msgid "" -#~ "for various reasons, it is no longer valid to use one of the plugins " -#~ "listed for this session. it will be ignored" -#~ msgstr "" -#~ "για διάφοÏους λόγους, δεν είναι πλÎον χÏήσιμο να χÏησιμοποιηθεί Îνα από " -#~ "τα καταχωÏημÎνα pluginsγια αυτή τη συνεδÏία. Θα αγνοηθεί." - -#~ msgid "cannot connect click track to %1" -#~ msgstr "δεν μποÏÏŽ να διασυνδÎσω το κανάλι MετÏονόμου(click track) στο %1" - -#~ msgid "out %lu+%lu" -#~ msgstr "out %lu+%lu" - -#~ msgid "in %lu+%lu" -#~ msgstr "in %lu+%lu" - -#~ msgid "Session: error for %1 at frame %2 (%3)" -#~ msgstr "ΣυνεδÏία: σφάλμα για %1 στο frame %2 (%3)" +msgstr "" diff --git a/libs/ardour/po/es.po b/libs/ardour/po/es.po index e8f43cea11..758dcd2bbb 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-09-03 07:59-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: \n" "Last-Translator: Pablo Fernández <pablo.fbus@gmail.com>\n" "Language-Team: Grupo de Traducción al Español <traductores@teklibre.com>\n" @@ -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:643 -#: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 +#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "error de programación: %1" @@ -200,63 +200,21 @@ msgstr "no se puede cargar el plugin VAMP \"%1\"" msgid "VAMP Plugin \"%1\" could not be loaded" msgstr "el plugin VAMP \"%1\" no pudo ser cargado" -#: audioengine.cc:186 -msgid "" -"This version of JACK is old - you should upgrade to a newer version that " -"supports jack_port_type_get_buffer_size()" +#: audioengine.cc:488 +msgid "looking for backends in %1\n" msgstr "" -#: audioengine.cc:190 -msgid "Connect session to engine" -msgstr "Conectar sesión al motor" - -#: audioengine.cc:843 -msgid "" -"a port with the name \"%1\" already exists: check for duplicated track/bus " -"names" +#: audioengine.cc:511 +msgid "AudioEngine: cannot load module \"%1\" (%2)" msgstr "" -"ya existe un puerto con el nombre \"%1\": compruebe si hay nombres de pistas/" -"buses duplicados" -#: 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." +#: audioengine.cc:517 +msgid "AudioEngine: backend at \"%1\" has no descriptor function." 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:848 -msgid "AudioEngine: cannot register port \"%1\": %2" -msgstr "AudioEngine: no se puede registrar el puerto \"%1\": %2" -#: audioengine.cc:878 -msgid "unable to create port: %1" -msgstr "Incapaz de crear puerto: %1" - -#: audioengine.cc:932 -msgid "connect called before engine was started" -msgstr "conexión invocada antes de que se inicie el motor" - -#: 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:973 audioengine.cc:1004 -msgid "disconnect called before engine was started" -msgstr "desconexión invocada antes de que se inicie el motor" - -#: 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:1104 -msgid "get_ports called before engine was started" -msgstr "get_ports invocada antes de que se inicie el motor" - -#: audioengine.cc:1427 -msgid "failed to connect to JACK" -msgstr "falló la conexión a JACK" +#: audioengine.cc:589 +msgid "Could not create backend for %1: %2" +msgstr "" #: audioregion.cc:1643 msgid "" @@ -427,9 +385,8 @@ msgid "Control protocol %1 not usable" msgstr "Protocolo de control %1 no usable." #: control_protocol_manager.cc:264 -#, fuzzy msgid "Control surface protocol discovered: \"%1\"\n" -msgstr "Se descubrió protocolo de superficie de control: \"%1\"" +msgstr "" #: control_protocol_manager.cc:282 msgid "ControlProtocolManager: cannot load module \"%1\" (%2)" @@ -455,7 +412,7 @@ msgstr "" msgid "audio" msgstr "" -#: data_type.cc:28 session.cc:1640 session.cc:1643 +#: data_type.cc:28 session.cc:1791 session.cc:1794 msgid "MIDI" msgstr "" @@ -568,7 +525,7 @@ msgstr "" msgid "Rectangular" msgstr "" -#: export_formats.cc:52 session.cc:4861 session.cc:4877 +#: export_formats.cc:52 session.cc:5014 session.cc:5030 msgid "None" msgstr "" @@ -678,7 +635,7 @@ msgid "" "configuration" msgstr "" -#: file_source.cc:198 session_state.cc:2891 +#: file_source.cc:198 session_state.cc:2807 msgid "" "there are already 1000 files with names like %1; versioning discontinued" msgstr "ya hay 1000 archivos con nombres como %1; se discontinúa el versionado" @@ -776,23 +733,23 @@ msgstr "" msgid "unknown file type for session %1" msgstr "tipo de archivo desconocido para la sesión %1" -#: globals.cc:205 +#: globals.cc:207 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:207 +#: globals.cc:209 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:211 +#: globals.cc:213 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:215 +#: globals.cc:217 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:266 +#: globals.cc:268 msgid "Loading configuration" msgstr "Cargando configuración" @@ -912,47 +869,47 @@ msgstr "" msgid "IO: bad output string in XML node \"%1\"" msgstr "" -#: io.cc:1410 +#: io.cc:1411 #, c-format msgid "%s %u" msgstr "%s %u" -#: io.cc:1457 +#: io.cc:1458 #, c-format msgid "%s in" msgstr "" -#: io.cc:1459 +#: io.cc:1460 #, c-format msgid "%s out" msgstr "" -#: io.cc:1534 session.cc:494 session.cc:523 +#: io.cc:1535 session.cc:686 session.cc:715 msgid "mono" msgstr "" -#: io.cc:1536 session.cc:507 session.cc:537 +#: io.cc:1537 session.cc:699 session.cc:729 msgid "L" msgstr "" -#: io.cc:1536 session.cc:509 session.cc:539 +#: io.cc:1537 session.cc:701 session.cc:731 msgid "R" msgstr "" -#: io.cc:1538 io.cc:1544 +#: io.cc:1539 io.cc:1545 #, c-format msgid "%d" msgstr "" -#: ladspa_plugin.cc:88 +#: ladspa_plugin.cc:86 msgid "LADSPA: module has no descriptor function." msgstr "" -#: ladspa_plugin.cc:93 +#: ladspa_plugin.cc:91 msgid "LADSPA: plugin has gone away since discovery!" msgstr "" -#: ladspa_plugin.cc:100 +#: ladspa_plugin.cc:98 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" @@ -1030,7 +987,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4362 session_state.cc:1114 +#: location.cc:842 session.cc:4516 session_state.cc:1031 msgid "session" msgstr "sesión" @@ -1097,11 +1054,8 @@ msgid "" msgstr "" #: midi_diskstream.cc:219 -#, fuzzy msgid "MidiDiskstream: Playlist \"%1\" isn't a midi playlist" msgstr "" -"AudioDiskstream: La lista de reproducción \"%1\" no es una lista de " -"reproducción de audio." #: midi_diskstream.cc:270 msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" @@ -1199,21 +1153,21 @@ msgstr "" msgid "solo control" msgstr "" -#: mtc_slave.cc:235 +#: mtc_slave.cc:238 msgid "MTC Slave: atomic read of current time failed, sleeping!" msgstr "" -#: mtc_slave.cc:359 +#: mtc_slave.cc:361 msgid "" "Unknown rate/drop value %1 in incoming MTC stream, session values used " "instead" msgstr "" -#: mtc_slave.cc:379 +#: mtc_slave.cc:381 msgid "Session framerate adjusted from %1 TO: MTC's %2." msgstr "" -#: mtc_slave.cc:393 +#: mtc_slave.cc:395 msgid "Session and MTC framerate mismatch: MTC:%1 %2:%3." msgstr "" @@ -1277,19 +1231,19 @@ msgstr "" msgid "looking for panners in %1" msgstr "" -#: panner_manager.cc:99 +#: panner_manager.cc:100 msgid "Panner discovered: \"%1\" in %2" msgstr "" -#: panner_manager.cc:116 +#: panner_manager.cc:117 msgid "PannerManager: cannot load module \"%1\" (%2)" msgstr "" -#: panner_manager.cc:123 +#: panner_manager.cc:124 msgid "PannerManager: module \"%1\" has no descriptor function." msgstr "" -#: panner_manager.cc:186 +#: panner_manager.cc:187 msgid "no panner discovered for in/out = %1/%2" msgstr "" @@ -1401,11 +1355,7 @@ msgstr "unknown plugin status type \"%1\" - all entries ignored" msgid "unknown plugin type \"%1\" - ignored" msgstr "Tipo de plugin desconocido \"%1\" - ignorado" -#: port.cc:367 -msgid "get_connected_latency_range() called while disconnected from JACK" -msgstr "" - -#: port.cc:450 +#: port.cc:410 msgid "could not reregister %1" msgstr "no se pudo registrar %1" @@ -1421,6 +1371,36 @@ msgstr "" msgid "non-port insert XML used for port plugin insert" msgstr "" +#: port_manager.cc:270 +msgid "" +"a port with the name \"%1\" already exists: check for duplicated track/bus " +"names" +msgstr "" +"ya existe un puerto con el nombre \"%1\": compruebe si hay nombres de pistas/" +"buses duplicados" + +#: port_manager.cc:272 +msgid "" +"No more ports are available. You will need to stop %1 and restart with more " +"ports if you need this many tracks." +msgstr "" + +#: port_manager.cc:275 +msgid "AudioEngine: cannot register port \"%1\": %2" +msgstr "AudioEngine: no se puede registrar el puerto \"%1\": %2" + +#: port_manager.cc:314 +msgid "unable to create port: %1" +msgstr "Incapaz de crear puerto: %1" + +#: port_manager.cc:401 +msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" +msgstr "AudioEngine: no se puede conectar %1 (%2) a %3 (%4)" + +#: port_manager.cc:453 port_manager.cc:454 +msgid "Re-establising port %1 failed" +msgstr "" + #: processor.cc:207 msgid "No %1 property flag in element %2" msgstr "" @@ -1429,46 +1409,45 @@ msgstr "" msgid "No child node with active property" msgstr "" -#: rc_configuration.cc:93 +#: rc_configuration.cc:88 msgid "Loading system configuration file %1" msgstr "Cargando el archivo de configuración del sistema %1" -#: rc_configuration.cc:97 +#: rc_configuration.cc:92 msgid "%1: cannot read system configuration file \"%2\"" msgstr "%1: No pude leer archivo de configuración del sistema \"%2\"" -#: rc_configuration.cc:102 +#: rc_configuration.cc:97 msgid "%1: system configuration file \"%2\" not loaded successfully." msgstr "" "%1: El archivo de configuración del sistema \"%2\" no se ha cargado con " "éxito." -#: rc_configuration.cc:106 -#, fuzzy +#: rc_configuration.cc:101 msgid "" "Your system %1 configuration file is empty. This probably means that there " "was an error installing %1" -msgstr "Tu archivo de configuración de %1 está vacÃo. Esto no es normal." +msgstr "" -#: rc_configuration.cc:121 +#: rc_configuration.cc:116 msgid "Loading user configuration file %1" msgstr "Cargando el archivo de configuración de usuario %1" -#: rc_configuration.cc:125 +#: rc_configuration.cc:120 msgid "%1: cannot read configuration file \"%2\"" msgstr "%1: No pude leer archivo de configuración \"%2\"" -#: rc_configuration.cc:130 +#: rc_configuration.cc:125 msgid "%1: user configuration file \"%2\" not loaded successfully." msgstr "" "%1: El archivo de configuración de usuario \"%2\" no se ha cargado con " "éxito." -#: rc_configuration.cc:134 +#: rc_configuration.cc:129 msgid "your %1 configuration file is empty. This is not normal." msgstr "Tu archivo de configuración de %1 está vacÃo. Esto no es normal." -#: rc_configuration.cc:151 +#: rc_configuration.cc:146 msgid "Config file %1 not saved" msgstr "Archivo de configuración %1 no guardado" @@ -1506,35 +1485,39 @@ msgstr "" msgid "return %1" msgstr "retorno %1" -#: route.cc:1105 route.cc:2581 +#: route.cc:1075 route.cc:2528 msgid "unknown Processor type \"%1\"; ignored" msgstr "" -#: route.cc:1117 +#: route.cc:1087 msgid "processor could not be created. Ignored." msgstr "" -#: route.cc:2007 route.cc:2234 +#: route.cc:1962 route.cc:2187 msgid "Bad node sent to Route::set_state() [%1]" msgstr "" -#: route.cc:2067 +#: route.cc:2022 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 +#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" +#: route.cc:2311 +msgid "Converting deprecated order key for %1 using Editor order %2" +msgstr "" + #: route_group.cc:459 msgid "You cannot subgroup MIDI tracks at this time" msgstr "" -#: rb_effect.cc:233 rb_effect.cc:274 +#: rb_effect.cc:234 rb_effect.cc:275 msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" msgstr "" -#: rb_effect.cc:303 rb_effect.cc:325 +#: rb_effect.cc:304 rb_effect.cc:326 msgid "error writing tempo-adjusted data to %1" msgstr "" @@ -1550,185 +1533,169 @@ msgstr "send %1" msgid "programming error: send created using role %1" msgstr "" -#: session.cc:347 -msgid "Set block size and sample rate" -msgstr "" - -#: session.cc:352 -msgid "Using configuration" -msgstr "" +#: session.cc:344 +msgid "Connect to engine" +msgstr "Conectar a motor" -#: session.cc:377 -msgid "LTC In" -msgstr "" +#: session.cc:349 +msgid "Session loading complete" +msgstr "Carga de sesión completada" -#: session.cc:378 -msgid "LTC Out" +#: session.cc:421 +msgid "Set up LTC" msgstr "" -#: session.cc:404 -msgid "LTC-in" +#: session.cc:423 +msgid "Set up Click" msgstr "" -#: session.cc:405 -msgid "LTC-out" -msgstr "" +#: session.cc:425 +msgid "Set up standard connections" +msgstr "Configurar las conexiones estándar" -#: session.cc:434 +#: session.cc:635 msgid "could not setup Click I/O" msgstr "no se pudo configurar la E/S del click" -#: session.cc:461 -msgid "cannot setup Click I/O" -msgstr "no se puede configurar la E/S del click" - -#: session.cc:464 -msgid "Compute I/O Latencies" -msgstr "Calcular las latencias de E/S" - -#: session.cc:470 -msgid "Set up standard connections" -msgstr "Configurar las conexiones estándar" - -#: session.cc:491 +#: session.cc:683 #, c-format msgid "out %<PRIu32>" msgstr "" -#: session.cc:505 +#: session.cc:697 #, c-format msgid "out %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:520 +#: session.cc:712 #, c-format msgid "in %<PRIu32>" msgstr "" -#: session.cc:534 +#: session.cc:726 #, c-format msgid "in %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:570 -msgid "Setup signal flow and plugins" -msgstr "Configurar rutas de señales y plugins" - -#: session.cc:614 -msgid "Connect to engine" -msgstr "Conectar a motor" - -#: session.cc:645 +#: session.cc:790 msgid "cannot connect master output %1 to %2" msgstr "no se puede conectar salida master %1 a %2" -#: session.cc:704 +#: session.cc:849 msgid "monitor" msgstr "" -#: session.cc:749 +#: session.cc:894 msgid "cannot connect control input %1 to %2" msgstr "" -#: session.cc:769 +#: session.cc:914 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "" -#: session.cc:800 +#: session.cc:945 msgid "cannot connect control output %1 to %2" msgstr "" -#: session.cc:864 +#: session.cc:1009 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "" -#: session.cc:1043 +#: session.cc:1193 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "" -#: session.cc:1083 +#: session.cc:1233 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" msgstr "" -#: session.cc:1396 +#: session.cc:1547 msgid "feedback loop setup between %1 and %2" msgstr "" -#: session.cc:1692 +#: session.cc:1843 msgid "Session: could not create new midi track." msgstr "" -#: session.cc:1875 session.cc:1878 +#: session.cc:1849 +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 "" +"JACK no dispone de más puertos. Debes salir de %1 y reiniciar JACK con más " +"puertos si necesitas tantas pistas." + +#: session.cc:2026 session.cc:2029 msgid "Audio" msgstr "" -#: session.cc:1902 session.cc:1910 session.cc:1987 session.cc:1995 +#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "" -#: session.cc:1933 +#: session.cc:2084 msgid "Session: could not create new audio track." msgstr "" -#: session.cc:1965 session.cc:1968 +#: session.cc:2116 session.cc:2119 msgid "Bus" msgstr "" -#: session.cc:2018 +#: session.cc:2169 msgid "Session: could not create new audio route." msgstr "Sesión: No se pudo crear la ruta del nuevo audio" -#: session.cc:2077 session.cc:2087 +#: session.cc:2228 session.cc:2238 msgid "Session: UINT_MAX routes? impossible!" msgstr "" -#: session.cc:2109 +#: session.cc:2260 msgid "Session: cannot create track/bus from template description" msgstr "" -#: session.cc:2135 +#: session.cc:2286 msgid "Session: could not create new route from template" msgstr "Sesión: No se pudo crear la nueva ruta desde plantilla" -#: session.cc:2164 +#: session.cc:2315 msgid "Adding new tracks/busses failed" msgstr "" -#: session.cc:3265 +#: session.cc:3419 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "" -#: session.cc:3385 session.cc:3443 +#: session.cc:3539 session.cc:3597 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "" -#: session.cc:3833 +#: session.cc:3987 msgid "send ID %1 appears to be in use already" msgstr "" -#: session.cc:3845 +#: session.cc:3999 msgid "aux send ID %1 appears to be in use already" msgstr "" -#: session.cc:3857 +#: session.cc:4011 msgid "return ID %1 appears to be in use already" msgstr "" -#: session.cc:3869 +#: session.cc:4023 msgid "insert ID %1 appears to be in use already" msgstr "" -#: session.cc:3996 +#: session.cc:4150 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "" -#: session.cc:4025 +#: session.cc:4179 msgid "too many bounced versions of playlist \"%1\"" msgstr "" -#: session.cc:4035 +#: session.cc:4189 msgid "cannot create new audio file \"%1\" for %2" msgstr "no se puede crear nuevo archivo de audio" @@ -1767,11 +1734,11 @@ msgstr "" msgid "Session: cannot have two events of type %1 at the same frame (%2)." msgstr "" -#: session_export.cc:126 +#: session_export.cc:125 msgid "%1: cannot seek to %2 for export" msgstr "" -#: session_export.cc:183 +#: session_export.cc:182 msgid "Export ended unexpectedly: %1" msgstr "" @@ -1781,10 +1748,6 @@ msgid "" "of this session." msgstr "" -#: session_midi.cc:428 -msgid "Session: could not send full MIDI time code" -msgstr "" - #: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1793,373 +1756,373 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "" -#: session_process.cc:133 +#: session_process.cc:132 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1158 +#: session_process.cc:1157 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" -#: session_state.cc:139 -#, fuzzy +#: session_state.cc:140 msgid "Could not use path %1 (%2)" -msgstr "No se pudo usar la ruta %1 (%s)" +msgstr "" -#: session_state.cc:267 +#: session_state.cc:184 msgid "solo cut control (dB)" msgstr "" -#: session_state.cc:360 +#: session_state.cc:208 +msgid "Set block size and sample rate" +msgstr "" + +#: session_state.cc:213 +msgid "Using configuration" +msgstr "" + +#: session_state.cc:325 msgid "Reset Remote Controls" msgstr "Restablecer controles remotos" -#: session_state.cc:385 -msgid "Session loading complete" -msgstr "Carga de sesión completada" - -#: session_state.cc:452 +#: session_state.cc:417 msgid "Session: cannot create session peakfile folder \"%1\" (%2)" msgstr "" -#: session_state.cc:459 +#: session_state.cc:424 msgid "Session: cannot create session sounds dir \"%1\" (%2)" msgstr "" -#: session_state.cc:466 +#: session_state.cc:431 msgid "Session: cannot create session midi dir \"%1\" (%2)" msgstr "" -#: session_state.cc:473 +#: session_state.cc:438 msgid "Session: cannot create session dead sounds folder \"%1\" (%2)" msgstr "" -#: session_state.cc:480 +#: session_state.cc:445 msgid "Session: cannot create session export folder \"%1\" (%2)" msgstr "" -#: session_state.cc:487 +#: session_state.cc:452 msgid "Session: cannot create session analysis folder \"%1\" (%2)" msgstr "" -#: session_state.cc:494 +#: session_state.cc:459 msgid "Session: cannot create session plugins folder \"%1\" (%2)" msgstr "" -#: session_state.cc:501 +#: session_state.cc:466 msgid "Session: cannot create session externals folder \"%1\" (%2)" msgstr "" -#: session_state.cc:515 +#: session_state.cc:480 msgid "Session: cannot create session folder \"%1\" (%2)" msgstr "" -#: session_state.cc:548 +#: session_state.cc:514 msgid "Could not open %1 for writing session template" msgstr "" -#: session_state.cc:554 +#: session_state.cc:520 msgid "Could not open session template %1 for reading" msgstr "" -#: session_state.cc:573 +#: session_state.cc:539 msgid "master" msgstr "" -#: session_state.cc:636 +#: session_state.cc:600 msgid "Could not remove pending capture state at path \"%1\" (%2)" msgstr "Could not remove pending capture state at path \"%1\" (%2)" -#: session_state.cc:660 +#: session_state.cc:624 msgid "could not rename snapshot %1 to %2 (%3)" msgstr "" -#: session_state.cc:688 -#, fuzzy +#: session_state.cc:652 msgid "Could not remove session file at path \"%1\" (%2)" -msgstr "Could not remove state file at path \"%1\" (%2)" +msgstr "" -#: session_state.cc:761 +#: session_state.cc:669 msgid "" "the %1 audio engine is not connected and state saving would lose all I/O " "connections. Session not saved" msgstr "" -#: session_state.cc:812 +#: session_state.cc:720 msgid "state could not be saved to %1" msgstr "" -#: session_state.cc:814 session_state.cc:825 -#, fuzzy +#: session_state.cc:722 session_state.cc:733 msgid "Could not remove temporary session file at path \"%1\" (%2)" -msgstr "Could not remove history file at path \"%1\" (%2)" +msgstr "" -#: session_state.cc:822 +#: session_state.cc:730 msgid "could not rename temporary session file %1 to %2" msgstr "" -#: session_state.cc:890 +#: session_state.cc:798 msgid "%1: session file \"%2\" doesn't exist!" msgstr "" -#: session_state.cc:902 -#, fuzzy +#: session_state.cc:810 msgid "Could not understand session file %1" -msgstr "No se pudo interpretar el archivo de historial de sesión \"%1\"." +msgstr "" -#: session_state.cc:911 +#: session_state.cc:819 msgid "Session file %1 is not a session" msgstr "El archivo de sesión %1 no es una sesión" -#: session_state.cc:1208 +#: session_state.cc:1125 msgid "programming error: Session: incorrect XML node sent to set_state()" msgstr "" -#: session_state.cc:1257 +#: session_state.cc:1179 msgid "Session: XML state has no options section" msgstr "" -#: session_state.cc:1262 +#: session_state.cc:1184 msgid "Session: XML state has no metadata section" msgstr "" -#: session_state.cc:1273 +#: session_state.cc:1195 msgid "Session: XML state has no sources section" msgstr "" -#: session_state.cc:1280 +#: session_state.cc:1202 msgid "Session: XML state has no Tempo Map section" msgstr "" -#: session_state.cc:1287 +#: session_state.cc:1209 msgid "Session: XML state has no locations section" msgstr "" -#: session_state.cc:1313 +#: session_state.cc:1235 msgid "Session: XML state has no Regions section" msgstr "" -#: session_state.cc:1320 +#: session_state.cc:1242 msgid "Session: XML state has no playlists section" msgstr "" -#: session_state.cc:1340 +#: session_state.cc:1262 msgid "Session: XML state has no bundles section" msgstr "" -#: session_state.cc:1352 +#: session_state.cc:1274 msgid "Session: XML state has no diskstreams section" msgstr "" -#: session_state.cc:1360 +#: session_state.cc:1282 msgid "Session: XML state has no routes section" msgstr "" -#: session_state.cc:1372 +#: session_state.cc:1294 msgid "Session: XML state has no route groups section" msgstr "" -#: session_state.cc:1381 +#: session_state.cc:1303 msgid "Session: XML state has no edit groups section" msgstr "" -#: session_state.cc:1388 +#: session_state.cc:1310 msgid "Session: XML state has no mix groups section" msgstr "" -#: session_state.cc:1396 +#: session_state.cc:1318 msgid "Session: XML state has no click section" msgstr "" -#: session_state.cc:1444 +#: session_state.cc:1360 msgid "Session: cannot create Route from XML description." msgstr "" -#: session_state.cc:1448 +#: session_state.cc:1364 msgid "Loaded track/bus %1" msgstr "Pista/bus %1 cargado" -#: session_state.cc:1546 +#: session_state.cc:1462 msgid "Could not find diskstream for route" msgstr "" -#: session_state.cc:1600 +#: session_state.cc:1516 msgid "Session: cannot create Region from XML description." msgstr "" -#: session_state.cc:1604 +#: session_state.cc:1520 msgid "Can not load state for region '%1'" msgstr "No se puede cargar el estado de la región '%1'" -#: session_state.cc:1640 +#: session_state.cc:1556 msgid "Regions in compound description not found (ID's %1 and %2): ignored" msgstr "" -#: session_state.cc:1668 +#: session_state.cc:1584 msgid "Nested source has no ID info in session file! (ignored)" msgstr "" -#: session_state.cc:1680 +#: session_state.cc:1596 msgid "Cannot reconstruct nested source for region %1" msgstr "" -#: session_state.cc:1742 +#: session_state.cc:1658 msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" msgstr "" -#: session_state.cc:1750 session_state.cc:1771 session_state.cc:1791 +#: session_state.cc:1666 session_state.cc:1687 session_state.cc:1707 msgid "" "Session: XMLNode describing a AudioRegion references an unknown source id =%1" msgstr "" -#: session_state.cc:1756 session_state.cc:1777 session_state.cc:1797 +#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" msgstr "" -#: session_state.cc:1820 +#: session_state.cc:1736 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" msgstr "" -#: session_state.cc:1854 +#: session_state.cc:1770 msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" msgstr "" -#: session_state.cc:1862 +#: session_state.cc:1778 msgid "" "Session: XMLNode describing a MidiRegion references an unknown source id =%1" msgstr "" -#: session_state.cc:1868 +#: session_state.cc:1784 msgid "" "Session: XMLNode describing a MidiRegion references a non-midi source id =%1" msgstr "" -#: session_state.cc:1936 +#: session_state.cc:1852 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" msgstr "" -#: session_state.cc:1959 +#: session_state.cc:1875 msgid "Session: cannot create Source from XML description." msgstr "" -#: session_state.cc:1993 +#: session_state.cc:1909 msgid "A sound file is missing. It will be replaced by silence." msgstr "No se encuentra un archivo de audio. Será reemplazado por silencio." -#: session_state.cc:2016 +#: session_state.cc:1932 msgid "Found a sound file that cannot be used by %1. Talk to the progammers." msgstr "Found a sound file that cannot be used by %1. Talk to the progammers." -#: session_state.cc:2033 +#: session_state.cc:1949 msgid "Could not create templates directory \"%1\" (%2)" msgstr "" -#: session_state.cc:2046 +#: session_state.cc:1962 msgid "Template \"%1\" already exists - new version not created" msgstr "La plantilla \"%1\" ya existe - no se creará una nueva versión" -#: session_state.cc:2052 +#: session_state.cc:1968 msgid "Could not create directory for Session template\"%1\" (%2)" msgstr "Could not create directory for Session template\"%1\" (%2)" -#: session_state.cc:2062 +#: session_state.cc:1978 msgid "template not saved" msgstr "plantilla no guardada" -#: session_state.cc:2072 +#: session_state.cc:1988 msgid "Could not create directory for Session template plugin state\"%1\" (%2)" msgstr "" "Could not create directory for Session template plugin state\"%1\" (%2)" -#: session_state.cc:2267 +#: session_state.cc:2183 msgid "Unknown node \"%1\" found in Bundles list from session file" msgstr "" -#: session_state.cc:2809 session_state.cc:2815 +#: session_state.cc:2725 session_state.cc:2731 msgid "Cannot expand path %1 (%2)" msgstr "" -#: session_state.cc:2868 +#: session_state.cc:2784 msgid "Session: cannot create dead file folder \"%1\" (%2)" msgstr "" -#: session_state.cc:2907 +#: session_state.cc:2823 msgid "cannot rename unused file source from %1 to %2 (%3)" msgstr "" -#: session_state.cc:2925 +#: session_state.cc:2841 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "" -#: session_state.cc:3227 +#: session_state.cc:3143 msgid "could not backup old history file, current history not saved" msgstr "" -#: session_state.cc:3240 +#: session_state.cc:3156 msgid "history could not be saved to %1" msgstr "No se pudo guardar el historial a %1" -#: session_state.cc:3243 +#: session_state.cc:3159 msgid "Could not remove history file at path \"%1\" (%2)" msgstr "Could not remove history file at path \"%1\" (%2)" -#: session_state.cc:3247 +#: session_state.cc:3163 msgid "could not restore history file from backup %1 (%2)" msgstr "" -#: session_state.cc:3272 +#: session_state.cc:3188 msgid "%1: no history file \"%2\" for this session." msgstr "" -#: session_state.cc:3278 +#: session_state.cc:3194 msgid "Could not understand session history file \"%1\"" msgstr "No se pudo interpretar el archivo de historial de sesión \"%1\"." -#: session_state.cc:3320 +#: session_state.cc:3236 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "" -#: session_state.cc:3331 +#: session_state.cc:3247 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "" -#: session_state.cc:3342 +#: session_state.cc:3258 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "" -#: session_state.cc:3350 +#: session_state.cc:3266 msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "" -#: session_state.cc:3602 +#: session_state.cc:3502 msgid "Session: unknown diskstream type in XML" msgstr "" -#: session_state.cc:3607 +#: session_state.cc:3507 msgid "Session: could not load diskstream via XML state" msgstr "" -#: session_time.cc:215 -msgid "Unknown JACK transport state %1 in sync callback" +#: session_time.cc:214 +msgid "Unknown transport state %1 in sync callback" msgstr "" -#: session_transport.cc:168 +#: session_transport.cc:167 msgid "Cannot loop - no loop range defined" msgstr "No se puede reproducir en bucle - no se definió un rango de bucle." -#: session_transport.cc:728 +#: session_transport.cc:739 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1094 +#: session_transport.cc:1105 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2302,7 +2265,7 @@ msgstr "" msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 +#: sndfilesource.cc:396 utils.cc:510 utils.cc:534 utils.cc:548 utils.cc:567 msgid "programming error: %1 %2" msgstr "error de programación: %1 %2" @@ -2520,19 +2483,19 @@ msgstr "Bloquear" msgid "programming error: unknown edit mode string \"%1\"" msgstr "" -#: utils.cc:389 utils.cc:418 +#: utils.cc:389 utils.cc:421 msgid "MIDI Timecode" msgstr "" -#: utils.cc:389 utils.cc:416 +#: utils.cc:389 utils.cc:419 msgid "MTC" msgstr "MTC" -#: utils.cc:393 utils.cc:425 +#: utils.cc:393 utils.cc:428 msgid "MIDI Clock" msgstr "" -#: utils.cc:397 utils.cc:412 utils.cc:432 +#: utils.cc:397 utils.cc:415 utils.cc:435 msgid "JACK" msgstr "JACK" @@ -2540,137 +2503,18 @@ msgstr "JACK" msgid "programming error: unknown sync source string \"%1\"" msgstr "" -#: utils.cc:423 +#: utils.cc:426 msgid "M-Clock" msgstr "" -#: utils.cc:429 +#: utils.cc:432 msgid "LTC" msgstr "LTC" -#: utils.cc:599 +#: utils.cc:602 msgid "programming error: unknown native header format: %1" msgstr "" -#: utils.cc:614 +#: utils.cc:617 msgid "cannot open directory %1 (%2)" msgstr "" - -#~ msgid "Session" -#~ msgstr "Sesión" - -#~ msgid "" -#~ "No more JACK ports are available. You will need to stop %1 and restart " -#~ "JACK with ports if you need this many tracks." -#~ msgstr "" -#~ "JACK no disponde de más puertos. Debes salir de %1 y reiniciar JACK con " -#~ "más puertos si necesitas tantas pistas" - -#~ msgid "control protocol \"%1\" is not known. Ignored" -#~ msgstr "el protocolo de control \"%1\" no existe. No hecho caso." - -#~ msgid "Removed open file count limit. Excellent!" -#~ msgstr "Suprimido el lÃmite del contador de archivos abiertos. ¡Excelente!" - -#~ msgid "%1 will be limited to %2 open files" -#~ msgstr "%1 será limitado a %2 archivos abiertos" - -#~ msgid "signal" -#~ msgstr "señal" - -#~ msgid "editor" -#~ msgstr "editor" - -#~ msgid "Template \"%1\" already exists - template not renamed" -#~ msgstr "La plantilla \"%1\" ya existe - plantilla no renombrada" - -#~ msgid "path (%1) is ambiguous" -#~ msgstr "la ruta (%1) es ambigua" - -#~ msgid "Reset Control Protocols" -#~ msgstr "Restablecer protocolos de control" - -#~ msgid "%1: cannot create region from pending capture sources" -#~ msgstr "" -#~ "%1: no se puede crear la región desde las fuentes de captura pendientes" - -#~ msgid "register input port called before engine was started" -#~ msgstr "" -#~ "registro de puerto de entrada invocado antes de que se inicie el motor" - -#~ msgid "register output port called before engine was started" -#~ msgstr "" -#~ "registro de puerto de salida invocado antes de que se inicie el motor" - -#~ msgid "AudioEngine: connection already exists: %1 (%2) to %3 (%4)" -#~ msgstr "AudioEngine: la conexión ya existe: %1 (%2) a %3 (%4)" - -#~ msgid "Disconnected from JACK while reconnecting. You should quit %1 now." -#~ msgstr "" -#~ "Se desconectó de JACK mientras se reconectaba. DeberÃas salir de %1 ahora" - -#~ msgid "" -#~ "This is an old session that does not have\n" -#~ "sufficient information for rendered FX" -#~ msgstr "" -#~ "Esta es una sesión antigua que no tiene\n" -#~ "información suficiente para efectos renderizados" - -#~ msgid "programming error:" -#~ msgstr "error de programación:" - -#~ msgid "Starting OSC" -#~ msgstr "Iniciando OSC" - -#~ msgid "no MIDI ports specified: no MMC or MTC control possible" -#~ msgstr "" -#~ "no se han especificado puertos MIDI: no es posible control MMC ni MTC " - -#~ msgid "Configuring MIDI ports" -#~ msgstr "Configurando puertos MIDI" - -#~ msgid "default" -#~ msgstr "default" - -#~ msgid "No MMC control (MIDI port \"%1\" not available)" -#~ msgstr "No MMC control (MIDI port \"%1\" not available)" - -#~ msgid "No MTC support (MIDI port \"%1\" not available)" -#~ msgstr "No hay soporte MTC (puerto MIDI \"%1\" no disponible)" - -#~ msgid "No MIDI parameter support (MIDI port \"%1\" not available)" -#~ msgstr "" -#~ "No hay soporte de parámetros MIDI (puerto MIDI \"%1\" no disponible)" - -#~ msgid "" -#~ "converting %1\n" -#~ "(resample from %2KHz to %3KHz)\n" -#~ "(%4 of %5)" -#~ msgstr "" -#~ "convirtiendo %1\n" -#~ "(remuestreo desde %2KHz a %3KHz)\n" -#~ "(%4 de %5)" - -#~ msgid "" -#~ "converting %1\n" -#~ "(%2 of %3)" -#~ msgstr "" -#~ "convirtiendo %1\n" -#~ "(%2 de %3)" - -#~ msgid "cannot setup master inputs" -#~ msgstr "no se pueden configurar las entradas principales" - -#~ msgid "OSC startup" -#~ msgstr "Inicio de OSC" - -#~ msgid "Export: no output file specified" -#~ msgstr "Exportación: No se ha especificado archivo de salida" - -#~ msgid "Export: could not write data to output file (%1)" -#~ msgstr "" -#~ "Exportación: No se pudieron escribir datos al archivo de salida (%1)" - -#~ msgid "cannot create dead sounds directory \"%1\"; ignored" -#~ msgstr "" -#~ "No se puede crear el directorio para archivos purgados \"%1\"; ignorado." diff --git a/libs/ardour/po/it.po b/libs/ardour/po/it.po index 532e23c348..9eaa00ee95 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-09-03 07:59-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2003-05-21 12:50+0500\n" "Last-Translator: Filippo Pappalardo <filippo@email.it>\n" "Language-Team: Italian\n" @@ -25,67 +25,57 @@ msgid "AudioDiskstream: Playlist \"%1\" isn't an audio playlist" msgstr "" #: audio_diskstream.cc:296 -#, fuzzy 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!" +msgstr "" #: 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" +msgstr "" #: 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" +msgstr "" #: audio_diskstream.cc:1383 audio_diskstream.cc:1400 -#, fuzzy msgid "AudioDiskstream %1: cannot write to disk" -msgstr "DiskStream %1: impossibile scrivere sul disco" +msgstr "" #: audio_diskstream.cc:1443 -#, fuzzy msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" -msgstr "DiskStream \"%1\": impossibile scaricare i dati acquisiti sul disco!" +msgstr "" #: 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:1571 -#, fuzzy msgid "AudioDiskstream: could not create region for captured audio!" -msgstr "DiskStream: impossibile creare una regione per l'audio registrato!" +msgstr "" #: audio_diskstream.cc:1679 -#, fuzzy msgid "programmer error: %1" -msgstr "errore di programmazione: %1" +msgstr "" #: audio_diskstream.cc:1905 -#, fuzzy msgid "AudioDiskstream: channel %1 out of range" -msgstr "DiskStream: canale fuori margine" +msgstr "" #: 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:2200 -#, fuzzy msgid "%1: cannot restore pending capture source file %2" -msgstr "Import: impossibile aprire il file audio di input \"%1\"" +msgstr "" #: audio_diskstream.cc:2222 msgid "%1: incorrect number of pending sources listed - ignoring them all" msgstr "" #: 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" +msgstr "" #: audio_library.cc:71 msgid "Could not open %1. Audio Library not saved" @@ -108,14 +98,12 @@ msgid "Audio Playlists" msgstr "" #: audio_playlist_importer.cc:161 -#, fuzzy msgid "region" -msgstr "aggiungi regione" +msgstr "" #: audio_playlist_importer.cc:163 -#, fuzzy msgid "regions" -msgstr "aggiungi regione" +msgstr "" #: audio_playlist_importer.cc:174 audio_track_importer.cc:245 msgid "A playlist with this name already exists, please rename it." @@ -132,15 +120,14 @@ 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:643 -#: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 +#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "errore di programmazione: %1" #: audio_region_importer.cc:75 -#, fuzzy msgid "Audio Regions" -msgstr "costruzione delle regioni" +msgstr "" #: audio_region_importer.cc:145 msgid "Length: " @@ -159,9 +146,8 @@ msgid "" msgstr "" #: audio_track.cc:167 -#, fuzzy msgid "Unknown bundle \"%1\" listed for input of %2" -msgstr "Connessione sconosciuta \"%1\" come input di %2" +msgstr "" #: audio_track.cc:169 msgid "in 1" @@ -199,62 +185,20 @@ msgstr "" msgid "VAMP Plugin \"%1\" could not be loaded" msgstr "" -#: audioengine.cc:186 -msgid "" -"This version of JACK is old - you should upgrade to a newer version that " -"supports jack_port_type_get_buffer_size()" +#: audioengine.cc:488 +msgid "looking for backends in %1\n" msgstr "" -#: audioengine.cc:190 -msgid "Connect session to engine" +#: audioengine.cc:511 +msgid "AudioEngine: cannot load module \"%1\" (%2)" msgstr "" -#: audioengine.cc:843 -msgid "" -"a port with the name \"%1\" already exists: check for duplicated track/bus " -"names" +#: audioengine.cc:517 +msgid "AudioEngine: backend at \"%1\" has no descriptor function." msgstr "" -#: 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:848 -#, fuzzy -msgid "AudioEngine: cannot register port \"%1\": %2" -msgstr "IO: impossibile registrare la porta %1" - -#: audioengine.cc:878 -msgid "unable to create port: %1" -msgstr "" - -#: audioengine.cc:932 -msgid "connect called before engine was started" -msgstr "richiesta di connessione avvenuta prima dell'avvio dell'applicazione" - -#: audioengine.cc:958 -msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" -msgstr "" - -#: 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: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:1104 -msgid "get_ports called before engine was started" -msgstr "richiesta di get_ports avvenuta prima dell'avvio dell'applicazione" - -#: audioengine.cc:1427 -msgid "failed to connect to JACK" +#: audioengine.cc:589 +msgid "Could not create backend for %1: %2" msgstr "" #: audioregion.cc:1643 @@ -273,52 +217,45 @@ msgid "" msgstr "" #: audiosource.cc:199 -#, fuzzy msgid "cannot rename peakfile for %1 from %2 to %3 (%4)" -msgstr "impossibile eliminare il peakfile %1 per %2 (%3)" +msgstr "" #: audiosource.cc:226 -#, fuzzy msgid "AudioSource: cannot stat peakfile \"%1\"" -msgstr "FileSource: impossibile avviare il peakfile per %1" +msgstr "" #: audiosource.cc:366 msgid "cannot read sample data for unscaled peak computation" msgstr "" #: audiosource.cc:387 -#, fuzzy msgid "AudioSource: cannot open peakpath (a) \"%1\" (%2)" -msgstr "SndFileSource: impossibile accedere al file \"%1\" (%2)" +msgstr "" #: audiosource.cc:463 -#, fuzzy msgid "AudioSource: cannot open peakpath (b) \"%1\" (%2)" -msgstr "SndFileSource: impossibile accedere al file \"%1\" (%2)" +msgstr "" #: audiosource.cc:587 -#, fuzzy msgid "" "AudioSource[%1]: peak read - cannot read %2 samples at offset %3 of %4 (%5)" -msgstr "DiskStream %1: impossibile leggere %2 dalla playlista al frame %3" +msgstr "" #: audiosource.cc:667 msgid "%1: could not write read raw data for peak computation (%2)" msgstr "" #: audiosource.cc:706 -#, fuzzy msgid "AudioSource: cannot open peakpath (c) \"%1\" (%2)" -msgstr "SndFileSource: impossibile accedere al file \"%1\" (%2)" +msgstr "" #: audiosource.cc:773 audiosource.cc:886 msgid "%1: could not write peak file data (%2)" msgstr "" #: audiosource.cc:924 -#, fuzzy msgid "could not truncate peakfile %1 to %2 (error: %3)" -msgstr "impossibile eliminare il peakfile %1 per %2 (%3)" +msgstr "" #: auditioner.cc:87 msgid "no outputs available for auditioner - manual connection required" @@ -337,21 +274,16 @@ msgid "Automation node has no path property" msgstr "" #: automatable.cc:101 -#, fuzzy msgid "cannot open %2 to load automation data (%3)" -msgstr "impossibile accedere al file dell'automazione pan %1 (%2)" +msgstr "" #: automatable.cc:129 -#, fuzzy msgid "cannot load automation data from %2" -msgstr "impossibile accedere al file dell'automazione pan %1 (%2)" +msgstr "" #: automation_list.cc:353 -#, fuzzy msgid "automation list: cannot load coordinates from XML, all points ignored" msgstr "" -"lista automazione: nessuna coordinata X salvata per punto di controllo " -"(ignorato)" #: automation_list.cc:399 msgid "" @@ -389,14 +321,12 @@ msgid "poll on butler request pipe failed (%1)" msgstr "" #: butler.cc:163 -#, fuzzy msgid "Error on butler thread request pipe: fd=%1 err=%2" -msgstr "Errore nel leggere dalla porta MIDI %1" +msgstr "" #: butler.cc:201 -#, fuzzy msgid "Error reading from butler request pipe" -msgstr "Errore nel leggere dalla porta MIDI %1" +msgstr "" #: butler.cc:248 msgid "Butler read ahead failure on dstream %1" @@ -423,23 +353,20 @@ msgid "looking for control protocols in %1\n" msgstr "" #: control_protocol_manager.cc:247 -#, fuzzy msgid "Control protocol %1 not usable" -msgstr "La porta MIDI \"%1\" non disponibile: nessun controllo MTC possibile" +msgstr "" #: control_protocol_manager.cc:264 msgid "Control surface protocol discovered: \"%1\"\n" msgstr "" #: control_protocol_manager.cc:282 -#, fuzzy msgid "ControlProtocolManager: cannot load module \"%1\" (%2)" -msgstr "LADSPA: impossibile caricare il modulo \"%1\" (%2)" +msgstr "" #: control_protocol_manager.cc:290 -#, fuzzy msgid "ControlProtocolManager: module \"%1\" has no descriptor function." -msgstr "LADSPA: il modulo \"%1\" non ha alcuna funzione descriptor." +msgstr "" #: cycle_timer.cc:38 msgid "CycleTimer::get_mhz(): can't open /proc/cpuinfo" @@ -458,7 +385,7 @@ msgstr "impossibile localizzare \"cpu MHz\" in /proc/cpuinfo" msgid "audio" msgstr "" -#: data_type.cc:28 session.cc:1640 session.cc:1643 +#: data_type.cc:28 session.cc:1791 session.cc:1794 msgid "MIDI" msgstr "" @@ -543,18 +470,16 @@ msgid "Session rate" msgstr "" #: export_format_specification.cc:537 -#, fuzzy msgid "normalize" -msgstr "normalizzato a %.2fdB" +msgstr "" #: export_format_specification.cc:541 msgid "trim" msgstr "" #: export_format_specification.cc:543 -#, fuzzy msgid "trim start" -msgstr "separa" +msgstr "" #: export_format_specification.cc:545 msgid "trim end" @@ -572,7 +497,7 @@ msgstr "" msgid "Rectangular" msgstr "" -#: export_formats.cc:52 session.cc:4861 session.cc:4877 +#: export_formats.cc:52 session.cc:5014 session.cc:5030 msgid "None" msgstr "" @@ -605,23 +530,20 @@ msgid "8bit unsigned" msgstr "" #: export_formats.cc:173 -#, fuzzy msgid "Vorbis sample format" -msgstr "separa" +msgstr "" #: export_formats.cc:175 -#, fuzzy msgid "No sample format" -msgstr "separa" +msgstr "" #: export_handler.cc:335 msgid "Editor: cannot open \"%1\" as export file for CD marker file" msgstr "" #: export_handler.cc:417 export_handler.cc:420 -#, fuzzy msgid "an error occured while writing a TOC/CUE file: %1" -msgstr "c'è stato un errore durante la conversione di campionatura: %1" +msgstr "" #: export_handler.cc:642 export_handler.cc:700 msgid "Cannot convert %1 to Latin-1 text" @@ -632,33 +554,28 @@ msgid "Searching for export formats in %1" msgstr "" #: export_profile_manager.cc:99 -#, fuzzy msgid "Unable to create export format directory %1: %2" -msgstr "impossibile creare la cartella per la sessione %1; ignorato" +msgstr "" #: export_profile_manager.cc:257 -#, fuzzy msgid "Unable to remove export preset %1: %2" -msgstr "impossibile creare la cartella per la sessione %1; ignorato" +msgstr "" #: export_profile_manager.cc:347 msgid "Selection" msgstr "" #: export_profile_manager.cc:600 -#, fuzzy msgid "Unable to rename export format %1 to %2: %3" -msgstr "impossibile rinominare file audio sorgente da %1 a %2 (%3)" +msgstr "" #: export_profile_manager.cc:632 -#, fuzzy msgid "Unable to remove export profile %1: %2" -msgstr "impossibile controllare il file di stato %1 (%2)" +msgstr "" #: export_profile_manager.cc:649 -#, fuzzy msgid "empty format" -msgstr "separa" +msgstr "" #: export_profile_manager.cc:818 msgid "No timespan has been selected!" @@ -690,25 +607,23 @@ msgid "" "configuration" msgstr "" -#: file_source.cc:198 session_state.cc:2891 +#: file_source.cc:198 session_state.cc:2807 msgid "" "there are already 1000 files with names like %1; versioning discontinued" msgstr "" "ci sono gia' 1000 file con nomi come %1; tracciamento di versione interrotto" #: file_source.cc:207 -#, fuzzy msgid "cannot rename file source from %1 to %2 (%3)" -msgstr "impossibile rinominare file audio sorgente da %1 a %2 (%3)" +msgstr "" #: file_source.cc:250 file_source.cc:378 msgid "FileSource: search path not set" msgstr "FileSource: percorso di ricerca non specificato" #: file_source.cc:313 file_source.cc:448 -#, fuzzy msgid "Filesource: cannot find required file (%1): while searching %2" -msgstr "FileSource: impossibile trovare il file richiesto (%1): %2" +msgstr "" #: file_source.cc:440 msgid "" @@ -733,14 +648,12 @@ msgid "" msgstr "" #: file_source.cc:540 -#, fuzzy msgid "cannot rename file %1 to %2 (%3)" -msgstr "impossibile eliminare il peakfile %1 per %2 (%3)" +msgstr "" #: filesystem_paths.cc:73 -#, fuzzy msgid "Cannot create Configuration directory %1 - cannot run" -msgstr "impossibile creare la cartella sounds \"%1\"; ignorato" +msgstr "" #: filesystem_paths.cc:78 msgid "" @@ -761,20 +674,16 @@ msgid "ARDOUR_DATA_PATH not set in environment - exiting\n" msgstr "" #: filter.cc:66 -#, fuzzy msgid "filter: error creating name for new file based on %1" msgstr "" -"audiofilter: errore nel creare il nome per il nuovo file audio basato su %1" #: filter.cc:78 -#, fuzzy msgid "filter: error creating new file %1 (%2)" -msgstr "audiofilter: errore nel creare un nuovo file audio %1 (%2)" +msgstr "" #: find_session.cc:51 -#, fuzzy msgid "Could not resolve path: %1 (%2)" -msgstr "impossibile controllare il percorso %1 (%2)" +msgstr "" #: find_session.cc:63 msgid "cannot check session path %1 (%2)" @@ -785,9 +694,8 @@ msgid "cannot check statefile %1 (%2)" msgstr "impossibile controllare il file di stato %1 (%2)" #: find_session.cc:125 -#, fuzzy msgid "%1 is not a snapshot file" -msgstr "%1 non è un file di istantanea di Ardour" +msgstr "" #: find_session.cc:142 msgid "cannot determine current working directory (%1)" @@ -797,28 +705,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:205 +#: globals.cc:207 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:207 -#, fuzzy +#: globals.cc:209 msgid "Could not set system open files limit to %1" -msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)" +msgstr "" -#: globals.cc:211 +#: globals.cc:213 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:215 -#, fuzzy +#: globals.cc:217 msgid "Could not get system open files limit (%1)" -msgstr "IO: impossibile registrare la porta %1" +msgstr "" -#: globals.cc:266 -#, fuzzy +#: globals.cc:268 msgid "Loading configuration" -msgstr "Ardour: impossibile la lettura del file di configurazione \"%1\"" +msgstr "" #: import.cc:207 msgid "Could not find a source for %1 even though we are updating this file!" @@ -849,9 +754,8 @@ msgid "Import: cannot open input sound file \"%1\"" msgstr "Import: impossibile aprire il file audio di input \"%1\"" #: import.cc:510 -#, fuzzy msgid "Import: error opening MIDI file" -msgstr "Import: errore nel resampling deil file audio \"%1\"" +msgstr "" #: import.cc:549 msgid "Loading MIDI file %1" @@ -874,9 +778,8 @@ msgid "%1 - cannot find any track/bus with the ID %2 to connect to" msgstr "" #: io.cc:208 -#, fuzzy msgid "IO: cannot disconnect port %1 from %2" -msgstr "IO: impossibile disconnettere la porta d'entrata %1 da %2" +msgstr "" #: io.cc:343 io.cc:428 msgid "IO: cannot register input port %1" @@ -895,9 +798,8 @@ msgid "in" msgstr "" #: io.cc:706 -#, fuzzy msgid "out" -msgstr "taglia" +msgstr "" #: io.cc:707 msgid "input" @@ -908,9 +810,8 @@ msgid "output" msgstr "" #: io.cc:717 -#, fuzzy msgid "Unknown bundle \"%1\" listed for %2 of %3" -msgstr "Connessione sconosciuta \"%1\" come input di %2" +msgstr "" #: io.cc:783 msgid "Bundle %1 was not available - \"%2\" used instead" @@ -940,47 +841,47 @@ msgstr "IO: stringa mal formata nel nodo XML per le uscite \"%1\"" msgid "IO: bad output string in XML node \"%1\"" msgstr "IO: stringa mal formata nel nodo XML \"%1\"" -#: io.cc:1410 +#: io.cc:1411 #, c-format msgid "%s %u" msgstr "" -#: io.cc:1457 +#: io.cc:1458 #, c-format msgid "%s in" msgstr "" -#: io.cc:1459 +#: io.cc:1460 #, c-format msgid "%s out" msgstr "" -#: io.cc:1534 session.cc:494 session.cc:523 +#: io.cc:1535 session.cc:686 session.cc:715 msgid "mono" msgstr "" -#: io.cc:1536 session.cc:507 session.cc:537 +#: io.cc:1537 session.cc:699 session.cc:729 msgid "L" msgstr "" -#: io.cc:1536 session.cc:509 session.cc:539 +#: io.cc:1537 session.cc:701 session.cc:731 msgid "R" msgstr "" -#: io.cc:1538 io.cc:1544 +#: io.cc:1539 io.cc:1545 #, c-format msgid "%d" msgstr "" -#: ladspa_plugin.cc:88 +#: ladspa_plugin.cc:86 msgid "LADSPA: module has no descriptor function." msgstr "LADSPA: il modulo non ha alcuna funzione descriptor." -#: ladspa_plugin.cc:93 +#: ladspa_plugin.cc:91 msgid "LADSPA: plugin has gone away since discovery!" msgstr "LADSPA: il plugin è stato rimosso" -#: ladspa_plugin.cc:100 +#: ladspa_plugin.cc:98 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" @@ -1007,9 +908,8 @@ msgid "LADSPA: cannot load module from \"%1\"" msgstr "LADPSA: impossibile caricare il modulo da \"%1\"" #: ladspa_plugin.cc:827 -#, fuzzy msgid "Could not locate HOME. Preset not removed." -msgstr "impossibile localizzare HOME. Preset non salvato." +msgstr "" #: ladspa_plugin.cc:864 ladspa_plugin.cc:870 msgid "Could not create %1. Preset not saved. (%2)" @@ -1032,9 +932,8 @@ msgid "incorrect XML node passed to Location::set_state" msgstr "" #: location.cc:455 -#, fuzzy msgid "XML node for Location has no ID information" -msgstr "il nodo XML per la Location non ha informazioni sulla fine" +msgstr "" #: location.cc:459 msgid "XML node for Location has no name information" @@ -1060,7 +959,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4362 session_state.cc:1114 +#: location.cc:842 session.cc:4516 session_state.cc:1031 msgid "session" msgstr "" @@ -1125,39 +1024,32 @@ msgid "" msgstr "" #: midi_diskstream.cc:219 -#, fuzzy msgid "MidiDiskstream: Playlist \"%1\" isn't a midi playlist" -msgstr "DiskStream %1: impossibile leggere %2 dalla playlista al frame %3" +msgstr "" #: midi_diskstream.cc:270 -#, fuzzy 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!" +msgstr "" #: 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" +msgstr "" #: midi_diskstream.cc:834 -#, fuzzy msgid "MidiDiskstream %1: cannot write to disk" -msgstr "DiskStream %1: impossibile scrivere sul disco" +msgstr "" #: midi_diskstream.cc:868 -#, fuzzy msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" -msgstr "DiskStream \"%1\": impossibile scaricare i dati acquisiti sul disco!" +msgstr "" #: 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" +msgstr "" #: midi_diskstream.cc:992 -#, fuzzy msgid "MidiDiskstream: could not create region for captured midi!" -msgstr "DiskStream: impossibile creare una regione per l'audio registrato!" +msgstr "" #: midi_model.cc:634 msgid "No NoteID found for note property change - ignored" @@ -1231,21 +1123,21 @@ msgstr "" msgid "solo control" msgstr "" -#: mtc_slave.cc:235 +#: mtc_slave.cc:238 msgid "MTC Slave: atomic read of current time failed, sleeping!" msgstr "" -#: mtc_slave.cc:359 +#: mtc_slave.cc:361 msgid "" "Unknown rate/drop value %1 in incoming MTC stream, session values used " "instead" msgstr "" -#: mtc_slave.cc:379 +#: mtc_slave.cc:381 msgid "Session framerate adjusted from %1 TO: MTC's %2." msgstr "" -#: mtc_slave.cc:393 +#: mtc_slave.cc:395 msgid "Session and MTC framerate mismatch: MTC:%1 %2:%3." msgstr "" @@ -1258,50 +1150,44 @@ msgid "paste" msgstr "incolla" #: operations.cc:26 -#, fuzzy msgid "duplicate region" -msgstr "sostituisci la regione" +msgstr "" #: operations.cc:27 msgid "insert file" msgstr "" #: operations.cc:28 -#, fuzzy msgid "insert region" -msgstr "costruzione della regione" +msgstr "" #: operations.cc:29 msgid "drag region brush" msgstr "" #: operations.cc:30 -#, fuzzy msgid "region drag" -msgstr "aggiungi regione" +msgstr "" #: operations.cc:31 msgid "selection grab" msgstr "" #: operations.cc:32 -#, fuzzy msgid "region fill" -msgstr "aggiungi regione" +msgstr "" #: operations.cc:33 msgid "fill selection" msgstr "" #: operations.cc:34 -#, fuzzy msgid "create region" -msgstr "sostituisci la regione" +msgstr "" #: operations.cc:35 -#, fuzzy msgid "region copy" -msgstr "aggiungi regione" +msgstr "" #: operations.cc:36 msgid "fixed time region copy" @@ -1315,42 +1201,37 @@ msgstr "" msgid "looking for panners in %1" msgstr "" -#: panner_manager.cc:99 +#: panner_manager.cc:100 msgid "Panner discovered: \"%1\" in %2" msgstr "" -#: panner_manager.cc:116 -#, fuzzy +#: panner_manager.cc:117 msgid "PannerManager: cannot load module \"%1\" (%2)" -msgstr "LADSPA: impossibile caricare il modulo \"%1\" (%2)" +msgstr "" -#: panner_manager.cc:123 -#, fuzzy +#: panner_manager.cc:124 msgid "PannerManager: module \"%1\" has no descriptor function." -msgstr "LADSPA: il modulo \"%1\" non ha alcuna funzione descriptor." +msgstr "" -#: panner_manager.cc:186 +#: panner_manager.cc:187 msgid "no panner discovered for in/out = %1/%2" msgstr "" #: panner_shell.cc:179 -#, fuzzy msgid "Unknown panner plugin \"%1\" found in pan state - ignored" -msgstr "Nodo sconosciuto \"%1\" trovato in Connections list dal file di stato" +msgstr "" #: panner_shell.cc:185 -#, fuzzy msgid "panner plugin node has no type information!" -msgstr "il nodo XML per la Location non ha informazioni sulla fine" +msgstr "" #: playlist.cc:2070 msgid "region state node has no ID, ignored" msgstr "" #: playlist.cc:2088 -#, fuzzy msgid "Playlist: cannot create region from XML" -msgstr "Playlist: impossibile creare la Regione dal file di stato" +msgstr "" #: playlist_source.cc:99 msgid "No playlist ID in PlaylistSource XML!" @@ -1377,9 +1258,8 @@ msgid "programming error: " msgstr "errore di programmazione: " #: 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'" +msgstr "" #: plugin_insert.cc:941 msgid "unknown plugin type %1 in plugin insert state" @@ -1410,14 +1290,12 @@ msgid "PluginInsert: automatable control %1 not found - ignored" msgstr "" #: plugin_manager.cc:161 -#, fuzzy msgid "Discovering Plugins" -msgstr "conversione dell'audio" +msgstr "" #: plugin_manager.cc:335 -#, fuzzy msgid "Could not parse rdf file: %1" -msgstr "IO: impossibile registrare la porta %1" +msgstr "" #: plugin_manager.cc:374 msgid "LADSPA: cannot load module \"%1\" (%2)" @@ -1444,32 +1322,53 @@ msgid "unknown plugin status type \"%1\" - all entries ignored" msgstr "" #: plugin_manager.cc:887 -#, fuzzy msgid "unknown plugin type \"%1\" - ignored" -msgstr "Nodo sconosciuto \"%1\" trovato in Connections list dal file di stato" - -#: port.cc:367 -msgid "get_connected_latency_range() called while disconnected from JACK" msgstr "" -#: port.cc:450 -#, fuzzy +#: port.cc:410 msgid "could not reregister %1" -msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)" +msgstr "" #: port_insert.cc:43 msgid "insert %1" msgstr "" #: port_insert.cc:198 -#, fuzzy msgid "XML node describing port insert is missing the `type' field" -msgstr "Il nodo XML descrivente l'insert manca del campo `type'" +msgstr "" #: port_insert.cc:203 msgid "non-port insert XML used for port plugin insert" msgstr "insert non-port XML usato per insert di plugin di porta" +#: port_manager.cc:270 +msgid "" +"a port with the name \"%1\" already exists: check for duplicated track/bus " +"names" +msgstr "" + +#: port_manager.cc:272 +msgid "" +"No more ports are available. You will need to stop %1 and restart with more " +"ports if you need this many tracks." +msgstr "" + +#: port_manager.cc:275 +msgid "AudioEngine: cannot register port \"%1\": %2" +msgstr "" + +#: port_manager.cc:314 +msgid "unable to create port: %1" +msgstr "" + +#: port_manager.cc:401 +msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" +msgstr "" + +#: port_manager.cc:453 port_manager.cc:454 +msgid "Re-establising port %1 failed" +msgstr "" + #: processor.cc:207 msgid "No %1 property flag in element %2" msgstr "" @@ -1478,60 +1377,47 @@ msgstr "" msgid "No child node with active property" msgstr "" -#: rc_configuration.cc:93 -#, fuzzy +#: rc_configuration.cc:88 msgid "Loading system configuration file %1" msgstr "" -"Ardour: impossibile leggere il file di configurazione di sistema \"%1\"" -#: rc_configuration.cc:97 -#, fuzzy +#: rc_configuration.cc:92 msgid "%1: cannot read system configuration file \"%2\"" msgstr "" -"Ardour: impossibile leggere il file di configurazione di sistema \"%1\"" -#: rc_configuration.cc:102 -#, fuzzy +#: rc_configuration.cc:97 msgid "%1: system configuration file \"%2\" not loaded successfully." msgstr "" -"Ardour: il file di configurazione di sistema \"%1\" non stato caricato con " -"successo" -#: rc_configuration.cc:106 +#: rc_configuration.cc:101 msgid "" "Your system %1 configuration file is empty. This probably means that there " "was an error installing %1" msgstr "" -#: rc_configuration.cc:121 -#, fuzzy +#: rc_configuration.cc:116 msgid "Loading user configuration file %1" -msgstr "Ardour: impossibile la lettura del file di configurazione \"%1\"" +msgstr "" -#: rc_configuration.cc:125 -#, fuzzy +#: rc_configuration.cc:120 msgid "%1: cannot read configuration file \"%2\"" -msgstr "Ardour: impossibile la lettura del file di configurazione \"%1\"" +msgstr "" -#: rc_configuration.cc:130 -#, fuzzy +#: rc_configuration.cc:125 msgid "%1: user configuration file \"%2\" not loaded successfully." msgstr "" -"Ardour: il file di configurazione \"%1\" non stato caricato con successo" -#: rc_configuration.cc:134 +#: rc_configuration.cc:129 msgid "your %1 configuration file is empty. This is not normal." msgstr "" -#: rc_configuration.cc:151 -#, fuzzy +#: rc_configuration.cc:146 msgid "Config file %1 not saved" -msgstr "File di configurazione non salvato" +msgstr "" #: recent_sessions.cc:54 -#, fuzzy msgid "cannot open recent session file %1 (%2)" -msgstr "impossibile accedere al file di sessione recente %1 (%2)" +msgstr "" #: region_factory.cc:67 region_factory.cc:109 region_factory.cc:150 #: region_factory.cc:192 @@ -1563,38 +1449,39 @@ msgstr "" msgid "return %1" msgstr "" -#: route.cc:1105 route.cc:2581 -#, fuzzy +#: route.cc:1075 route.cc:2528 msgid "unknown Processor type \"%1\"; ignored" -msgstr "impossibile creare la cartella per la sessione %1; ignorato" +msgstr "" -#: route.cc:1117 -#, fuzzy +#: route.cc:1087 msgid "processor could not be created. Ignored." -msgstr "Sessione: impossibile creare un nuovo route" +msgstr "" -#: route.cc:2007 route.cc:2234 +#: route.cc:1962 route.cc:2187 msgid "Bad node sent to Route::set_state() [%1]" msgstr "" -#: route.cc:2067 +#: route.cc:2022 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 +#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" +#: route.cc:2311 +msgid "Converting deprecated order key for %1 using Editor order %2" +msgstr "" + #: route_group.cc:459 msgid "You cannot subgroup MIDI tracks at this time" msgstr "" -#: rb_effect.cc:233 rb_effect.cc:274 -#, fuzzy +#: rb_effect.cc:234 rb_effect.cc:275 msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" -msgstr "tempoize: errore nel leggere dati da %1" +msgstr "" -#: rb_effect.cc:303 rb_effect.cc:325 +#: rb_effect.cc:304 rb_effect.cc:326 msgid "error writing tempo-adjusted data to %1" msgstr "" @@ -1607,198 +1494,171 @@ msgid "send %1" msgstr "" #: send.cc:65 -#, fuzzy msgid "programming error: send created using role %1" -msgstr "errore di programmazione: %1" - -#: session.cc:347 -msgid "Set block size and sample rate" msgstr "" -#: session.cc:352 -#, fuzzy -msgid "Using configuration" -msgstr "Ardour: impossibile la lettura del file di configurazione \"%1\"" +#: session.cc:344 +msgid "Connect to engine" +msgstr "" -#: session.cc:377 -msgid "LTC In" +#: session.cc:349 +msgid "Session loading complete" msgstr "" -#: session.cc:378 -msgid "LTC Out" +#: session.cc:421 +msgid "Set up LTC" msgstr "" -#: session.cc:404 -msgid "LTC-in" +#: session.cc:423 +msgid "Set up Click" msgstr "" -#: session.cc:405 -msgid "LTC-out" +#: session.cc:425 +msgid "Set up standard connections" msgstr "" -#: session.cc:434 +#: session.cc:635 msgid "could not setup Click I/O" msgstr "impossibile impostare entrata/uscita del click" -#: session.cc:461 -msgid "cannot setup Click I/O" -msgstr "impossibile impostare entrata/uscita del click" - -#: session.cc:464 -msgid "Compute I/O Latencies" -msgstr "" - -#: session.cc:470 -msgid "Set up standard connections" -msgstr "" - -#: session.cc:491 +#: session.cc:683 #, c-format msgid "out %<PRIu32>" msgstr "" -#: session.cc:505 +#: session.cc:697 #, c-format msgid "out %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:520 +#: session.cc:712 #, c-format msgid "in %<PRIu32>" msgstr "" -#: session.cc:534 +#: session.cc:726 #, c-format msgid "in %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:570 -msgid "Setup signal flow and plugins" -msgstr "" - -#: session.cc:614 -msgid "Connect to engine" -msgstr "" - -#: session.cc:645 -#, fuzzy +#: session.cc:790 msgid "cannot connect master output %1 to %2" -msgstr "IO: impossibile registrare la porta %1" +msgstr "" -#: session.cc:704 +#: session.cc:849 msgid "monitor" msgstr "" -#: session.cc:749 -#, fuzzy +#: session.cc:894 msgid "cannot connect control input %1 to %2" -msgstr "impossibile impostare entrata/uscita del click" +msgstr "" -#: session.cc:769 +#: session.cc:914 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "" -#: session.cc:800 -#, fuzzy +#: session.cc:945 msgid "cannot connect control output %1 to %2" -msgstr "IO: impossibile disconnettere la porta d'uscita %1 da %2" +msgstr "" -#: session.cc:864 +#: session.cc:1009 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "impossibile creare l'Auditioner" -#: session.cc:1043 +#: session.cc:1193 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "" "Sessione: non si può usare quella location per l'auto punch (inizio <= fine)" -#: session.cc:1083 +#: session.cc:1233 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" msgstr "" -#: session.cc:1396 +#: session.cc:1547 msgid "feedback loop setup between %1 and %2" msgstr "" -#: session.cc:1692 -#, fuzzy +#: session.cc:1843 msgid "Session: could not create new midi track." -msgstr "Sessione: impossibile creare una nuova traccia audio" +msgstr "" + +#: session.cc:1849 +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 "" -#: session.cc:1875 session.cc:1878 +#: session.cc:2026 session.cc:2029 msgid "Audio" msgstr "" -#: session.cc:1902 session.cc:1910 session.cc:1987 session.cc:1995 +#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "" -#: session.cc:1933 +#: session.cc:2084 msgid "Session: could not create new audio track." msgstr "Sessione: impossibile creare una nuova traccia audio" -#: session.cc:1965 session.cc:1968 +#: session.cc:2116 session.cc:2119 msgid "Bus" msgstr "" -#: session.cc:2018 -#, fuzzy +#: session.cc:2169 msgid "Session: could not create new audio route." -msgstr "Sessione: impossibile creare un nuovo route" +msgstr "" -#: session.cc:2077 session.cc:2087 +#: session.cc:2228 session.cc:2238 msgid "Session: UINT_MAX routes? impossible!" msgstr "" -#: session.cc:2109 -#, fuzzy +#: session.cc:2260 msgid "Session: cannot create track/bus from template description" -msgstr "Sessione: impossibile creare Source dalla descrizione XML" +msgstr "" -#: session.cc:2135 -#, fuzzy +#: session.cc:2286 msgid "Session: could not create new route from template" -msgstr "Sessione: impossibile creare un nuovo route" +msgstr "" -#: session.cc:2164 +#: session.cc:2315 msgid "Adding new tracks/busses failed" msgstr "" -#: session.cc:3265 +#: session.cc:3419 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "" -#: session.cc:3385 session.cc:3443 +#: session.cc:3539 session.cc:3597 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "Ci sono già %1 registrazioni per %2, che io considero troppe" -#: session.cc:3833 +#: session.cc:3987 msgid "send ID %1 appears to be in use already" msgstr "" -#: session.cc:3845 +#: session.cc:3999 msgid "aux send ID %1 appears to be in use already" msgstr "" -#: session.cc:3857 +#: session.cc:4011 msgid "return ID %1 appears to be in use already" msgstr "" -#: session.cc:3869 +#: session.cc:4023 msgid "insert ID %1 appears to be in use already" msgstr "" -#: session.cc:3996 +#: session.cc:4150 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "" -#: session.cc:4025 +#: session.cc:4179 msgid "too many bounced versions of playlist \"%1\"" msgstr "" -#: session.cc:4035 +#: session.cc:4189 msgid "cannot create new audio file \"%1\" for %2" msgstr "impossibile creare un nuovo file audio \"%1\" per %2" @@ -1826,9 +1686,8 @@ msgid "" msgstr "" #: session_directory.cc:59 -#, fuzzy msgid "Cannot create Session directory at path %1 Error: %2" -msgstr "impossibile creare la cartella per la sessione %1; ignorato" +msgstr "" #: session_directory.cc:76 msgid "Session subdirectory does not exist at path %1" @@ -1838,11 +1697,11 @@ msgstr "" msgid "Session: cannot have two events of type %1 at the same frame (%2)." msgstr "" -#: session_export.cc:126 +#: session_export.cc:125 msgid "%1: cannot seek to %2 for export" msgstr "" -#: session_export.cc:183 +#: session_export.cc:182 msgid "Export ended unexpectedly: %1" msgstr "" @@ -1852,10 +1711,6 @@ msgid "" "of this session." msgstr "" -#: session_midi.cc:428 -msgid "Session: could not send full MIDI time code" -msgstr "" - #: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1864,432 +1719,373 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "Sessione: impossibile creare Playlist dalla descrizione XML" -#: session_process.cc:133 +#: session_process.cc:132 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1158 +#: session_process.cc:1157 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" -#: session_state.cc:139 -#, fuzzy +#: session_state.cc:140 msgid "Could not use path %1 (%2)" -msgstr "impossibile controllare il percorso %1 (%2)" +msgstr "" -#: session_state.cc:267 +#: session_state.cc:184 msgid "solo cut control (dB)" msgstr "" -#: session_state.cc:360 -msgid "Reset Remote Controls" +#: session_state.cc:208 +msgid "Set block size and sample rate" msgstr "" -#: session_state.cc:385 -msgid "Session loading complete" +#: session_state.cc:213 +msgid "Using configuration" msgstr "" -#: session_state.cc:452 -#, fuzzy +#: session_state.cc:325 +msgid "Reset Remote Controls" +msgstr "" + +#: session_state.cc:417 msgid "Session: cannot create session peakfile folder \"%1\" (%2)" -msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)" +msgstr "" -#: session_state.cc:459 +#: session_state.cc:424 msgid "Session: cannot create session sounds dir \"%1\" (%2)" msgstr "" "Sessione: impossibile creare la cartella sounds per la sessione \"%1\" (%2)" -#: session_state.cc:466 -#, fuzzy +#: session_state.cc:431 msgid "Session: cannot create session midi dir \"%1\" (%2)" -msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)" +msgstr "" -#: session_state.cc:473 -#, fuzzy +#: session_state.cc:438 msgid "Session: cannot create session dead sounds folder \"%1\" (%2)" msgstr "" -"Sessione: impossibile creare la cartella sounds per la sessione \"%1\" (%2)" -#: session_state.cc:480 -#, fuzzy +#: session_state.cc:445 msgid "Session: cannot create session export folder \"%1\" (%2)" -msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)" +msgstr "" -#: session_state.cc:487 -#, fuzzy +#: session_state.cc:452 msgid "Session: cannot create session analysis folder \"%1\" (%2)" -msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)" +msgstr "" -#: session_state.cc:494 -#, fuzzy +#: session_state.cc:459 msgid "Session: cannot create session plugins folder \"%1\" (%2)" -msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)" +msgstr "" -#: session_state.cc:501 -#, fuzzy +#: session_state.cc:466 msgid "Session: cannot create session externals folder \"%1\" (%2)" -msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)" +msgstr "" -#: session_state.cc:515 -#, fuzzy +#: session_state.cc:480 msgid "Session: cannot create session folder \"%1\" (%2)" -msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)" +msgstr "" -#: session_state.cc:548 -#, fuzzy +#: session_state.cc:514 msgid "Could not open %1 for writing session template" -msgstr "Impossibile accedere a %1 per scrivere il modello di mixaggio" +msgstr "" -#: session_state.cc:554 -#, fuzzy +#: session_state.cc:520 msgid "Could not open session template %1 for reading" -msgstr "Impossibile aprire il modello di mixaggio %1 per leggere" +msgstr "" -#: session_state.cc:573 +#: session_state.cc:539 msgid "master" msgstr "" -#: session_state.cc:636 -#, fuzzy +#: session_state.cc:600 msgid "Could not remove pending capture state at path \"%1\" (%2)" -msgstr "impossibile controllare il percorso %1 (%2)" +msgstr "" -#: session_state.cc:660 -#, fuzzy +#: session_state.cc:624 msgid "could not rename snapshot %1 to %2 (%3)" -msgstr "impossibile rinominare file audio sorgente da %1 a %2 (%3)" +msgstr "" -#: session_state.cc:688 -#, fuzzy +#: session_state.cc:652 msgid "Could not remove session file at path \"%1\" (%2)" -msgstr "impossibile controllare il percorso %1 (%2)" +msgstr "" -#: session_state.cc:761 +#: session_state.cc:669 msgid "" "the %1 audio engine is not connected and state saving would lose all I/O " "connections. Session not saved" msgstr "" -#: session_state.cc:812 -#, fuzzy +#: session_state.cc:720 msgid "state could not be saved to %1" -msgstr "stato non salvato" +msgstr "" -#: session_state.cc:814 session_state.cc:825 -#, fuzzy +#: session_state.cc:722 session_state.cc:733 msgid "Could not remove temporary session file at path \"%1\" (%2)" -msgstr "impossibile controllare il percorso %1 (%2)" +msgstr "" -#: session_state.cc:822 -#, fuzzy +#: session_state.cc:730 msgid "could not rename temporary session file %1 to %2" -msgstr "impossibile rinominare file audio sorgente da %1 a %2 (%3)" +msgstr "" -#: session_state.cc:890 -#, fuzzy +#: session_state.cc:798 msgid "%1: session file \"%2\" doesn't exist!" msgstr "" -"%1: il file di informazioni sullo stato della sessione \"%2\" non esiste!" -#: session_state.cc:902 -#, fuzzy +#: session_state.cc:810 msgid "Could not understand session file %1" -msgstr "IO: impossibile registrare la porta %1" +msgstr "" -#: session_state.cc:911 -#, fuzzy +#: session_state.cc:819 msgid "Session file %1 is not a session" -msgstr "File di configurazione non salvato" +msgstr "" -#: session_state.cc:1208 +#: session_state.cc:1125 msgid "programming error: Session: incorrect XML node sent to set_state()" msgstr "" -#: session_state.cc:1257 +#: session_state.cc:1179 msgid "Session: XML state has no options section" msgstr "Sessione: il file di stato XML non ha alcuna sezione option" -#: session_state.cc:1262 -#, fuzzy +#: session_state.cc:1184 msgid "Session: XML state has no metadata section" -msgstr "Sessione: il file di stato XML non ha alcuna sezione routes" +msgstr "" -#: session_state.cc:1273 +#: session_state.cc:1195 msgid "Session: XML state has no sources section" msgstr "Sessione: il file di stato XML non ha alcuna sezione sources" -#: session_state.cc:1280 +#: session_state.cc:1202 msgid "Session: XML state has no Tempo Map section" msgstr "Sessione: il file di stato XML non ha alcuna sezione Tempo Map" -#: session_state.cc:1287 +#: session_state.cc:1209 msgid "Session: XML state has no locations section" msgstr "Sessione: il file di stato XML non ha alcuna sezione locations" -#: session_state.cc:1313 +#: session_state.cc:1235 msgid "Session: XML state has no Regions section" msgstr "Sessione: il file di stato XML non ha alcuna sezione Regions" -#: session_state.cc:1320 +#: session_state.cc:1242 msgid "Session: XML state has no playlists section" msgstr "Sessione: il file di stato XML non ha alcuna sezione playlist" -#: session_state.cc:1340 -#, fuzzy +#: session_state.cc:1262 msgid "Session: XML state has no bundles section" -msgstr "Sessione: il file di stato XML non ha alcuna sezione routes" +msgstr "" -#: session_state.cc:1352 +#: session_state.cc:1274 msgid "Session: XML state has no diskstreams section" msgstr "Sessione: il file di stato XML non ha alcuna sezione diskstream" -#: session_state.cc:1360 +#: session_state.cc:1282 msgid "Session: XML state has no routes section" msgstr "Sessione: il file di stato XML non ha alcuna sezione routes" -#: session_state.cc:1372 -#, fuzzy +#: session_state.cc:1294 msgid "Session: XML state has no route groups section" -msgstr "Sessione: il file di stato XML non ha alcuna sezione routes" +msgstr "" -#: session_state.cc:1381 +#: session_state.cc:1303 msgid "Session: XML state has no edit groups section" msgstr "Sessione: il file di stato XML non ha alcuna sezione edit groups" -#: session_state.cc:1388 +#: session_state.cc:1310 msgid "Session: XML state has no mix groups section" msgstr "Sessione: il file di stato XML non ha alcuna sezione mix groups" -#: session_state.cc:1396 -#, fuzzy +#: session_state.cc:1318 msgid "Session: XML state has no click section" -msgstr "Sessione: il file di stato XML non ha alcuna sezione click" +msgstr "" -#: session_state.cc:1444 +#: session_state.cc:1360 msgid "Session: cannot create Route from XML description." msgstr "Sessione: impossibile creare Route dalla descrizione XML" -#: session_state.cc:1448 +#: session_state.cc:1364 msgid "Loaded track/bus %1" msgstr "" -#: session_state.cc:1546 +#: session_state.cc:1462 msgid "Could not find diskstream for route" msgstr "" -#: session_state.cc:1600 +#: session_state.cc:1516 msgid "Session: cannot create Region from XML description." msgstr "Sessione: impossibile creare regione dalla descrizione XML" -#: session_state.cc:1604 -#, fuzzy +#: session_state.cc:1520 msgid "Can not load state for region '%1'" -msgstr "impossibile creare un nuovo nome per la regione \"%1\"" +msgstr "" -#: session_state.cc:1640 +#: session_state.cc:1556 msgid "Regions in compound description not found (ID's %1 and %2): ignored" msgstr "" -#: session_state.cc:1668 +#: session_state.cc:1584 msgid "Nested source has no ID info in session file! (ignored)" msgstr "" -#: session_state.cc:1680 -#, fuzzy +#: session_state.cc:1596 msgid "Cannot reconstruct nested source for region %1" -msgstr "impossibile creare un nuovo nome per la regione \"%1\"" +msgstr "" -#: session_state.cc:1742 -#, fuzzy +#: session_state.cc:1658 msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" msgstr "" -"Sessione: il nodo XML descrivente una Regione è incompleto (nessun source)" -#: session_state.cc:1750 session_state.cc:1771 session_state.cc:1791 -#, fuzzy +#: session_state.cc:1666 session_state.cc:1687 session_state.cc:1707 msgid "" "Session: XMLNode describing a AudioRegion references an unknown source id =%1" msgstr "" -"Sessione: il nodo XML descrivente una Regione fa riferimento ad un source " -"con id sconosciuto =%1" -#: session_state.cc:1756 session_state.cc:1777 session_state.cc:1797 -#, fuzzy +#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" msgstr "" -"Sessione: il nodo XML descrivente una Regione fa riferimento ad un source " -"con id sconosciuto =%1" -#: session_state.cc:1820 -#, fuzzy +#: session_state.cc:1736 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" msgstr "" -"Sessione: il nodo XML descrivente una Regione è incompleto (nessun source)" -#: session_state.cc:1854 -#, fuzzy +#: session_state.cc:1770 msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" msgstr "" -"Sessione: il nodo XML descrivente una Regione è incompleto (nessun source)" -#: session_state.cc:1862 -#, fuzzy +#: session_state.cc:1778 msgid "" "Session: XMLNode describing a MidiRegion references an unknown source id =%1" msgstr "" -"Sessione: il nodo XML descrivente una Regione fa riferimento ad un source " -"con id sconosciuto =%1" -#: session_state.cc:1868 -#, fuzzy +#: session_state.cc:1784 msgid "" "Session: XMLNode describing a MidiRegion references a non-midi source id =%1" msgstr "" -"Sessione: il nodo XML descrivente una Regione fa riferimento ad un source " -"con id sconosciuto =%1" -#: session_state.cc:1936 +#: session_state.cc:1852 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" msgstr "" -#: session_state.cc:1959 +#: session_state.cc:1875 msgid "Session: cannot create Source from XML description." msgstr "Sessione: impossibile creare Source dalla descrizione XML" -#: session_state.cc:1993 +#: session_state.cc:1909 msgid "A sound file is missing. It will be replaced by silence." msgstr "" -#: session_state.cc:2016 -#, fuzzy +#: session_state.cc:1932 msgid "Found a sound file that cannot be used by %1. Talk to the progammers." -msgstr "E' stato trovato un file audio che non può essere usato da Ardour." +msgstr "" -#: session_state.cc:2033 -#, fuzzy +#: session_state.cc:1949 msgid "Could not create templates directory \"%1\" (%2)" -msgstr "Impossibile creare la cartella per i modelli di mixaggio \"%1\" (%2)" +msgstr "" -#: session_state.cc:2046 +#: session_state.cc:1962 msgid "Template \"%1\" already exists - new version not created" msgstr "Il modello \"%1\" esiste già - non è stata creata una nuova versione" -#: session_state.cc:2052 -#, fuzzy +#: session_state.cc:1968 msgid "Could not create directory for Session template\"%1\" (%2)" -msgstr "Impossibile creare la cartella per i modelli di mixaggio \"%1\" (%2)" +msgstr "" -#: session_state.cc:2062 -#, fuzzy +#: session_state.cc:1978 msgid "template not saved" -msgstr "modello di mixaggio non salvato" +msgstr "" -#: session_state.cc:2072 -#, fuzzy +#: session_state.cc:1988 msgid "Could not create directory for Session template plugin state\"%1\" (%2)" -msgstr "Impossibile creare la cartella per i modelli di mixaggio \"%1\" (%2)" +msgstr "" -#: session_state.cc:2267 -#, fuzzy +#: session_state.cc:2183 msgid "Unknown node \"%1\" found in Bundles list from session file" -msgstr "Nodo sconosciuto \"%1\" trovato in Connections list dal file di stato" +msgstr "" -#: session_state.cc:2809 session_state.cc:2815 -#, fuzzy +#: session_state.cc:2725 session_state.cc:2731 msgid "Cannot expand path %1 (%2)" -msgstr "impossibile controllare il percorso %1 (%2)" +msgstr "" -#: session_state.cc:2868 -#, fuzzy +#: session_state.cc:2784 msgid "Session: cannot create dead file folder \"%1\" (%2)" -msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)" +msgstr "" -#: session_state.cc:2907 -#, fuzzy +#: session_state.cc:2823 msgid "cannot rename unused file source from %1 to %2 (%3)" -msgstr "impossibile rinominare file audio sorgente da %1 a %2 (%3)" +msgstr "" -#: session_state.cc:2925 +#: session_state.cc:2841 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "impossibile eliminare il peakfile %1 per %2 (%3)" -#: session_state.cc:3227 -#, fuzzy +#: session_state.cc:3143 msgid "could not backup old history file, current history not saved" msgstr "" -"impossibile fare copia di sicurezza del file di stato, stato attuale non " -"salvato" -#: session_state.cc:3240 -#, fuzzy +#: session_state.cc:3156 msgid "history could not be saved to %1" -msgstr "stato non salvato" +msgstr "" -#: session_state.cc:3243 -#, fuzzy +#: session_state.cc:3159 msgid "Could not remove history file at path \"%1\" (%2)" -msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)" +msgstr "" -#: session_state.cc:3247 -#, fuzzy +#: session_state.cc:3163 msgid "could not restore history file from backup %1 (%2)" -msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)" +msgstr "" -#: session_state.cc:3272 +#: session_state.cc:3188 msgid "%1: no history file \"%2\" for this session." msgstr "" -#: session_state.cc:3278 -#, fuzzy +#: session_state.cc:3194 msgid "Could not understand session history file \"%1\"" -msgstr "IO: impossibile registrare la porta %1" +msgstr "" -#: session_state.cc:3320 +#: session_state.cc:3236 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "" -#: session_state.cc:3331 +#: session_state.cc:3247 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "" -#: session_state.cc:3342 +#: session_state.cc:3258 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "" -#: session_state.cc:3350 +#: session_state.cc:3266 msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "" -#: session_state.cc:3602 -#, fuzzy +#: session_state.cc:3502 msgid "Session: unknown diskstream type in XML" -msgstr "Sessione: il file di stato XML non ha alcuna sezione diskstream" +msgstr "" -#: session_state.cc:3607 +#: session_state.cc:3507 msgid "Session: could not load diskstream via XML state" msgstr "" -#: session_time.cc:215 -msgid "Unknown JACK transport state %1 in sync callback" +#: session_time.cc:214 +msgid "Unknown transport state %1 in sync callback" msgstr "" -#: session_transport.cc:168 +#: session_transport.cc:167 msgid "Cannot loop - no loop range defined" msgstr "" -#: session_transport.cc:728 +#: session_transport.cc:739 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1094 +#: session_transport.cc:1105 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2312,9 +2108,8 @@ msgid "Skipping event with unordered time %1" msgstr "" #: smf_source.cc:410 -#, fuzzy msgid "cannot open MIDI file %1 for write" -msgstr "impossibile creare un nuovo file audio \"%1\" per %2" +msgstr "" #: sndfile_helpers.cc:32 msgid "WAV" @@ -2401,9 +2196,8 @@ msgid "Big-endian (PowerPC)" msgstr "" #: sndfilesource.cc:201 -#, fuzzy msgid "SndFileSource: cannot open file \"%1\" for %2 (%3)" -msgstr "SndFileSource: impossibile accedere al file \"%1\" (%2)" +msgstr "" #: sndfilesource.cc:209 msgid "" @@ -2420,28 +2214,25 @@ msgid "" msgstr "" #: sndfilesource.cc:302 -#, fuzzy msgid "could not allocate file %1 for reading." -msgstr "Impossibile aprire il modello di mixaggio %1 per leggere" +msgstr "" #: sndfilesource.cc:337 msgid "SndFileSource: could not seek to frame %1 within %2 (%3)" msgstr "" #: sndfilesource.cc:347 -#, fuzzy msgid "" "SndFileSource: @ %1 could not read %2 within %3 (%4) (len = %5, ret was %6)" -msgstr "FileSource: impossibile aprire \"%1\": (%2)" +msgstr "" #: sndfilesource.cc:391 sndfilesource.cc:420 msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 -#, fuzzy +#: sndfilesource.cc:396 utils.cc:510 utils.cc:534 utils.cc:548 utils.cc:567 msgid "programming error: %1 %2" -msgstr "errore di programmazione: %1" +msgstr "" #: sndfilesource.cc:523 msgid "attempt to flush a non-writable audio file source (%1)" @@ -2469,14 +2260,12 @@ msgid "%1: cannot seek to %2 (libsndfile error: %3)" msgstr "" #: sndfilesource.cc:727 -#, fuzzy msgid "SndFileSource: \"%1\" bad read retval: %2 of %5 (%3: %4)" -msgstr "SndFileSource: impossibile accedere al file \"%1\" (%2)" +msgstr "" #: sndfilesource.cc:740 sndfilesource.cc:790 sndfilesource.cc:797 -#, fuzzy msgid "SndFileSource: \"%1\" bad write (%2)" -msgstr "SndFileSource: impossibile accedere al file \"%1\" (%2)" +msgstr "" #: sndfilesource.cc:820 msgid "" @@ -2623,9 +2412,8 @@ msgid "" msgstr "" #: user_bundle.cc:47 -#, fuzzy msgid "Node for Bundle has no \"name\" property" -msgstr "Il nodo per la connessione non possiede l'attributo \"nome\"" +msgstr "" #: user_bundle.cc:59 user_bundle.cc:80 #, c-format @@ -2633,24 +2421,20 @@ msgid "Unknown node \"%s\" in Bundle" msgstr "" #: user_bundle.cc:64 -#, fuzzy msgid "Node for Channel has no \"name\" property" -msgstr "Il nodo per la connessione non possiede l'attributo \"nome\"" +msgstr "" #: user_bundle.cc:70 -#, fuzzy msgid "Node for Channel has no \"type\" property" -msgstr "Il nodo per la connessione non possiede l'attributo \"nome\"" +msgstr "" #: user_bundle.cc:85 -#, fuzzy msgid "Node for Port has no \"name\" property" -msgstr "Il nodo per la connessione non possiede l'attributo \"nome\"" +msgstr "" #: utils.cc:358 utils.cc:382 -#, fuzzy msgid "Splice" -msgstr "duplica" +msgstr "" #: utils.cc:360 utils.cc:375 msgid "Slide" @@ -2661,23 +2445,22 @@ msgid "Lock" msgstr "" #: utils.cc:365 -#, fuzzy msgid "programming error: unknown edit mode string \"%1\"" -msgstr "errore di programmazione: %1" +msgstr "" -#: utils.cc:389 utils.cc:418 +#: utils.cc:389 utils.cc:421 msgid "MIDI Timecode" msgstr "" -#: utils.cc:389 utils.cc:416 +#: utils.cc:389 utils.cc:419 msgid "MTC" msgstr "" -#: utils.cc:393 utils.cc:425 +#: utils.cc:393 utils.cc:428 msgid "MIDI Clock" msgstr "" -#: utils.cc:397 utils.cc:412 utils.cc:432 +#: utils.cc:397 utils.cc:415 utils.cc:435 msgid "JACK" msgstr "" @@ -2685,523 +2468,18 @@ msgstr "" msgid "programming error: unknown sync source string \"%1\"" msgstr "" -#: utils.cc:423 +#: utils.cc:426 msgid "M-Clock" msgstr "" -#: utils.cc:429 +#: utils.cc:432 msgid "LTC" msgstr "" -#: utils.cc:599 +#: utils.cc:602 msgid "programming error: unknown native header format: %1" msgstr "" -#: utils.cc:614 -#, fuzzy +#: utils.cc:617 msgid "cannot open directory %1 (%2)" -msgstr "impossibile accedere al file di sessione recente %1 (%2)" - -#, fuzzy -#~ msgid "MidiDiskstream: XML property channel-mask out of range" -#~ msgstr "DiskStream: canale fuori margine" - -#~ msgid "Session: you can't use a mark for auto loop" -#~ msgstr "Sessione: non si può usare un marcatore per l'auto loop" - -#, fuzzy -#~ msgid "Could not understand ardour file %1" -#~ msgstr "IO: impossibile registrare la porta %1" - -#, fuzzy -#~ msgid "control protocol \"%1\" is not known. Ignored" -#~ msgstr "" -#~ "La porta MIDI \"%1\" non disponibile: nessun controllo MTC possibile" - -#, fuzzy -#~ msgid "old-style crossfade information - no position information" -#~ msgstr "il nodo XML per la Location non ha informazioni sull'inizio" - -#~ msgid "Chunk %1 uses an unknown playlist \"%2\"" -#~ msgstr "Lo spezzone %1 usa una playlist sconosciuta \"%2\"" - -#~ msgid "Chunk %1 contains malformed playlist information" -#~ msgstr "Lo spezzone %1 contiene informazioni sulla playlist mal formate" - -#~ msgid "signal" -#~ msgstr "segnale" - -#, fuzzy -#~ msgid "Template \"%1\" already exists - template not renamed" -#~ msgstr "" -#~ "Il modello \"%1\" esiste già - non è stata creata una nuova versione" - -#~ msgid "Session: cannot create Named Selection from XML description." -#~ msgstr "Sessione: impossibile creare Named Selection dalla descizione XML" - -#, fuzzy -#~ msgid "Unable to create a backup copy of file %1 (%2)" -#~ msgstr "audiofilter: errore nel creare un nuovo file audio %1 (%2)" - -#, fuzzy -#~ msgid "programming error: realpath(%1) failed, errcode %2" -#~ msgstr "errore di programmazione: %1" - -#, fuzzy -#~ msgid "illegal or badly-formed string used for path (%1)" -#~ msgstr "il percorso indicato per il RAID è non valido o malformato" - -#, fuzzy -#~ msgid "path (%1) is ambiguous" -#~ msgstr "il percorso indicato per la ricerca RAID è ambiguo" - -#, fuzzy -#~ msgid "Could not move capture file from %1" -#~ msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)" - -#~ msgid "cannot open click emphasis soundfile %1 (%2)" -#~ msgstr "impossibile accedere al file audio di enfasi per il click %1 (%2)" - -#~ msgid "cannot read data from click emphasis soundfile" -#~ msgstr "impossibile leggere dati dal file audio di enfasi per il click" - -#, fuzzy -#~ msgid "Reset Control Protocols" -#~ msgstr "" -#~ "La porta MIDI \"%1\" non disponibile: nessun controllo MTC possibile" - -#, fuzzy -#~ msgid "Session: cannot create session stub sounds dir \"%1\" (%2)" -#~ msgstr "" -#~ "Sessione: impossibile creare la cartella sounds per la sessione " -#~ "\"%1\" (%2)" - -#, fuzzy -#~ msgid "Session: cannot create session stub midi dir \"%1\" (%2)" -#~ msgstr "" -#~ "Sessione: impossibile creare la cartella sounds per la sessione " -#~ "\"%1\" (%2)" - -#, fuzzy -#~ msgid "Session: XML state has no speakers section - assuming simple stereo" -#~ msgstr "Sessione: il file di stato XML non ha alcuna sezione sources" - -#, fuzzy -#~ msgid "could not allocate file %1" -#~ msgstr "IO: impossibile registrare la porta %1" - -#~ msgid "programming error:" -#~ msgstr "errore di programmazione:" - -#~ msgid "cannot open pan automation file %1 (%2)" -#~ msgstr "impossibile accedere al file dell'automazione pan %1 (%2)" - -#, fuzzy -#~ msgid "AudioDiskstream: Session doesn't know about a Playlist called \"%1\"" -#~ msgstr "DiskStream: La sessione non riconosce la Playlist chiamata \"%1\"" - -#, fuzzy -#~ msgid "%1: cannot create region from pending capture sources" -#~ msgstr "Playlist: impossibile creare la Regione dal file di stato" - -#~ msgid "initial state" -#~ msgstr "stato iniziale" - -#~ msgid "xfade change" -#~ msgstr "cambio dello smorzamento incrociato" - -#~ msgid "region modified" -#~ msgstr "regione modificata" - -#~ msgid "AudioTrack: diskstream \"%1\" not known by session" -#~ msgstr "AudioTrack: diskstream \"%1\" non riconosciuto dalla sessione" - -#~ msgid "cannot activate JACK client" -#~ msgstr "impossibile attivare il client JACK" - -#~ msgid "register audio input port called before engine was started" -#~ msgstr "" -#~ "la richiesta di registrazione di una porta di entrata avvenuta prima " -#~ "dell'avvio dell'applicazione" - -#~ msgid "register audio output port called before engine was started" -#~ msgstr "" -#~ "la richiesta di registrazione di una porta di uscita avvenuta prima " -#~ "dell'avvio dell'applicazione" - -#~ msgid "get_nth_physical called before engine was started" -#~ msgstr "" -#~ "richiesta di get_nth_physical avvenuta prima dell'avvio dell'applicazione" - -#, fuzzy -#~ msgid "get_port_total_latency() called with no JACK client connection" -#~ msgstr "" -#~ "richiesta di get_port_total_latency() avvenuta prima dell'avvio " -#~ "dell'applicazione" - -#~ msgid "get_port_total_latency() called before engine was started" -#~ msgstr "" -#~ "richiesta di get_port_total_latency() avvenuta prima dell'avvio " -#~ "dell'applicazione" - -#, fuzzy -#~ msgid "fade in change" -#~ msgstr "cambio dello smorzamento incrociato" - -#, fuzzy -#~ msgid "envelope change" -#~ msgstr "livello cambiato" - -#, fuzzy -#~ msgid "Error reading from peak request pipe" -#~ msgstr "Errore nel leggere dalla porta MIDI %1" - -#, fuzzy -#~ msgid "AudioSource: could not create peak thread" -#~ msgstr "Sessione: impossibile creare un nuovo route" - -#~ msgid "initial" -#~ msgstr "iniziale" - -#~ msgid "cleared" -#~ msgstr "pulito" - -#~ msgid "added event" -#~ msgstr "aggiunto evento" - -#~ msgid "removed event" -#~ msgstr "rimosso evento" - -#~ msgid "removed multiple events" -#~ msgstr "rimossi molteplici eventi" - -#~ msgid "removed range" -#~ msgstr "rimosso intervallo" - -#~ msgid "cut/copy/clear" -#~ msgstr "taglia/copia/pulisci" - -#~ msgid "copy" -#~ msgstr "copia" - -#~ msgid "ill-formed MIDI port specification in ardour rcfile (ignored)" -#~ msgstr "" -#~ "porta MIDI mal configurata nel file di configurazione di ardour (ignorato)" - -#~ msgid "Node for Connection has no \"connections\" property" -#~ msgstr "Il nodo per la connessione non ha l'attributo \"connessioni\"" - -#, fuzzy -#~ msgid "active changed" -#~ msgstr "livello cambiato" - -#~ msgid "no MIDI ports specified: no MMC or MTC control possible" -#~ msgstr "" -#~ "Nessuna porta MIDI specificata: impossibile alcun controllo MMC o MTC" - -#~ msgid "MIDI port specifications for \"%1\" are not understandable." -#~ msgstr "Le specifiche per la porta MIDI \"%1\" non sono state capite" - -#~ msgid "No MMC control (MIDI port \"%1\" not available)" -#~ msgstr "" -#~ "La porta MIDI \"%1\" non disponibile: nessun controllo MTC possibile" - -#~ msgid "No MTC support (MIDI port \"%1\" not available)" -#~ msgstr "" -#~ "La porta MIDI \"%1\" non disponibile: nessun controllo MTC possibile" - -#, fuzzy -#~ msgid "No MIDI parameter support (MIDI port \"%1\" not available)" -#~ msgstr "" -#~ "La porta MIDI \"%1\" non disponibile: nessun controllo MTC possibile" - -#~ msgid "Import: cannot open converted sound file \"%1\"" -#~ msgstr "Import: impossibile aprire il file audio convertito \"%1\"" - -#~ msgid "" -#~ "Session::import_audiofile: cannot open new file source for channel %1" -#~ msgstr "" -#~ "Session::import_audiofile: impossibile aprire il nuovo file per il canale " -#~ "%1" - -#~ msgid "Import: could not open temp file: %1" -#~ msgstr "Import: impossibile aprire il file audio temporaneo \"%1\"" - -#~ msgid "XML node describing insert is missing the `id' field" -#~ msgstr "Il nodo XML descrivente l'insert manca del campo `id'" - -#~ msgid "XML node describing insert is missing a Redirect node" -#~ msgstr "Il nodo XML descrivente l'insert manca di un nodo Redirect" - -#~ msgid "XML node describing a plugin insert is missing the `%1' information" -#~ msgstr "" -#~ "Il nodo XML descrivente un insert plugin manca della informazione `%1'" - -#, fuzzy -#~ msgid "" -#~ "XML node describing a port automation is missing the `%1' information" -#~ msgstr "" -#~ "Il nodo XML descrivente un insert LADSPA manca della informazione `%1'" - -#~ msgid "PortInsert: cannot add input port" -#~ msgstr "PortInsert: impossibile aggiungere una porta d'entrata" - -#~ msgid "PortInsert: cannot add output port" -#~ msgstr "PortInsert: impossibile aggiungere una porta d'uscita" - -#~ msgid "clear" -#~ msgstr "pulisci" - -#~ msgid "remove" -#~ msgstr "rimuovi" - -#~ msgid "error writing pan automation file (%s)" -#~ msgstr "errore nello scrivere il file per l'automazione pan (%s)" - -#~ msgid "cannot open pan automation file \"%1\" for saving (%s)" -#~ msgstr "" -#~ "impossibile aprire il file dell'automazione pan \"%1\" per salvare (%s)" - -#~ msgid "remove region" -#~ msgstr "rimuovi la regione" - -#~ msgid "separate" -#~ msgstr "separa" - -#~ msgid "split" -#~ msgstr "spezza" - -#~ msgid "nudged" -#~ msgstr "spostato" - -#, fuzzy -#~ msgid "VST: cannot load module from \"%1\"" -#~ msgstr "LADPSA: impossibile caricare il modulo da \"%1\"" - -#, fuzzy -#~ msgid "post" -#~ msgstr "incolla" - -#, fuzzy -#~ msgid "XML node describing a redirect is missing the `active' field" -#~ msgstr "Il nodo XML descrivente l'insert manca del campo `type'" - -#, fuzzy -#~ msgid "active_changed" -#~ msgstr "livello cambiato" - -#, fuzzy -#~ msgid "cannot setup master inputs" -#~ msgstr "IO: impossibile registrare la porta %1" - -#, fuzzy -#~ msgid "cannot set up master outputs" -#~ msgstr "IO: impossibile registrare la porta %1" - -#~ msgid "too many regions with names like %1" -#~ msgstr "troppe regioni con nomi come %1" - -#~ msgid "Export: no output file specified" -#~ msgstr "Esportazione: nessun file di output scpecificato" - -#~ msgid "Export: cannot open output file \"%1\" (%2)" -#~ msgstr "Esportazione: impossibile accedere al fil di output \"%1\" (%2)" - -#~ msgid "cannot initialize sample rate conversion: %1" -#~ msgstr "impossibile avviare la conversione di campionatura: %1" - -#~ msgid "Export: could not write data to output file (%1)" -#~ msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)" - -#~ msgid "Error reading from MIDI port %1" -#~ msgstr "Errore nel leggere dalla porta MIDI %1" - -#, fuzzy -#~ msgid "Session: cannot create session tape dir \"%1\" (%2)" -#~ msgstr "" -#~ "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)" - -#~ msgid "Session: cannot create session automation dir \"%1\" (%2)" -#~ msgstr "" -#~ "Sessione: impossibile creare la cartella automation per la sessione " -#~ "\"%1\" (%2)" - -#~ msgid "Session already exists. Not overwriting" -#~ msgstr "La sessione esiste già. Non sovrascrivo" - -#~ msgid "Session: XML state has no connections section" -#~ msgstr "Sessione: il file di stato XML non ha alcuna sezione connections" - -#, fuzzy -#~ msgid "cannot create dead sounds directory \"%1\"; ignored" -#~ msgstr "impossibile creare la cartella sounds \"%1\"; ignorato" - -#, fuzzy -#~ msgid "cannot create peak file directory \"%1\"; ignored" -#~ msgstr "impossibile creare la cartella per la sessione %1; ignorato" - -#, fuzzy -#~ msgid "cannot remove dead sound file %1 (%2)" -#~ msgstr "impossibile accedere al file audio per il click %1 (%2)" - -#~ msgid "tempoize: error creating name for new audio file based on %1" -#~ msgstr "" -#~ "tempoize: errore nel creare il nome per il nuovo file audio basato su %1" - -#~ msgid "tempoize: error creating new audio file %1 (%2)" -#~ msgstr "tempoize: errore nel creare un nuovo file audio %1 (%2)" - -#~ msgid "FileSource: cannot get host information for BWF header (%1)" -#~ msgstr "" -#~ "FileSource: impossibile ottenere info sull'host dall'header BWF (%1)" - -#, fuzzy -#~ msgid "cleared history" -#~ msgstr "pulito" - -#, fuzzy -#~ msgid "Error: could not write %1" -#~ msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)" - -#, fuzzy -#~ msgid "add tempo" -#~ msgstr "aggiungi regione" - -#, fuzzy -#~ msgid "replace tempo" -#~ msgstr "sostituisci la regione" - -#, fuzzy -#~ msgid "replaced meter" -#~ msgstr "sostituisci la regione" - -#, fuzzy -#~ msgid "cannot create VST chunk directory: %1" -#~ msgstr "impossibile creare la cartella sounds \"%1\"; ignorato" - -#, fuzzy -#~ msgid "cannot check VST chunk directory: %1" -#~ msgstr "impossibile determinare la cartella di lavoro corrente (%1)" - -#, fuzzy -#~ msgid "" -#~ "CoreAudioSource: file only contains %1 channels; %2 is invalid as a " -#~ "channel number" -#~ msgstr "" -#~ "SndFileSource: il file contiene solo %1 canali; %2 non è valido come " -#~ "numero di canale" - -#~ msgid "FileSource: \"%1\" not found when searching %2 using %3" -#~ msgstr "FileSource: \"%1\" non trovato nel cercare %2 utilizzando %3" - -#~ msgid "FileSource: cannot write header in %1" -#~ msgstr "FileSource: impossibile scrivere header in %1" - -#~ msgid "FileSource: cannot locate chunks in %1" -#~ msgstr "FileSource: impossibile trovare spezzoni in %1" - -#~ msgid "FileSource: cannot read header in %1" -#~ msgstr "FileSource: impossibile leggere header in %1" - -#~ msgid "FileSource: cannot check header in %1" -#~ msgstr "FileSource: impossibile controllare header in %1" - -#, fuzzy -#~ msgid "FileSource: cannot initialize peakfile for %1 as %2" -#~ msgstr "FileSource: impossibile avviare il peakfile per %1" - -#~ msgid "FileSource: cannot seek to end of file" -#~ msgstr "FileSource: impossibile cercare fino alla fine del file" - -#~ msgid "FileSource: cannot read RIFF/WAVE chunk from file" -#~ msgstr "FileSource: impossibile accedere allo spezzone RIFF/WAVE dal file" - -#~ msgid "FileSource %1: not a RIFF/WAVE file" -#~ msgstr "FileSource %1: il file non un file RIFF/WAVE" - -#~ msgid "FileSource: can't read a chunk" -#~ msgstr "FileSource: impossibile accedere ad uno spezzone" - -#~ msgid "FileSource: cannot get user information for BWF header (%1)" -#~ msgstr "FileSource: impossibile otterene info utente dall'header BWF (%1)" - -#~ msgid "FileSource[%1]: cannot update data size: %2" -#~ msgstr "FileSource[%1]: impossibile aggiornare la dimensione dei dati: %2" - -#~ msgid "FileSource: can't find RIFF chunk info" -#~ msgstr "FileSource: impossibile trovare info sullo spezzone RIFF" - -#, fuzzy -#~ msgid "FileSource: can't find RIFX chunk info" -#~ msgstr "FileSource: impossibile trovare info sullo spezzone RIFF" - -#~ msgid "FileSource: can't read RIFF chunk" -#~ msgstr "FileSource: impossibile accedere allo spezzone RIFF" - -#~ msgid "FileSource: can't find format chunk info" -#~ msgstr "FileSource: impossibile trovare info sul formato dello spezzone" - -#~ msgid "FileSource: can't read format chunk" -#~ msgstr "FileSource: impossibile leggere il formato dello spezzone" - -#~ msgid "FileSource: can't find data chunk info" -#~ msgstr "FileSource: impossibile trovare info sui dati dello spezzone" - -#~ msgid "FileSource: can't read data chunk" -#~ msgstr "FileSource: impossibile leggere dati dello spezzone" - -#~ msgid "" -#~ "FileSource: cannot read Broadcast Wave data from existing audio file " -#~ "\"%1\" (%2)" -#~ msgstr "" -#~ "FileSource: impossibile leggere dati Broadcast Wave dal file audio " -#~ "esistente \"%1\" (%2) " - -#~ msgid "" -#~ "FileSource: cannot read Broadcast Wave coding history from audio file " -#~ "\"%1\" (%2)" -#~ msgstr "" -#~ "FileSource: impossibile leggere lo storico del Broadcast Wave dal file " -#~ "audio \"%1\" (%2)" - -#, fuzzy -#~ msgid "" -#~ "FileSource \"%1\" does not use valid sample format.\n" -#~ "This is probably a programming error." -#~ msgstr "" -#~ "FileSource \"%1\" non usa il formato floating point.\n" -#~ "Questo probabilmente un errore di programmazione." - -#~ msgid "FileSource \"%1\" has no \"data\" chunk" -#~ msgstr "FileSource \"%1\" non ha uno spezzone di \"dati\"" - -#~ msgid "" -#~ "%1: data length in header (%2) differs from implicit size in file (%3)" -#~ msgstr "" -#~ "%1: la lunghezza dei dati nell'header (%2) diversa dalla dimensione " -#~ "implicita nel file (%3)" - -#~ msgid "\"%1\" has a sample rate of %2 instead of %3 as used by this session" -#~ msgstr "" -#~ "\"%1\" ha una sample rate di %2 anzicch di %3 come il resto della sessione" - -#~ msgid "FileSource: cannot write WAVE chunk: %1" -#~ msgstr "FileSource: impossibile scrivere lo spezzone WAVE: %1" - -#~ msgid "FileSource: cannot write format chunk: %1" -#~ msgstr "FileSource: impossibile scrivere il formato dello spezzone: %1" - -#, fuzzy -#~ msgid "cannot create feedback request pipe (%1)" -#~ msgstr "Errore nel leggere dalla porta MIDI %1" - -#, fuzzy -#~ msgid "Error reading from feedback request pipe" -#~ msgstr "Errore nel leggere dalla porta MIDI %1" - -#~ msgid "could not create crossfade object in playlist %1" -#~ msgstr "impossibile creare smorzamento incrociato nella playlist %1" - -#, fuzzy -#~ msgid "Could not find a template called %1 in %2" -#~ msgstr "Impossibile aprire il modello di mixaggio %1 per leggere" +msgstr "" diff --git a/libs/ardour/po/nn.po b/libs/ardour/po/nn.po index e5c22966c4..2356a737f4 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-09-03 07:59-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2011-09-13 22:43+0100\n" "Last-Translator: Eivind ØdegÃ¥rd <meinmycell-lists@yahoo.no>\n" "Language-Team: Nynorsk <i18n-nn@lister.ping.uio.no>\n" @@ -126,7 +126,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:643 -#: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 +#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "Programmeringsfeil: %1" @@ -195,66 +195,21 @@ msgstr "greier ikkje lasta VAMP-innstikket \"%1\"" msgid "VAMP Plugin \"%1\" could not be loaded" msgstr "VAMP-innstikket \"%1\" vart ikkje lasta" -#: audioengine.cc:186 -msgid "" -"This version of JACK is old - you should upgrade to a newer version that " -"supports jack_port_type_get_buffer_size()" +#: audioengine.cc:488 +msgid "looking for backends in %1\n" msgstr "" -"Denne utgÃ¥va av JACK er gamal - du bør oppgradera til ei utgÃ¥ve som støttar " -"jack_port_type_get_buffer_size()" - -#: audioengine.cc:190 -msgid "Connect session to engine" -msgstr "Kople økta til maskin" -#: audioengine.cc:843 -msgid "" -"a port with the name \"%1\" already exists: check for duplicated track/bus " -"names" +#: audioengine.cc:511 +msgid "AudioEngine: cannot load module \"%1\" (%2)" msgstr "" -"ein port med namnet \"%1\" finst frÃ¥ før: sjekk opp dublettar i namn pÃ¥ spor " -"eller bussar" -#: audioengine.cc:845 session.cc:1698 -#, fuzzy -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." +#: audioengine.cc:517 +msgid "AudioEngine: backend at \"%1\" has no descriptor function." 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:848 -msgid "AudioEngine: cannot register port \"%1\": %2" -msgstr "AudioEngine: greier ikkje registrera porten \"%1\": %2" - -#: audioengine.cc:878 -msgid "unable to create port: %1" -msgstr "greidde ikkje laga port: %1" - -#: audioengine.cc:932 -msgid "connect called before engine was started" -msgstr "tilkoplinga vart oppkalla frø tenaren starta" - -#: audioengine.cc:958 -msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" -msgstr "Lydmaskineri: Klarte ikkje kopla %1 (%2) til %3 (%4)." - -#: audioengine.cc:973 audioengine.cc:1004 -msgid "disconnect called before engine was started" -msgstr "frÃ¥koplinga vart oppkalla før tenaren starta" -#: 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:1104 -msgid "get_ports called before engine was started" -msgstr "get_ports vart oppkalla før tenaren starta" - -#: audioengine.cc:1427 -msgid "failed to connect to JACK" -msgstr "greidde ikkje kopla til JACK" +#: audioengine.cc:589 +msgid "Could not create backend for %1: %2" +msgstr "" #: audioregion.cc:1643 msgid "" @@ -321,9 +276,8 @@ msgid "%1: could not write peak file data (%2)" msgstr "%1: greidde ikkje skriva toppfildata (%2)" #: audiosource.cc:924 -#, fuzzy msgid "could not truncate peakfile %1 to %2 (error: %3)" -msgstr "kan ikkje døypa om %1 til %2 (%3)" +msgstr "" #: auditioner.cc:87 msgid "no outputs available for auditioner - manual connection required" @@ -422,18 +376,16 @@ msgid "Instantiating mandatory control protocol %1" msgstr "Lagar obligatorisk kontrollprotokolløkt %1" #: control_protocol_manager.cc:222 -#, fuzzy msgid "looking for control protocols in %1\n" -msgstr "ser etter kontrollprotokollar i %1\n" +msgstr "" #: control_protocol_manager.cc:247 msgid "Control protocol %1 not usable" msgstr "Kontrollprotokollen %1 er ikkje brukande" #: control_protocol_manager.cc:264 -#, fuzzy msgid "Control surface protocol discovered: \"%1\"\n" -msgstr "Kontrollflateprotokollen \"%1\" oppdaga" +msgstr "" #: control_protocol_manager.cc:282 msgid "ControlProtocolManager: cannot load module \"%1\" (%2)" @@ -460,7 +412,7 @@ msgstr "finn ikkje prosessor-MHz i /proc/cpuinfo" msgid "audio" msgstr "lyd" -#: data_type.cc:28 session.cc:1640 session.cc:1643 +#: data_type.cc:28 session.cc:1791 session.cc:1794 msgid "MIDI" msgstr "MIDI" @@ -546,24 +498,20 @@ msgid "Session rate" msgstr "Øktrate" #: export_format_specification.cc:537 -#, fuzzy msgid "normalize" -msgstr "normaliser, " +msgstr "" #: export_format_specification.cc:541 -#, fuzzy msgid "trim" -msgstr "tilskjering, " +msgstr "" #: export_format_specification.cc:543 -#, fuzzy msgid "trim start" -msgstr "start tilskjering, " +msgstr "" #: export_format_specification.cc:545 -#, fuzzy msgid "trim end" -msgstr "skjer sluttpunktet, " +msgstr "" #: export_formats.cc:49 msgid "Shaped Noise" @@ -577,7 +525,7 @@ msgstr "Trekant" msgid "Rectangular" msgstr "Firkant" -#: export_formats.cc:52 session.cc:4861 session.cc:4877 +#: export_formats.cc:52 session.cc:5014 session.cc:5030 msgid "None" msgstr "Ingen" @@ -622,9 +570,8 @@ msgid "Editor: cannot open \"%1\" as export file for CD marker file" msgstr "Redigering: greier ikkje opna \"%1\" som eksportfil for CD-markørfil" #: export_handler.cc:417 export_handler.cc:420 -#, fuzzy msgid "an error occured while writing a TOC/CUE file: %1" -msgstr "ompunktinga var mislukka: %1" +msgstr "" #: export_handler.cc:642 export_handler.cc:700 msgid "Cannot convert %1 to Latin-1 text" @@ -635,33 +582,28 @@ msgid "Searching for export formats in %1" msgstr "Leitar etter eksportformat i %1" #: export_profile_manager.cc:99 -#, fuzzy msgid "Unable to create export format directory %1: %2" -msgstr "greier ikkje laga øktmappa pÃ¥ stigen %1 : %2" +msgstr "" #: export_profile_manager.cc:257 -#, fuzzy msgid "Unable to remove export preset %1: %2" -msgstr "greidde ikkje laga port: %1" +msgstr "" #: export_profile_manager.cc:347 msgid "Selection" msgstr "Val" #: export_profile_manager.cc:600 -#, fuzzy msgid "Unable to rename export format %1 to %2: %3" -msgstr "kan ikkje døypa om filkjelda frÃ¥ %1 til %2 (%3)" +msgstr "" #: export_profile_manager.cc:632 -#, fuzzy msgid "Unable to remove export profile %1: %2" -msgstr "Greier ikkje laga tryggingskopi av tilstandsfila %1 (%2)" +msgstr "" #: export_profile_manager.cc:649 -#, fuzzy msgid "empty format" -msgstr "format" +msgstr "" #: export_profile_manager.cc:818 msgid "No timespan has been selected!" @@ -694,7 +636,7 @@ msgid "" msgstr "" "%1 støttar berre %2 kanalar, men du har %3 kanalar i kanaloppsettet ditt" -#: file_source.cc:198 session_state.cc:2891 +#: file_source.cc:198 session_state.cc:2807 msgid "" "there are already 1000 files with names like %1; versioning discontinued" msgstr "Det er alt 1000 filer med namn som %1, kuttar ut versjonsnamn" @@ -741,9 +683,8 @@ msgid "cannot rename file %1 to %2 (%3)" msgstr "kan ikkje døypa om %1 til %2 (%3)" #: filesystem_paths.cc:73 -#, fuzzy msgid "Cannot create Configuration directory %1 - cannot run" -msgstr "greier ikkje laga lydmappa \"%1\", hoppa over" +msgstr "" #: filesystem_paths.cc:78 msgid "" @@ -795,23 +736,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:205 +#: globals.cc:207 msgid "Could not set system open files limit to \"unlimited\"" msgstr "Greidde ikkje setja systemgrensa for opne filer til \"uavgrensa\"" -#: globals.cc:207 +#: globals.cc:209 msgid "Could not set system open files limit to %1" msgstr "Greidde ikkje setja grensa for opne systemfiler til %1" -#: globals.cc:211 +#: globals.cc:213 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:215 +#: globals.cc:217 msgid "Could not get system open files limit (%1)" msgstr "Greidde ikkje fÃ¥ tak i grensa for opne systemfiler (%1)" -#: globals.cc:266 +#: globals.cc:268 msgid "Loading configuration" msgstr "Lastar oppsettet" @@ -837,9 +778,8 @@ msgid "Track %1 of %2 contained no usable MIDI data" msgstr "Spor %1 av %2 inneheld ingen brukbare MIDI-data" #: import.cc:453 -#, fuzzy msgid "MIDI file %1 was not readable (no reason available)" -msgstr "MIDI-fila %1 kan ikkje lesast (og me finn ingen grunn til det" +msgstr "" #: import.cc:499 msgid "Import: cannot open input sound file \"%1\"" @@ -858,9 +798,8 @@ msgid "Failed to remove some files after failed/cancelled import operation" msgstr "" #: instrument_info.cc:40 instrument_info.cc:61 -#, fuzzy msgid "Unknown" -msgstr "ukjend" +msgstr "" #: instrument_info.cc:230 msgid "preset %1 (bank %2)" @@ -934,60 +873,56 @@ msgstr "IU: feilforma streng i XML-punktet for utgangane \"%1\"" msgid "IO: bad output string in XML node \"%1\"" msgstr "IU: feil utgangsstreng i XML-punktet \"%1\"" -#: io.cc:1410 +#: io.cc:1411 #, c-format msgid "%s %u" msgstr "%s %u" -#: io.cc:1457 +#: io.cc:1458 #, c-format msgid "%s in" msgstr " %s inn" -#: io.cc:1459 +#: io.cc:1460 #, c-format msgid "%s out" msgstr "%s ut" -#: io.cc:1534 session.cc:494 session.cc:523 +#: io.cc:1535 session.cc:686 session.cc:715 msgid "mono" msgstr "mono" -#: io.cc:1536 session.cc:507 session.cc:537 +#: io.cc:1537 session.cc:699 session.cc:729 msgid "L" msgstr "V" -#: io.cc:1536 session.cc:509 session.cc:539 +#: io.cc:1537 session.cc:701 session.cc:731 msgid "R" msgstr "H" -#: io.cc:1538 io.cc:1544 +#: io.cc:1539 io.cc:1545 #, c-format msgid "%d" msgstr "%d" -#: ladspa_plugin.cc:88 +#: ladspa_plugin.cc:86 msgid "LADSPA: module has no descriptor function." msgstr "LADSPA: modulen har ingen skildringsfunksjon" -#: ladspa_plugin.cc:93 +#: ladspa_plugin.cc:91 msgid "LADSPA: plugin has gone away since discovery!" msgstr "LADSPA: tilleggsprogrammet har vorte borte sidan det vart oppdaga!" -#: ladspa_plugin.cc:100 +#: ladspa_plugin.cc:98 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:297 -#, fuzzy msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " "in the plugin design, and presets may be invalid" msgstr "" -"ein ulovleg parameter vart brukt med tilleggsprogrammet \"%1\". Dette kan " -"tyda pÃ¥ feil i korleis tilleggsprogrammet er utforma, og at eventuelle " -"ferdigprogram kan vera ugyldige." #: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" @@ -1057,7 +992,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:4362 session_state.cc:1114 +#: location.cc:842 session.cc:4516 session_state.cc:1031 msgid "session" msgstr "økt" @@ -1132,9 +1067,8 @@ msgid "" msgstr "%1: I/U-oppsettsendringa %4 ba om Ã¥ bruka %2, men kanaloppsettet er %3" #: midi_diskstream.cc:219 -#, fuzzy msgid "MidiDiskstream: Playlist \"%1\" isn't a midi playlist" -msgstr "MIDI-diskstraum: Spelelista \"%1\" er ikkje ei midispeleliste" +msgstr "" #: midi_diskstream.cc:270 msgid "MidiDiskstream %1: there is no existing playlist to make a copy of!" @@ -1232,22 +1166,22 @@ msgstr "polaritetskontroll" msgid "solo control" msgstr "solo kontroll" -#: mtc_slave.cc:235 +#: mtc_slave.cc:238 msgid "MTC Slave: atomic read of current time failed, sleeping!" msgstr "MTC-slave: greidde ikkje lesa gyldig tid. Søv." -#: mtc_slave.cc:359 +#: mtc_slave.cc:361 msgid "" "Unknown rate/drop value %1 in incoming MTC stream, session values used " "instead" msgstr "" "Ukjent rate/sleppverdi %1 i innkomande MTC-straum, bruker øktverdiar i staden" -#: mtc_slave.cc:379 +#: mtc_slave.cc:381 msgid "Session framerate adjusted from %1 TO: MTC's %2." msgstr "" -#: mtc_slave.cc:393 +#: mtc_slave.cc:395 msgid "Session and MTC framerate mismatch: MTC:%1 %2:%3." msgstr "" @@ -1272,9 +1206,8 @@ msgid "insert region" msgstr "set inn bolk" #: operations.cc:29 -#, fuzzy msgid "drag region brush" -msgstr "dra bolk-børsting" +msgstr "" #: operations.cc:30 msgid "region drag" @@ -1312,20 +1245,19 @@ msgstr "Panoreringa fekk XML-data for %1 - ignorert" msgid "looking for panners in %1" msgstr "ser etter panoreringar i %1" -#: panner_manager.cc:99 -#, fuzzy +#: panner_manager.cc:100 msgid "Panner discovered: \"%1\" in %2" -msgstr "Fann panoreringar: \"%1\"" +msgstr "" -#: panner_manager.cc:116 +#: panner_manager.cc:117 msgid "PannerManager: cannot load module \"%1\" (%2)" msgstr "Panoreringsstyring: kan ikkje lasta modulen \"%1\" (%2)" -#: panner_manager.cc:123 +#: panner_manager.cc:124 msgid "PannerManager: module \"%1\" has no descriptor function." msgstr "Panoreringsstyring: modulen \"%1\" har ingen skildringsfunksjon." -#: panner_manager.cc:186 +#: panner_manager.cc:187 msgid "no panner discovered for in/out = %1/%2" msgstr "fann inga panorering for inn/ut = %1/%2" @@ -1356,22 +1288,16 @@ msgid "Could not construct playlist for PlaylistSource from session data!" msgstr "Greidde ikkje byggja speleliste for PlaylistSource frÃ¥ øktdata!" #: 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: " @@ -1428,22 +1354,16 @@ msgid "LADSPA: module \"%1\" has no descriptor function." msgstr "LADSPA: modulen \"%1\" har ingen skildringsfunksjon." #: plugin_manager.cc:602 -#, fuzzy msgid "" "VST plugin %1 does not support processReplacing, and so cannot be used in %2 " "at this time" msgstr "" -"VST-tilleggsprogrammet %1 støttar ikkje prosessbyte, og kan ikkje brukast i " -"Ardour nett no." #: plugin_manager.cc:709 -#, fuzzy msgid "" "linuxVST plugin %1 does not support processReplacing, and so cannot be used " "in %2 at this time" msgstr "" -"VST-tilleggsprogrammet %1 støttar ikkje prosessbyte, og kan ikkje brukast i " -"Ardour nett no." #: plugin_manager.cc:870 msgid "unknown plugin status type \"%1\" - all entries ignored" @@ -1453,11 +1373,7 @@ msgstr "\"%1\" er ein ukjend utvidingsstatustype, sÃ¥g bort frÃ¥ alt" msgid "unknown plugin type \"%1\" - ignored" msgstr "\"%1\" er ein ukjend innstikktype - hoppa over" -#: port.cc:367 -msgid "get_connected_latency_range() called while disconnected from JACK" -msgstr "get_connected_latency_range() kalla opp dÃ¥ JACK vart frÃ¥kopla" - -#: port.cc:450 +#: port.cc:410 msgid "could not reregister %1" msgstr "greidde ikkje registrera %1." @@ -1474,6 +1390,36 @@ msgid "non-port insert XML used for port plugin insert" msgstr "" "tappingspunkt-XML som ikkje er ein port er brukt for porttilleggstapping" +#: port_manager.cc:270 +msgid "" +"a port with the name \"%1\" already exists: check for duplicated track/bus " +"names" +msgstr "" +"ein port med namnet \"%1\" finst frÃ¥ før: sjekk opp dublettar i namn pÃ¥ spor " +"eller bussar" + +#: port_manager.cc:272 +msgid "" +"No more ports are available. You will need to stop %1 and restart with more " +"ports if you need this many tracks." +msgstr "" + +#: port_manager.cc:275 +msgid "AudioEngine: cannot register port \"%1\": %2" +msgstr "AudioEngine: greier ikkje registrera porten \"%1\": %2" + +#: port_manager.cc:314 +msgid "unable to create port: %1" +msgstr "greidde ikkje laga port: %1" + +#: port_manager.cc:401 +msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" +msgstr "Lydmaskineri: Klarte ikkje kopla %1 (%2) til %3 (%4)." + +#: port_manager.cc:453 port_manager.cc:454 +msgid "Re-establising port %1 failed" +msgstr "" + #: processor.cc:207 msgid "No %1 property flag in element %2" msgstr "Ikkje noko %1-eigenskapsflagg i elementet %2" @@ -1482,44 +1428,41 @@ msgstr "Ikkje noko %1-eigenskapsflagg i elementet %2" msgid "No child node with active property" msgstr "Ingen undernode med aktiv eigenskap" -#: rc_configuration.cc:93 +#: rc_configuration.cc:88 msgid "Loading system configuration file %1" msgstr "Lastar systemoppsettfila %1" -#: rc_configuration.cc:97 +#: rc_configuration.cc:92 msgid "%1: cannot read system configuration file \"%2\"" msgstr "%1: greier ikkje lesa systemoppsettfila \"%2\"" -#: rc_configuration.cc:102 +#: rc_configuration.cc:97 msgid "%1: system configuration file \"%2\" not loaded successfully." msgstr "%1: greidde ikkje lasta systemoppsettfila \"%2\" skikkeleg." -#: rc_configuration.cc:106 -#, fuzzy +#: rc_configuration.cc:101 msgid "" "Your system %1 configuration file is empty. This probably means that there " "was an error installing %1" msgstr "" -"Oppsettsfila for %1 er tom. Dette tyder truleg at det var ein feil dÃ¥ %1 " -"vart installert." -#: rc_configuration.cc:121 +#: rc_configuration.cc:116 msgid "Loading user configuration file %1" msgstr "Lastar brukaroppsettfila %1" -#: rc_configuration.cc:125 +#: rc_configuration.cc:120 msgid "%1: cannot read configuration file \"%2\"" msgstr "%1: greier ikkje lesa oppsettfila \"%2\"" -#: rc_configuration.cc:130 +#: rc_configuration.cc:125 msgid "%1: user configuration file \"%2\" not loaded successfully." msgstr "%1: greidde ikkje lasta brukaroppsettfila \"%2\" skikkeleg." -#: rc_configuration.cc:134 +#: rc_configuration.cc:129 msgid "your %1 configuration file is empty. This is not normal." msgstr "%1-oppsettsfila di er tom. Dette er ikkje normalt." -#: rc_configuration.cc:151 +#: rc_configuration.cc:146 msgid "Config file %1 not saved" msgstr "Oppsettfila %1 er ikkje lagra" @@ -1559,36 +1502,40 @@ msgstr "Import: src_new()-funkjsonen lukkast ikkje: %1" msgid "return %1" msgstr "retur %1" -#: route.cc:1105 route.cc:2581 +#: route.cc:1075 route.cc:2528 msgid "unknown Processor type \"%1\"; ignored" msgstr "\"%1\" er ein ukjend prosesseringstype, hoppa over" -#: route.cc:1117 +#: route.cc:1087 msgid "processor could not be created. Ignored." msgstr "greidde ikkje laga prosessering. Hoppa over." -#: route.cc:2007 route.cc:2234 +#: route.cc:1962 route.cc:2187 msgid "Bad node sent to Route::set_state() [%1]" msgstr "Feil punkt sendt til Route::set_state()-funksjonen [%1]" -#: route.cc:2067 +#: route.cc:2022 msgid "Pannable state found for route (%1) without a panner!" msgstr "Fann panoreringsstatus for ruta (%1) utan panorering!" -#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 +#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "feilforma tingingsnykjelstreng i tilstandsfil! [%1] ... hoppa over." +#: route.cc:2311 +msgid "Converting deprecated order key for %1 using Editor order %2" +msgstr "" + #: route_group.cc:459 msgid "You cannot subgroup MIDI tracks at this time" msgstr "Du kan ikkje laga undergrupper for MIDI-spor no" -#: rb_effect.cc:233 rb_effect.cc:274 +#: rb_effect.cc:234 rb_effect.cc:275 msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" msgstr "" "lag tempo: greidde ikkje lesa data frÃ¥ %1 ved %2 (ville ha %3, fekk %4)" -#: rb_effect.cc:303 rb_effect.cc:325 +#: rb_effect.cc:304 rb_effect.cc:326 msgid "error writing tempo-adjusted data to %1" msgstr "greidde ikkje skriva tempo-justert fil til %1" @@ -1601,192 +1548,172 @@ msgid "send %1" msgstr "send %1" #: send.cc:65 -#, fuzzy msgid "programming error: send created using role %1" -msgstr "programmeringsfeil: ukjend redigeringsmodus-streng \"%1\"" - -#: session.cc:347 -msgid "Set block size and sample rate" -msgstr "Set blokkstorleik og punktrate" +msgstr "" -#: session.cc:352 -msgid "Using configuration" -msgstr "Bruker oppsett" +#: session.cc:344 +msgid "Connect to engine" +msgstr "Kople til maskin" -#: session.cc:377 -msgid "LTC In" -msgstr "" +#: session.cc:349 +msgid "Session loading complete" +msgstr "Ferdig Ã¥ lasta økta." -#: session.cc:378 -msgid "LTC Out" +#: session.cc:421 +msgid "Set up LTC" msgstr "" -#: session.cc:404 -msgid "LTC-in" +#: session.cc:423 +msgid "Set up Click" msgstr "" -#: session.cc:405 -msgid "LTC-out" -msgstr "" +#: session.cc:425 +msgid "Set up standard connections" +msgstr "Set opp standartilkoplingar" -#: session.cc:434 +#: session.cc:635 msgid "could not setup Click I/O" msgstr "greidde ikkje setja opp klikk-I/U" -#: session.cc:461 -msgid "cannot setup Click I/O" -msgstr "greier ikkje setja opp klikk-I/U" - -#: session.cc:464 -msgid "Compute I/O Latencies" -msgstr "Rekn ut I/U-seinkingar" - -#: session.cc:470 -msgid "Set up standard connections" -msgstr "Set opp standartilkoplingar" - -#: session.cc:491 +#: session.cc:683 #, c-format msgid "out %<PRIu32>" msgstr "ut %<PRIu32>" -#: session.cc:505 +#: session.cc:697 #, c-format msgid "out %<PRIu32>+%<PRIu32>" msgstr "ut %<PRIu32>+%<PRIu32>" -#: session.cc:520 +#: session.cc:712 #, c-format msgid "in %<PRIu32>" msgstr "inn %<PRIu32>" -#: session.cc:534 +#: session.cc:726 #, c-format msgid "in %<PRIu32>+%<PRIu32>" msgstr "inn %<PRIu32>+%<PRIu32>" -#: session.cc:570 -msgid "Setup signal flow and plugins" -msgstr "Set opp signalflyt og innstikk" - -#: session.cc:614 -msgid "Connect to engine" -msgstr "Kople til maskin" - -#: session.cc:645 +#: session.cc:790 msgid "cannot connect master output %1 to %2" msgstr "greier ikkje kopla til hovudutgangane %1 til %2" -#: session.cc:704 +#: session.cc:849 msgid "monitor" msgstr "lytting" -#: session.cc:749 +#: session.cc:894 msgid "cannot connect control input %1 to %2" msgstr "greier ikkje kopla til kontrollinngangane %1 til %2" -#: session.cc:769 +#: session.cc:914 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "Greidde ikkje finna føretrekt I/U for lyttebussen (%1)" -#: session.cc:800 +#: session.cc:945 msgid "cannot connect control output %1 to %2" msgstr "greier ikkje kopla til kontrollutgangane %1 til %2" -#: session.cc:864 +#: session.cc:1009 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "greier ikkje laga Lytting: det er ikkje rÃ¥d Ã¥ lytta pÃ¥ nokon bolkar." -#: session.cc:1043 +#: session.cc:1193 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "Økt: du kan ikkje bruka denne staden for autoinnslag (start<=slutt)" -#: session.cc:1083 +#: session.cc:1233 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" msgstr "" -#: session.cc:1396 +#: session.cc:1547 msgid "feedback loop setup between %1 and %2" msgstr "rundgang-lykkjeoppsett mellom %1 og %2" -#: session.cc:1692 +#: session.cc:1843 msgid "Session: could not create new midi track." msgstr "Økt: greidde ikkje laga nytt midispor." -#: session.cc:1875 session.cc:1878 +#: session.cc:1849 +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 "" + +#: session.cc:2026 session.cc:2029 msgid "Audio" msgstr "Lyd" -#: session.cc:1902 session.cc:1910 session.cc:1987 session.cc:1995 +#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "" "greier ikkje stilla inn %1 inn/%2 ut-innstillingane for det nye lydsporet" -#: session.cc:1933 +#: session.cc:2084 msgid "Session: could not create new audio track." msgstr "Økt: greidde ikkje laga nytt lydspor." -#: session.cc:1965 session.cc:1968 +#: session.cc:2116 session.cc:2119 msgid "Bus" msgstr "Buss" -#: session.cc:2018 +#: session.cc:2169 msgid "Session: could not create new audio route." msgstr "Økt: greidde ikkje laga ny lydrute." -#: session.cc:2077 session.cc:2087 +#: session.cc:2228 session.cc:2238 msgid "Session: UINT_MAX routes? impossible!" msgstr "Økt: UINT_MAX-ruter? GÃ¥r ikkje an!" -#: session.cc:2109 +#: session.cc:2260 msgid "Session: cannot create track/bus from template description" msgstr "Økt: greier ikkje laga spor/buss frÃ¥ malskildringa" -#: session.cc:2135 +#: session.cc:2286 msgid "Session: could not create new route from template" msgstr "Økt: greidde ikkje laga ny lydrute frÃ¥ malen" -#: session.cc:2164 +#: session.cc:2315 msgid "Adding new tracks/busses failed" msgstr "" -#: session.cc:3265 +#: session.cc:3419 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "" "ALVORLEG FEIL! Greidde ikkje finna ei høveleg utgÃ¥ve av %1 for Ã¥ døypa om" -#: session.cc:3385 session.cc:3443 +#: session.cc:3539 session.cc:3597 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "Det er alt %1 opptak for %2, og eg synest det er for mange." -#: session.cc:3833 +#: session.cc:3987 msgid "send ID %1 appears to be in use already" msgstr "send-IDen %1 ser ut til Ã¥ vera i bruk frÃ¥ før" -#: session.cc:3845 -#, fuzzy +#: session.cc:3999 msgid "aux send ID %1 appears to be in use already" -msgstr "send-IDen %1 ser ut til Ã¥ vera i bruk frÃ¥ før" +msgstr "" -#: session.cc:3857 +#: session.cc:4011 msgid "return ID %1 appears to be in use already" msgstr "retur-IDen %1 ser ut til Ã¥ vera i bruk frÃ¥ før" -#: session.cc:3869 +#: session.cc:4023 msgid "insert ID %1 appears to be in use already" msgstr "send-IDen %2 ser ut til Ã¥ vera i bruk frÃ¥ før" -#: session.cc:3996 +#: session.cc:4150 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "Kan ikkje skriva eit omrÃ¥de der slutten <= starten (td. %1 <= %2)" -#: session.cc:4025 +#: session.cc:4179 msgid "too many bounced versions of playlist \"%1\"" msgstr "for mange samanmiksa versjonar av spelelista \"%1\"" -#: session.cc:4035 +#: session.cc:4189 msgid "cannot create new audio file \"%1\" for %2" msgstr "greier ikkje laga ny lydfil \"%1\" for %2" @@ -1799,10 +1726,8 @@ msgid "cannot read data from click soundfile" msgstr "greier ikkje lesa data frÃ¥ klikklydfila" #: session_command.cc:87 -#, fuzzy msgid "Tried to reconstitute a MementoCommand with no contents, failing. id=%1" msgstr "" -"Prøvde Ã¥ byggja opp att ein memento-kommando utan innhald, og mislukkast. id=" #: session_command.cc:148 msgid "" @@ -1831,11 +1756,11 @@ msgstr "Undermappa for økta finst ikkje i stigen %1" msgid "Session: cannot have two events of type %1 at the same frame (%2)." msgstr "Økt: du kan ikkje ha to handlingar av typen %1 pÃ¥ same ramma (%2)." -#: session_export.cc:126 +#: session_export.cc:125 msgid "%1: cannot seek to %2 for export" msgstr "%1: greier ikkje finna %2 for eksportering" -#: session_export.cc:183 +#: session_export.cc:182 msgid "Export ended unexpectedly: %1" msgstr "" @@ -1845,10 +1770,6 @@ msgid "" "of this session." msgstr "" -#: session_midi.cc:428 -msgid "Session: could not send full MIDI time code" -msgstr "Økt: greidde ikke senda full MIDI-tidskode" - #: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "Økt: greidde ikkje senda kvartramme-MTC-melding (%1)" @@ -1857,97 +1778,95 @@ 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:133 +#: session_process.cc:132 msgid "Session: error in no roll for %1" msgstr "Økt: feil pÃ¥ ingen rull for %1" -#: session_process.cc:1158 +#: session_process.cc:1157 msgid "Programming error: illegal event type in process_event (%1)" msgstr "Programmeringsfeil: ulovleg handlingstype i process-event (%1)" -#: session_state.cc:139 -#, fuzzy +#: session_state.cc:140 msgid "Could not use path %1 (%2)" -msgstr "Greidde ikkje bruka stigen %1 (%s)" +msgstr "" -#: session_state.cc:267 +#: session_state.cc:184 msgid "solo cut control (dB)" msgstr "solokutt-kontroll (dB)" -#: session_state.cc:360 +#: session_state.cc:208 +msgid "Set block size and sample rate" +msgstr "Set blokkstorleik og punktrate" + +#: session_state.cc:213 +msgid "Using configuration" +msgstr "Bruker oppsett" + +#: session_state.cc:325 msgid "Reset Remote Controls" msgstr "Still tilbake fjernkontrollar" -#: session_state.cc:385 -msgid "Session loading complete" -msgstr "Ferdig Ã¥ lasta økta." - -#: session_state.cc:452 +#: session_state.cc:417 msgid "Session: cannot create session peakfile folder \"%1\" (%2)" msgstr "Økt: greier ikkje laga mappa \"%1\" for økttoppfiler (%2)" -#: session_state.cc:459 +#: session_state.cc:424 msgid "Session: cannot create session sounds dir \"%1\" (%2)" msgstr "Økt: greier ikkje laga øktmappa \"%1\" for lydfiler (%2)" -#: session_state.cc:466 +#: session_state.cc:431 msgid "Session: cannot create session midi dir \"%1\" (%2)" msgstr "Økt: greier ikkje laga midimappa \"%1\" for økta (%2)" -#: session_state.cc:473 +#: session_state.cc:438 msgid "Session: cannot create session dead sounds folder \"%1\" (%2)" msgstr "Økt: greier ikkje laga mappa \"%1\" for daudlyd (%2)" -#: session_state.cc:480 +#: session_state.cc:445 msgid "Session: cannot create session export folder \"%1\" (%2)" msgstr "Økt: greidde ikkje laga mappa \"%1\" for eksportlyd (%2)" -#: session_state.cc:487 +#: session_state.cc:452 msgid "Session: cannot create session analysis folder \"%1\" (%2)" msgstr "Økt: greidde ikkje laga mappa \"%1\" for øktanalyse (%2)" -#: session_state.cc:494 +#: session_state.cc:459 msgid "Session: cannot create session plugins folder \"%1\" (%2)" msgstr "Økt: greier ikkje laga utvidingmappa \"%1\" for økta (%2)" -#: session_state.cc:501 -#, fuzzy +#: session_state.cc:466 msgid "Session: cannot create session externals folder \"%1\" (%2)" -msgstr "Økt: greidde ikkje laga mappa \"%1\" for øktanalyse (%2)" +msgstr "" -#: session_state.cc:515 +#: session_state.cc:480 msgid "Session: cannot create session folder \"%1\" (%2)" msgstr "Økt: greidde ikkje laga øktmappa \"%1\" (%2)" -#: session_state.cc:548 -#, fuzzy +#: session_state.cc:514 msgid "Could not open %1 for writing session template" -msgstr "Greidde ikkje opna %1 for Ã¥ skriva miksarmal" +msgstr "" -#: session_state.cc:554 -#, fuzzy +#: session_state.cc:520 msgid "Could not open session template %1 for reading" -msgstr "Greidde ikkje opna miksarmalen %1 for Ã¥ lesa han" +msgstr "" -#: session_state.cc:573 +#: session_state.cc:539 msgid "master" msgstr "master" -#: session_state.cc:636 -#, fuzzy +#: session_state.cc:600 msgid "Could not remove pending capture state at path \"%1\" (%2)" -msgstr "Greidde ikkje fjerna opptaksstatusen pÃ¥ stigen \"%1\" (%2)" +msgstr "" -#: session_state.cc:660 +#: session_state.cc:624 msgid "could not rename snapshot %1 to %2 (%3)" msgstr "greidde ikkje døypa om snøggbiletet %1 til %2 (%3)" -#: session_state.cc:688 -#, fuzzy +#: session_state.cc:652 msgid "Could not remove session file at path \"%1\" (%2)" -msgstr "Greidde ikkje fjerna opptaksstatusen pÃ¥ stigen \"%1\" (%2)" +msgstr "" -#: session_state.cc:761 +#: session_state.cc:669 msgid "" "the %1 audio engine is not connected and state saving would lose all I/O " "connections. Session not saved" @@ -1955,138 +1874,134 @@ msgstr "" "lydmotoren i %1 er ikkje kopla til, og Ã¥ lagra statusen ville kasta bort " "alle I/U-tilkoplingar. Økta er ikkje lagra" -#: session_state.cc:812 +#: session_state.cc:720 msgid "state could not be saved to %1" msgstr "greidde ikkje lagra tilstanden til %1" -#: session_state.cc:814 session_state.cc:825 -#, fuzzy +#: session_state.cc:722 session_state.cc:733 msgid "Could not remove temporary session file at path \"%1\" (%2)" -msgstr "Greidde ikkje fjerna opptaksstatusen pÃ¥ stigen \"%1\" (%2)" +msgstr "" -#: session_state.cc:822 +#: session_state.cc:730 msgid "could not rename temporary session file %1 to %2" msgstr "greidde ikkje døypa om mellombels øktfil %1 til %2" -#: session_state.cc:890 -#, fuzzy +#: session_state.cc:798 msgid "%1: session file \"%2\" doesn't exist!" -msgstr "%1: tilstandsinformasjonsfila \"%2\" for økta finst ikkje!" +msgstr "" -#: session_state.cc:902 -#, fuzzy +#: session_state.cc:810 msgid "Could not understand session file %1" -msgstr "Skjønte ikkje økthistoriefila \"%1\"" +msgstr "" -#: session_state.cc:911 +#: session_state.cc:819 msgid "Session file %1 is not a session" msgstr "Øktfila %1 er ikkje ei økt" -#: session_state.cc:1208 +#: session_state.cc:1125 msgid "programming error: Session: incorrect XML node sent to set_state()" msgstr "" "programmeringsfeil: Økt: feil XML-punkt sendt til set_state()-funksjonen" -#: session_state.cc:1257 +#: session_state.cc:1179 msgid "Session: XML state has no options section" msgstr "Økt: XML-tilstandsfila har ikkje noko avsnitt om instillingar" -#: session_state.cc:1262 +#: session_state.cc:1184 msgid "Session: XML state has no metadata section" msgstr "Økt: XML-fila har inga avdeling for metadata" -#: session_state.cc:1273 +#: session_state.cc:1195 msgid "Session: XML state has no sources section" msgstr "Økt: XML-tilstandsfila har ikkje noko avsnitt om kjelder" -#: session_state.cc:1280 +#: session_state.cc:1202 msgid "Session: XML state has no Tempo Map section" msgstr "Økt: XML-fila har ikkje noko avsnitt om tempokart" -#: session_state.cc:1287 +#: session_state.cc:1209 msgid "Session: XML state has no locations section" msgstr "Økt: XML-fila har ikkje noko avsnitt om stader" -#: session_state.cc:1313 +#: session_state.cc:1235 msgid "Session: XML state has no Regions section" msgstr "Økt: XML-tilstandsfila har ikkje noko avsnitt om bolkar" -#: session_state.cc:1320 +#: session_state.cc:1242 msgid "Session: XML state has no playlists section" msgstr "Økt: XML-tilstandsfila har ikkje noko avsnitt om spelelister" -#: session_state.cc:1340 +#: session_state.cc:1262 msgid "Session: XML state has no bundles section" msgstr "Økt: XML-fila har inga avdeling for bundlar" -#: session_state.cc:1352 +#: session_state.cc:1274 msgid "Session: XML state has no diskstreams section" msgstr "Økt: XML-fila har ikkje nok avsnitt om diskstraumar" -#: session_state.cc:1360 +#: session_state.cc:1282 msgid "Session: XML state has no routes section" msgstr "Økt: XML-fila har ikkje noko avsnitt om ruter" -#: session_state.cc:1372 +#: session_state.cc:1294 msgid "Session: XML state has no route groups section" msgstr "Økt: XML-fila har inga avdeling for rutegrupper" -#: session_state.cc:1381 +#: session_state.cc:1303 msgid "Session: XML state has no edit groups section" msgstr "Økt: XML-fila har ikkje noko avsnitt om grupperedigering" -#: session_state.cc:1388 +#: session_state.cc:1310 msgid "Session: XML state has no mix groups section" msgstr "Økt: XML-fila har ikkje noko avsnitt om miksgrupper" -#: session_state.cc:1396 +#: session_state.cc:1318 msgid "Session: XML state has no click section" msgstr "Økt: XML-fila har ikkje noko avsnitt om klikk" -#: session_state.cc:1444 +#: session_state.cc:1360 msgid "Session: cannot create Route from XML description." msgstr "Økt: greier ikkje laga rute ut frÃ¥ XML-skildringa." -#: session_state.cc:1448 +#: session_state.cc:1364 msgid "Loaded track/bus %1" msgstr "Lasta spor/buss %1" -#: session_state.cc:1546 +#: session_state.cc:1462 msgid "Could not find diskstream for route" msgstr "Greidde ikkje finna diskstraumen for rute" -#: session_state.cc:1600 +#: session_state.cc:1516 msgid "Session: cannot create Region from XML description." msgstr "Økt: greier ikkje laga bolkar ut frÃ¥ XML-skildringa." -#: session_state.cc:1604 +#: session_state.cc:1520 msgid "Can not load state for region '%1'" msgstr "Greier ikkje laga status for bolken '%1'" -#: session_state.cc:1640 +#: session_state.cc:1556 msgid "Regions in compound description not found (ID's %1 and %2): ignored" msgstr "Fann ikkje bolkar i samansetjingsstatus (IDar %1 og %2): ignorert" -#: session_state.cc:1668 -#, fuzzy +#: session_state.cc:1584 msgid "Nested source has no ID info in session file! (ignored)" -msgstr "Nøsta kjelde har ingen ID-info i øktstatusfila! (ignorert)" +msgstr "" -#: session_state.cc:1680 +#: session_state.cc:1596 msgid "Cannot reconstruct nested source for region %1" msgstr "Greier ikkje rekonstruera nøsta kjelde for bolken %1" -#: session_state.cc:1742 +#: session_state.cc:1658 msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" msgstr "Økt: XML-punktet som skildrar ein lydbolk er uferdig (manglar kjelde)" -#: session_state.cc:1750 session_state.cc:1771 session_state.cc:1791 +#: session_state.cc:1666 session_state.cc:1687 session_state.cc:1707 msgid "" "Session: XMLNode describing a AudioRegion references an unknown source id =%1" msgstr "" "Økt: XML-punktet som skildrar ein lydbolk peikar pÃ¥ ein ukjend kjelde-ID = %1" -#: session_state.cc:1756 session_state.cc:1777 session_state.cc:1797 +#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" @@ -2094,7 +2009,7 @@ msgstr "" "Økt: XML-punktet som skildrar ein lydbolk peikar pÃ¥ ein kjelde-ID %1 som " "ikkje er ei lydfil" -#: session_state.cc:1820 +#: session_state.cc:1736 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" @@ -2102,25 +2017,25 @@ msgstr "" "Økt: XML-punktet som skildrar ein lydbolk manglar nokre masterkjelder, ser " "bort frÃ¥" -#: session_state.cc:1854 +#: session_state.cc:1770 msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" msgstr "Økt: XML-punktet som skildrar ein midibolk er uferdig (manglar kjelde)" -#: session_state.cc:1862 +#: session_state.cc:1778 msgid "" "Session: XMLNode describing a MidiRegion references an unknown source id =%1" msgstr "" "Økt: XML-punktet som skildrar ein midibolk peikar pÃ¥ ein ukjend kjelde-ID = " "%1" -#: session_state.cc:1868 +#: session_state.cc:1784 msgid "" "Session: XMLNode describing a MidiRegion references a non-midi source id =%1" msgstr "" "Økt: XML-punktet som skildrar ein midibolk peikar pÃ¥ ein kjelde-ID %1 som " "ikkje er ei midi-fil" -#: session_state.cc:1936 +#: session_state.cc:1852 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" @@ -2128,122 +2043,117 @@ msgstr "" "greier ikkje laga ny fil frÃ¥ bolknamn \"%1\" med ident = \"%2\": det finst " "for mange med same namnet" -#: session_state.cc:1959 +#: session_state.cc:1875 msgid "Session: cannot create Source from XML description." msgstr "Økt: greier ikkje laga kjelde ut frÃ¥ XML-skildringa." -#: session_state.cc:1993 +#: session_state.cc:1909 msgid "A sound file is missing. It will be replaced by silence." msgstr "Det manglar ei lydfil. Ho vil bli erstatta med stille." -#: session_state.cc:2016 +#: session_state.cc:1932 msgid "Found a sound file that cannot be used by %1. Talk to the progammers." msgstr "Fann ei lydfil som %1 ikkje kan bruka. Prat med utviklarane." -#: session_state.cc:2033 -#, fuzzy +#: session_state.cc:1949 msgid "Could not create templates directory \"%1\" (%2)" -msgstr "Greidde ikkje laga miksarmalmappa \"%1\" (%2)" +msgstr "" -#: session_state.cc:2046 +#: session_state.cc:1962 msgid "Template \"%1\" already exists - new version not created" msgstr "Malen \"%1\" finst alt - laga ingen ny versjon" -#: session_state.cc:2052 -#, fuzzy +#: session_state.cc:1968 msgid "Could not create directory for Session template\"%1\" (%2)" -msgstr "Greidde ikkje laga miksarmalmappa \"%1\" (%2)" +msgstr "" -#: session_state.cc:2062 +#: session_state.cc:1978 msgid "template not saved" msgstr "malen vart ikkje lagra" -#: session_state.cc:2072 -#, fuzzy +#: session_state.cc:1988 msgid "Could not create directory for Session template plugin state\"%1\" (%2)" -msgstr "Greidde ikkje laga miksarmalmappa \"%1\" (%2)" +msgstr "" -#: session_state.cc:2267 -#, fuzzy +#: session_state.cc:2183 msgid "Unknown node \"%1\" found in Bundles list from session file" -msgstr "Fann ukjent punkt \"%1\" i bundellista frÃ¥ tilstandsfila" +msgstr "" -#: session_state.cc:2809 session_state.cc:2815 +#: session_state.cc:2725 session_state.cc:2731 msgid "Cannot expand path %1 (%2)" msgstr "Greier ikkje utvida stigen %1 (%2)" -#: session_state.cc:2868 +#: session_state.cc:2784 msgid "Session: cannot create dead file folder \"%1\" (%2)" msgstr "Økt: greier ikkje laga mappa \"%1\" for daudlyd (%2)" -#: session_state.cc:2907 +#: session_state.cc:2823 msgid "cannot rename unused file source from %1 to %2 (%3)" msgstr "kan ikkje døypa om den ubrukte filkjelda frÃ¥ %1 til %2 (%3)" -#: session_state.cc:2925 +#: session_state.cc:2841 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "kan ikkje fjerna toppfil %1 for %2 (%3)" -#: session_state.cc:3227 +#: session_state.cc:3143 msgid "could not backup old history file, current history not saved" msgstr "" "greidde ikkje ta tryggingskopi av den gamle historiefila, noverande historie " "vart ikkje lagra." -#: session_state.cc:3240 +#: session_state.cc:3156 msgid "history could not be saved to %1" msgstr "greidde ikkje lagra historia til %1" -#: session_state.cc:3243 -#, fuzzy +#: session_state.cc:3159 msgid "Could not remove history file at path \"%1\" (%2)" -msgstr "greidde ikkje henta fram att historiefila frÃ¥ tryggingskopien %1 (%2)" +msgstr "" -#: session_state.cc:3247 +#: session_state.cc:3163 msgid "could not restore history file from backup %1 (%2)" msgstr "greidde ikkje henta fram att historiefila frÃ¥ tryggingskopien %1 (%2)" -#: session_state.cc:3272 +#: session_state.cc:3188 msgid "%1: no history file \"%2\" for this session." msgstr "%1: inga historiefil \"%2\" for denne økta." -#: session_state.cc:3278 +#: session_state.cc:3194 msgid "Could not understand session history file \"%1\"" msgstr "Skjønte ikkje økthistoriefila \"%1\"" -#: session_state.cc:3320 +#: session_state.cc:3236 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "Greidde ikkje kasta ned midi-kjelde for NoteDiffCommand" -#: session_state.cc:3331 +#: session_state.cc:3247 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "Greidde ikkje kasta ned midi-kjelde for SysExDiffCommand" -#: session_state.cc:3342 +#: session_state.cc:3258 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "Greidde ikkje kasta ned midi-kjelde for PatchChangeDiffCommand" -#: session_state.cc:3350 +#: session_state.cc:3266 msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "Fann ikkje ut korleis eg skal laga ein kommando av eit %1-XML-punkt." -#: session_state.cc:3602 +#: session_state.cc:3502 msgid "Session: unknown diskstream type in XML" msgstr "Økt: ukjend diskstraumtype i XML" -#: session_state.cc:3607 +#: session_state.cc:3507 msgid "Session: could not load diskstream via XML state" msgstr "Økt: greidde ikkje lasta diskstraumen via XML-tilstand" -#: session_time.cc:215 -msgid "Unknown JACK transport state %1 in sync callback" -msgstr "Ukjend JACK-transporttilstand %1 i synk-tilbakekallet" +#: session_time.cc:214 +msgid "Unknown transport state %1 in sync callback" +msgstr "" -#: session_transport.cc:168 +#: session_transport.cc:167 msgid "Cannot loop - no loop range defined" msgstr "Greidde ikkje spela i lykkje - du har ikkje gjeve noko lykkjeomrÃ¥de" -#: session_transport.cc:728 +#: session_transport.cc:739 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" @@ -2251,7 +2161,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:1094 +#: session_transport.cc:1105 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2260,14 +2170,12 @@ msgstr "" "transportkontrollen" #: smf_source.cc:252 -#, fuzzy msgid "Unable to read event prefix, corrupt MIDI ring" -msgstr "Greier ikkje lesa handlingsprefiks, MIDI-ringbufferen i ulage" +msgstr "" #: smf_source.cc:265 -#, fuzzy msgid "Event has time and size but no body, corrupt MIDI ring" -msgstr "Les tid/storleik men ikkje buffer, MIDI-ringbufferen i ulage" +msgstr "" #: smf_source.cc:271 msgid "Event time is before MIDI source position" @@ -2393,16 +2301,15 @@ msgid "SndFileSource: could not seek to frame %1 within %2 (%3)" msgstr "Lydfilkjelde: greier ikkje leita fram til ramma %1 innan %2 (%3)" #: sndfilesource.cc:347 -#, fuzzy msgid "" "SndFileSource: @ %1 could not read %2 within %3 (%4) (len = %5, ret was %6)" -msgstr "SndFileSource: @ %1 greidde ikkje lesa %2 i %3 (%4) (len = %5)" +msgstr "" #: sndfilesource.cc:391 sndfilesource.cc:420 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:507 utils.cc:531 utils.cc:545 utils.cc:564 +#: sndfilesource.cc:396 utils.cc:510 utils.cc:534 utils.cc:548 utils.cc:567 msgid "programming error: %1 %2" msgstr "programmeringsfeil: %1 %2" @@ -2429,9 +2336,8 @@ msgid "attempt to set BWF info for an un-opened audio file source (%1)" msgstr "prøvde Ã¥ laga BWF-info for ei uopna lydkjeldefil (%1)" #: sndfilesource.cc:614 -#, fuzzy msgid "%1: cannot seek to %2 (libsndfile error: %3)" -msgstr "%1: greier ikkje gÃ¥ til %2 (libsndfile-feil: %3" +msgstr "" #: sndfilesource.cc:727 msgid "SndFileSource: \"%1\" bad read retval: %2 of %5 (%3: %4)" @@ -2493,9 +2399,8 @@ msgid "TempoSection XML node has no \"movable\" property" msgstr "TempoSection-XML-punktet har ingen \"flyttbar\"-eigenskap" #: tempo.cc:124 -#, fuzzy msgid "TempoSection XML node has an illegal \"bar-offset\" value" -msgstr "TempoSection-XML-punktet har ein ulovleg \"start\"-verdi" +msgstr "" #: tempo.cc:201 msgid "MeterSection XML node has no \"start\" property" @@ -2506,18 +2411,16 @@ msgid "MeterSection XML node has an illegal \"start\" value" msgstr "MeterSection-XML-punktet har ein ulovleg \"start\"-verdi" #: tempo.cc:219 -#, fuzzy msgid "" "MeterSection XML node has no \"beats-per-bar\" or \"divisions-per-bar\" " "property" -msgstr "MeterSection-XML-punktet har ingen \"slag per takt\"-eigenskap" +msgstr "" #: tempo.cc:225 -#, fuzzy msgid "" "MeterSection XML node has an illegal \"beats-per-bar\" or \"divisions-per-bar" "\" value" -msgstr "MeterSection-XML-punktet har ein ulovleg \"start\"-verdi" +msgstr "" #: tempo.cc:230 msgid "MeterSection XML node has no \"note-type\" property" @@ -2593,13 +2496,10 @@ msgstr "" "Taktmerke:" #: tempo_map_importer.cc:89 -#, fuzzy msgid "" "This will replace the current tempo map!\n" "Are you sure you want to do this?" msgstr "" -"Dette byter ut det gjeldande tempokartet!\n" -"Er du sikker pÃ¥ at du vil gjera dette?" #: user_bundle.cc:47 msgid "Node for Bundle has no \"name\" property" @@ -2638,19 +2538,19 @@ msgstr "LÃ¥s" msgid "programming error: unknown edit mode string \"%1\"" msgstr "programmeringsfeil: ukjend redigeringsmodus-streng \"%1\"" -#: utils.cc:389 utils.cc:418 +#: utils.cc:389 utils.cc:421 msgid "MIDI Timecode" msgstr "MIDI-tidskode" -#: utils.cc:389 utils.cc:416 +#: utils.cc:389 utils.cc:419 msgid "MTC" msgstr "MTC" -#: utils.cc:393 utils.cc:425 +#: utils.cc:393 utils.cc:428 msgid "MIDI Clock" msgstr "MIDI-klokke" -#: utils.cc:397 utils.cc:412 utils.cc:432 +#: utils.cc:397 utils.cc:415 utils.cc:435 msgid "JACK" msgstr "JACK" @@ -2658,969 +2558,18 @@ msgstr "JACK" msgid "programming error: unknown sync source string \"%1\"" msgstr "programmeringsfeil: ukjend synkkjeldestreng \"%1\"" -#: utils.cc:423 -#, fuzzy +#: utils.cc:426 msgid "M-Clock" -msgstr "MIDI-klokke" +msgstr "" -#: utils.cc:429 -#, fuzzy +#: utils.cc:432 msgid "LTC" -msgstr "MTC" +msgstr "" -#: utils.cc:599 +#: utils.cc:602 msgid "programming error: unknown native header format: %1" msgstr "programmeringsfeil: ukjent opphavleg hovudformat: \"%1\"" -#: utils.cc:614 +#: utils.cc:617 msgid "cannot open directory %1 (%2)" msgstr "greier ikkje opna mappa %1 (%2)" - -#~ msgid "Session" -#~ msgstr "Økt" - -#~ msgid "MidiDiskstream: XML property channel-mask out of range" -#~ msgstr "MIDI-diskstraum: kanalmaske for XML-eigenskap utanfor rekkjevidd" - -#~ msgid "" -#~ "Copying old session file %1 to %2\n" -#~ "Use %2 with %3 versions before 2.0 from now on" -#~ msgstr "" -#~ "Kopierer gamal øktfil %1 til %2\n" -#~ "Bruk %2 med %3-versjonar før 2.0 frÃ¥ no av" - -#~ msgid "midi" -#~ msgstr "midi" - -#~ msgid "timefx code failure. please notify ardour-developers." -#~ msgstr "kodefeil pÃ¥ tidseffektar, sei frÃ¥ til Ardour-utviklarane" - -#~ msgid "Session: you can't use a mark for auto loop" -#~ msgstr "Økt: du kan ikkje bruka eit merke for auto-lykkjespel" - -#~ msgid "" -#~ "No more JACK ports are available. You will need to stop %1 and restart " -#~ "JACK with ports if you need this many tracks." -#~ 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." - -#~ msgid "Could not understand ardour file %1" -#~ msgstr "Skjønte ikkje ardour-fila %1" - -#~ msgid "control protocol XML node has no name property. Ignored." -#~ msgstr "" -#~ "XML-noden for kontrollprotokollen har ingen namneeigenskap. SÃ¥g bort frÃ¥." - -#~ msgid "control protocol \"%1\" is not known. Ignored" -#~ msgstr "kontrollprotokollen \"%1\" er ukjent. SÃ¥g bort frÃ¥" - -#~ msgid "Removed open file count limit. Excellent!" -#~ msgstr "Fjerna teljegrensa for opne filer. Steikande bra!" - -#~ msgid "%1 will be limited to %2 open files" -#~ msgstr "%1 vil vera avgrensa til Ã¥ opna %2 filer" - -#~ msgid "" -#~ "programming error: non-audio Region passed to remove_overlap in audio " -#~ "playlist" -#~ msgstr "" -#~ "programmeringsfeil: ikkje-lydbolk gjeve til fjern_overlapping i " -#~ "lydspelelista" - -#~ msgid "" -#~ "programming error: non-audio Region tested for overlap in audio playlist" -#~ msgstr "" -#~ "programmeringsfeil: ikkje-lydbolk prøvd for overlapping i lydspelelista" - -#~ msgid "Crossfade: no \"in\" region in state" -#~ msgstr "Overtoning: Ingen \"inn\"-bolk her" - -#~ msgid "" -#~ "Crossfade: no \"in\" region %1 found in playlist %2 nor in region map" -#~ msgstr "" -#~ "Krysstoning: fann ingen \"inn\"-bolk %1, korkje i spelelista %2 eller i " -#~ "bolkkartet" - -#~ msgid "Crossfade: no \"out\" region in state" -#~ msgstr "Overtoning: ingen \"ut\"-bolk her" - -#~ msgid "" -#~ "Crossfade: no \"out\" region %1 found in playlist %2 nor in region map" -#~ msgstr "" -#~ "Krysstoning: fann ingen \"ut\"-bolk %1, korkje i spelelista %2 eller i " -#~ "bolkkartet" - -#~ msgid "old-style crossfade information - no position information" -#~ msgstr "gamaldags overtoningsinformasjon - ingen posisjonsinformasjon" - -#~ msgid "midiui" -#~ msgstr "midibrukarflate" - -#~ msgid "Chunk %1 uses an unknown playlist \"%2\"" -#~ msgstr "Beten %1 bruker ei ukjend speleliste, \"%2\"" - -#~ msgid "Chunk %1 contains malformed playlist information" -#~ msgstr "Beten %1 inneheld feilforma spelelisteinformasjon" - -#~ msgid "signal" -#~ msgstr "signal" - -#~ msgid "editor" -#~ msgstr "redigering" - -#~ msgid "Template \"%1\" already exists - template not renamed" -#~ msgstr "Malen \"%1\" finst alt - malen fekk ikkje nytt namn" - -#~ msgid "Session: cannot create Named Selection from XML description." -#~ msgstr "Økt: greier ikkje laga namngjeve utval ut frÃ¥ XML-skildringa." - -#~ msgid "Unable to create a backup copy of file %1 (%2)" -#~ msgstr "Greidde ikkje laga tryggingskopi av fila %1 (%2)" - -#, fuzzy -#~ msgid "programming error: realpath(%1) failed, errcode %2" -#~ msgstr "programmeringsfeil: %1 %2" - -#~ msgid "Cannot become GUI app" -#~ msgstr "Greier ikkje bli grafisk program" - -#~ msgid "" -#~ "%1: could not find configuration file (ardour.rc), canvas will look " -#~ "broken." -#~ msgstr "" -#~ "%1: greidde ikkje finna oppsettsfila (ardour.rc), arbeidsomrÃ¥det vil sjÃ¥ " -#~ "øydelagt ut." - -#~ msgid "Midi" -#~ msgstr "Midi" - -#~ msgid "illegal or badly-formed string used for path (%1)" -#~ msgstr "ulovleg eller feilforma streng brukt for stigen (%1)" - -#~ msgid "path (%1) is ambiguous" -#~ msgstr "stigen (%1) er tvitydig" - -#~ msgid "Could not move capture file from %1" -#~ msgstr "Greidde ikkje flytta opptaksfila frÃ¥ %1" - -#~ msgid "Cannot create temporary MIDI port to determine MIDI buffer size" -#~ msgstr "" -#~ "Greier ikkje laga mellombels MIDI-port for Ã¥ avgjera MIDI-bufferstorleiken" - -#~ msgid "Pan %1" -#~ msgstr "Pan %1" - -#~ msgid "rename from %1 to %2 failed: %3)" -#~ msgstr "omdøyping frÃ¥ %1 til %2 mislukka: %3)" - -#~ msgid "Using %2 threads on %1 CPUs" -#~ msgstr "Brukar %2 trÃ¥dar pÃ¥ %1 prosessorar" - -#~ msgid "direction" -#~ msgstr "retning" - -#~ msgid "" -#~ "badly formatted pan automation event record at line %1 of %2 (ignored) " -#~ "[%3]" -#~ msgstr "" -#~ "feilformatert handlingsopptak av panoreringsautomasjon pÃ¥ linja %1 av %2 " -#~ "(hoppa over) [%3]" - -#~ msgid "programming error:" -#~ msgstr "programmeringsfeil: " - -#~ msgid "cannot open pan automation file %1 (%2)" -#~ msgstr "greier ikkje opna panoreringsautomasjonsfil %1 (%2)" - -#~ msgid "badly formed version number in pan automation event file \"%1\"" -#~ msgstr "" -#~ "feilforma versjonsnummer i handlingsfila for panoreringsautomasjon \"%1\"" - -#~ msgid "" -#~ "no version information in pan automation event file \"%1\" (first line = " -#~ "%2)" -#~ msgstr "" -#~ "ingen versjonsinformasjon i handlingsfila for panoreringsautomasjon " -#~ "\"%1\" (fyrste linja= %2)" - -#~ msgid "too many panner states found in pan automation file %1" -#~ msgstr "for mange panoreringstilstandar i automasjonsfila %1" - -#~ msgid "C" -#~ msgstr "S" - -#~ msgid "lr" -#~ msgstr "vh" - -#~ msgid "width" -#~ msgstr "breidd" - -#~ msgid "cannot open click emphasis soundfile %1 (%2)" -#~ msgstr "greier ikkje opna uthevings-klikklydfila %1 (%2)" - -#~ msgid "cannot read data from click emphasis soundfile" -#~ msgstr "greier ikkje lesa data frÃ¥ uthevings-klikklydfila" - -#~ msgid "Reset Control Protocols" -#~ msgstr "Still tilbake kontrollprotokollar" - -#~ msgid "Session: cannot create session stub sounds dir \"%1\" (%2)" -#~ msgstr "Økt: greier ikkje laga mappa \"%1\" for lydfilbetar (%2)" - -#~ msgid "Session: cannot create session stub midi dir \"%1\" (%2)" -#~ msgstr "Økt: greier ikkje laga midibetemappa \"%1\" for økta (%2)" - -#~ msgid "could not allocate file %1" -#~ msgstr "greidde ikkje tildela fila %1" - -#~ msgid "" -#~ "AudioDiskstream %1: cannot read xfade samples %2 from playlist at frame %3" -#~ msgstr "" -#~ "Lyd-diskstraum %1: greidde ikkje lesa krysstoningspunkt %2 frÃ¥ " -#~ "spelelista, ramme %3" - -#~ msgid "%1: cannot create region from pending capture sources" -#~ msgstr "%1: greidde ikkje laga bolk frÃ¥ ventande opptakskjelder" - -#~ msgid "register input port called before engine was started" -#~ msgstr "registerinngangsporten vart oppkalla før tenaren starta" - -#~ msgid "register output port called before engine was started" -#~ msgstr "registerutgangsporten vart oppkalla før tenaren starta" - -#~ msgid "AudioEngine: connection already exists: %1 (%2) to %3 (%4)" -#~ msgstr "AudioEngine: tilkoplinga finst frÃ¥ før: %1 (%2) til %3 (%4)." - -#~ msgid "" -#~ "Disconnected from JACK while reconnecting. You should quit Ardour now." -#~ msgstr "Kopla frÃ¥ JACK ved ny tilkopling. Du bør avslutta Ardour no." - -#~ msgid "could not reconnect %1 and %2 (err = %3)" -#~ msgstr "greidde ikkje kopla til att %1 og %2 (feil = %3)" - -#~ msgid "" -#~ "This is an old Ardour session that does not have\n" -#~ "sufficient information for rendered FX" -#~ msgstr "" -#~ "Dette er ei gamal Ardour-økt som ikkje har\n" -#~ "nok informasjon for oppteikna effektar" - -#~ msgid "in 1+2" -#~ msgstr "inn 1+2" - -#~ msgid "AudioTrack: audio diskstream \"%1\" not known by session" -#~ msgstr "Lydspor: økta kjenner ikkje att lyd-diskstraumen \"%1\"" - -#~ msgid "programming error: AudioTrack given state without diskstream!" -#~ msgstr "Programmeringsfeil: Ardour fekk tilstand utan diskstraum1" - -#~ msgid "ill-formed MIDI port specification in ardour rcfile (ignored)" -#~ msgstr "" -#~ "feilforma MIDI-portspesifikasjon oppgjeve i ardour-rc-fila (hoppa over)" - -#~ msgid "Node for Connection has no \"connections\" property" -#~ msgstr "Punkt for tilkopling har ingen \"tilkopingar\"-eigenskapar" - -#~ msgid "Starting OSC" -#~ msgstr "Startar OSC" - -#~ msgid "no MIDI ports specified: no MMC or MTC control possible" -#~ msgstr "" -#~ "ingen MIDI-portar er spesifiserte. MMC- eller MTC-kontroll er ikkje " -#~ "mogleg." - -#~ msgid "Configuring MIDI ports" -#~ msgstr "Set opp MIDI-portar" - -#~ msgid "default" -#~ msgstr "standard" - -#~ msgid "No MMC control (MIDI port \"%1\" not available)" -#~ msgstr "Ingen MMC-kontroll (MIDI-porten \"%1\" er ikkje tilgjengeleg)" - -#~ msgid "No MTC support (MIDI port \"%1\" not available)" -#~ msgstr "Inga MTC-støtte (MIDI-porten \"%1\" er ikkje tilgjengeleg)" - -#~ msgid "No MIDI parameter support (MIDI port \"%1\" not available)" -#~ msgstr "" -#~ "Ingen MIDI-parameterstøtte (MIDI-porten \"%1\" er ikkje tilgjengeleg)" - -#~ msgid "" -#~ "converting %1\n" -#~ "(resample from %2KHz to %3KHz)\n" -#~ "(%4 of %5)" -#~ msgstr "" -#~ "omdannar %1\n" -#~ "(ompunkting frÃ¥ %1KHz til %3KHz)\n" -#~ "(%4 av %5)" - -#~ msgid "" -#~ "converting %1\n" -#~ "(%2 of %3)" -#~ msgstr "" -#~ "omdannar %1\n" -#~ "(%2 av %3)" - -#~ msgid "XML node describing a plugin insert is missing the `%1' information" -#~ msgstr "" -#~ "XML-punktet som skildrar tilleggsprogramtappinga manglar '%1'-informasjon" - -#~ msgid "XML node describing insert is missing a Redirect node" -#~ msgstr "XML-punktet som skildrar tappinga manglar omdirigeringspunkt" - -#~ msgid "" -#~ "XML node describing a port automation is missing the `%1' information" -#~ msgstr "XML-punktet som skildrar portautomasjonen manglar '%1'-informasjon" - -#~ msgid "%1: cannot open automation event file \"%2\"" -#~ msgstr "%1: greier ikkje opna automasjonshendingsfila \"%2\"" - -#~ msgid "badly formed version number in automation event file \"%1\"" -#~ msgstr "feilforma versjonsnummer i automasjonshendingsfila \"%1\"" - -#~ msgid "no version information in automation event file \"%1\"" -#~ msgstr "ingen versjonsinformasjon i automasjonshendingsfila \"%1\"" - -#~ msgid "badly formatted automation event record at line %1 of %2 (ignored)" -#~ msgstr "" -#~ "feilformatert automasjonshendingsopptak pÃ¥ linje %1 av %2 (hoppa over)" - -#~ msgid "IO::connecting_became_legal() called without a pending state node" -#~ msgstr "" -#~ "IO::connecting_became_legal()-funksjonen vart oppkalla utan ventande " -#~ "tilstandsnode" - -#~ msgid "IO::ports_became_legal() called without a pending state node" -#~ msgstr "" -#~ "IO::ports_became_legal()-funksjonen vart oppkalla utan ventande " -#~ "tilstandsnode" - -#~ msgid "improper output channel list in XML node (%1)" -#~ msgstr "feil utgangskanalliste i XML-punktet %1" - -#~ msgid "you cannot use colons to name objects with I/O connections" -#~ msgstr "du kan ikkje bruka kolon i namn pÃ¥ objekt med I/U-tilkoplingar" - -#~ msgid "badly-formed positional data for Multi2dPanner - ignored" -#~ msgstr "feilforma posisjonsdata for Multi2dPanner - hoppa over" - -#~ msgid "playlist const copy constructor called" -#~ msgstr "konstant kopikonstruktør for speleliste vart oppkalla" - -#~ msgid "playlist non-const copy constructor called" -#~ msgstr "ikkje-konstant kopikonstruktør for speleliste vart oppkalla" - -#~ msgid "%1: bounds changed received for region (%2)not in playlist" -#~ msgstr "%1: mottok grenseendring for bolken (%2) - ikkje i spelelista" - -#~ msgid "Playlist: cannot reset region state from XML" -#~ msgstr "Speleliste: greier ikkje stilla bolkstatusen tilbake frÃ¥ XML" - -#~ msgid "programming error: unknown Redirect type in Redirect::Clone!\n" -#~ msgstr "" -#~ "programmeringsfeil: ukjend omdirigeringstype i Redirect::Clone-" -#~ "funksjonen!\n" - -#~ msgid "%2: badly formatted node name in XML automation state, ignored" -#~ msgstr "%2: feilforma nodenamn i XML-automasjonsstatusen, sÃ¥g bort frÃ¥" - -#~ msgid "%1: cannot load automation data from XML" -#~ msgstr "%1: greier ikkje lasta automasjonsdata frÃ¥ XML" - -#~ msgid "incorrect XML node \"%1\" passed to Redirect object" -#~ msgstr "feil XML-punkt, \"%1\", vart sendt til omdirigeringsobjektet" - -#~ msgid "XML node describing an IO is missing an IO node" -#~ msgstr "XML-punktet som skildrar IU manglar eit IU-punkt" - -#~ msgid "XML node describing a redirect is missing the `active' field" -#~ msgstr "XML-punktet som skildrar ei omdirigering manglar 'aktiv'-feltet" - -#~ msgid "XML node describing a redirect is missing the `placement' field" -#~ msgstr "" -#~ "XML-punktet som skildrar ei omdirigering manglar 'plassering'-feltet" - -#~ msgid "XMLNode describing a Region is incomplete (no name)" -#~ msgstr "XML-punktet som skildrar ein bolk er ufullstendig (utan namn)" - -#~ msgid "Session: XMLNode describing a Region is incomplete (no id)" -#~ msgstr "Økt: XML-punktet som skildrar ein bolk er ufullstendig (ingen id)" - -#~ msgid "Send construction failed" -#~ msgstr "Send-konstruksjon mislukka" - -#~ msgid "Insert XML node has no type property" -#~ msgstr "Tappings-XML-punkt har ingen typeeigenskapar" - -#~ msgid "Route %1: unknown edit group \"%2 in saved state (ignored)" -#~ msgstr "" -#~ "Ruting %1: ukjend redigert gruppe \"%2 i lagra tilstand (hoppa over)" - -#~ msgid "Route %1: unknown mix group \"%2 in saved state (ignored)" -#~ msgstr "Ruting %1: ukjend miksgruppe \"%2 i lagra tilstand (hoppa over)" - -#~ msgid "could not connect %1 to %2" -#~ msgstr "greidde ikkje kopla %1 til %2" - -#~ msgid "XML node describing a send is missing a Redirect node" -#~ msgstr "XML-punktet som skildrar ein send manglar eit omdirigeringspunkt" - -#~ msgid "cannot setup master inputs" -#~ msgstr "greier ikkje setja opp masterinngangar" - -#~ msgid "Master Out" -#~ msgstr "Master ut" - -#~ msgid "Catch up with send/insert state" -#~ msgstr "Ta att send/omvegstatus" - -#~ msgid "OSC startup" -#~ msgstr "OSC-oppstart" - -#~ msgid "cannot set up master outputs" -#~ msgstr "greier ikkje setja opp masterutgangar" - -#~ msgid "" -#~ "Session::add_region() ignored a null region. Warning: you might have lost " -#~ "a region." -#~ msgstr "" -#~ "Økt::add_region() sÃ¥g bort frÃ¥ ein null-bolk. Pass pÃ¥: det kan henda du " -#~ "har mista ein bolk." - -#~ msgid "programming error: unknown type of Insert created!" -#~ msgstr "programmeringsfeil: det er laga ein ukjend tappingstype!" - -#~ msgid "programming error: unknown type of Redirect created!" -#~ msgstr "programmeringsfeil: det er laga ein ukjend omdirigeringstype!" - -#~ msgid "programming error: unknown type of Redirect deleted!" -#~ msgstr "programmeringsfeil: det er sletta ein ukjend omdirigeringstype!" - -#~ msgid "Memory allocation error: posix_memalign (%1 * %2) failed (%3)" -#~ msgstr "Minnetildelingsfeil: posix_memalign (%1 * %2) mislukka (%3)" - -#~ msgid "" -#~ "Programming error: get_silent_buffers() called for %1 buffers but only %2 " -#~ "exist" -#~ msgstr "" -#~ "Programmeringsfeil: get_silent_buffers() oppropt for %1 bufrar, men det " -#~ "finst berre %2" - -#~ msgid "GlobalRouteStateCommand has no \"type\" node, ignoring" -#~ msgstr "GlobalRouteStateCommand har ingen \"type\"-node, ser bort frÃ¥" - -#~ msgid "unknown type of GlobalRouteStateCommand (%1), ignored" -#~ msgstr "ukjent slag GlobalRouteStateCommand (%1), ser bort frÃ¥" - -#~ msgid "" -#~ "global route state command has no \"%1\" node, ignoring entire command" -#~ msgstr "" -#~ "allmenn rutestatuskommando har ingen \"%1\"-node, ser bort frÃ¥ heile " -#~ "kommandoen" - -#~ msgid "" -#~ "cannot find track/bus \"%1\" while rebuilding a global route state " -#~ "command, ignored" -#~ msgstr "" -#~ "greier ikkje finna spor/buss \"%1\" ved oppattbygging ein allmenn " -#~ "rutestatuskommando, sÃ¥g bort frÃ¥" - -#~ msgid "" -#~ "global route meter state command has no \"%1\" node, ignoring entire " -#~ "command" -#~ msgstr "" -#~ "allmenn kommando for rutemælestatus har ingen \"%1\"-node, ser bort frÃ¥ " -#~ "heile kommandoen" - -#~ msgid "Export: no output file specified" -#~ msgstr "Eksport: du har ikkje skrive inn ut-fil" - -#~ msgid "illegal frame range in export specification" -#~ msgstr "ulovleg " - -#~ msgid "Bad data width size. Report me!" -#~ msgstr "Feil storleik pÃ¥ databreidd. Sei frÃ¥ om dette til utviklarane!" - -#~ msgid "Export: cannot open output file \"%1\" (%2)" -#~ msgstr "Eksport: greier ikkje opna utfila \"%1\" (%2)" - -#~ msgid "cannot initialize sample rate conversion: %1" -#~ msgstr "greier ikkje byrja punktrateomdanning: %1" - -#~ msgid "warning, leftover frames overflowed, glitches might occur in output" -#~ msgstr "Ã¥tvaring: nokre rammer vart til overs i, det kan vera hakk i utfila" - -#~ msgid "Export: could not write data to output file (%1)" -#~ msgstr "Eksport: greidde ikkje skriva data til utfil (%1)" - -#~ msgid "Ardour is slaved to MTC - port cannot be reset" -#~ msgstr "Ardour er slave til ein MTC-port og kan ikkje nullstillast" - -#~ msgid "unknown port %1 requested for MTC" -#~ msgstr "førespurnad til ukjend MTC-port %1" - -#~ msgid "Error reading from MIDI port %1" -#~ msgstr "Greidde ikkje lesa frÃ¥ MIDI-port %1" - -#~ msgid "MMC: cannot send command %1%2%3" -#~ msgstr "MMC: greier ikkje senda kommandoen %1%2%3" - -#~ msgid "UI: cannot set O_NONBLOCK on signal read pipe (%1)" -#~ msgstr "Grensesnitt: O_NONBLOCK fastsett for signallesingsrøyr (%1)" - -#~ msgid "UI: cannot set O_NONBLOCK on signal write pipe (%1)" -#~ msgstr "" -#~ "Grensesnitt: greier ikkje fastsetja O_NONBLOCK for signalskrivingsrøyr " -#~ "(%1)" - -#~ msgid "Session: could not create transport thread" -#~ msgstr "Økt: greidde ikkje laga transporttrÃ¥d" - -#~ msgid "cannot send signal to midi thread! (%1)" -#~ msgstr "greier ikkje senda signal til MIDI-trÃ¥den! (%1)" - -#~ msgid "MIDI thread poll failed (%1)" -#~ msgstr "Spørjing pÃ¥ MIDI-trÃ¥d mislukka (%1)" - -#~ msgid "Error on transport thread request pipe" -#~ msgstr "Feil pÃ¥ transporttrÃ¥dspørjingsrøyr" - -#~ msgid "Error reading from transport request pipe" -#~ msgstr "Greidde ikkje lesa frÃ¥ transportspørjingsrøyr" - -#~ msgid "start" -#~ msgstr "start" - -#~ msgid "Session: XML state has no connections section" -#~ msgstr "Økt: XML-fila har ikkje noko avsnitt om tilkoplingar" - -#~ msgid "cannot create dead sounds directory \"%1\"; ignored" -#~ msgstr "greier ikkje laga daudlydmappa \"%1\", hoppa over" - -#~ msgid "cannot create peak file directory \"%1\"; ignored" -#~ msgstr "greier ikkje laga toppfilmappa \"%1\", hoppa over" - -#~ msgid "cannot remove dead sound file %1 (%2)" -#~ msgstr "greier ikkje fjerna daudlyd-fila %1 (%2)" - -#~ msgid "could not remove corrupt history file %1" -#~ msgstr "greidde ikkje fjerna den øydelagde historiefila %1" - -#~ msgid "Loading history from '%1'." -#~ msgstr "Lastar historie frÃ¥ '%1'." - -#~ msgid "please stop the transport before adjusting slave settings" -#~ msgstr "hugs Ã¥ stoppa spelinga før du justerer slaveinnstillingar" - -#~ msgid "No MTC port defined: MTC slaving is impossible." -#~ msgstr "Ingen MTC-port er gjeven. MTC-slaving er umogleg." - -#~ msgid "" -#~ "cannot set broadcast info for audio file %1; Dropping broadcast info for " -#~ "this file" -#~ msgstr "" -#~ "greier ikkje fastsetja kringkastingsinformasjon for lydfila %1, hoppar " -#~ "over kringkastingsinformasjon for denne fila" - -#~ msgid "Internal" -#~ msgstr "Intern" - -#~ msgid "Bad node sent to VSTPlugin::set_state" -#~ msgstr "Feil punkt sendt til VSTPlugin::set_state-funksjonen" - -#~ msgid "no support for presets using chunks at this time" -#~ msgstr "" -#~ "det er ikkje støtte for ferdigprogram som brukar bitar for augneblinken" - -#~ msgid "VST plugin called with zero frames - please notify Ardour developers" -#~ msgstr "" -#~ "VST-innstikk pÃ¥kalla med null rammer - sei frÃ¥ til Ardour-utviklarane" - -#~ msgid "VST: cannot load module from \"%1\"" -#~ msgstr "VST: greier ikkje lasta modul frÃ¥ \"%1\"" - -#~ msgid "You asked ardour to not use any VST plugins" -#~ msgstr "Du sa at Ardour ikkje skulle bruka nokon VST-tilleggsprogram" - -#~ msgid "CoreAudioSource: cannot open file \"%1\" for %2" -#~ msgstr "CoreAudioSource: greier ikkje opna fila \"%1\" for %2" - -#~ msgid "Could not create XML version of property list" -#~ msgstr "Greidde ikkje laga XML-versjon av eigenskaplista" - -#~ msgid "Cannot open preset file %1 (%2)" -#~ msgstr "Greier ikkje opna ferdigoppsettfila %1 (%2)" - -#~ msgid "Exception thrown during AudioUnit plugin loading - plugin ignored" -#~ msgstr "" -#~ "Det vart kasta inn eit unntak under AudioUnit-innstikklastinga - sÃ¥g bort " -#~ "frÃ¥ innstikket" - -#~ msgid "AudioUnit: Could not convert CAComponent to CAAudioUnit" -#~ msgstr "Lydeinging: Greidde ikkje gjera om CAComponent til CAAudioUnit" - -#~ msgid "AUPlugin: cannot set processing block size" -#~ msgstr "AUPlugin: Greier ikkje setja opp blokkstorleik for handsaming" - -#~ msgid "AUPlugin: %1 cannot initialize plugin (err = %2)" -#~ msgstr "AUPlugin: %1 greier ikkje starta innstikk (feil = %2)" - -#~ msgid "AU %1 has zero outputs - configuration ignored" -#~ msgstr "AU %1 har ingen utgangar - sÃ¥g bort frÃ¥ oppsettet" - -#~ msgid "AU plugin %1 has illegal IO configuration (-2,-2)" -#~ msgstr "AU-innstikket %1 har ugyldig IU-oppsett (-2,-2)" - -#~ msgid "AUPlugin: could not set stream format for %1/%2 (err = %3)" -#~ msgstr "" -#~ "AUPlugin: greidde ikkje setja opp straumformat for %1/%2 (feil = %3)" - -#~ msgid "AUPlugin: %1 input_streams() called without any format set!" -#~ msgstr "AUPlugin: %1 input_streams() pÃ¥kalla utan oppsett format!" - -#~ msgid "AUPlugin: %1 output_streams() called without any format set!" -#~ msgstr "AUPlugin: %1 output_streams() pÃ¥kalla utan oppsett format!" - -#~ msgid "AUPlugin: render callback called illegally!" -#~ msgstr "AUPlugin: oppteiknings-tilbakekall pÃ¥kalla ulovleg!" - -#~ msgid "Bad node sent to AUPlugin::set_state" -#~ msgstr "Feil punkt sendt til AUPlugin::set_state" - -#~ msgid "" -#~ "Restoring AudioUnit settings is not supported in this build of Ardour. " -#~ "Consider paying for a newer version" -#~ msgstr "" -#~ "Du kan ikkje henta framatt AudioUnit-innstillingar i denne versjonen av " -#~ "Ardour. Du bør vurdera Ã¥ betala for ein nyare verjson" - -#~ msgid "" -#~ "Loading AudioUnit presets 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 "Cannot create user plugin presets folder (%1)" -#~ msgstr "Greier ikkje laga mappe for brukarlaga innstikkoppsett (%1)" - -#~ msgid "Saving plugin state to %1 failed" -#~ msgstr "Greidde ikkje lagra innstikkstatus til %1" - -#~ msgid "Discovering AudioUnit plugins (could take some time ...)" -#~ msgstr "Finn AudioUnit-innstikk (dette kan ta litt tid...)" - -#~ msgid "Cannot get I/O configuration info for AU %1" -#~ msgstr "Greier ikkje fÃ¥ tak i I/U-oppsettsinfo for AU %1" - -#~ msgid "Checking AudioUnit: %1" -#~ msgstr "Sjekkar AudioUnit: %1" - -#~ msgid "Could not load AU plugin %1 - ignored" -#~ msgstr "Greier ikkje lasta AU-innstikk %1 - sÃ¥g bort frÃ¥" - -#~ msgid "could not save AU cache to %1" -#~ msgstr "greidde ikkje lagra AU-mellomlageret til %1" - -#~ msgid "initial state" -#~ msgstr "opphavstilstand" - -#~ msgid "xfade change" -#~ msgstr "overtoningsendring" - -#~ msgid "region modified" -#~ msgstr "bolk endra" - -#~ msgid "cannot activate JACK client" -#~ msgstr "greier ikkje slÃ¥ pÃ¥ JACK-klienten" - -#~ msgid "get_nth_physical called before engine was started" -#~ msgstr "get_nth_physical vart oppkalla før tenaren starta" - -#~ msgid "get_port_total_latency() called with no JACK client connection" -#~ msgstr "" -#~ "get_port_total_latency()-funksjonen vart oppkalla utan tilknyting til " -#~ "JACK-klienten" - -#~ msgid "get_port_total_latency() called before engine was started" -#~ msgstr "" -#~ "get_port_total_latency()-funksjonen vart oppkalla før tenaren starta" - -#~ msgid "Unable to connect to JACK server" -#~ msgstr "Greidde ikkje kopla til JACK-tenaren" - -#~ msgid "Could not connect to JACK server as \"%1\"" -#~ msgstr "Greidde ikkje kopla til JACK-tenaren som \"%1\"" - -#~ msgid "JACK server started" -#~ msgstr "JACK-tenaren er starta" - -#~ msgid "cannot shutdown connection to JACK" -#~ msgstr "greier ikkje kopla frÃ¥ JACK" - -#~ msgid "fade in change" -#~ msgstr "inntoningsendring" - -#~ msgid "envelope change" -#~ msgstr "omhyllingsendring" - -#~ msgid "poll on peak request pipe failed (%1)" -#~ msgstr "undersøking ved toppspørjingsrøyr gjekk gale (%1)" - -#~ msgid "Error on peak thread request pipe" -#~ msgstr "Feil pÃ¥ topptrÃ¥dspørjingsrøyr" - -#~ msgid "Error reading from peak request pipe" -#~ msgstr "Feil ved lesing frÃ¥ toppspørjingsrøyr" - -#~ msgid "UI: cannot set O_NONBLOCK on peak request pipe (%1)" -#~ msgstr "Brukarflate: Kan ikkje bruka O_NONBLOCK ved toppspørjingsrøyr (%1)" - -#~ msgid "AudioSource: could not create peak thread" -#~ msgstr "Lydkjelde: greidde ikkje laga topptrÃ¥d" - -#~ msgid "initial" -#~ msgstr "fyrste" - -#~ msgid "cleared" -#~ msgstr "tom" - -#~ msgid "added event" -#~ msgstr "la til hending" - -#~ msgid "removed event" -#~ msgstr "fjerna hending" - -#~ msgid "removed multiple events" -#~ msgstr "fjerna fleire hendingar" - -#~ msgid "removed range" -#~ msgstr "fjerna omrÃ¥de" - -#~ msgid "event range adjusted" -#~ msgstr "justert hendingsomrÃ¥de" - -#~ msgid "event adjusted" -#~ msgstr "justert hending" - -#~ msgid "cut/copy/clear" -#~ msgstr "klypp/kopier/tøm" - -#~ msgid "copy" -#~ msgstr "kopier" - -#~ msgid "active changed" -#~ msgstr "endra pÃ¥/av" - -#~ msgid "MIDI port specifications for \"%1\" are not understandable." -#~ msgstr "MIDI-portspesifikasjonane for \"%1\" er uforstÃ¥elege." - -#, fuzzy -#~ msgid "resampling audio" -#~ msgstr "samplar om lyd" - -#~ msgid "Import: cannot open converted sound file \"%1\"" -#~ msgstr "Import: kan ikkje opna den omkoda lydfila \"%1\"" - -#~ msgid "" -#~ "Session::import_audiofile: cannot open new file source for channel %1" -#~ msgstr "Økt::import_lydfil: kan ikkje opna ny kjeldefil for kanalen %1" - -#~ msgid "Import/SRC: could not open input file: %1" -#~ msgstr "Import/kjelde: greidde ikkje opna innfila: %1" - -#~ msgid "Import/SRC: could not open output file: %1" -#~ msgstr "Import/kjelde: greidde ikkje opna utfila: %1" - -#~ msgid "XML node describing insert is missing the `id' field" -#~ msgstr "XML-punktet som skildrar tappinga manglar 'id'-feltet" - -#~ msgid "PortInsert: cannot add input port" -#~ msgstr "PortInsert: greier ikkje leggja til inngangsport" - -#~ msgid "PortInsert: cannot add output port" -#~ msgstr "PortInsert: greier ikkje leggja til utgangsport" - -#~ msgid "%s/out %u" -#~ msgstr "%s/ut %u" - -#~ msgid "Unknown connection \"%1\" listed for output of %2" -#~ msgstr "Ukjend tilkopling \"%1\" lista opp for %2-utgangen" - -#~ msgid "No output connections available as a replacement" -#~ msgstr "Det finst ingen utgangstilkoplingar som kan brukast som erstatting" - -#~ msgid "%1: could not open automation event file \"%2\"" -#~ msgstr "%1: greier ikkje opna automasjonshendingsfila \"%2\"" - -#~ msgid "mismatched automation event file version (%1)" -#~ msgstr "ikkje like versjonsnummer i automasjonshendingsfila (%1)" - -#~ msgid "loaded from disk" -#~ msgstr "lasta frÃ¥ disk" - -#~ msgid "automation write/touch" -#~ msgstr "automasjonsskriving/rørsle" - -#~ msgid "clear" -#~ msgstr "tøm" - -#~ msgid "clear markers" -#~ msgstr "tøm merke" - -#~ msgid "clear ranges" -#~ msgstr "tøm omrÃ¥de" - -#~ msgid "add" -#~ msgstr "legg til" - -#~ msgid "remove" -#~ msgstr "fjern" - -#~ msgid "automation write pass" -#~ msgstr "automasjonsskriveomgang" - -#~ msgid "error writing pan automation file (%s)" -#~ msgstr "greidde ikkje skriva panoreringsautomasjonsfil (%s)" - -#~ msgid "cannot open pan automation file \"%1\" for saving (%2)" -#~ msgstr "" -#~ "kan ikkje opna panoreringsautomasjonsfil \"%1\" for Ã¥ lagra henne (%2)" - -#~ msgid "mismatched pan automation event file version (%1)" -#~ msgstr "" -#~ "handlingsfila for panoreringsautomasjon har versjonsnummer som ikkje " -#~ "stemmer overeins (%1)" - -#~ msgid "remove region" -#~ msgstr "fjern bolk" - -#~ msgid "separate" -#~ msgstr "del opp" - -#~ msgid "cut" -#~ msgstr "klypp" - -#~ msgid "duplicate" -#~ msgstr "klon" - -#~ msgid "split" -#~ msgstr "del" - -#~ msgid "nudged" -#~ msgstr "skubba" - -#~ msgid "" -#~ "programming error: Playlist::copyPlaylist called with unknown Playlist " -#~ "type" -#~ msgstr "" -#~ "programmeringsfeil: Playlist::copyPlaylist-funksjonen vart oppkalla med " -#~ "ukjend spelelistetype" - -#~ msgid "post" -#~ msgstr "etter" - -#~ msgid "Redirect: unknown placement string \"%1\" (ignored)" -#~ msgstr "Omdirigering: ukjend plasseringsstreng \"%1\" (hoppa over)" - -#~ msgid "%1: cannot open %2 to store automation data (%3)" -#~ msgstr "%1: greier ikkje opna %2 for Ã¥ lagra automasjonsdata (%3)" - -#~ msgid "%1: could not save automation state to %2" -#~ msgstr "%1: greier ikkje lagra automasjonstilstanden til %2" - -#~ msgid "" -#~ "Could not get state from Redirect (%1). Problem with save_automation" -#~ msgstr "" -#~ "Greier ikkje fÃ¥ tak i tilstanden frÃ¥ omdirigeringa (%1). Problem med Ã¥ " -#~ "lagra automasjonen." - -#~ msgid "active_changed" -#~ msgstr "aktiv_endra" - -#~ msgid "Could not get state of route. Problem with save_automation" -#~ msgstr "" -#~ "Greidde ikkje fÃ¥ tak i tilstanden for rutinga. Problem med Ã¥ lagra " -#~ "automasjon." - -#~ msgid "too many regions with names like %1" -#~ msgstr "for mange bolkar med namn som %1" - -#~ msgid "programming error: unknown type of Insert deleted!" -#~ msgstr "programmeringsfeil: ein ukjend tappingstype er sletta!" - -#~ msgid "could not backup old state file, current state not saved." -#~ msgstr "" -#~ "greidde ikkje ta tryggingskopi av den gamle tilstandsfila. Den noverande " -#~ "tilstanden er ikkje lagra." - -#~ msgid "tempoize: error creating name for new audio file based on %1" -#~ msgstr "" -#~ "lag tempo: greidde ikkje gje namn til den nye lydfila som er bygd pÃ¥ %1" - -#~ msgid "tempoize: error creating new audio file %1 (%2)" -#~ msgstr "lag tempo: greidde ikkje laga den nye lydfila %1 (%2)" - -#~ msgid "PAF (Ensoniq Paris)" -#~ msgstr "PAF (Ensoniq Paris)" - -#~ msgid "AU (Sun/NeXT)" -#~ msgstr "AU (Sun/NeXT)" - -#~ msgid "IRCAM" -#~ msgstr "IRCAM" - -#~ msgid ".au" -#~ msgstr ".au" - -#~ msgid ".ircam" -#~ msgstr ".ircam" - -#~ msgid "FileSource: cannot get host information for BWF header (%1)" -#~ msgstr "" -#~ "Filkjelde: greier ikkje finna vertsinformasjonen for BWF-tittellinja (%1)" - -#~ msgid "%1: cannot seek to %2" -#~ msgstr "%1: greier ikkje leita fram til %2" - -#~ msgid "cleared history" -#~ msgstr "tømte historia" - -#~ msgid "" -#~ "programming error: illegal state ID (%1) passed to StateManager::set_state" -#~ "() (range = 0-%2)" -#~ msgstr "" -#~ "programmeringsfeil: ulovleg tilgangs-ID (%1) send til StateManager::" -#~ "set_state()-funksjonen (omrÃ¥de = 0-%2)" - -#, fuzzy -#~ msgid "move metric" -#~ msgstr "flytt taktart" - -#~ msgid "metric removed" -#~ msgstr "fjerna taktart" - -#~ msgid "add tempo" -#~ msgstr "legg til tempo" - -#~ msgid "replace tempo" -#~ msgstr "byt ut tempo" - -#~ msgid "add meter" -#~ msgstr "legg til taktart" - -#~ msgid "replaced meter" -#~ msgstr "bytte ut taktart" - -#~ msgid "load XML data" -#~ msgstr "last XML-data" - -#~ msgid "cannot create VST chunk directory: %1" -#~ msgstr "greier ikkje laga mappe for VST-bitar: %1" - -#~ msgid "cannot check VST chunk directory: %1" -#~ msgstr "greier ikkje sjekka mappe for VST-bitar: %1" - -#~ msgid "%1 exists but is not a directory" -#~ msgstr "%1 finst, men det er ikkje ei mappe" diff --git a/libs/ardour/po/pl.po b/libs/ardour/po/pl.po index c9a01282a5..05dd5c642a 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-09-03 07:59-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2008-04-10 10:51+0100\n" "Last-Translator: Piotr Zaryk <pzaryk@gmail.com>\n" "Language-Team: Polish <pl@li.org>\n" @@ -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:643 -#: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 +#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "" @@ -185,60 +185,22 @@ msgstr "" msgid "VAMP Plugin \"%1\" could not be loaded" msgstr "" -#: audioengine.cc:186 -msgid "" -"This version of JACK is old - you should upgrade to a newer version that " -"supports jack_port_type_get_buffer_size()" -msgstr "" - -#: audioengine.cc:190 -msgid "Connect session to engine" -msgstr "" - -#: audioengine.cc:843 -msgid "" -"a port with the name \"%1\" already exists: check for duplicated track/bus " -"names" -msgstr "" - -#: 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:848 -msgid "AudioEngine: cannot register port \"%1\": %2" +#: audioengine.cc:488 +msgid "looking for backends in %1\n" msgstr "" -#: audioengine.cc:878 -msgid "unable to create port: %1" -msgstr "" - -#: audioengine.cc:932 -msgid "connect called before engine was started" -msgstr "" - -#: audioengine.cc:958 -msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" +#: audioengine.cc:511 +msgid "AudioEngine: cannot load module \"%1\" (%2)" msgstr "" -#: audioengine.cc:973 audioengine.cc:1004 -msgid "disconnect called before engine was started" +#: audioengine.cc:517 +msgid "AudioEngine: backend at \"%1\" has no descriptor function." msgstr "" -#: audioengine.cc:1052 -msgid "get_port_by_name() called before engine was started" +#: audioengine.cc:589 +msgid "Could not create backend for %1: %2" msgstr "" -#: audioengine.cc:1104 -msgid "get_ports called before engine was started" -msgstr "" - -#: audioengine.cc:1427 -msgid "failed to connect to JACK" -msgstr "nie udaÅ‚o siÄ™ poÅ‚Ä…czyć z JACK" - #: audioregion.cc:1643 msgid "" "You have requested an operation that requires audio analysis.\n" @@ -292,9 +254,8 @@ msgid "%1: could not write peak file data (%2)" msgstr "" #: audiosource.cc:924 -#, fuzzy msgid "could not truncate peakfile %1 to %2 (error: %3)" -msgstr "nie można otworzyć pliku dźwiÄ™kowego metronomu %1 (%2)" +msgstr "" #: auditioner.cc:87 msgid "no outputs available for auditioner - manual connection required" @@ -419,7 +380,7 @@ msgstr "nie można zlokalizować taktowania CPU w /proc/cpuinfo" msgid "audio" msgstr "" -#: data_type.cc:28 session.cc:1640 session.cc:1643 +#: data_type.cc:28 session.cc:1791 session.cc:1794 msgid "MIDI" msgstr "" @@ -512,9 +473,8 @@ msgid "trim" msgstr "" #: export_format_specification.cc:543 -#, fuzzy msgid "trim start" -msgstr "poczÄ…tek" +msgstr "" #: export_format_specification.cc:545 msgid "trim end" @@ -532,7 +492,7 @@ msgstr "" msgid "Rectangular" msgstr "" -#: export_formats.cc:52 session.cc:4861 session.cc:4877 +#: export_formats.cc:52 session.cc:5014 session.cc:5030 msgid "None" msgstr "" @@ -601,9 +561,8 @@ msgid "Selection" msgstr "" #: export_profile_manager.cc:600 -#, fuzzy msgid "Unable to rename export format %1 to %2: %3" -msgstr "nie można byÅ‚o poÅ‚Ä…czyć ponownie %1 i %2 (bÅ‚Ä…d = %3)" +msgstr "" #: export_profile_manager.cc:632 msgid "Unable to remove export profile %1: %2" @@ -643,7 +602,7 @@ msgid "" "configuration" msgstr "" -#: file_source.cc:198 session_state.cc:2891 +#: file_source.cc:198 session_state.cc:2807 msgid "" "there are already 1000 files with names like %1; versioning discontinued" msgstr "" @@ -681,9 +640,8 @@ msgid "" msgstr "" #: file_source.cc:540 -#, fuzzy msgid "cannot rename file %1 to %2 (%3)" -msgstr "nie można otworzyć pliku dźwiÄ™kowego metronomu %1 (%2)" +msgstr "" #: filesystem_paths.cc:73 msgid "Cannot create Configuration directory %1 - cannot run" @@ -739,23 +697,23 @@ msgstr "" msgid "unknown file type for session %1" msgstr "" -#: globals.cc:205 +#: globals.cc:207 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:207 +#: globals.cc:209 msgid "Could not set system open files limit to %1" msgstr "" -#: globals.cc:211 +#: globals.cc:213 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:215 +#: globals.cc:217 msgid "Could not get system open files limit (%1)" msgstr "" -#: globals.cc:266 +#: globals.cc:268 msgid "Loading configuration" msgstr "" @@ -875,47 +833,47 @@ msgstr "" msgid "IO: bad output string in XML node \"%1\"" msgstr "" -#: io.cc:1410 +#: io.cc:1411 #, c-format msgid "%s %u" msgstr "%s %u" -#: io.cc:1457 +#: io.cc:1458 #, c-format msgid "%s in" msgstr "" -#: io.cc:1459 +#: io.cc:1460 #, c-format msgid "%s out" msgstr "" -#: io.cc:1534 session.cc:494 session.cc:523 +#: io.cc:1535 session.cc:686 session.cc:715 msgid "mono" msgstr "" -#: io.cc:1536 session.cc:507 session.cc:537 +#: io.cc:1537 session.cc:699 session.cc:729 msgid "L" msgstr "" -#: io.cc:1536 session.cc:509 session.cc:539 +#: io.cc:1537 session.cc:701 session.cc:731 msgid "R" msgstr "" -#: io.cc:1538 io.cc:1544 +#: io.cc:1539 io.cc:1545 #, c-format msgid "%d" msgstr "" -#: ladspa_plugin.cc:88 +#: ladspa_plugin.cc:86 msgid "LADSPA: module has no descriptor function." msgstr "" -#: ladspa_plugin.cc:93 +#: ladspa_plugin.cc:91 msgid "LADSPA: plugin has gone away since discovery!" msgstr "" -#: ladspa_plugin.cc:100 +#: ladspa_plugin.cc:98 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" @@ -993,7 +951,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4362 session_state.cc:1114 +#: location.cc:842 session.cc:4516 session_state.cc:1031 msgid "session" msgstr "" @@ -1122,24 +1080,20 @@ msgid "MIDI stretch created non-MIDI source" msgstr "" #: monitor_processor.cc:53 -#, fuzzy msgid "monitor dim" -msgstr "monitor" +msgstr "" #: monitor_processor.cc:54 -#, fuzzy msgid "monitor cut" -msgstr "monitor" +msgstr "" #: monitor_processor.cc:55 -#, fuzzy msgid "monitor mono" -msgstr "monitor" +msgstr "" #: monitor_processor.cc:58 -#, fuzzy msgid "monitor dim level" -msgstr "monitor" +msgstr "" #: monitor_processor.cc:62 msgid "monitor solo boost level" @@ -1161,21 +1115,21 @@ msgstr "" msgid "solo control" msgstr "" -#: mtc_slave.cc:235 +#: mtc_slave.cc:238 msgid "MTC Slave: atomic read of current time failed, sleeping!" msgstr "" -#: mtc_slave.cc:359 +#: mtc_slave.cc:361 msgid "" "Unknown rate/drop value %1 in incoming MTC stream, session values used " "instead" msgstr "" -#: mtc_slave.cc:379 +#: mtc_slave.cc:381 msgid "Session framerate adjusted from %1 TO: MTC's %2." msgstr "" -#: mtc_slave.cc:393 +#: mtc_slave.cc:395 msgid "Session and MTC framerate mismatch: MTC:%1 %2:%3." msgstr "" @@ -1184,9 +1138,8 @@ msgid "capture" msgstr "" #: operations.cc:25 -#, fuzzy msgid "paste" -msgstr "główna" +msgstr "" #: operations.cc:26 msgid "duplicate region" @@ -1240,19 +1193,19 @@ msgstr "" msgid "looking for panners in %1" msgstr "" -#: panner_manager.cc:99 +#: panner_manager.cc:100 msgid "Panner discovered: \"%1\" in %2" msgstr "" -#: panner_manager.cc:116 +#: panner_manager.cc:117 msgid "PannerManager: cannot load module \"%1\" (%2)" msgstr "" -#: panner_manager.cc:123 +#: panner_manager.cc:124 msgid "PannerManager: module \"%1\" has no descriptor function." msgstr "" -#: panner_manager.cc:186 +#: panner_manager.cc:187 msgid "no panner discovered for in/out = %1/%2" msgstr "" @@ -1362,11 +1315,7 @@ msgstr "" msgid "unknown plugin type \"%1\" - ignored" msgstr "" -#: port.cc:367 -msgid "get_connected_latency_range() called while disconnected from JACK" -msgstr "" - -#: port.cc:450 +#: port.cc:410 msgid "could not reregister %1" msgstr "nie można byÅ‚o zarejestrować %1" @@ -1382,6 +1331,34 @@ msgstr "" msgid "non-port insert XML used for port plugin insert" msgstr "" +#: port_manager.cc:270 +msgid "" +"a port with the name \"%1\" already exists: check for duplicated track/bus " +"names" +msgstr "" + +#: port_manager.cc:272 +msgid "" +"No more ports are available. You will need to stop %1 and restart with more " +"ports if you need this many tracks." +msgstr "" + +#: port_manager.cc:275 +msgid "AudioEngine: cannot register port \"%1\": %2" +msgstr "" + +#: port_manager.cc:314 +msgid "unable to create port: %1" +msgstr "" + +#: port_manager.cc:401 +msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" +msgstr "" + +#: port_manager.cc:453 port_manager.cc:454 +msgid "Re-establising port %1 failed" +msgstr "" + #: processor.cc:207 msgid "No %1 property flag in element %2" msgstr "" @@ -1390,41 +1367,41 @@ msgstr "" msgid "No child node with active property" msgstr "" -#: rc_configuration.cc:93 +#: rc_configuration.cc:88 msgid "Loading system configuration file %1" msgstr "" -#: rc_configuration.cc:97 +#: rc_configuration.cc:92 msgid "%1: cannot read system configuration file \"%2\"" msgstr "" -#: rc_configuration.cc:102 +#: rc_configuration.cc:97 msgid "%1: system configuration file \"%2\" not loaded successfully." msgstr "" -#: rc_configuration.cc:106 +#: rc_configuration.cc:101 msgid "" "Your system %1 configuration file is empty. This probably means that there " "was an error installing %1" msgstr "" -#: rc_configuration.cc:121 +#: rc_configuration.cc:116 msgid "Loading user configuration file %1" msgstr "" -#: rc_configuration.cc:125 +#: rc_configuration.cc:120 msgid "%1: cannot read configuration file \"%2\"" msgstr "" -#: rc_configuration.cc:130 +#: rc_configuration.cc:125 msgid "%1: user configuration file \"%2\" not loaded successfully." msgstr "" -#: rc_configuration.cc:134 +#: rc_configuration.cc:129 msgid "your %1 configuration file is empty. This is not normal." msgstr "" -#: rc_configuration.cc:151 +#: rc_configuration.cc:146 msgid "Config file %1 not saved" msgstr "Plik konfiguracji %1 nie zapisany" @@ -1462,35 +1439,39 @@ msgstr "" msgid "return %1" msgstr "" -#: route.cc:1105 route.cc:2581 +#: route.cc:1075 route.cc:2528 msgid "unknown Processor type \"%1\"; ignored" msgstr "" -#: route.cc:1117 +#: route.cc:1087 msgid "processor could not be created. Ignored." msgstr "" -#: route.cc:2007 route.cc:2234 +#: route.cc:1962 route.cc:2187 msgid "Bad node sent to Route::set_state() [%1]" msgstr "" -#: route.cc:2067 +#: route.cc:2022 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 +#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" +#: route.cc:2311 +msgid "Converting deprecated order key for %1 using Editor order %2" +msgstr "" + #: route_group.cc:459 msgid "You cannot subgroup MIDI tracks at this time" msgstr "" -#: rb_effect.cc:233 rb_effect.cc:274 +#: rb_effect.cc:234 rb_effect.cc:275 msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" msgstr "" -#: rb_effect.cc:303 rb_effect.cc:325 +#: rb_effect.cc:304 rb_effect.cc:326 msgid "error writing tempo-adjusted data to %1" msgstr "" @@ -1506,186 +1487,167 @@ msgstr "" msgid "programming error: send created using role %1" msgstr "" -#: session.cc:347 -msgid "Set block size and sample rate" -msgstr "" - -#: session.cc:352 -msgid "Using configuration" +#: session.cc:344 +msgid "Connect to engine" msgstr "" -#: session.cc:377 -msgid "LTC In" +#: session.cc:349 +msgid "Session loading complete" msgstr "" -#: session.cc:378 -msgid "LTC Out" +#: session.cc:421 +msgid "Set up LTC" msgstr "" -#: session.cc:404 -msgid "LTC-in" +#: session.cc:423 +msgid "Set up Click" msgstr "" -#: session.cc:405 -msgid "LTC-out" +#: session.cc:425 +msgid "Set up standard connections" msgstr "" -#: session.cc:434 +#: session.cc:635 msgid "could not setup Click I/O" msgstr "nie można byÅ‚o ustawić I/O metronomu" -#: session.cc:461 -msgid "cannot setup Click I/O" -msgstr "nie można ustawić I/O metronomu" - -#: session.cc:464 -msgid "Compute I/O Latencies" -msgstr "" - -#: session.cc:470 -msgid "Set up standard connections" -msgstr "" - -#: session.cc:491 +#: session.cc:683 #, c-format msgid "out %<PRIu32>" msgstr "wyjÅ›cie %<PRIu32>" -#: session.cc:505 +#: session.cc:697 #, c-format msgid "out %<PRIu32>+%<PRIu32>" msgstr "wyjÅ›cie %<PRIu32>+%<PRIu32>" -#: session.cc:520 +#: session.cc:712 #, c-format msgid "in %<PRIu32>" msgstr "wejÅ›cie %<PRIu32>" -#: session.cc:534 +#: session.cc:726 #, c-format msgid "in %<PRIu32>+%<PRIu32>" msgstr "wejÅ›cie %<PRIu32>+%<PRIu32>" -#: session.cc:570 -msgid "Setup signal flow and plugins" -msgstr "" - -#: session.cc:614 -msgid "Connect to engine" -msgstr "" - -#: session.cc:645 -#, fuzzy +#: session.cc:790 msgid "cannot connect master output %1 to %2" -msgstr "nie można ustawić głównych wyjść" +msgstr "" -#: session.cc:704 +#: session.cc:849 msgid "monitor" msgstr "monitor" -#: session.cc:749 +#: session.cc:894 msgid "cannot connect control input %1 to %2" msgstr "" -#: session.cc:769 +#: session.cc:914 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "" -#: session.cc:800 +#: session.cc:945 msgid "cannot connect control output %1 to %2" msgstr "" -#: session.cc:864 +#: session.cc:1009 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "" -#: session.cc:1043 +#: session.cc:1193 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "" -#: session.cc:1083 +#: session.cc:1233 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" msgstr "" -#: session.cc:1396 +#: session.cc:1547 msgid "feedback loop setup between %1 and %2" msgstr "" -#: session.cc:1692 +#: session.cc:1843 msgid "Session: could not create new midi track." msgstr "" -#: session.cc:1875 session.cc:1878 +#: session.cc:1849 +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 "" + +#: session.cc:2026 session.cc:2029 msgid "Audio" msgstr "" -#: session.cc:1902 session.cc:1910 session.cc:1987 session.cc:1995 +#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "" -#: session.cc:1933 +#: session.cc:2084 msgid "Session: could not create new audio track." msgstr "" -#: session.cc:1965 session.cc:1968 +#: session.cc:2116 session.cc:2119 msgid "Bus" msgstr "" -#: session.cc:2018 +#: session.cc:2169 msgid "Session: could not create new audio route." msgstr "" -#: session.cc:2077 session.cc:2087 +#: session.cc:2228 session.cc:2238 msgid "Session: UINT_MAX routes? impossible!" msgstr "" -#: session.cc:2109 +#: session.cc:2260 msgid "Session: cannot create track/bus from template description" msgstr "" -#: session.cc:2135 +#: session.cc:2286 msgid "Session: could not create new route from template" msgstr "" -#: session.cc:2164 +#: session.cc:2315 msgid "Adding new tracks/busses failed" msgstr "" -#: session.cc:3265 +#: session.cc:3419 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "" -#: session.cc:3385 session.cc:3443 +#: session.cc:3539 session.cc:3597 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "" -#: session.cc:3833 +#: session.cc:3987 msgid "send ID %1 appears to be in use already" msgstr "" -#: session.cc:3845 +#: session.cc:3999 msgid "aux send ID %1 appears to be in use already" msgstr "" -#: session.cc:3857 +#: session.cc:4011 msgid "return ID %1 appears to be in use already" msgstr "" -#: session.cc:3869 +#: session.cc:4023 msgid "insert ID %1 appears to be in use already" msgstr "" -#: session.cc:3996 +#: session.cc:4150 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "" -#: session.cc:4025 +#: session.cc:4179 msgid "too many bounced versions of playlist \"%1\"" msgstr "" -#: session.cc:4035 +#: session.cc:4189 msgid "cannot create new audio file \"%1\" for %2" msgstr "" @@ -1724,11 +1686,11 @@ msgstr "" msgid "Session: cannot have two events of type %1 at the same frame (%2)." msgstr "" -#: session_export.cc:126 +#: session_export.cc:125 msgid "%1: cannot seek to %2 for export" msgstr "" -#: session_export.cc:183 +#: session_export.cc:182 msgid "Export ended unexpectedly: %1" msgstr "" @@ -1738,10 +1700,6 @@ msgid "" "of this session." msgstr "" -#: session_midi.cc:428 -msgid "Session: could not send full MIDI time code" -msgstr "" - #: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1750,385 +1708,372 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "" -#: session_process.cc:133 +#: session_process.cc:132 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1158 +#: session_process.cc:1157 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" -#: session_state.cc:139 -#, fuzzy +#: session_state.cc:140 msgid "Could not use path %1 (%2)" -msgstr "nie można byÅ‚o zarejestrować %1" +msgstr "" -#: session_state.cc:267 +#: session_state.cc:184 msgid "solo cut control (dB)" msgstr "" -#: session_state.cc:360 -msgid "Reset Remote Controls" +#: session_state.cc:208 +msgid "Set block size and sample rate" msgstr "" -#: session_state.cc:385 -msgid "Session loading complete" +#: session_state.cc:213 +msgid "Using configuration" msgstr "" -#: session_state.cc:452 +#: session_state.cc:325 +msgid "Reset Remote Controls" +msgstr "" + +#: session_state.cc:417 msgid "Session: cannot create session peakfile folder \"%1\" (%2)" msgstr "" -#: session_state.cc:459 -#, fuzzy +#: session_state.cc:424 msgid "Session: cannot create session sounds dir \"%1\" (%2)" -msgstr "Nie można utworzyć folderu dźwiÄ™ków sesji \"%1\" (%2)" +msgstr "" -#: session_state.cc:466 -#, fuzzy +#: session_state.cc:431 msgid "Session: cannot create session midi dir \"%1\" (%2)" -msgstr "Nie można utworzyć folderu dźwiÄ™ków sesji \"%1\" (%2)" +msgstr "" -#: session_state.cc:473 +#: session_state.cc:438 msgid "Session: cannot create session dead sounds folder \"%1\" (%2)" msgstr "" -#: session_state.cc:480 +#: session_state.cc:445 msgid "Session: cannot create session export folder \"%1\" (%2)" msgstr "" -#: session_state.cc:487 +#: session_state.cc:452 msgid "Session: cannot create session analysis folder \"%1\" (%2)" msgstr "" -#: session_state.cc:494 -#, fuzzy +#: session_state.cc:459 msgid "Session: cannot create session plugins folder \"%1\" (%2)" -msgstr "Nie można utworzyć folderu dźwiÄ™ków sesji \"%1\" (%2)" +msgstr "" -#: session_state.cc:501 -#, fuzzy +#: session_state.cc:466 msgid "Session: cannot create session externals folder \"%1\" (%2)" -msgstr "Nie można utworzyć folderu dźwiÄ™ków sesji \"%1\" (%2)" +msgstr "" -#: session_state.cc:515 +#: session_state.cc:480 msgid "Session: cannot create session folder \"%1\" (%2)" msgstr "" -#: session_state.cc:548 +#: session_state.cc:514 msgid "Could not open %1 for writing session template" msgstr "" -#: session_state.cc:554 +#: session_state.cc:520 msgid "Could not open session template %1 for reading" msgstr "" -#: session_state.cc:573 +#: session_state.cc:539 msgid "master" msgstr "główna" -#: session_state.cc:636 -#, fuzzy +#: session_state.cc:600 msgid "Could not remove pending capture state at path \"%1\" (%2)" -msgstr "nie można byÅ‚o zarejestrować %1" +msgstr "" -#: session_state.cc:660 -#, fuzzy +#: session_state.cc:624 msgid "could not rename snapshot %1 to %2 (%3)" -msgstr "nie można byÅ‚o poÅ‚Ä…czyć ponownie %1 i %2 (bÅ‚Ä…d = %3)" +msgstr "" -#: session_state.cc:688 -#, fuzzy +#: session_state.cc:652 msgid "Could not remove session file at path \"%1\" (%2)" -msgstr "nie można byÅ‚o zarejestrować %1" +msgstr "" -#: session_state.cc:761 +#: session_state.cc:669 msgid "" "the %1 audio engine is not connected and state saving would lose all I/O " "connections. Session not saved" msgstr "" -#: session_state.cc:812 +#: session_state.cc:720 msgid "state could not be saved to %1" msgstr "" -#: session_state.cc:814 session_state.cc:825 -#, fuzzy +#: session_state.cc:722 session_state.cc:733 msgid "Could not remove temporary session file at path \"%1\" (%2)" -msgstr "nie można byÅ‚o zarejestrować %1" +msgstr "" -#: session_state.cc:822 +#: session_state.cc:730 msgid "could not rename temporary session file %1 to %2" msgstr "" -#: session_state.cc:890 +#: session_state.cc:798 msgid "%1: session file \"%2\" doesn't exist!" msgstr "" -#: session_state.cc:902 -#, fuzzy +#: session_state.cc:810 msgid "Could not understand session file %1" -msgstr "nie można byÅ‚o zarejestrować %1" +msgstr "" -#: session_state.cc:911 -#, fuzzy +#: session_state.cc:819 msgid "Session file %1 is not a session" -msgstr "Plik konfiguracji %1 nie zapisany" +msgstr "" -#: session_state.cc:1208 +#: session_state.cc:1125 msgid "programming error: Session: incorrect XML node sent to set_state()" msgstr "" -#: session_state.cc:1257 +#: session_state.cc:1179 msgid "Session: XML state has no options section" msgstr "" -#: session_state.cc:1262 +#: session_state.cc:1184 msgid "Session: XML state has no metadata section" msgstr "" -#: session_state.cc:1273 +#: session_state.cc:1195 msgid "Session: XML state has no sources section" msgstr "" -#: session_state.cc:1280 +#: session_state.cc:1202 msgid "Session: XML state has no Tempo Map section" msgstr "" -#: session_state.cc:1287 +#: session_state.cc:1209 msgid "Session: XML state has no locations section" msgstr "" -#: session_state.cc:1313 +#: session_state.cc:1235 msgid "Session: XML state has no Regions section" msgstr "" -#: session_state.cc:1320 +#: session_state.cc:1242 msgid "Session: XML state has no playlists section" msgstr "" -#: session_state.cc:1340 +#: session_state.cc:1262 msgid "Session: XML state has no bundles section" msgstr "" -#: session_state.cc:1352 +#: session_state.cc:1274 msgid "Session: XML state has no diskstreams section" msgstr "" -#: session_state.cc:1360 +#: session_state.cc:1282 msgid "Session: XML state has no routes section" msgstr "" -#: session_state.cc:1372 +#: session_state.cc:1294 msgid "Session: XML state has no route groups section" msgstr "" -#: session_state.cc:1381 +#: session_state.cc:1303 msgid "Session: XML state has no edit groups section" msgstr "" -#: session_state.cc:1388 +#: session_state.cc:1310 msgid "Session: XML state has no mix groups section" msgstr "" -#: session_state.cc:1396 +#: session_state.cc:1318 msgid "Session: XML state has no click section" msgstr "" -#: session_state.cc:1444 +#: session_state.cc:1360 msgid "Session: cannot create Route from XML description." msgstr "" -#: session_state.cc:1448 +#: session_state.cc:1364 msgid "Loaded track/bus %1" msgstr "" -#: session_state.cc:1546 +#: session_state.cc:1462 msgid "Could not find diskstream for route" msgstr "" -#: session_state.cc:1600 +#: session_state.cc:1516 msgid "Session: cannot create Region from XML description." msgstr "" -#: session_state.cc:1604 +#: session_state.cc:1520 msgid "Can not load state for region '%1'" msgstr "" -#: session_state.cc:1640 +#: session_state.cc:1556 msgid "Regions in compound description not found (ID's %1 and %2): ignored" msgstr "" -#: session_state.cc:1668 +#: session_state.cc:1584 msgid "Nested source has no ID info in session file! (ignored)" msgstr "" -#: session_state.cc:1680 +#: session_state.cc:1596 msgid "Cannot reconstruct nested source for region %1" msgstr "" -#: session_state.cc:1742 +#: session_state.cc:1658 msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" msgstr "" -#: session_state.cc:1750 session_state.cc:1771 session_state.cc:1791 +#: session_state.cc:1666 session_state.cc:1687 session_state.cc:1707 msgid "" "Session: XMLNode describing a AudioRegion references an unknown source id =%1" msgstr "" -#: session_state.cc:1756 session_state.cc:1777 session_state.cc:1797 +#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" msgstr "" -#: session_state.cc:1820 +#: session_state.cc:1736 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" msgstr "" -#: session_state.cc:1854 +#: session_state.cc:1770 msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" msgstr "" -#: session_state.cc:1862 +#: session_state.cc:1778 msgid "" "Session: XMLNode describing a MidiRegion references an unknown source id =%1" msgstr "" -#: session_state.cc:1868 +#: session_state.cc:1784 msgid "" "Session: XMLNode describing a MidiRegion references a non-midi source id =%1" msgstr "" -#: session_state.cc:1936 +#: session_state.cc:1852 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" msgstr "" -#: session_state.cc:1959 +#: session_state.cc:1875 msgid "Session: cannot create Source from XML description." msgstr "" -#: session_state.cc:1993 +#: session_state.cc:1909 msgid "A sound file is missing. It will be replaced by silence." msgstr "" -#: session_state.cc:2016 +#: session_state.cc:1932 msgid "Found a sound file that cannot be used by %1. Talk to the progammers." msgstr "" -#: session_state.cc:2033 -#, fuzzy +#: session_state.cc:1949 msgid "Could not create templates directory \"%1\" (%2)" -msgstr "nie można otworzyć pliku dźwiÄ™kowego metronomu %1 (%2)" +msgstr "" -#: session_state.cc:2046 +#: session_state.cc:1962 msgid "Template \"%1\" already exists - new version not created" msgstr "" -#: session_state.cc:2052 -#, fuzzy +#: session_state.cc:1968 msgid "Could not create directory for Session template\"%1\" (%2)" -msgstr "nie można byÅ‚o zarejestrować %1" +msgstr "" -#: session_state.cc:2062 +#: session_state.cc:1978 msgid "template not saved" msgstr "" -#: session_state.cc:2072 +#: session_state.cc:1988 msgid "Could not create directory for Session template plugin state\"%1\" (%2)" msgstr "" -#: session_state.cc:2267 +#: session_state.cc:2183 msgid "Unknown node \"%1\" found in Bundles list from session file" msgstr "" -#: session_state.cc:2809 session_state.cc:2815 +#: session_state.cc:2725 session_state.cc:2731 msgid "Cannot expand path %1 (%2)" msgstr "" -#: session_state.cc:2868 -#, fuzzy +#: session_state.cc:2784 msgid "Session: cannot create dead file folder \"%1\" (%2)" -msgstr "Nie można utworzyć folderu dźwiÄ™ków sesji \"%1\" (%2)" +msgstr "" -#: session_state.cc:2907 -#, fuzzy +#: session_state.cc:2823 msgid "cannot rename unused file source from %1 to %2 (%3)" -msgstr "nie można otworzyć pliku dźwiÄ™kowego metronomu %1 (%2)" +msgstr "" -#: session_state.cc:2925 +#: session_state.cc:2841 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "" -#: session_state.cc:3227 +#: session_state.cc:3143 msgid "could not backup old history file, current history not saved" msgstr "" -#: session_state.cc:3240 +#: session_state.cc:3156 msgid "history could not be saved to %1" msgstr "" -#: session_state.cc:3243 -#, fuzzy +#: session_state.cc:3159 msgid "Could not remove history file at path \"%1\" (%2)" -msgstr "nie można byÅ‚o zarejestrować %1" +msgstr "" -#: session_state.cc:3247 -#, fuzzy +#: session_state.cc:3163 msgid "could not restore history file from backup %1 (%2)" -msgstr "nie można byÅ‚o zarejestrować %1" +msgstr "" -#: session_state.cc:3272 +#: session_state.cc:3188 msgid "%1: no history file \"%2\" for this session." msgstr "" -#: session_state.cc:3278 +#: session_state.cc:3194 msgid "Could not understand session history file \"%1\"" msgstr "" -#: session_state.cc:3320 +#: session_state.cc:3236 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "" -#: session_state.cc:3331 +#: session_state.cc:3247 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "" -#: session_state.cc:3342 +#: session_state.cc:3258 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "" -#: session_state.cc:3350 +#: session_state.cc:3266 msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "" -#: session_state.cc:3602 +#: session_state.cc:3502 msgid "Session: unknown diskstream type in XML" msgstr "" -#: session_state.cc:3607 +#: session_state.cc:3507 msgid "Session: could not load diskstream via XML state" msgstr "" -#: session_time.cc:215 -msgid "Unknown JACK transport state %1 in sync callback" +#: session_time.cc:214 +msgid "Unknown transport state %1 in sync callback" msgstr "" -#: session_transport.cc:168 +#: session_transport.cc:167 msgid "Cannot loop - no loop range defined" msgstr "" -#: session_transport.cc:728 +#: session_transport.cc:739 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1094 +#: session_transport.cc:1105 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2151,9 +2096,8 @@ msgid "Skipping event with unordered time %1" msgstr "" #: smf_source.cc:410 -#, fuzzy msgid "cannot open MIDI file %1 for write" -msgstr "nie można otworzyć pliku dźwiÄ™kowego metronomu %1 (%2)" +msgstr "" #: sndfile_helpers.cc:32 msgid "WAV" @@ -2228,18 +2172,16 @@ msgid "Signed 8 bit PCM" msgstr "" #: sndfile_helpers.cc:68 -#, fuzzy msgid "32 bit float" -msgstr "32 bit" +msgstr "" #: sndfile_helpers.cc:81 msgid "Little-endian (Intel)" msgstr "Little-endian (Intel)" #: sndfile_helpers.cc:82 -#, fuzzy msgid "Big-endian (PowerPC)" -msgstr "Big-endian (Mac)" +msgstr "" #: sndfilesource.cc:201 msgid "SndFileSource: cannot open file \"%1\" for %2 (%3)" @@ -2274,7 +2216,7 @@ msgstr "" msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 +#: sndfilesource.cc:396 utils.cc:510 utils.cc:534 utils.cc:548 utils.cc:567 msgid "programming error: %1 %2" msgstr "" @@ -2477,37 +2419,34 @@ msgid "Node for Port has no \"name\" property" msgstr "" #: utils.cc:358 utils.cc:382 -#, fuzzy msgid "Splice" -msgstr "Edycja klockowa" +msgstr "" #: utils.cc:360 utils.cc:375 -#, fuzzy msgid "Slide" -msgstr "Edycja Å›lizgowa" +msgstr "" #: utils.cc:362 utils.cc:378 -#, fuzzy msgid "Lock" -msgstr "Edycja zablokowana" +msgstr "" #: utils.cc:365 msgid "programming error: unknown edit mode string \"%1\"" msgstr "" -#: utils.cc:389 utils.cc:418 +#: utils.cc:389 utils.cc:421 msgid "MIDI Timecode" msgstr "" -#: utils.cc:389 utils.cc:416 +#: utils.cc:389 utils.cc:419 msgid "MTC" msgstr "MTC" -#: utils.cc:393 utils.cc:425 +#: utils.cc:393 utils.cc:428 msgid "MIDI Clock" msgstr "" -#: utils.cc:397 utils.cc:412 utils.cc:432 +#: utils.cc:397 utils.cc:415 utils.cc:435 msgid "JACK" msgstr "JACK" @@ -2515,74 +2454,18 @@ msgstr "JACK" msgid "programming error: unknown sync source string \"%1\"" msgstr "" -#: utils.cc:423 +#: utils.cc:426 msgid "M-Clock" msgstr "" -#: utils.cc:429 -#, fuzzy +#: utils.cc:432 msgid "LTC" -msgstr "MTC" +msgstr "" -#: utils.cc:599 +#: utils.cc:602 msgid "programming error: unknown native header format: %1" msgstr "" -#: utils.cc:614 -#, fuzzy +#: utils.cc:617 msgid "cannot open directory %1 (%2)" -msgstr "nie można otworzyć pliku dźwiÄ™kowego metronomu %1 (%2)" - -#~ msgid "cannot open click emphasis soundfile %1 (%2)" -#~ msgstr "" -#~ "nie można otworzyć pliku dźwiÄ™kowego akcentowanego uderzenia metronomu %1 " -#~ "(%2)" - -#~ msgid "cannot read data from click emphasis soundfile" -#~ msgstr "" -#~ "nie można odczytać danych z pliku dźwiÄ™kowego akcentowanego uderzenia " -#~ "metronomu" - -#, fuzzy -#~ msgid "Session: cannot create session stub sounds dir \"%1\" (%2)" -#~ msgstr "Nie można utworzyć folderu dźwiÄ™ków sesji \"%1\" (%2)" - -#, fuzzy -#~ msgid "Session: cannot create session stub midi dir \"%1\" (%2)" -#~ msgstr "Nie można utworzyć folderu dźwiÄ™ków sesji \"%1\" (%2)" - -#~ msgid "in 1+2" -#~ msgstr "wejÅ›cie 1+2" - -#~ msgid "default" -#~ msgstr "domyÅ›lnie" - -#~ msgid "cannot setup master inputs" -#~ msgstr "nie można ustawić głównych wejść" - -#~ msgid "Master Out" -#~ msgstr "Główne wyjÅ›cie" - -#~ msgid "OSC startup" -#~ msgstr "poczÄ…tek OSC" - -#~ msgid "end" -#~ msgstr "koniec" - -#~ msgid "16 bit" -#~ msgstr "16 bit" - -#~ msgid "24 bit" -#~ msgstr "24 bit" - -#~ msgid "8 bit" -#~ msgstr "8 bit" - -#~ msgid "Internal" -#~ msgstr "Wew." - -#~ msgid "%s/out %u" -#~ msgstr "%s/wyjÅ›cie %u" - -#~ msgid "%s/in" -#~ msgstr "%s/wejÅ›cie" +msgstr "" diff --git a/libs/ardour/po/ru.po b/libs/ardour/po/ru.po index 9d4f2d3bfa..3748bfc18c 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-10-15 21:42+0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2013-10-15 21:40+0300\n" "Last-Translator: ÐлекÑандр Прокудин <alexandre.prokoudine@gmail.com>\n" "Language-Team: руÑÑкий <>\n" @@ -124,7 +124,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:643 -#: rb_effect.cc:332 session.cc:2613 session.cc:2646 session.cc:3791 +#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "programming error: %1" @@ -391,7 +391,7 @@ msgstr "" msgid "audio" msgstr "" -#: data_type.cc:28 session.cc:1788 session.cc:1791 +#: data_type.cc:28 session.cc:1791 session.cc:1794 msgid "MIDI" msgstr "" @@ -503,7 +503,7 @@ msgstr "Треугольное" msgid "Rectangular" msgstr "ПрÑмоугольное" -#: export_formats.cc:52 session.cc:5009 session.cc:5025 +#: export_formats.cc:52 session.cc:5014 session.cc:5030 msgid "None" msgstr "Ðет" @@ -859,15 +859,15 @@ msgstr "" msgid "%s out" msgstr "" -#: io.cc:1535 session.cc:683 session.cc:712 +#: io.cc:1535 session.cc:686 session.cc:715 msgid "mono" msgstr "" -#: io.cc:1537 session.cc:696 session.cc:726 +#: io.cc:1537 session.cc:699 session.cc:729 msgid "L" msgstr "" -#: io.cc:1537 session.cc:698 session.cc:728 +#: io.cc:1537 session.cc:701 session.cc:731 msgid "R" msgstr "" @@ -962,7 +962,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4510 session_state.cc:1031 +#: location.cc:842 session.cc:4516 session_state.cc:1031 msgid "session" msgstr "" @@ -1094,38 +1094,6 @@ msgstr "" msgid "MIDI stretch created non-MIDI source" msgstr "" -#: midiport_manager.cc:71 -msgid "MIDI control in" -msgstr "" - -#: midiport_manager.cc:72 -msgid "MIDI control out" -msgstr "" - -#: midiport_manager.cc:74 -msgid "MMC in" -msgstr "" - -#: midiport_manager.cc:75 -msgid "MMC out" -msgstr "" - -#: midiport_manager.cc:96 -msgid "MTC in" -msgstr "" - -#: midiport_manager.cc:98 -msgid "MTC out" -msgstr "" - -#: midiport_manager.cc:101 -msgid "MIDI Clock in" -msgstr "" - -#: midiport_manager.cc:103 -msgid "MIDI Clock out" -msgstr "" - #: monitor_processor.cc:53 msgid "monitor dim" msgstr "" @@ -1486,35 +1454,39 @@ msgstr "" msgid "return %1" msgstr "" -#: route.cc:1107 route.cc:2584 +#: route.cc:1075 route.cc:2528 msgid "unknown Processor type \"%1\"; ignored" msgstr "" -#: route.cc:1119 +#: route.cc:1087 msgid "processor could not be created. Ignored." msgstr "" -#: route.cc:2010 route.cc:2237 +#: route.cc:1962 route.cc:2187 msgid "Bad node sent to Route::set_state() [%1]" msgstr "" -#: route.cc:2070 +#: route.cc:2022 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2140 route.cc:2144 route.cc:2351 route.cc:2355 +#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" +#: route.cc:2311 +msgid "Converting deprecated order key for %1 using Editor order %2" +msgstr "" + #: route_group.cc:459 msgid "You cannot subgroup MIDI tracks at this time" msgstr "" -#: rb_effect.cc:233 rb_effect.cc:274 +#: rb_effect.cc:234 rb_effect.cc:275 msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" msgstr "" -#: rb_effect.cc:303 rb_effect.cc:325 +#: rb_effect.cc:304 rb_effect.cc:326 msgid "error writing tempo-adjusted data to %1" msgstr "" @@ -1530,183 +1502,167 @@ msgstr "" msgid "programming error: send created using role %1" msgstr "programming error: send created using role %1" -#: session.cc:343 +#: session.cc:344 msgid "Connect to engine" msgstr "Соединение Ñо звуковым движком" -#: session.cc:348 +#: session.cc:349 msgid "Session loading complete" msgstr "Загрузка ÑеанÑа завершена" -#: session.cc:420 +#: session.cc:421 msgid "Set up LTC" msgstr "" -#: session.cc:422 +#: session.cc:423 msgid "Set up Click" msgstr "" -#: session.cc:424 +#: session.cc:425 msgid "Set up standard connections" msgstr "ÐаÑтройка обычных Ñоединений" -#: session.cc:561 -msgid "LTC In" -msgstr "" - -#: session.cc:562 -msgid "LTC Out" -msgstr "" - -#: session.cc:588 -msgid "LTC-in" -msgstr "" - -#: session.cc:589 -msgid "LTC-out" -msgstr "" - -#: session.cc:632 +#: session.cc:635 msgid "could not setup Click I/O" msgstr "" -#: session.cc:680 +#: session.cc:683 #, c-format msgid "out %<PRIu32>" msgstr "" -#: session.cc:694 +#: session.cc:697 #, c-format msgid "out %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:709 +#: session.cc:712 #, c-format msgid "in %<PRIu32>" msgstr "" -#: session.cc:723 +#: session.cc:726 #, c-format msgid "in %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:787 +#: session.cc:790 msgid "cannot connect master output %1 to %2" msgstr "" -#: session.cc:846 +#: session.cc:849 msgid "monitor" msgstr "" -#: session.cc:891 +#: session.cc:894 msgid "cannot connect control input %1 to %2" msgstr "" -#: session.cc:911 +#: session.cc:914 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "" -#: session.cc:942 +#: session.cc:945 msgid "cannot connect control output %1 to %2" msgstr "" -#: session.cc:1006 +#: session.cc:1009 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "" -#: session.cc:1190 +#: session.cc:1193 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "" -#: session.cc:1230 +#: session.cc:1233 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" msgstr "" -#: session.cc:1544 +#: session.cc:1547 msgid "feedback loop setup between %1 and %2" msgstr "" -#: session.cc:1840 +#: session.cc:1843 msgid "Session: could not create new midi track." msgstr "" -#: session.cc:1846 +#: session.cc:1849 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 "" -#: session.cc:2023 session.cc:2026 +#: session.cc:2026 session.cc:2029 msgid "Audio" msgstr "" -#: session.cc:2050 session.cc:2058 session.cc:2135 session.cc:2143 +#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "" -#: session.cc:2081 +#: session.cc:2084 msgid "Session: could not create new audio track." msgstr "" -#: session.cc:2113 session.cc:2116 +#: session.cc:2116 session.cc:2119 msgid "Bus" msgstr "" -#: session.cc:2166 +#: session.cc:2169 msgid "Session: could not create new audio route." msgstr "" -#: session.cc:2225 session.cc:2235 +#: session.cc:2228 session.cc:2238 msgid "Session: UINT_MAX routes? impossible!" msgstr "" -#: session.cc:2257 +#: session.cc:2260 msgid "Session: cannot create track/bus from template description" msgstr "" -#: session.cc:2283 +#: session.cc:2286 msgid "Session: could not create new route from template" msgstr "" -#: session.cc:2312 +#: session.cc:2315 msgid "Adding new tracks/busses failed" msgstr "Ðе удалоÑÑŒ добавить новые дорожки/шины" -#: session.cc:3413 +#: session.cc:3419 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "" -#: session.cc:3533 session.cc:3591 +#: session.cc:3539 session.cc:3597 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "" -#: session.cc:3981 +#: session.cc:3987 msgid "send ID %1 appears to be in use already" msgstr "" -#: session.cc:3993 +#: session.cc:3999 msgid "aux send ID %1 appears to be in use already" msgstr "" -#: session.cc:4005 +#: session.cc:4011 msgid "return ID %1 appears to be in use already" msgstr "" -#: session.cc:4017 +#: session.cc:4023 msgid "insert ID %1 appears to be in use already" msgstr "" -#: session.cc:4144 +#: session.cc:4150 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "" -#: session.cc:4173 +#: session.cc:4179 msgid "too many bounced versions of playlist \"%1\"" msgstr "" -#: session.cc:4183 +#: session.cc:4189 msgid "cannot create new audio file \"%1\" for %2" msgstr "" @@ -2110,11 +2066,11 @@ msgstr "" msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "" -#: session_state.cc:3518 +#: session_state.cc:3502 msgid "Session: unknown diskstream type in XML" msgstr "" -#: session_state.cc:3523 +#: session_state.cc:3507 msgid "Session: could not load diskstream via XML state" msgstr "" @@ -2528,66 +2484,3 @@ msgstr "programming error: unknown native header format: %1" #: utils.cc:617 msgid "cannot open directory %1 (%2)" msgstr "cannot open directory %1 (%2)" - -#~ msgid "Setup signal flow and plugins" -#~ msgstr "ÐаÑтройка модулей и звукового потока" - -#~ msgid "Session" -#~ msgstr "СеанÑ" - -#, fuzzy -#~ msgid "editor" -#~ msgstr "монитор" - -#, fuzzy -#~ msgid "programming error: realpath(%1) failed, errcode %2" -#~ msgstr "ошибка программы: " - -#, fuzzy -#~ msgid "programming error:" -#~ msgstr "ошибка программы: " - -#~ msgid "cannot activate JACK client" -#~ msgstr "не удалоÑÑŒ активировать клиента JACK Ñервера" - -#, fuzzy -#~ msgid "removed event" -#~ msgstr "удалить облаÑÑ‚ÑŒ" - -#, fuzzy -#~ msgid "removed range" -#~ msgstr "удалить облаÑÑ‚ÑŒ" - -#~ msgid "add" -#~ msgstr "добавить" - -#~ msgid "remove" -#~ msgstr "удалить" - -#~ msgid "remove region" -#~ msgstr "удалить облаÑÑ‚ÑŒ" - -#~ msgid "separate" -#~ msgstr "разделить" - -#~ msgid "split" -#~ msgstr "Ñклеить" - -#~ msgid "pre" -#~ msgstr "пре" - -#~ msgid "post" -#~ msgstr "поÑÑ‚" - -#, fuzzy -#~ msgid "Master Out" -#~ msgstr "маÑтер" - -#~ msgid "16 bit" -#~ msgstr "16 бит" - -#~ msgid "24 bit" -#~ msgstr "24 бита" - -#~ msgid "8 bit" -#~ msgstr "8 бит" diff --git a/libs/ardour/po/sv.po b/libs/ardour/po/sv.po index 2e7c6e0ddc..5558fde391 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-09-03 07:59-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2006-10-03 01:09+GMT+1\n" "Last-Translator: Petter Sundlöf <petter.sundlof@findus.dhs.org>\n" "Language-Team: Swedish <sv@li.org>\n" @@ -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:643 -#: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 +#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "" @@ -146,9 +146,8 @@ msgid "" msgstr "" #: audio_track.cc:167 -#, fuzzy msgid "Unknown bundle \"%1\" listed for input of %2" -msgstr "Okänd anslutning \"%1\" listad för %2 av %3" +msgstr "" #: audio_track.cc:169 msgid "in 1" @@ -159,9 +158,8 @@ msgid "No input bundles available as a replacement" msgstr "" #: audio_track.cc:174 -#, fuzzy msgid "Bundle %1 was not available - \"in 1\" used instead" -msgstr "Anslutning %1 inte tillgänglig - \"in 1\" används instället" +msgstr "" #: audio_track.cc:183 msgid "improper input channel list in XML node (%1)" @@ -187,60 +185,20 @@ msgstr "" msgid "VAMP Plugin \"%1\" could not be loaded" msgstr "" -#: audioengine.cc:186 -msgid "" -"This version of JACK is old - you should upgrade to a newer version that " -"supports jack_port_type_get_buffer_size()" -msgstr "" - -#: audioengine.cc:190 -#, fuzzy -msgid "Connect session to engine" -msgstr "Ansluter till ljudmotorn" - -#: audioengine.cc:843 -msgid "" -"a port with the name \"%1\" already exists: check for duplicated track/bus " -"names" -msgstr "" - -#: 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:848 -#, fuzzy -msgid "AudioEngine: cannot register port \"%1\": %2" -msgstr "AudioEngine: kan inte ansluta %1 (%2) till %3 (%4)" - -#: audioengine.cc:878 -msgid "unable to create port: %1" -msgstr "" - -#: audioengine.cc:932 -msgid "connect called before engine was started" -msgstr "" - -#: audioengine.cc:958 -msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" -msgstr "AudioEngine: kan inte ansluta %1 (%2) till %3 (%4)" - -#: audioengine.cc:973 audioengine.cc:1004 -msgid "disconnect called before engine was started" +#: audioengine.cc:488 +msgid "looking for backends in %1\n" msgstr "" -#: audioengine.cc:1052 -msgid "get_port_by_name() called before engine was started" +#: audioengine.cc:511 +msgid "AudioEngine: cannot load module \"%1\" (%2)" msgstr "" -#: audioengine.cc:1104 -msgid "get_ports called before engine was started" +#: audioengine.cc:517 +msgid "AudioEngine: backend at \"%1\" has no descriptor function." msgstr "" -#: audioengine.cc:1427 -msgid "failed to connect to JACK" +#: audioengine.cc:589 +msgid "Could not create backend for %1: %2" msgstr "" #: audioregion.cc:1643 @@ -271,14 +229,12 @@ msgid "cannot read sample data for unscaled peak computation" msgstr "" #: audiosource.cc:387 -#, fuzzy msgid "AudioSource: cannot open peakpath (a) \"%1\" (%2)" -msgstr "AudioEngine: kan inte ansluta %1 (%2) till %3 (%4)" +msgstr "" #: audiosource.cc:463 -#, fuzzy msgid "AudioSource: cannot open peakpath (b) \"%1\" (%2)" -msgstr "AudioEngine: kan inte ansluta %1 (%2) till %3 (%4)" +msgstr "" #: audiosource.cc:587 msgid "" @@ -290,9 +246,8 @@ msgid "%1: could not write read raw data for peak computation (%2)" msgstr "" #: audiosource.cc:706 -#, fuzzy msgid "AudioSource: cannot open peakpath (c) \"%1\" (%2)" -msgstr "AudioEngine: kan inte ansluta %1 (%2) till %3 (%4)" +msgstr "" #: audiosource.cc:773 audiosource.cc:886 msgid "%1: could not write peak file data (%2)" @@ -425,7 +380,7 @@ msgstr "" msgid "audio" msgstr "" -#: data_type.cc:28 session.cc:1640 session.cc:1643 +#: data_type.cc:28 session.cc:1791 session.cc:1794 msgid "MIDI" msgstr "" @@ -537,7 +492,7 @@ msgstr "" msgid "Rectangular" msgstr "" -#: export_formats.cc:52 session.cc:4861 session.cc:4877 +#: export_formats.cc:52 session.cc:5014 session.cc:5030 msgid "None" msgstr "" @@ -618,14 +573,12 @@ msgid "empty format" msgstr "" #: export_profile_manager.cc:818 -#, fuzzy msgid "No timespan has been selected!" -msgstr "Inget format valt!" +msgstr "" #: export_profile_manager.cc:822 -#, fuzzy msgid "No channels have been selected!" -msgstr "Inget format valt!" +msgstr "" #: export_profile_manager.cc:826 msgid "Some channels are empty" @@ -649,7 +602,7 @@ msgid "" "configuration" msgstr "" -#: file_source.cc:198 session_state.cc:2891 +#: file_source.cc:198 session_state.cc:2807 msgid "" "there are already 1000 files with names like %1; versioning discontinued" msgstr "" @@ -744,23 +697,23 @@ msgstr "" msgid "unknown file type for session %1" msgstr "" -#: globals.cc:205 +#: globals.cc:207 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:207 +#: globals.cc:209 msgid "Could not set system open files limit to %1" msgstr "" -#: globals.cc:211 +#: globals.cc:213 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:215 +#: globals.cc:217 msgid "Could not get system open files limit (%1)" msgstr "" -#: globals.cc:266 +#: globals.cc:268 msgid "Loading configuration" msgstr "" @@ -837,9 +790,8 @@ msgid "in" msgstr "" #: io.cc:706 -#, fuzzy msgid "out" -msgstr "utgÃ¥ng" +msgstr "" #: io.cc:707 msgid "input" @@ -850,14 +802,12 @@ msgid "output" msgstr "utgÃ¥ng" #: io.cc:717 -#, fuzzy msgid "Unknown bundle \"%1\" listed for %2 of %3" -msgstr "Okänd anslutning \"%1\" listad för %2 av %3" +msgstr "" #: io.cc:783 -#, fuzzy msgid "Bundle %1 was not available - \"%2\" used instead" -msgstr "Anslutning %1 inte tillgänglig - \"%2\" används istället" +msgstr "" #: io.cc:786 msgid "No %1 bundles available as a replacement" @@ -883,47 +833,47 @@ msgstr "" msgid "IO: bad output string in XML node \"%1\"" msgstr "" -#: io.cc:1410 +#: io.cc:1411 #, c-format msgid "%s %u" msgstr "" -#: io.cc:1457 +#: io.cc:1458 #, c-format msgid "%s in" msgstr "" -#: io.cc:1459 +#: io.cc:1460 #, c-format msgid "%s out" msgstr "" -#: io.cc:1534 session.cc:494 session.cc:523 +#: io.cc:1535 session.cc:686 session.cc:715 msgid "mono" msgstr "" -#: io.cc:1536 session.cc:507 session.cc:537 +#: io.cc:1537 session.cc:699 session.cc:729 msgid "L" msgstr "" -#: io.cc:1536 session.cc:509 session.cc:539 +#: io.cc:1537 session.cc:701 session.cc:731 msgid "R" msgstr "" -#: io.cc:1538 io.cc:1544 +#: io.cc:1539 io.cc:1545 #, c-format msgid "%d" msgstr "" -#: ladspa_plugin.cc:88 +#: ladspa_plugin.cc:86 msgid "LADSPA: module has no descriptor function." msgstr "" -#: ladspa_plugin.cc:93 +#: ladspa_plugin.cc:91 msgid "LADSPA: plugin has gone away since discovery!" msgstr "" -#: ladspa_plugin.cc:100 +#: ladspa_plugin.cc:98 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" @@ -1001,7 +951,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4362 session_state.cc:1114 +#: location.cc:842 session.cc:4516 session_state.cc:1031 msgid "session" msgstr "" @@ -1165,21 +1115,21 @@ msgstr "" msgid "solo control" msgstr "" -#: mtc_slave.cc:235 +#: mtc_slave.cc:238 msgid "MTC Slave: atomic read of current time failed, sleeping!" msgstr "" -#: mtc_slave.cc:359 +#: mtc_slave.cc:361 msgid "" "Unknown rate/drop value %1 in incoming MTC stream, session values used " "instead" msgstr "" -#: mtc_slave.cc:379 +#: mtc_slave.cc:381 msgid "Session framerate adjusted from %1 TO: MTC's %2." msgstr "" -#: mtc_slave.cc:393 +#: mtc_slave.cc:395 msgid "Session and MTC framerate mismatch: MTC:%1 %2:%3." msgstr "" @@ -1243,19 +1193,19 @@ msgstr "" msgid "looking for panners in %1" msgstr "" -#: panner_manager.cc:99 +#: panner_manager.cc:100 msgid "Panner discovered: \"%1\" in %2" msgstr "" -#: panner_manager.cc:116 +#: panner_manager.cc:117 msgid "PannerManager: cannot load module \"%1\" (%2)" msgstr "" -#: panner_manager.cc:123 +#: panner_manager.cc:124 msgid "PannerManager: module \"%1\" has no descriptor function." msgstr "" -#: panner_manager.cc:186 +#: panner_manager.cc:187 msgid "no panner discovered for in/out = %1/%2" msgstr "" @@ -1365,11 +1315,7 @@ msgstr "" msgid "unknown plugin type \"%1\" - ignored" msgstr "" -#: port.cc:367 -msgid "get_connected_latency_range() called while disconnected from JACK" -msgstr "" - -#: port.cc:450 +#: port.cc:410 msgid "could not reregister %1" msgstr "" @@ -1385,6 +1331,34 @@ msgstr "" msgid "non-port insert XML used for port plugin insert" msgstr "" +#: port_manager.cc:270 +msgid "" +"a port with the name \"%1\" already exists: check for duplicated track/bus " +"names" +msgstr "" + +#: port_manager.cc:272 +msgid "" +"No more ports are available. You will need to stop %1 and restart with more " +"ports if you need this many tracks." +msgstr "" + +#: port_manager.cc:275 +msgid "AudioEngine: cannot register port \"%1\": %2" +msgstr "" + +#: port_manager.cc:314 +msgid "unable to create port: %1" +msgstr "" + +#: port_manager.cc:401 +msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" +msgstr "AudioEngine: kan inte ansluta %1 (%2) till %3 (%4)" + +#: port_manager.cc:453 port_manager.cc:454 +msgid "Re-establising port %1 failed" +msgstr "" + #: processor.cc:207 msgid "No %1 property flag in element %2" msgstr "" @@ -1393,41 +1367,41 @@ msgstr "" msgid "No child node with active property" msgstr "" -#: rc_configuration.cc:93 +#: rc_configuration.cc:88 msgid "Loading system configuration file %1" msgstr "" -#: rc_configuration.cc:97 +#: rc_configuration.cc:92 msgid "%1: cannot read system configuration file \"%2\"" msgstr "" -#: rc_configuration.cc:102 +#: rc_configuration.cc:97 msgid "%1: system configuration file \"%2\" not loaded successfully." msgstr "" -#: rc_configuration.cc:106 +#: rc_configuration.cc:101 msgid "" "Your system %1 configuration file is empty. This probably means that there " "was an error installing %1" msgstr "" -#: rc_configuration.cc:121 +#: rc_configuration.cc:116 msgid "Loading user configuration file %1" msgstr "" -#: rc_configuration.cc:125 +#: rc_configuration.cc:120 msgid "%1: cannot read configuration file \"%2\"" msgstr "" -#: rc_configuration.cc:130 +#: rc_configuration.cc:125 msgid "%1: user configuration file \"%2\" not loaded successfully." msgstr "" -#: rc_configuration.cc:134 +#: rc_configuration.cc:129 msgid "your %1 configuration file is empty. This is not normal." msgstr "" -#: rc_configuration.cc:151 +#: rc_configuration.cc:146 msgid "Config file %1 not saved" msgstr "" @@ -1465,35 +1439,39 @@ msgstr "" msgid "return %1" msgstr "" -#: route.cc:1105 route.cc:2581 +#: route.cc:1075 route.cc:2528 msgid "unknown Processor type \"%1\"; ignored" msgstr "" -#: route.cc:1117 +#: route.cc:1087 msgid "processor could not be created. Ignored." msgstr "" -#: route.cc:2007 route.cc:2234 +#: route.cc:1962 route.cc:2187 msgid "Bad node sent to Route::set_state() [%1]" msgstr "" -#: route.cc:2067 +#: route.cc:2022 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 +#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" +#: route.cc:2311 +msgid "Converting deprecated order key for %1 using Editor order %2" +msgstr "" + #: route_group.cc:459 msgid "You cannot subgroup MIDI tracks at this time" msgstr "" -#: rb_effect.cc:233 rb_effect.cc:274 +#: rb_effect.cc:234 rb_effect.cc:275 msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" msgstr "" -#: rb_effect.cc:303 rb_effect.cc:325 +#: rb_effect.cc:304 rb_effect.cc:326 msgid "error writing tempo-adjusted data to %1" msgstr "" @@ -1509,185 +1487,167 @@ msgstr "" msgid "programming error: send created using role %1" msgstr "" -#: session.cc:347 -msgid "Set block size and sample rate" -msgstr "" - -#: session.cc:352 -msgid "Using configuration" -msgstr "" +#: session.cc:344 +msgid "Connect to engine" +msgstr "Ansluter till ljudmotorn" -#: session.cc:377 -msgid "LTC In" +#: session.cc:349 +msgid "Session loading complete" msgstr "" -#: session.cc:378 -msgid "LTC Out" +#: session.cc:421 +msgid "Set up LTC" msgstr "" -#: session.cc:404 -msgid "LTC-in" +#: session.cc:423 +msgid "Set up Click" msgstr "" -#: session.cc:405 -msgid "LTC-out" +#: session.cc:425 +msgid "Set up standard connections" msgstr "" -#: session.cc:434 +#: session.cc:635 msgid "could not setup Click I/O" msgstr "" -#: session.cc:461 -msgid "cannot setup Click I/O" -msgstr "" - -#: session.cc:464 -msgid "Compute I/O Latencies" -msgstr "" - -#: session.cc:470 -msgid "Set up standard connections" -msgstr "" - -#: session.cc:491 +#: session.cc:683 #, c-format msgid "out %<PRIu32>" msgstr "" -#: session.cc:505 +#: session.cc:697 #, c-format msgid "out %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:520 +#: session.cc:712 #, c-format msgid "in %<PRIu32>" msgstr "" -#: session.cc:534 +#: session.cc:726 #, c-format msgid "in %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:570 -msgid "Setup signal flow and plugins" -msgstr "Ställer in signalflöde och insticksprogram" - -#: session.cc:614 -msgid "Connect to engine" -msgstr "Ansluter till ljudmotorn" - -#: session.cc:645 +#: session.cc:790 msgid "cannot connect master output %1 to %2" msgstr "" -#: session.cc:704 +#: session.cc:849 msgid "monitor" msgstr "" -#: session.cc:749 +#: session.cc:894 msgid "cannot connect control input %1 to %2" msgstr "" -#: session.cc:769 +#: session.cc:914 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "" -#: session.cc:800 +#: session.cc:945 msgid "cannot connect control output %1 to %2" msgstr "" -#: session.cc:864 +#: session.cc:1009 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "" -#: session.cc:1043 +#: session.cc:1193 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "" -#: session.cc:1083 +#: session.cc:1233 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" msgstr "" -#: session.cc:1396 +#: session.cc:1547 msgid "feedback loop setup between %1 and %2" msgstr "" -#: session.cc:1692 +#: session.cc:1843 msgid "Session: could not create new midi track." msgstr "" -#: session.cc:1875 session.cc:1878 +#: session.cc:1849 +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 "" + +#: session.cc:2026 session.cc:2029 msgid "Audio" msgstr "" -#: session.cc:1902 session.cc:1910 session.cc:1987 session.cc:1995 +#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "" -#: session.cc:1933 +#: session.cc:2084 msgid "Session: could not create new audio track." msgstr "" -#: session.cc:1965 session.cc:1968 +#: session.cc:2116 session.cc:2119 msgid "Bus" msgstr "" -#: session.cc:2018 +#: session.cc:2169 msgid "Session: could not create new audio route." msgstr "" -#: session.cc:2077 session.cc:2087 +#: session.cc:2228 session.cc:2238 msgid "Session: UINT_MAX routes? impossible!" msgstr "" -#: session.cc:2109 +#: session.cc:2260 msgid "Session: cannot create track/bus from template description" msgstr "" -#: session.cc:2135 +#: session.cc:2286 msgid "Session: could not create new route from template" msgstr "" -#: session.cc:2164 +#: session.cc:2315 msgid "Adding new tracks/busses failed" msgstr "" -#: session.cc:3265 +#: session.cc:3419 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "" -#: session.cc:3385 session.cc:3443 +#: session.cc:3539 session.cc:3597 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "" -#: session.cc:3833 +#: session.cc:3987 msgid "send ID %1 appears to be in use already" msgstr "" -#: session.cc:3845 +#: session.cc:3999 msgid "aux send ID %1 appears to be in use already" msgstr "" -#: session.cc:3857 +#: session.cc:4011 msgid "return ID %1 appears to be in use already" msgstr "" -#: session.cc:3869 +#: session.cc:4023 msgid "insert ID %1 appears to be in use already" msgstr "" -#: session.cc:3996 +#: session.cc:4150 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "" -#: session.cc:4025 +#: session.cc:4179 msgid "too many bounced versions of playlist \"%1\"" msgstr "" -#: session.cc:4035 +#: session.cc:4189 msgid "cannot create new audio file \"%1\" for %2" msgstr "" @@ -1726,11 +1686,11 @@ msgstr "" msgid "Session: cannot have two events of type %1 at the same frame (%2)." msgstr "" -#: session_export.cc:126 +#: session_export.cc:125 msgid "%1: cannot seek to %2 for export" msgstr "" -#: session_export.cc:183 +#: session_export.cc:182 msgid "Export ended unexpectedly: %1" msgstr "" @@ -1740,10 +1700,6 @@ msgid "" "of this session." msgstr "" -#: session_midi.cc:428 -msgid "Session: could not send full MIDI time code" -msgstr "" - #: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1752,368 +1708,372 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "" -#: session_process.cc:133 +#: session_process.cc:132 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1158 +#: session_process.cc:1157 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" -#: session_state.cc:139 +#: session_state.cc:140 msgid "Could not use path %1 (%2)" msgstr "" -#: session_state.cc:267 +#: session_state.cc:184 msgid "solo cut control (dB)" msgstr "" -#: session_state.cc:360 -msgid "Reset Remote Controls" +#: session_state.cc:208 +msgid "Set block size and sample rate" msgstr "" -#: session_state.cc:385 -msgid "Session loading complete" +#: session_state.cc:213 +msgid "Using configuration" msgstr "" -#: session_state.cc:452 +#: session_state.cc:325 +msgid "Reset Remote Controls" +msgstr "" + +#: session_state.cc:417 msgid "Session: cannot create session peakfile folder \"%1\" (%2)" msgstr "" -#: session_state.cc:459 +#: session_state.cc:424 msgid "Session: cannot create session sounds dir \"%1\" (%2)" msgstr "" -#: session_state.cc:466 +#: session_state.cc:431 msgid "Session: cannot create session midi dir \"%1\" (%2)" msgstr "" -#: session_state.cc:473 +#: session_state.cc:438 msgid "Session: cannot create session dead sounds folder \"%1\" (%2)" msgstr "" -#: session_state.cc:480 +#: session_state.cc:445 msgid "Session: cannot create session export folder \"%1\" (%2)" msgstr "" -#: session_state.cc:487 +#: session_state.cc:452 msgid "Session: cannot create session analysis folder \"%1\" (%2)" msgstr "" -#: session_state.cc:494 +#: session_state.cc:459 msgid "Session: cannot create session plugins folder \"%1\" (%2)" msgstr "" -#: session_state.cc:501 +#: session_state.cc:466 msgid "Session: cannot create session externals folder \"%1\" (%2)" msgstr "" -#: session_state.cc:515 +#: session_state.cc:480 msgid "Session: cannot create session folder \"%1\" (%2)" msgstr "" -#: session_state.cc:548 +#: session_state.cc:514 msgid "Could not open %1 for writing session template" msgstr "" -#: session_state.cc:554 +#: session_state.cc:520 msgid "Could not open session template %1 for reading" msgstr "" -#: session_state.cc:573 +#: session_state.cc:539 msgid "master" msgstr "" -#: session_state.cc:636 +#: session_state.cc:600 msgid "Could not remove pending capture state at path \"%1\" (%2)" msgstr "" -#: session_state.cc:660 +#: session_state.cc:624 msgid "could not rename snapshot %1 to %2 (%3)" msgstr "" -#: session_state.cc:688 +#: session_state.cc:652 msgid "Could not remove session file at path \"%1\" (%2)" msgstr "" -#: session_state.cc:761 +#: session_state.cc:669 msgid "" "the %1 audio engine is not connected and state saving would lose all I/O " "connections. Session not saved" msgstr "" -#: session_state.cc:812 +#: session_state.cc:720 msgid "state could not be saved to %1" msgstr "" -#: session_state.cc:814 session_state.cc:825 +#: session_state.cc:722 session_state.cc:733 msgid "Could not remove temporary session file at path \"%1\" (%2)" msgstr "" -#: session_state.cc:822 +#: session_state.cc:730 msgid "could not rename temporary session file %1 to %2" msgstr "" -#: session_state.cc:890 +#: session_state.cc:798 msgid "%1: session file \"%2\" doesn't exist!" msgstr "" -#: session_state.cc:902 +#: session_state.cc:810 msgid "Could not understand session file %1" msgstr "" -#: session_state.cc:911 +#: session_state.cc:819 msgid "Session file %1 is not a session" msgstr "" -#: session_state.cc:1208 +#: session_state.cc:1125 msgid "programming error: Session: incorrect XML node sent to set_state()" msgstr "" -#: session_state.cc:1257 +#: session_state.cc:1179 msgid "Session: XML state has no options section" msgstr "" -#: session_state.cc:1262 +#: session_state.cc:1184 msgid "Session: XML state has no metadata section" msgstr "" -#: session_state.cc:1273 +#: session_state.cc:1195 msgid "Session: XML state has no sources section" msgstr "" -#: session_state.cc:1280 +#: session_state.cc:1202 msgid "Session: XML state has no Tempo Map section" msgstr "" -#: session_state.cc:1287 +#: session_state.cc:1209 msgid "Session: XML state has no locations section" msgstr "" -#: session_state.cc:1313 +#: session_state.cc:1235 msgid "Session: XML state has no Regions section" msgstr "" -#: session_state.cc:1320 +#: session_state.cc:1242 msgid "Session: XML state has no playlists section" msgstr "" -#: session_state.cc:1340 +#: session_state.cc:1262 msgid "Session: XML state has no bundles section" msgstr "" -#: session_state.cc:1352 +#: session_state.cc:1274 msgid "Session: XML state has no diskstreams section" msgstr "" -#: session_state.cc:1360 +#: session_state.cc:1282 msgid "Session: XML state has no routes section" msgstr "" -#: session_state.cc:1372 +#: session_state.cc:1294 msgid "Session: XML state has no route groups section" msgstr "" -#: session_state.cc:1381 +#: session_state.cc:1303 msgid "Session: XML state has no edit groups section" msgstr "" -#: session_state.cc:1388 +#: session_state.cc:1310 msgid "Session: XML state has no mix groups section" msgstr "" -#: session_state.cc:1396 +#: session_state.cc:1318 msgid "Session: XML state has no click section" msgstr "" -#: session_state.cc:1444 +#: session_state.cc:1360 msgid "Session: cannot create Route from XML description." msgstr "" -#: session_state.cc:1448 +#: session_state.cc:1364 msgid "Loaded track/bus %1" msgstr "" -#: session_state.cc:1546 +#: session_state.cc:1462 msgid "Could not find diskstream for route" msgstr "" -#: session_state.cc:1600 +#: session_state.cc:1516 msgid "Session: cannot create Region from XML description." msgstr "" -#: session_state.cc:1604 +#: session_state.cc:1520 msgid "Can not load state for region '%1'" msgstr "" -#: session_state.cc:1640 +#: session_state.cc:1556 msgid "Regions in compound description not found (ID's %1 and %2): ignored" msgstr "" -#: session_state.cc:1668 +#: session_state.cc:1584 msgid "Nested source has no ID info in session file! (ignored)" msgstr "" -#: session_state.cc:1680 +#: session_state.cc:1596 msgid "Cannot reconstruct nested source for region %1" msgstr "" -#: session_state.cc:1742 +#: session_state.cc:1658 msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" msgstr "" -#: session_state.cc:1750 session_state.cc:1771 session_state.cc:1791 +#: session_state.cc:1666 session_state.cc:1687 session_state.cc:1707 msgid "" "Session: XMLNode describing a AudioRegion references an unknown source id =%1" msgstr "" -#: session_state.cc:1756 session_state.cc:1777 session_state.cc:1797 +#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" msgstr "" -#: session_state.cc:1820 +#: session_state.cc:1736 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" msgstr "" -#: session_state.cc:1854 +#: session_state.cc:1770 msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" msgstr "" -#: session_state.cc:1862 +#: session_state.cc:1778 msgid "" "Session: XMLNode describing a MidiRegion references an unknown source id =%1" msgstr "" -#: session_state.cc:1868 +#: session_state.cc:1784 msgid "" "Session: XMLNode describing a MidiRegion references a non-midi source id =%1" msgstr "" -#: session_state.cc:1936 +#: session_state.cc:1852 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" msgstr "" -#: session_state.cc:1959 +#: session_state.cc:1875 msgid "Session: cannot create Source from XML description." msgstr "" -#: session_state.cc:1993 +#: session_state.cc:1909 msgid "A sound file is missing. It will be replaced by silence." msgstr "" -#: session_state.cc:2016 +#: session_state.cc:1932 msgid "Found a sound file that cannot be used by %1. Talk to the progammers." msgstr "" -#: session_state.cc:2033 +#: session_state.cc:1949 msgid "Could not create templates directory \"%1\" (%2)" msgstr "" -#: session_state.cc:2046 +#: session_state.cc:1962 msgid "Template \"%1\" already exists - new version not created" msgstr "" -#: session_state.cc:2052 +#: session_state.cc:1968 msgid "Could not create directory for Session template\"%1\" (%2)" msgstr "" -#: session_state.cc:2062 +#: session_state.cc:1978 msgid "template not saved" msgstr "" -#: session_state.cc:2072 +#: session_state.cc:1988 msgid "Could not create directory for Session template plugin state\"%1\" (%2)" msgstr "" -#: session_state.cc:2267 +#: session_state.cc:2183 msgid "Unknown node \"%1\" found in Bundles list from session file" msgstr "" -#: session_state.cc:2809 session_state.cc:2815 +#: session_state.cc:2725 session_state.cc:2731 msgid "Cannot expand path %1 (%2)" msgstr "" -#: session_state.cc:2868 +#: session_state.cc:2784 msgid "Session: cannot create dead file folder \"%1\" (%2)" msgstr "" -#: session_state.cc:2907 +#: session_state.cc:2823 msgid "cannot rename unused file source from %1 to %2 (%3)" msgstr "" -#: session_state.cc:2925 +#: session_state.cc:2841 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "" -#: session_state.cc:3227 +#: session_state.cc:3143 msgid "could not backup old history file, current history not saved" msgstr "" -#: session_state.cc:3240 +#: session_state.cc:3156 msgid "history could not be saved to %1" msgstr "" -#: session_state.cc:3243 +#: session_state.cc:3159 msgid "Could not remove history file at path \"%1\" (%2)" msgstr "" -#: session_state.cc:3247 +#: session_state.cc:3163 msgid "could not restore history file from backup %1 (%2)" msgstr "" -#: session_state.cc:3272 +#: session_state.cc:3188 msgid "%1: no history file \"%2\" for this session." msgstr "" -#: session_state.cc:3278 +#: session_state.cc:3194 msgid "Could not understand session history file \"%1\"" msgstr "" -#: session_state.cc:3320 +#: session_state.cc:3236 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "" -#: session_state.cc:3331 +#: session_state.cc:3247 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "" -#: session_state.cc:3342 +#: session_state.cc:3258 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "" -#: session_state.cc:3350 +#: session_state.cc:3266 msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "" -#: session_state.cc:3602 +#: session_state.cc:3502 msgid "Session: unknown diskstream type in XML" msgstr "" -#: session_state.cc:3607 +#: session_state.cc:3507 msgid "Session: could not load diskstream via XML state" msgstr "" -#: session_time.cc:215 -msgid "Unknown JACK transport state %1 in sync callback" +#: session_time.cc:214 +msgid "Unknown transport state %1 in sync callback" msgstr "" -#: session_transport.cc:168 +#: session_transport.cc:167 msgid "Cannot loop - no loop range defined" msgstr "" -#: session_transport.cc:728 +#: session_transport.cc:739 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1094 +#: session_transport.cc:1105 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2256,7 +2216,7 @@ msgstr "" msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 +#: sndfilesource.cc:396 utils.cc:510 utils.cc:534 utils.cc:548 utils.cc:567 msgid "programming error: %1 %2" msgstr "" @@ -2474,19 +2434,19 @@ msgstr "LÃ¥s" msgid "programming error: unknown edit mode string \"%1\"" msgstr "" -#: utils.cc:389 utils.cc:418 +#: utils.cc:389 utils.cc:421 msgid "MIDI Timecode" msgstr "" -#: utils.cc:389 utils.cc:416 +#: utils.cc:389 utils.cc:419 msgid "MTC" msgstr "" -#: utils.cc:393 utils.cc:425 +#: utils.cc:393 utils.cc:428 msgid "MIDI Clock" msgstr "" -#: utils.cc:397 utils.cc:412 utils.cc:432 +#: utils.cc:397 utils.cc:415 utils.cc:435 msgid "JACK" msgstr "" @@ -2494,42 +2454,18 @@ msgstr "" msgid "programming error: unknown sync source string \"%1\"" msgstr "" -#: utils.cc:423 +#: utils.cc:426 msgid "M-Clock" msgstr "" -#: utils.cc:429 +#: utils.cc:432 msgid "LTC" msgstr "" -#: utils.cc:599 +#: utils.cc:602 msgid "programming error: unknown native header format: %1" msgstr "" -#: utils.cc:614 +#: utils.cc:617 msgid "cannot open directory %1 (%2)" msgstr "" - -#~ msgid "Connection %1 was not available - \"out 1\" used instead" -#~ msgstr "Anslutning %1 inte tillgänglig - \"out 1\" används instället" - -#~ msgid "Splice Edit" -#~ msgstr "Fogredigering" - -#~ msgid "Slide Edit" -#~ msgstr "Glidredigering" - -#~ msgid "Lock Edit" -#~ msgstr "LÃ¥st redigering" - -#~ msgid "Internal" -#~ msgstr "Intern" - -#~ msgid "Catch up with send/insert state" -#~ msgstr "Kommer ikapp sänd/anslutningstillstÃ¥nd" - -#~ msgid "OSC startup" -#~ msgstr "OSC-uppstart" - -#~ msgid "Configuring MIDI ports" -#~ msgstr "Konfigurerar MIDI-portar" diff --git a/libs/ardour/po/zh.po b/libs/ardour/po/zh.po index 1d0e8f3d44..d39877d9f5 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-09-03 07:59-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2012-08-26 13:43+0800\n" "Last-Translator: Rui-huai Zhang <zrhzrh>\n" "Language-Team: zrhzrh <zrhzrh@mail.ustc.edu.cn>\n" @@ -121,7 +121,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:643 -#: rb_effect.cc:332 session.cc:2465 session.cc:2498 session.cc:3643 +#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797 #: session_handle.cc:87 sndfilesource.cc:121 msgid "programming error: %1" msgstr "程åºé”™è¯¯: %1" @@ -190,60 +190,22 @@ msgstr "æ— æ³•è½½å…¥VAMPæ’件 \"%1\"" msgid "VAMP Plugin \"%1\" could not be loaded" msgstr "æ— æ³•è½½å…¥VAMPæ’件 \"%1\"" -#: audioengine.cc:186 -msgid "" -"This version of JACK is old - you should upgrade to a newer version that " -"supports jack_port_type_get_buffer_size()" +#: audioengine.cc:488 +msgid "looking for backends in %1\n" msgstr "" -#: audioengine.cc:190 -msgid "Connect session to engine" -msgstr "连接会è¯åˆ°å¼•æ“Ž" - -#: audioengine.cc:843 -msgid "" -"a port with the name \"%1\" already exists: check for duplicated track/bus " -"names" -msgstr "" - -#: 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:848 -msgid "AudioEngine: cannot register port \"%1\": %2" -msgstr "" - -#: audioengine.cc:878 -msgid "unable to create port: %1" -msgstr "æ— æ³•åˆ›å»ºç«¯å£: %1" - -#: audioengine.cc:932 -msgid "connect called before engine was started" -msgstr "" - -#: audioengine.cc:958 -msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" -msgstr "音频引擎: æ— æ³•è¿žæŽ¥ %1 (%2) 到 %3 (%4)" - -#: audioengine.cc:973 audioengine.cc:1004 -msgid "disconnect called before engine was started" +#: audioengine.cc:511 +msgid "AudioEngine: cannot load module \"%1\" (%2)" msgstr "" -#: audioengine.cc:1052 -msgid "get_port_by_name() called before engine was started" +#: audioengine.cc:517 +msgid "AudioEngine: backend at \"%1\" has no descriptor function." msgstr "" -#: audioengine.cc:1104 -msgid "get_ports called before engine was started" +#: audioengine.cc:589 +msgid "Could not create backend for %1: %2" msgstr "" -#: audioengine.cc:1427 -msgid "failed to connect to JACK" -msgstr "连接JACK失败" - #: audioregion.cc:1643 msgid "" "You have requested an operation that requires audio analysis.\n" @@ -297,9 +259,8 @@ msgid "%1: could not write peak file data (%2)" msgstr "" #: audiosource.cc:924 -#, fuzzy msgid "could not truncate peakfile %1 to %2 (error: %3)" -msgstr "æ— æ³•é‡å‘½å文件 %1 到 %2 (%3)" +msgstr "" #: auditioner.cc:87 msgid "no outputs available for auditioner - manual connection required" @@ -389,9 +350,8 @@ msgid "Instantiating mandatory control protocol %1" msgstr "实例强制性控制åè®® %1" #: control_protocol_manager.cc:222 -#, fuzzy msgid "looking for control protocols in %1\n" -msgstr "寻找控制åè®®, 在 %1\n" +msgstr "" #: control_protocol_manager.cc:247 msgid "Control protocol %1 not usable" @@ -425,7 +385,7 @@ msgstr "" msgid "audio" msgstr "音频" -#: data_type.cc:28 session.cc:1640 session.cc:1643 +#: data_type.cc:28 session.cc:1791 session.cc:1794 msgid "MIDI" msgstr "MIDI" @@ -537,7 +497,7 @@ msgstr "三角形" msgid "Rectangular" msgstr "长方形" -#: export_formats.cc:52 session.cc:4861 session.cc:4877 +#: export_formats.cc:52 session.cc:5014 session.cc:5030 msgid "None" msgstr "" @@ -594,33 +554,28 @@ msgid "Searching for export formats in %1" msgstr "" #: export_profile_manager.cc:99 -#, fuzzy msgid "Unable to create export format directory %1: %2" -msgstr "æ— æ³•åˆ›å»ºæ··éŸ³æ¨¡æ¿ç›®å½• \"%1\" (%2)" +msgstr "" #: export_profile_manager.cc:257 -#, fuzzy msgid "Unable to remove export preset %1: %2" -msgstr "æ— æ³•åˆ›å»ºç«¯å£: %1" +msgstr "" #: export_profile_manager.cc:347 msgid "Selection" msgstr "选å–" #: export_profile_manager.cc:600 -#, fuzzy msgid "Unable to rename export format %1 to %2: %3" -msgstr "æ— æ³•é‡å‘½åå¿«ç…§ %1 到 %2 (%3)" +msgstr "" #: export_profile_manager.cc:632 -#, fuzzy msgid "Unable to remove export profile %1: %2" -msgstr "æ— æ³•å¤‡ä»½çŠ¶æ€æ–‡ä»¶%1 (%2)" +msgstr "" #: export_profile_manager.cc:649 -#, fuzzy msgid "empty format" -msgstr "æ— é‡‡æ ·æ ¼å¼" +msgstr "" #: export_profile_manager.cc:818 msgid "No timespan has been selected!" @@ -652,7 +607,7 @@ msgid "" "configuration" msgstr "" -#: file_source.cc:198 session_state.cc:2891 +#: file_source.cc:198 session_state.cc:2807 msgid "" "there are already 1000 files with names like %1; versioning discontinued" msgstr "" @@ -694,9 +649,8 @@ msgid "cannot rename file %1 to %2 (%3)" msgstr "æ— æ³•é‡å‘½å文件 %1 到 %2 (%3)" #: filesystem_paths.cc:73 -#, fuzzy msgid "Cannot create Configuration directory %1 - cannot run" -msgstr "æ— æ³•åˆ›å»ºä¼šè¯ç›®å½•åœ¨è·¯å¾„ %1 错误: %2" +msgstr "" #: filesystem_paths.cc:78 msgid "" @@ -748,23 +702,23 @@ msgstr "" msgid "unknown file type for session %1" msgstr "" -#: globals.cc:205 +#: globals.cc:207 msgid "Could not set system open files limit to \"unlimited\"" msgstr "" -#: globals.cc:207 +#: globals.cc:209 msgid "Could not set system open files limit to %1" msgstr "" -#: globals.cc:211 +#: globals.cc:213 msgid "Your system is configured to limit %1 to only %2 open files" msgstr "" -#: globals.cc:215 +#: globals.cc:217 msgid "Could not get system open files limit (%1)" msgstr "" -#: globals.cc:266 +#: globals.cc:268 msgid "Loading configuration" msgstr "载入é…ç½®" @@ -809,9 +763,8 @@ msgid "Failed to remove some files after failed/cancelled import operation" msgstr "" #: instrument_info.cc:40 instrument_info.cc:61 -#, fuzzy msgid "Unknown" -msgstr "未知" +msgstr "" #: instrument_info.cc:230 msgid "preset %1 (bank %2)" @@ -885,57 +838,55 @@ msgstr "" msgid "IO: bad output string in XML node \"%1\"" msgstr "" -#: io.cc:1410 +#: io.cc:1411 #, c-format msgid "%s %u" msgstr "" -#: io.cc:1457 +#: io.cc:1458 #, c-format msgid "%s in" msgstr "" -#: io.cc:1459 +#: io.cc:1460 #, c-format msgid "%s out" msgstr "" -#: io.cc:1534 session.cc:494 session.cc:523 +#: io.cc:1535 session.cc:686 session.cc:715 msgid "mono" msgstr "å•å£°é“" -#: io.cc:1536 session.cc:507 session.cc:537 +#: io.cc:1537 session.cc:699 session.cc:729 msgid "L" msgstr "" -#: io.cc:1536 session.cc:509 session.cc:539 +#: io.cc:1537 session.cc:701 session.cc:731 msgid "R" msgstr "" -#: io.cc:1538 io.cc:1544 +#: io.cc:1539 io.cc:1545 #, c-format msgid "%d" msgstr "" -#: ladspa_plugin.cc:88 +#: ladspa_plugin.cc:86 msgid "LADSPA: module has no descriptor function." msgstr "LADSPA: 模å—没有æ述符函数." -#: ladspa_plugin.cc:93 +#: ladspa_plugin.cc:91 msgid "LADSPA: plugin has gone away since discovery!" msgstr "LADSPA: 当å‘现æ’件时, æ’件已ç»ä¸è§äº†." -#: ladspa_plugin.cc:100 +#: ladspa_plugin.cc:98 msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing" msgstr "" #: ladspa_plugin.cc:297 -#, fuzzy msgid "" "illegal parameter number used with plugin \"%1\". This may indicate a change " "in the plugin design, and presets may be invalid" msgstr "" -"æ’件\"%1\"使用éžæ³•å‚æ•°æ•°é‡. è¿™å¯èƒ½æ„味ç€æ’件的设计有所å˜åŠ¨, 而且预设失效了." #: ladspa_plugin.cc:376 ladspa_plugin.cc:426 msgid "Bad node sent to LadspaPlugin::set_state" @@ -1005,7 +956,7 @@ msgstr "" msgid "incorrect XML mode passed to Locations::set_state" msgstr "" -#: location.cc:842 session.cc:4362 session_state.cc:1114 +#: location.cc:842 session.cc:4516 session_state.cc:1031 msgid "session" msgstr "会è¯" @@ -1169,21 +1120,21 @@ msgstr "" msgid "solo control" msgstr "" -#: mtc_slave.cc:235 +#: mtc_slave.cc:238 msgid "MTC Slave: atomic read of current time failed, sleeping!" msgstr "" -#: mtc_slave.cc:359 +#: mtc_slave.cc:361 msgid "" "Unknown rate/drop value %1 in incoming MTC stream, session values used " "instead" msgstr "" -#: mtc_slave.cc:379 +#: mtc_slave.cc:381 msgid "Session framerate adjusted from %1 TO: MTC's %2." msgstr "" -#: mtc_slave.cc:393 +#: mtc_slave.cc:395 msgid "Session and MTC framerate mismatch: MTC:%1 %2:%3." msgstr "" @@ -1247,19 +1198,19 @@ msgstr "" msgid "looking for panners in %1" msgstr "" -#: panner_manager.cc:99 +#: panner_manager.cc:100 msgid "Panner discovered: \"%1\" in %2" msgstr "" -#: panner_manager.cc:116 +#: panner_manager.cc:117 msgid "PannerManager: cannot load module \"%1\" (%2)" msgstr "" -#: panner_manager.cc:123 +#: panner_manager.cc:124 msgid "PannerManager: module \"%1\" has no descriptor function." msgstr "" -#: panner_manager.cc:186 +#: panner_manager.cc:187 msgid "no panner discovered for in/out = %1/%2" msgstr "" @@ -1369,11 +1320,7 @@ msgstr "" msgid "unknown plugin type \"%1\" - ignored" msgstr "ä½ç½®æ’件类型 \"%1\" - 忽略之" -#: port.cc:367 -msgid "get_connected_latency_range() called while disconnected from JACK" -msgstr "" - -#: port.cc:450 +#: port.cc:410 msgid "could not reregister %1" msgstr "æ— æ³•æ³¨å†Œ %1." @@ -1389,6 +1336,34 @@ msgstr "" msgid "non-port insert XML used for port plugin insert" msgstr "" +#: port_manager.cc:270 +msgid "" +"a port with the name \"%1\" already exists: check for duplicated track/bus " +"names" +msgstr "" + +#: port_manager.cc:272 +msgid "" +"No more ports are available. You will need to stop %1 and restart with more " +"ports if you need this many tracks." +msgstr "" + +#: port_manager.cc:275 +msgid "AudioEngine: cannot register port \"%1\": %2" +msgstr "" + +#: port_manager.cc:314 +msgid "unable to create port: %1" +msgstr "æ— æ³•åˆ›å»ºç«¯å£: %1" + +#: port_manager.cc:401 +msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" +msgstr "音频引擎: æ— æ³•è¿žæŽ¥ %1 (%2) 到 %3 (%4)" + +#: port_manager.cc:453 port_manager.cc:454 +msgid "Re-establising port %1 failed" +msgstr "" + #: processor.cc:207 msgid "No %1 property flag in element %2" msgstr "" @@ -1397,41 +1372,41 @@ msgstr "" msgid "No child node with active property" msgstr "" -#: rc_configuration.cc:93 +#: rc_configuration.cc:88 msgid "Loading system configuration file %1" msgstr "载入系统é…置文件 %1" -#: rc_configuration.cc:97 +#: rc_configuration.cc:92 msgid "%1: cannot read system configuration file \"%2\"" msgstr "%1: æ— æ³•è¯»å–系统é…置文件\"%2\"" -#: rc_configuration.cc:102 +#: rc_configuration.cc:97 msgid "%1: system configuration file \"%2\" not loaded successfully." msgstr "%1: 系统é…置文件 \"%2\" 载入ä¸æˆåŠŸ" -#: rc_configuration.cc:106 +#: rc_configuration.cc:101 msgid "" "Your system %1 configuration file is empty. This probably means that there " "was an error installing %1" msgstr "" -#: rc_configuration.cc:121 +#: rc_configuration.cc:116 msgid "Loading user configuration file %1" msgstr "载入用户é…置文件 %1" -#: rc_configuration.cc:125 +#: rc_configuration.cc:120 msgid "%1: cannot read configuration file \"%2\"" msgstr "%1: æ— æ³•è¯»å–é…置文件 \"%2\"" -#: rc_configuration.cc:130 +#: rc_configuration.cc:125 msgid "%1: user configuration file \"%2\" not loaded successfully." msgstr "%1: 用户é…置文件 \"%2\" 载入ä¸æˆåŠŸ" -#: rc_configuration.cc:134 +#: rc_configuration.cc:129 msgid "your %1 configuration file is empty. This is not normal." msgstr "" -#: rc_configuration.cc:151 +#: rc_configuration.cc:146 msgid "Config file %1 not saved" msgstr "é…置文件 %1 没有ä¿å˜" @@ -1469,35 +1444,39 @@ msgstr "导入: src_new() 失败 : %1" msgid "return %1" msgstr "返回 %1" -#: route.cc:1105 route.cc:2581 +#: route.cc:1075 route.cc:2528 msgid "unknown Processor type \"%1\"; ignored" msgstr "" -#: route.cc:1117 +#: route.cc:1087 msgid "processor could not be created. Ignored." msgstr "" -#: route.cc:2007 route.cc:2234 +#: route.cc:1962 route.cc:2187 msgid "Bad node sent to Route::set_state() [%1]" msgstr "æŸå的符å·å‘é€è‡³ Route::set_state() [%1]" -#: route.cc:2067 +#: route.cc:2022 msgid "Pannable state found for route (%1) without a panner!" msgstr "" -#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352 +#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305 msgid "badly formed order key string in state file! [%1] ... ignored." msgstr "" +#: route.cc:2311 +msgid "Converting deprecated order key for %1 using Editor order %2" +msgstr "" + #: route_group.cc:459 msgid "You cannot subgroup MIDI tracks at this time" msgstr "æ¤æ—¶ä½ æ— æ³•å分组MIDI声é“" -#: rb_effect.cc:233 rb_effect.cc:274 +#: rb_effect.cc:234 rb_effect.cc:275 msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" msgstr "" -#: rb_effect.cc:303 rb_effect.cc:325 +#: rb_effect.cc:304 rb_effect.cc:326 msgid "error writing tempo-adjusted data to %1" msgstr "" @@ -1510,189 +1489,170 @@ msgid "send %1" msgstr "å‘é€ %1" #: send.cc:65 -#, fuzzy msgid "programming error: send created using role %1" -msgstr "程åºé”™è¯¯: æ— æ³•è¯†åˆ«ç¼–è¾‘æ¨¡å¼å—符串 \"%1\"" - -#: session.cc:347 -msgid "Set block size and sample rate" msgstr "" -#: session.cc:352 -msgid "Using configuration" -msgstr "使用é…ç½®" +#: session.cc:344 +msgid "Connect to engine" +msgstr "连接到引擎" -#: session.cc:377 -msgid "LTC In" -msgstr "" +#: session.cc:349 +msgid "Session loading complete" +msgstr "会è¯è½½å…¥å®Œæˆ" -#: session.cc:378 -msgid "LTC Out" +#: session.cc:421 +msgid "Set up LTC" msgstr "" -#: session.cc:404 -msgid "LTC-in" +#: session.cc:423 +msgid "Set up Click" msgstr "" -#: session.cc:405 -msgid "LTC-out" -msgstr "" +#: session.cc:425 +msgid "Set up standard connections" +msgstr "è®¾ç½®æ ‡å‡†è¿žæŽ¥" -#: session.cc:434 +#: session.cc:635 msgid "could not setup Click I/O" msgstr "" -#: session.cc:461 -msgid "cannot setup Click I/O" -msgstr "" - -#: session.cc:464 -msgid "Compute I/O Latencies" -msgstr "" - -#: session.cc:470 -msgid "Set up standard connections" -msgstr "è®¾ç½®æ ‡å‡†è¿žæŽ¥" - -#: session.cc:491 +#: session.cc:683 #, c-format msgid "out %<PRIu32>" msgstr "" -#: session.cc:505 +#: session.cc:697 #, c-format msgid "out %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:520 +#: session.cc:712 #, c-format msgid "in %<PRIu32>" msgstr "" -#: session.cc:534 +#: session.cc:726 #, c-format msgid "in %<PRIu32>+%<PRIu32>" msgstr "" -#: session.cc:570 -msgid "Setup signal flow and plugins" -msgstr "" - -#: session.cc:614 -msgid "Connect to engine" -msgstr "连接到引擎" - -#: session.cc:645 +#: session.cc:790 msgid "cannot connect master output %1 to %2" msgstr "" -#: session.cc:704 +#: session.cc:849 msgid "monitor" msgstr "" -#: session.cc:749 +#: session.cc:894 msgid "cannot connect control input %1 to %2" msgstr "" -#: session.cc:769 +#: session.cc:914 msgid "The preferred I/O for the monitor bus (%1) cannot be found" msgstr "" -#: session.cc:800 +#: session.cc:945 msgid "cannot connect control output %1 to %2" msgstr "" -#: session.cc:864 +#: session.cc:1009 msgid "cannot create Auditioner: no auditioning of regions possible" msgstr "" -#: session.cc:1043 +#: session.cc:1193 msgid "Session: you can't use that location for auto punch (start <= end)" msgstr "" -#: session.cc:1083 +#: session.cc:1233 msgid "" "You cannot use this location for auto-loop because it has zero or negative " "length" msgstr "" -#: session.cc:1396 +#: session.cc:1547 msgid "feedback loop setup between %1 and %2" msgstr "" -#: session.cc:1692 +#: session.cc:1843 msgid "Session: could not create new midi track." msgstr "" -#: session.cc:1875 session.cc:1878 +#: session.cc:1849 +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 "" + +#: session.cc:2026 session.cc:2029 msgid "Audio" msgstr "音频" -#: session.cc:1902 session.cc:1910 session.cc:1987 session.cc:1995 +#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146 msgid "cannot configure %1 in/%2 out configuration for new audio track" msgstr "" -#: session.cc:1933 +#: session.cc:2084 msgid "Session: could not create new audio track." msgstr "" -#: session.cc:1965 session.cc:1968 +#: session.cc:2116 session.cc:2119 msgid "Bus" msgstr "总线" -#: session.cc:2018 +#: session.cc:2169 msgid "Session: could not create new audio route." msgstr "" -#: session.cc:2077 session.cc:2087 +#: session.cc:2228 session.cc:2238 msgid "Session: UINT_MAX routes? impossible!" msgstr "" -#: session.cc:2109 +#: session.cc:2260 msgid "Session: cannot create track/bus from template description" msgstr "" -#: session.cc:2135 +#: session.cc:2286 msgid "Session: could not create new route from template" msgstr "" -#: session.cc:2164 +#: session.cc:2315 msgid "Adding new tracks/busses failed" msgstr "" -#: session.cc:3265 +#: session.cc:3419 msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" msgstr "" -#: session.cc:3385 session.cc:3443 +#: session.cc:3539 session.cc:3597 msgid "There are already %1 recordings for %2, which I consider too many." msgstr "" -#: session.cc:3833 +#: session.cc:3987 msgid "send ID %1 appears to be in use already" msgstr "" -#: session.cc:3845 +#: session.cc:3999 msgid "aux send ID %1 appears to be in use already" msgstr "" -#: session.cc:3857 +#: session.cc:4011 msgid "return ID %1 appears to be in use already" msgstr "" -#: session.cc:3869 +#: session.cc:4023 msgid "insert ID %1 appears to be in use already" msgstr "" -#: session.cc:3996 +#: session.cc:4150 msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" msgstr "" -#: session.cc:4025 +#: session.cc:4179 msgid "too many bounced versions of playlist \"%1\"" msgstr "" -#: session.cc:4035 +#: session.cc:4189 msgid "cannot create new audio file \"%1\" for %2" msgstr "" @@ -1731,11 +1691,11 @@ msgstr "会è¯å目录ä¸å˜åœ¨äºŽè·¯å¾„ %1" msgid "Session: cannot have two events of type %1 at the same frame (%2)." msgstr "" -#: session_export.cc:126 +#: session_export.cc:125 msgid "%1: cannot seek to %2 for export" msgstr "" -#: session_export.cc:183 +#: session_export.cc:182 msgid "Export ended unexpectedly: %1" msgstr "" @@ -1745,10 +1705,6 @@ msgid "" "of this session." msgstr "" -#: session_midi.cc:428 -msgid "Session: could not send full MIDI time code" -msgstr "" - #: session_midi.cc:520 msgid "Session: cannot send quarter-frame MTC message (%1)" msgstr "" @@ -1757,380 +1713,372 @@ msgstr "" msgid "Session: cannot create Playlist from XML description." msgstr "会è¯: æ— æ³•ä»ŽXMLæ述符创建æ’放列表." -#: session_process.cc:133 +#: session_process.cc:132 msgid "Session: error in no roll for %1" msgstr "" -#: session_process.cc:1158 +#: session_process.cc:1157 msgid "Programming error: illegal event type in process_event (%1)" msgstr "" -#: session_state.cc:139 -#, fuzzy +#: session_state.cc:140 msgid "Could not use path %1 (%2)" -msgstr "æ— æ³•ä½¿ç”¨è·¯å¾„ %1 (%s)" +msgstr "" -#: session_state.cc:267 +#: session_state.cc:184 msgid "solo cut control (dB)" msgstr "" -#: session_state.cc:360 -msgid "Reset Remote Controls" +#: session_state.cc:208 +msgid "Set block size and sample rate" msgstr "" -#: session_state.cc:385 -msgid "Session loading complete" -msgstr "会è¯è½½å…¥å®Œæˆ" +#: session_state.cc:213 +msgid "Using configuration" +msgstr "使用é…ç½®" -#: session_state.cc:452 +#: session_state.cc:325 +msgid "Reset Remote Controls" +msgstr "" + +#: session_state.cc:417 msgid "Session: cannot create session peakfile folder \"%1\" (%2)" msgstr "会è¯: æ— æ³•åˆ›å»ºä¼šè¯å³°æ–‡ä»¶çš„文件夹 \"%1\" (%2)" -#: session_state.cc:459 +#: session_state.cc:424 msgid "Session: cannot create session sounds dir \"%1\" (%2)" msgstr "" -#: session_state.cc:466 +#: session_state.cc:431 msgid "Session: cannot create session midi dir \"%1\" (%2)" msgstr "" -#: session_state.cc:473 +#: session_state.cc:438 msgid "Session: cannot create session dead sounds folder \"%1\" (%2)" msgstr "" -#: session_state.cc:480 +#: session_state.cc:445 msgid "Session: cannot create session export folder \"%1\" (%2)" msgstr "会è¯: æ— æ³•åˆ›å»ºä¼šè¯å¯¼å‡ºæ–‡ä»¶å¤¹ \"%1\" (%2)" -#: session_state.cc:487 +#: session_state.cc:452 msgid "Session: cannot create session analysis folder \"%1\" (%2)" msgstr "会è¯: æ— æ³•åˆ›å»ºä¼šè¯åˆ†æžæ–‡ä»¶å¤¹ \"%1\" (%2)" -#: session_state.cc:494 +#: session_state.cc:459 msgid "Session: cannot create session plugins folder \"%1\" (%2)" msgstr "会è¯: æ— æ³•åˆ›å»ºä¼šè¯æ’件文件夹 \"%1\" (%2)" -#: session_state.cc:501 -#, fuzzy +#: session_state.cc:466 msgid "Session: cannot create session externals folder \"%1\" (%2)" -msgstr "会è¯: æ— æ³•åˆ›å»ºä¼šè¯åˆ†æžæ–‡ä»¶å¤¹ \"%1\" (%2)" +msgstr "" -#: session_state.cc:515 +#: session_state.cc:480 msgid "Session: cannot create session folder \"%1\" (%2)" msgstr "会è¯: æ— æ³•åˆ›å»ºä¼šè¯æ–‡ä»¶å¤¹ \"%1\" (%2)" -#: session_state.cc:548 -#, fuzzy +#: session_state.cc:514 msgid "Could not open %1 for writing session template" -msgstr "æ— æ³•æ‰“å¼€ %1 用于写入混音模æ¿" +msgstr "" -#: session_state.cc:554 -#, fuzzy +#: session_state.cc:520 msgid "Could not open session template %1 for reading" -msgstr "æ— æ³•æ‰“å¼€æ··éŸ³æ¨¡æ¿ %1 用于读å–" +msgstr "" -#: session_state.cc:573 +#: session_state.cc:539 msgid "master" msgstr "主控" -#: session_state.cc:636 -#, fuzzy +#: session_state.cc:600 msgid "Could not remove pending capture state at path \"%1\" (%2)" -msgstr "æ— æ³•è§£å†³è·¯å¾„: %1 (%2)" +msgstr "" -#: session_state.cc:660 +#: session_state.cc:624 msgid "could not rename snapshot %1 to %2 (%3)" msgstr "æ— æ³•é‡å‘½åå¿«ç…§ %1 到 %2 (%3)" -#: session_state.cc:688 -#, fuzzy +#: session_state.cc:652 msgid "Could not remove session file at path \"%1\" (%2)" -msgstr "æ— æ³•è§£å†³è·¯å¾„: %1 (%2)" +msgstr "" -#: session_state.cc:761 +#: session_state.cc:669 msgid "" "the %1 audio engine is not connected and state saving would lose all I/O " "connections. Session not saved" msgstr "" -#: session_state.cc:812 +#: session_state.cc:720 msgid "state could not be saved to %1" msgstr "" -#: session_state.cc:814 session_state.cc:825 -#, fuzzy +#: session_state.cc:722 session_state.cc:733 msgid "Could not remove temporary session file at path \"%1\" (%2)" -msgstr "æ— æ³•åˆ›å»ºæ··éŸ³æ¨¡æ¿ç›®å½• \"%1\" (%2)" +msgstr "" -#: session_state.cc:822 +#: session_state.cc:730 msgid "could not rename temporary session file %1 to %2" msgstr "" -#: session_state.cc:890 +#: session_state.cc:798 msgid "%1: session file \"%2\" doesn't exist!" msgstr "" -#: session_state.cc:902 -#, fuzzy +#: session_state.cc:810 msgid "Could not understand session file %1" -msgstr "æ— æ³•ç†è§£ä¼šè¯åŽ†å²æ–‡ä»¶ \"%1\"" +msgstr "" -#: session_state.cc:911 +#: session_state.cc:819 msgid "Session file %1 is not a session" msgstr "会è¯æ–‡ä»¶ %1 ä¸æ˜¯ä¸€ä¸ªä¼šè¯" -#: session_state.cc:1208 +#: session_state.cc:1125 msgid "programming error: Session: incorrect XML node sent to set_state()" msgstr "" -#: session_state.cc:1257 +#: session_state.cc:1179 msgid "Session: XML state has no options section" msgstr "" -#: session_state.cc:1262 +#: session_state.cc:1184 msgid "Session: XML state has no metadata section" msgstr "" -#: session_state.cc:1273 +#: session_state.cc:1195 msgid "Session: XML state has no sources section" msgstr "" -#: session_state.cc:1280 +#: session_state.cc:1202 msgid "Session: XML state has no Tempo Map section" msgstr "" -#: session_state.cc:1287 +#: session_state.cc:1209 msgid "Session: XML state has no locations section" msgstr "" -#: session_state.cc:1313 +#: session_state.cc:1235 msgid "Session: XML state has no Regions section" msgstr "" -#: session_state.cc:1320 +#: session_state.cc:1242 msgid "Session: XML state has no playlists section" msgstr "" -#: session_state.cc:1340 +#: session_state.cc:1262 msgid "Session: XML state has no bundles section" msgstr "" -#: session_state.cc:1352 +#: session_state.cc:1274 msgid "Session: XML state has no diskstreams section" msgstr "" -#: session_state.cc:1360 +#: session_state.cc:1282 msgid "Session: XML state has no routes section" msgstr "" -#: session_state.cc:1372 +#: session_state.cc:1294 msgid "Session: XML state has no route groups section" msgstr "" -#: session_state.cc:1381 +#: session_state.cc:1303 msgid "Session: XML state has no edit groups section" msgstr "" -#: session_state.cc:1388 +#: session_state.cc:1310 msgid "Session: XML state has no mix groups section" msgstr "" -#: session_state.cc:1396 +#: session_state.cc:1318 msgid "Session: XML state has no click section" msgstr "" -#: session_state.cc:1444 +#: session_state.cc:1360 msgid "Session: cannot create Route from XML description." msgstr "" -#: session_state.cc:1448 +#: session_state.cc:1364 msgid "Loaded track/bus %1" msgstr "载入音轨/总线 %1" -#: session_state.cc:1546 +#: session_state.cc:1462 msgid "Could not find diskstream for route" msgstr "" -#: session_state.cc:1600 +#: session_state.cc:1516 msgid "Session: cannot create Region from XML description." msgstr "" -#: session_state.cc:1604 +#: session_state.cc:1520 msgid "Can not load state for region '%1'" msgstr "" -#: session_state.cc:1640 +#: session_state.cc:1556 msgid "Regions in compound description not found (ID's %1 and %2): ignored" msgstr "" -#: session_state.cc:1668 +#: session_state.cc:1584 msgid "Nested source has no ID info in session file! (ignored)" msgstr "" -#: session_state.cc:1680 +#: session_state.cc:1596 msgid "Cannot reconstruct nested source for region %1" msgstr "" -#: session_state.cc:1742 +#: session_state.cc:1658 msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" msgstr "" -#: session_state.cc:1750 session_state.cc:1771 session_state.cc:1791 +#: session_state.cc:1666 session_state.cc:1687 session_state.cc:1707 msgid "" "Session: XMLNode describing a AudioRegion references an unknown source id =%1" msgstr "" -#: session_state.cc:1756 session_state.cc:1777 session_state.cc:1797 +#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713 msgid "" "Session: XMLNode describing a AudioRegion references a non-audio source id =" "%1" msgstr "" -#: session_state.cc:1820 +#: session_state.cc:1736 msgid "" "Session: XMLNode describing an AudioRegion is missing some master sources; " "ignored" msgstr "" -#: session_state.cc:1854 +#: session_state.cc:1770 msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" msgstr "" -#: session_state.cc:1862 +#: session_state.cc:1778 msgid "" "Session: XMLNode describing a MidiRegion references an unknown source id =%1" msgstr "" -#: session_state.cc:1868 +#: session_state.cc:1784 msgid "" "Session: XMLNode describing a MidiRegion references a non-midi source id =%1" msgstr "" -#: session_state.cc:1936 +#: session_state.cc:1852 msgid "" "cannot create new file from region name \"%1\" with ident = \"%2\": too many " "existing files with similar names" msgstr "" -#: session_state.cc:1959 +#: session_state.cc:1875 msgid "Session: cannot create Source from XML description." msgstr "" -#: session_state.cc:1993 +#: session_state.cc:1909 msgid "A sound file is missing. It will be replaced by silence." msgstr "" -#: session_state.cc:2016 +#: session_state.cc:1932 msgid "Found a sound file that cannot be used by %1. Talk to the progammers." msgstr "" -#: session_state.cc:2033 -#, fuzzy +#: session_state.cc:1949 msgid "Could not create templates directory \"%1\" (%2)" -msgstr "æ— æ³•åˆ›å»ºæ··éŸ³æ¨¡æ¿ç›®å½• \"%1\" (%2)" +msgstr "" -#: session_state.cc:2046 +#: session_state.cc:1962 msgid "Template \"%1\" already exists - new version not created" msgstr "" -#: session_state.cc:2052 -#, fuzzy +#: session_state.cc:1968 msgid "Could not create directory for Session template\"%1\" (%2)" -msgstr "æ— æ³•åˆ›å»ºæ··éŸ³æ¨¡æ¿ç›®å½• \"%1\" (%2)" +msgstr "" -#: session_state.cc:2062 +#: session_state.cc:1978 msgid "template not saved" msgstr "模æ¿æ²¡ä¿å˜" -#: session_state.cc:2072 -#, fuzzy +#: session_state.cc:1988 msgid "Could not create directory for Session template plugin state\"%1\" (%2)" -msgstr "æ— æ³•åˆ›å»ºæ··éŸ³æ¨¡æ¿ç›®å½• \"%1\" (%2)" +msgstr "" -#: session_state.cc:2267 +#: session_state.cc:2183 msgid "Unknown node \"%1\" found in Bundles list from session file" msgstr "" -#: session_state.cc:2809 session_state.cc:2815 +#: session_state.cc:2725 session_state.cc:2731 msgid "Cannot expand path %1 (%2)" msgstr "æ— æ³•æ‰©å±•è·¯å¾„ %1 (%2)" -#: session_state.cc:2868 +#: session_state.cc:2784 msgid "Session: cannot create dead file folder \"%1\" (%2)" msgstr "" -#: session_state.cc:2907 +#: session_state.cc:2823 msgid "cannot rename unused file source from %1 to %2 (%3)" msgstr "" -#: session_state.cc:2925 +#: session_state.cc:2841 msgid "cannot remove peakfile %1 for %2 (%3)" msgstr "" -#: session_state.cc:3227 +#: session_state.cc:3143 msgid "could not backup old history file, current history not saved" msgstr "" -#: session_state.cc:3240 +#: session_state.cc:3156 msgid "history could not be saved to %1" msgstr "历å²æ— 法被ä¿å˜åˆ° %1" -#: session_state.cc:3243 -#, fuzzy +#: session_state.cc:3159 msgid "Could not remove history file at path \"%1\" (%2)" -msgstr "æ— æ³•è§£å†³è·¯å¾„: %1 (%2)" +msgstr "" -#: session_state.cc:3247 +#: session_state.cc:3163 msgid "could not restore history file from backup %1 (%2)" msgstr "" -#: session_state.cc:3272 +#: session_state.cc:3188 msgid "%1: no history file \"%2\" for this session." msgstr "" -#: session_state.cc:3278 +#: session_state.cc:3194 msgid "Could not understand session history file \"%1\"" msgstr "æ— æ³•ç†è§£ä¼šè¯åŽ†å²æ–‡ä»¶ \"%1\"" -#: session_state.cc:3320 +#: session_state.cc:3236 msgid "Failed to downcast MidiSource for NoteDiffCommand" msgstr "" -#: session_state.cc:3331 +#: session_state.cc:3247 msgid "Failed to downcast MidiSource for SysExDiffCommand" msgstr "" -#: session_state.cc:3342 +#: session_state.cc:3258 msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" msgstr "" -#: session_state.cc:3350 +#: session_state.cc:3266 msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." msgstr "" -#: session_state.cc:3602 +#: session_state.cc:3502 msgid "Session: unknown diskstream type in XML" msgstr "" -#: session_state.cc:3607 +#: session_state.cc:3507 msgid "Session: could not load diskstream via XML state" msgstr "" -#: session_time.cc:215 -msgid "Unknown JACK transport state %1 in sync callback" +#: session_time.cc:214 +msgid "Unknown transport state %1 in sync callback" msgstr "" -#: session_transport.cc:168 +#: session_transport.cc:167 msgid "Cannot loop - no loop range defined" msgstr "" -#: session_transport.cc:728 +#: session_transport.cc:739 msgid "" "Seamless looping cannot be supported while %1 is using JACK transport.\n" "Recommend changing the configured options" msgstr "" -#: session_transport.cc:1094 +#: session_transport.cc:1105 msgid "" "Global varispeed cannot be supported while %1 is connected to JACK transport " "control" @@ -2273,7 +2221,7 @@ msgstr "" msgid "attempt to write a non-writable audio file source (%1)" msgstr "" -#: sndfilesource.cc:396 utils.cc:507 utils.cc:531 utils.cc:545 utils.cc:564 +#: sndfilesource.cc:396 utils.cc:510 utils.cc:534 utils.cc:548 utils.cc:567 msgid "programming error: %1 %2" msgstr "程åºé”™è¯¯: %1 %2" @@ -2493,19 +2441,19 @@ msgstr "" msgid "programming error: unknown edit mode string \"%1\"" msgstr "程åºé”™è¯¯: æ— æ³•è¯†åˆ«ç¼–è¾‘æ¨¡å¼å—符串 \"%1\"" -#: utils.cc:389 utils.cc:418 +#: utils.cc:389 utils.cc:421 msgid "MIDI Timecode" msgstr "MIDI时间ç " -#: utils.cc:389 utils.cc:416 +#: utils.cc:389 utils.cc:419 msgid "MTC" msgstr "MTC" -#: utils.cc:393 utils.cc:425 +#: utils.cc:393 utils.cc:428 msgid "MIDI Clock" msgstr "MIDI时钟" -#: utils.cc:397 utils.cc:412 utils.cc:432 +#: utils.cc:397 utils.cc:415 utils.cc:435 msgid "JACK" msgstr "" @@ -2513,88 +2461,18 @@ msgstr "" msgid "programming error: unknown sync source string \"%1\"" msgstr "程åºé”™è¯¯: æ— æ³•è¯†åˆ«åŒæ¥æºå—符串 \"%1\"" -#: utils.cc:423 -#, fuzzy +#: utils.cc:426 msgid "M-Clock" -msgstr "MIDI时钟" +msgstr "" -#: utils.cc:429 -#, fuzzy +#: utils.cc:432 msgid "LTC" -msgstr "MTC" +msgstr "" -#: utils.cc:599 +#: utils.cc:602 msgid "programming error: unknown native header format: %1" msgstr "" -#: utils.cc:614 +#: utils.cc:617 msgid "cannot open directory %1 (%2)" msgstr "æ— æ³•æ‰“å¼€ç›®å½• %1 (%2)" - -#~ msgid "Session" -#~ msgstr "会è¯" - -#~ msgid "Could not understand ardour file %1" -#~ msgstr "æ— æ³•ç†è§£ardour文件 %1" - -#~ msgid "control protocol XML node has no name property. Ignored." -#~ msgstr "控制åè®®XML符å·æ²¡æœ‰å称属性. 忽略之" - -#~ msgid "control protocol \"%1\" is not known. Ignored" -#~ msgstr "控制åè®® \"%1\" 未知. 忽略之" - -#~ msgid "Crossfade: no \"in\" region in state" -#~ msgstr "淡入淡出: 没有 \"å…¥\" 区域" - -#~ msgid "old-style crossfade information - no position information" -#~ msgstr "æ—§æ ·å¼æ·¡å…¥æ·¡å‡ºä¿¡æ¯ - 没有ä½ç½®ä¿¡æ¯" - -#~ msgid "Preset file %1 exists; not overwriting" -#~ msgstr "预设文件 %1 å·²å˜åœ¨; ä¸è¦†ç›–" - -#~ msgid "Cannot open preset file %1 (%2)" -#~ msgstr "æ— æ³•æ‰“å¼€é¢„è®¾æ–‡ä»¶ %1 (%2)" - -#~ msgid "AudioUnit Outputs" -#~ msgstr "音频å•å…ƒè¾“出" - -#~ msgid "AudioUnit Effects" -#~ msgstr "音频å•å…ƒæ•ˆæžœ" - -#~ msgid "AudioUnit (Unknown)" -#~ msgstr "音频å•å…ƒ(未知)" - -#~ msgid "Checking AudioUnit: %1" -#~ msgstr "检查音频å•å…ƒ %1" - -#~ msgid "" -#~ "%1: could not find configuration file (ardour.rc), canvas will look " -#~ "broken." -#~ msgstr "%1: æ— æ³•æ‰¾åˆ°é…置文件(ardour.rc), è¯ä¸çœ‹èµ·æ¥ä¼šç ´ç ´çš„." - -#~ msgid "VST: cannot load module from \"%1\"" -#~ msgstr "VST: æ— æ³•ä»Ž %1 载入模å—" - -#~ msgid "You asked ardour to not use any VST plugins" -#~ msgstr "您è¦æ±‚Ardourä¸è¦ä½¿ç”¨ä»»ä½•VSTæ’件" - -#~ msgid "Preset %1" -#~ msgstr "预设 %1" - -#~ msgid "Template \"%1\" already exists - template not renamed" -#~ msgstr "æ¨¡æ¿ \"%1\" å·²å˜åœ¨ - 模æ¿æ²¡è¢«é‡å‘½å" - -#~ msgid "Midi" -#~ msgstr "MIDI" - -#~ msgid "Unable to create a backup copy of file %1 (%2)" -#~ msgstr "æ— æ³•åˆ›å»º %1 (%2) 的备份文件" - -#~ msgid "CoreAudioSource: cannot open file \"%1\" for %2" -#~ msgstr "æ ¸å¿ƒéŸ³é¢‘æº: æ— æ³•æ‰“å¼€æ–‡ä»¶ \"%1\" 用于 %2" - -#~ msgid "path (%1) is ambiguous" -#~ msgstr "路径 (%1) 有æ§ä¹‰" - -#~ msgid "LXVST: cannot load module from \"%1\"" -#~ msgstr "LXVST: æ— æ³•ä»Ž \"%1\" 载入载入模å—" diff --git a/libs/ardour/port_insert.cc b/libs/ardour/port_insert.cc index 2519451b89..fa09ea05ac 100644 --- a/libs/ardour/port_insert.cc +++ b/libs/ardour/port_insert.cc @@ -116,7 +116,6 @@ PortInsert::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, _mtdm->process (nframes, in, out); - outbuf.set_is_silent (false); outbuf.set_written (true); } diff --git a/libs/ardour/processor.cc b/libs/ardour/processor.cc index f9590bee11..d571f55688 100644 --- a/libs/ardour/processor.cc +++ b/libs/ardour/processor.cc @@ -63,6 +63,7 @@ Processor::Processor(Session& session, const string& name) , _display_to_user (true) , _pre_fader (false) , _ui_pointer (0) + , _owner (0) { } diff --git a/libs/ardour/quantize.cc b/libs/ardour/quantize.cc index a4543d773c..7da1edaaa1 100644 --- a/libs/ardour/quantize.cc +++ b/libs/ardour/quantize.cc @@ -62,7 +62,7 @@ Quantize::operator () (boost::shared_ptr<MidiModel> model, to quantize relative to actual session beats (etc.) rather than from the start of the model. */ - const double round_pos = ceil(position / _start_grid) * _start_grid; + const double round_pos = round(position / _start_grid) * _start_grid; const double offset = round_pos - position; bool even; @@ -72,10 +72,13 @@ Quantize::operator () (boost::shared_ptr<MidiModel> model, even = false; + /* TODO 'swing' probably requires a 2nd iteration: + * first quantize notes to the grid, then apply beat shift + */ for (Evoral::Sequence<MidiModel::TimeType>::Notes::iterator i = (*s).begin(); i != (*s).end(); ++i) { - double new_start = round ((*i)->time() / _start_grid) * _start_grid + offset; - double new_end = round ((*i)->end_time() / _end_grid) * _end_grid + offset; + double new_start = round (((*i)->time() - offset) / _start_grid) * _start_grid + offset; + double new_end = round (((*i)->end_time() - offset) / _end_grid) * _end_grid + offset; if (_swing > 0.0 && !even) { @@ -86,6 +89,7 @@ Quantize::operator () (boost::shared_ptr<MidiModel> model, */ new_start = new_start + (2.0/3.0 * _swing * (next_grid - new_start)); + new_end = new_end + (2.0/3.0 * _swing * (next_grid - new_start)); } else if (_swing < 0.0 && !even) { @@ -96,6 +100,7 @@ Quantize::operator () (boost::shared_ptr<MidiModel> model, */ new_start = new_start - (2.0/3.0 * _swing * (new_start - prev_grid)); + new_end = new_end - (2.0/3.0 * _swing * (new_start - prev_grid)); } diff --git a/libs/ardour/rb_effect.cc b/libs/ardour/rb_effect.cc index a5d47d2668..804b79f87d 100644 --- a/libs/ardour/rb_effect.cc +++ b/libs/ardour/rb_effect.cc @@ -20,8 +20,9 @@ #include <algorithm> #include <cmath> +#include <rubberband/RubberBandStretcher.h> + #include "pbd/error.h" -#include "rubberband/RubberBandStretcher.h" #include "ardour/audioregion.h" #include "ardour/audiosource.h" diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 25ee527e2c..4b9285c1c8 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -51,6 +51,7 @@ #include "ardour/midi_port.h" #include "ardour/monitor_processor.h" #include "ardour/pannable.h" +#include "ardour/panner.h" #include "ardour/panner_shell.h" #include "ardour/plugin_insert.h" #include "ardour/port.h" @@ -69,7 +70,7 @@ using namespace std; using namespace ARDOUR; using namespace PBD; -PBD::Signal1<void,RouteSortOrderKey> Route::SyncOrderKeys; +PBD::Signal0<void> Route::SyncOrderKeys; PBD::Signal0<void> Route::RemoteControlIDChange; Route::Route (Session& sess, string name, Flag flg, DataType default_type) @@ -96,6 +97,8 @@ Route::Route (Session& sess, string name, Flag flg, DataType default_type) , _have_internal_generator (false) , _solo_safe (false) , _default_type (default_type) + , _order_key (0) + , _has_order_key (false) , _remote_control_id (0) , _in_configure_processors (false) , _initial_io_setup (false) @@ -268,52 +271,19 @@ Route::remote_control_id() const } bool -Route::has_order_key (RouteSortOrderKey key) const +Route::has_order_key () const { - return (order_keys.find (key) != order_keys.end()); + return _has_order_key; } uint32_t -Route::order_key (RouteSortOrderKey key) const +Route::order_key () const { - OrderKeys::const_iterator i = order_keys.find (key); - - if (i == order_keys.end()) { - return 0; - } - - return i->second; + return _order_key; } void -Route::sync_order_keys (RouteSortOrderKey base) -{ - /* this is called after changes to 1 or more route order keys have been - * made, and we want to sync up. - */ - - OrderKeys::iterator i = order_keys.find (base); - - if (i == order_keys.end()) { - return; - } - - for (OrderKeys::iterator k = order_keys.begin(); k != order_keys.end(); ++k) { - - if (k->first != base) { - DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("%1 set key for %2 to %3 from %4\n", - name(), - enum_2_string (k->first), - i->second, - enum_2_string (base))); - - k->second = i->second; - } - } -} - -void -Route::set_remote_control_id_from_order_key (RouteSortOrderKey /*key*/, uint32_t rid) +Route::set_remote_control_id_explicit (uint32_t rid) { if (is_master() || is_monitor() || is_auditioner()) { /* hard-coded remote IDs, or no remote ID */ @@ -337,18 +307,18 @@ Route::set_remote_control_id_from_order_key (RouteSortOrderKey /*key*/, uint32_t } void -Route::set_order_key (RouteSortOrderKey key, uint32_t n) +Route::set_order_key (uint32_t n) { - OrderKeys::iterator i = order_keys.find (key); + _has_order_key = true; - if (i != order_keys.end() && i->second == n) { + if (_order_key == n) { return; } - order_keys[key] = n; + _order_key = n; - DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("%1 order key %2 set to %3\n", - name(), enum_2_string (key), order_key (key))); + DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("%1 order key set to %2\n", + name(), order_key ())); _session.set_dirty (); } @@ -450,8 +420,6 @@ Route::process_output_buffers (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame, pframes_t nframes, int declick, bool gain_automation_ok) { - bufs.set_is_silent (false); - /* figure out if we're going to use gain automation */ if (gain_automation_ok) { _amp->set_gain_automation_buffer (_session.gain_automation_buffer ()); @@ -1607,6 +1575,58 @@ Route::remove_processors (const ProcessorList& to_be_deleted, ProcessorStreams* } void +Route::set_custom_panner_uri (std::string const panner_uri) +{ + if (_in_configure_processors) { + DEBUG_TRACE (DEBUG::Panning, string_compose (_("Route::set_custom_panner_uri '%1' -- called while in_configure_processors\n"), name())); + return; + } + + if (!_main_outs->panner_shell()->set_user_selected_panner_uri(panner_uri)) { + DEBUG_TRACE (DEBUG::Panning, string_compose (_("Route::set_custom_panner_uri '%1 '%2' -- no change needed\n"), name(), panner_uri)); + /* no change needed */ + return; + } + + DEBUG_TRACE (DEBUG::Panning, string_compose (_("Route::set_custom_panner_uri '%1 '%2' -- reconfigure I/O\n"), name(), panner_uri)); + + /* reconfigure I/O -- re-initialize panner modules */ + { + Glib::Threads::RWLock::WriterLock lm (_processor_lock); + Glib::Threads::Mutex::Lock lx (AudioEngine::instance()->process_lock ()); + + for (ProcessorList::iterator p = _processors.begin(); p != _processors.end(); ++p) { + boost::shared_ptr<Delivery> dl; + boost::shared_ptr<Panner> panner; + if ((dl = boost::dynamic_pointer_cast<Delivery> (*p)) == 0) { + continue; + } + if (!dl->panner_shell()) { + continue; + } + if (!(panner = dl->panner_shell()->panner())) { + continue; + } + /* _main_outs has already been set before the loop. + * Ignore the return status here. It need reconfiguration */ + if (dl->panner_shell() != _main_outs->panner_shell()) { + if (!dl->panner_shell()->set_user_selected_panner_uri(panner_uri)) { + continue; + } + } + + ChanCount in = panner->in(); + ChanCount out = panner->out(); + dl->panner_shell()->configure_io(in, out); + dl->panner_shell()->pannable()->set_panner(dl->panner_shell()->panner()); + } + } + + processors_changed (RouteProcessorChange ()); /* EMIT SIGNAL */ + _session.set_dirty (); +} + +void Route::reset_instrument_info () { boost::shared_ptr<Processor> instr = the_instrument(); @@ -1913,24 +1933,8 @@ Route::state(bool full_state) node->add_property("route-group", _route_group->name()); } - string order_string; - OrderKeys::iterator x = order_keys.begin(); - - while (x != order_keys.end()) { - order_string += enum_2_string ((*x).first); - order_string += '='; - snprintf (buf, sizeof(buf), "%" PRId32, (*x).second); - order_string += buf; - - ++x; - - if (x == order_keys.end()) { - break; - } - - order_string += ':'; - } - node->add_property ("order-keys", order_string); + snprintf (buf, sizeof (buf), "%d", _order_key); + node->add_property ("order-key", buf); node->add_property ("self-solo", (_self_solo ? "yes" : "no")); snprintf (buf, sizeof (buf), "%d", _soloed_by_others_upstream); node->add_property ("soloed-by-upstream", buf); @@ -2131,7 +2135,11 @@ Route::set_state (const XMLNode& node, int version) set_active (yn, this); } - if ((prop = node.property (X_("order-keys"))) != 0) { + if ((prop = node.property (X_("order-key"))) != 0) { // New order key (no separate mixer/editor ordering) + set_order_key (atoi(prop->value())); + } + + if ((prop = node.property (X_("order-keys"))) != 0) { // Deprecated order keys int32_t n; @@ -2149,17 +2157,11 @@ Route::set_state (const XMLNode& node, int version) << endmsg; } else { string keyname = remaining.substr (0, equal); - RouteSortOrderKey sk; - if (keyname == "signal") { - sk = MixerSort; - } else if (keyname == "editor") { - sk = EditorSort; - } else { - sk = (RouteSortOrderKey) string_2_enum (remaining.substr (0, equal), sk); + if ((keyname == "EditorSort") || (keyname == "editor")) { + cerr << "Setting " << name() << " order key to " << n << " using saved Editor order." << endl; + set_order_key (n); } - - set_order_key (sk, n); } } @@ -2360,17 +2362,11 @@ Route::set_state_2X (const XMLNode& node, int version) << endmsg; } else { string keyname = remaining.substr (0, equal); - RouteSortOrderKey sk; - if (keyname == "signal") { - sk = MixerSort; - } else if (keyname == "editor") { - sk = EditorSort; - } else { - sk = (RouteSortOrderKey) string_2_enum (remaining.substr (0, equal), sk); + if (keyname == "EditorSort" || keyname == "editor") { + info << string_compose(_("Converting deprecated order key for %1 using Editor order %2"), name (), n) << endmsg; + set_order_key (n); } - - set_order_key (sk, n); } } diff --git a/libs/ardour/route_graph.cc b/libs/ardour/route_graph.cc index 13264ff9fa..ee02afef24 100644 --- a/libs/ardour/route_graph.cc +++ b/libs/ardour/route_graph.cc @@ -170,7 +170,7 @@ struct RouteRecEnabledComparator if (r1->record_enabled()) { if (r2->record_enabled()) { /* both rec-enabled, just use signal order */ - return r1->order_key (MixerSort) < r2->order_key (MixerSort); + return r1->order_key () < r2->order_key (); } else { /* r1 rec-enabled, r2 not rec-enabled, run r2 early */ return false; @@ -181,7 +181,7 @@ struct RouteRecEnabledComparator return true; } else { /* neither rec-enabled, use signal order */ - return r1->order_key (MixerSort) < r2->order_key (MixerSort); + return r1->order_key () < r2->order_key (); } } } diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 4b30543cb0..b880883e09 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -257,6 +257,7 @@ Session::Session (AudioEngine &eng, , _step_editors (0) , _suspend_timecode_transmission (0) , _speakers (new Speakers) + , _order_hint (0) , ignore_route_processor_changes (false) , _midi_ports (0) , _mmc (0) @@ -558,10 +559,10 @@ Session::setup_ltc () { XMLNode* child = 0; - _ltc_input.reset (new IO (*this, _("LTC In"), IO::Input)); - _ltc_output.reset (new IO (*this, _("LTC Out"), IO::Output)); + _ltc_input.reset (new IO (*this, X_("LTC In"), IO::Input)); + _ltc_output.reset (new IO (*this, X_("LTC Out"), IO::Output)); - if (state_tree && (child = find_named_node (*state_tree->root(), "LTC-In")) != 0) { + if (state_tree && (child = find_named_node (*state_tree->root(), X_("LTC In"))) != 0) { _ltc_input->set_state (*(child->children().front()), Stateful::loading_state_version); } else { { @@ -571,7 +572,7 @@ Session::setup_ltc () reconnect_ltc_input (); } - if (state_tree && (child = find_named_node (*state_tree->root(), "LTC-Out")) != 0) { + if (state_tree && (child = find_named_node (*state_tree->root(), X_("LTC Out"))) != 0) { _ltc_output->set_state (*(child->children().front()), Stateful::loading_state_version); } else { { @@ -585,28 +586,30 @@ Session::setup_ltc () * IO style of NAME/TYPE-{in,out}N */ - _ltc_input->nth (0)->set_name (_("LTC-in")); - _ltc_output->nth (0)->set_name (_("LTC-out")); + _ltc_input->nth (0)->set_name (X_("LTC-in")); + _ltc_output->nth (0)->set_name (X_("LTC-out")); } void Session::setup_click () { _clicking = false; - _click_io.reset (new ClickIO (*this, "click")); + _click_io.reset (new ClickIO (*this, X_("Click"))); _click_gain.reset (new Amp (*this)); _click_gain->activate (); if (state_tree) { - setup_click_state (*state_tree->root()); + setup_click_state (state_tree->root()); + } else { + setup_click_state (0); } } void -Session::setup_click_state (const XMLNode& node) +Session::setup_click_state (const XMLNode* node) { const XMLNode* child = 0; - - if ((child = find_named_node (node, "Click")) != 0) { + + if (node && (child = find_named_node (*node, "Click")) != 0) { /* existing state for Click */ int c = 0; @@ -1697,7 +1700,7 @@ Session::resort_routes_using (boost::shared_ptr<RouteList> r) DEBUG_TRACE (DEBUG::Graph, "Routes resorted, order follows:\n"); for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { DEBUG_TRACE (DEBUG::Graph, string_compose ("\t%1 signal order %2\n", - (*i)->name(), (*i)->order_key (MixerSort))); + (*i)->name(), (*i)->order_key ())); } #endif @@ -1982,9 +1985,9 @@ Session::auto_connect_route (boost::shared_ptr<Route> route, ChanCount& existing for (uint32_t i = output_start.get(*t); i < route->n_outputs().get(*t); ++i) { string port; - if ((*t) == DataType::MIDI || Config->get_output_auto_connect() & AutoConnectPhysical) { + if ((*t) == DataType::MIDI && (Config->get_output_auto_connect() & AutoConnectPhysical)) { port = physoutputs[(out_offset.get(*t) + i) % nphysical_out]; - } else if ((*t) == DataType::AUDIO && Config->get_output_auto_connect() & AutoConnectMaster) { + } else if ((*t) == DataType::AUDIO && (Config->get_output_auto_connect() & AutoConnectMaster)) { /* master bus is audio only */ if (_master_out && _master_out->n_inputs().get(*t) > 0) { port = _master_out->input()->ports().port(*t, @@ -2333,6 +2336,11 @@ Session::add_routes_inner (RouteList& new_routes, bool input_auto_connect, bool ChanCount existing_outputs; uint32_t order = next_control_id(); + if (_order_hint != 0) { + order = _order_hint; + _order_hint = 0; + } + count_existing_track_channels (existing_inputs, existing_outputs); { @@ -2394,15 +2402,13 @@ Session::add_routes_inner (RouteList& new_routes, bool input_auto_connect, bool ID in most situations. */ - if (!r->has_order_key (EditorSort)) { + if (!r->has_order_key ()) { if (r->is_auditioner()) { /* use an arbitrarily high value */ - r->set_order_key (EditorSort, UINT_MAX); - r->set_order_key (MixerSort, UINT_MAX); + r->set_order_key (UINT_MAX); } else { DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("while adding, set %1 to order key %2\n", r->name(), order)); - r->set_order_key (EditorSort, order); - r->set_order_key (MixerSort, order); + r->set_order_key (order); order++; } } @@ -3713,7 +3719,7 @@ Session::RoutePublicOrderSorter::operator() (boost::shared_ptr<Route> a, boost:: if (b->is_monitor()) { return false; } - return a->order_key (MixerSort) < b->order_key (MixerSort); + return a->order_key () < b->order_key (); } bool @@ -4925,8 +4931,7 @@ Session::notify_remote_id_change () } switch (Config->get_remote_model()) { - case MixerSort: - case EditorSort: + case MixerOrdered: Route::RemoteControlIDChange (); /* EMIT SIGNAL */ break; default: @@ -4935,7 +4940,7 @@ Session::notify_remote_id_change () } void -Session::sync_order_keys (RouteSortOrderKey sort_key_changed) +Session::sync_order_keys () { if (deletion_in_progress()) { return; @@ -4947,9 +4952,9 @@ Session::sync_order_keys (RouteSortOrderKey sort_key_changed) opportunity to keep them in sync if they wish to. */ - DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("Sync Order Keys, based on %1\n", enum_2_string (sort_key_changed))); + DEBUG_TRACE (DEBUG::OrderKeys, "Sync Order Keys.\n"); - Route::SyncOrderKeys (sort_key_changed); /* EMIT SIGNAL */ + Route::SyncOrderKeys (); /* EMIT SIGNAL */ DEBUG_TRACE (DEBUG::OrderKeys, "\tsync done\n"); } diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index 3c46a2e0a6..6d8c0f9f70 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -83,7 +83,7 @@ Session::process (pframes_t nframes) */ try { - if (!_engine.freewheeling() && Config->get_send_midi_clock() && transport_speed() == 1.0f && midi_clock->has_midi_port()) { + if (!_silent && !_engine.freewheeling() && Config->get_send_midi_clock() && (transport_speed() == 1.0f || transport_speed() == 0.0f) && midi_clock->has_midi_port()) { midi_clock->tick (transport_at_start, nframes); } } catch (...) { @@ -421,7 +421,9 @@ Session::process_with_events (pframes_t nframes) check_declick_out (); } - _engine.split_cycle (this_nframes); + if (nframes > 0) { + _engine.split_cycle (this_nframes); + } /* now handle this event and all others scheduled for the same time */ diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index 59bb3fd718..bbd3432205 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -1318,7 +1318,7 @@ Session::set_state (const XMLNode& node, int version) if ((child = find_named_node (node, "Click")) == 0) { warning << _("Session: XML state has no click section") << endmsg; } else if (_click_io) { - setup_click_state (node); + setup_click_state (&node); } if ((child = find_named_node (node, ControlProtocolManager::state_node_name)) != 0) { @@ -3483,22 +3483,6 @@ Session::config_changed (std::string p, bool ours) /* XXX DO SOMETHING HERE TO TELL THE GUI THAT WE NEED TO SET REMOTE ID'S */ - } else if (p == "sync-all-route-ordering") { - - /* sync to editor order unless mixer is used for remote IDs - */ - - switch (Config->get_remote_model()) { - case UserOrdered: - sync_order_keys (EditorSort); - break; - case EditorOrdered: - sync_order_keys (EditorSort); - break; - case MixerOrdered: - sync_order_keys (MixerSort); - } - } else if (p == "initial-program-change") { if (_mmc->output_port() && Config->get_initial_program_change() >= 0) { diff --git a/libs/ardour/session_time.cc b/libs/ardour/session_time.cc index e35910f2df..ab5a470a8a 100644 --- a/libs/ardour/session_time.cc +++ b/libs/ardour/session_time.cc @@ -164,12 +164,12 @@ Session::timecode_duration (framecnt_t when, Timecode::Time& timecode) const } void -Session::timecode_duration_string (char* buf, framepos_t when) const +Session::timecode_duration_string (char* buf, size_t len, framepos_t when) const { Timecode::Time timecode; timecode_duration (when, timecode); - snprintf (buf, sizeof (buf), "%02" PRIu32 ":%02" PRIu32 ":%02" PRIu32 ":%02" PRIu32, timecode.hours, timecode.minutes, timecode.seconds, timecode.frames); + snprintf (buf, len, "%02" PRIu32 ":%02" PRIu32 ":%02" PRIu32 ":%02" PRIu32, timecode.hours, timecode.minutes, timecode.seconds, timecode.frames); } void diff --git a/libs/ardour/slave.cc b/libs/ardour/slave.cc index e8c63b43c1..c0678ce252 100644 --- a/libs/ardour/slave.cc +++ b/libs/ardour/slave.cc @@ -35,6 +35,12 @@ SlaveSessionProxy::frame_rate() const return session.frame_rate(); } +pframes_t +SlaveSessionProxy::frames_per_cycle() const +{ + return session.engine().samples_per_cycle(); +} + framepos_t SlaveSessionProxy::audible_frame() const { @@ -53,6 +59,13 @@ SlaveSessionProxy::frames_since_cycle_start() const return session.engine().samples_since_cycle_start(); } +pframes_t +SlaveSessionProxy::sample_time_at_cycle_start() const +{ + return session.engine().sample_time_at_cycle_start(); +} + + framepos_t SlaveSessionProxy::frame_time() const { diff --git a/libs/ardour/test/control_surfaces_test.cc b/libs/ardour/test/control_surfaces_test.cc index f82945c3ce..63c5e33c6f 100644 --- a/libs/ardour/test/control_surfaces_test.cc +++ b/libs/ardour/test/control_surfaces_test.cc @@ -35,7 +35,7 @@ ControlSurfacesTest::instantiateAndTeardownTest () ControlProtocolManager& m = ControlProtocolManager::instance (); for (list<ControlProtocolInfo*>::iterator i = m.control_protocol_info.begin(); i != m.control_protocol_info.end(); ++i) { - m.instantiate (**i); - m.teardown (**i); + m.activate (**i); + m.deactivate (**i); } } diff --git a/libs/ardour/test/interpolation_test.cc b/libs/ardour/test/interpolation_test.cc index 23789f826f..e8ed22d03b 100644 --- a/libs/ardour/test/interpolation_test.cc +++ b/libs/ardour/test/interpolation_test.cc @@ -106,6 +106,7 @@ InterpolationTest::cubicInterpolationTest () cubic.set_speed (1.0); cubic.set_target_speed (cubic.speed()); result = cubic.interpolate (0, NUM_SAMPLES, input, output); + CPPUNIT_ASSERT_EQUAL (result, cubic.interpolate (0, NUM_SAMPLES, NULL, NULL)); CPPUNIT_ASSERT_EQUAL ((framecnt_t)(NUM_SAMPLES * cubic.speed()), result); for (int i = 0; i < NUM_SAMPLES; i += INTERVAL) { CPPUNIT_ASSERT_EQUAL (1.0f, output[i]); @@ -116,6 +117,7 @@ InterpolationTest::cubicInterpolationTest () cubic.set_speed (0.5); cubic.set_target_speed (cubic.speed()); result = cubic.interpolate (0, NUM_SAMPLES, input, output); + CPPUNIT_ASSERT_EQUAL (result, cubic.interpolate (0, NUM_SAMPLES, NULL, NULL)); CPPUNIT_ASSERT_EQUAL ((framecnt_t)(NUM_SAMPLES * cubic.speed()), result); for (int i = 0; i < NUM_SAMPLES; i += (INTERVAL / cubic.speed() +0.5)) { CPPUNIT_ASSERT_EQUAL (1.0f, output[i]); @@ -126,6 +128,7 @@ InterpolationTest::cubicInterpolationTest () cubic.set_speed (0.2); cubic.set_target_speed (cubic.speed()); result = cubic.interpolate (0, NUM_SAMPLES, input, output); + CPPUNIT_ASSERT_EQUAL (result, cubic.interpolate (0, NUM_SAMPLES, NULL, NULL)); CPPUNIT_ASSERT_EQUAL ((framecnt_t)(NUM_SAMPLES * cubic.speed()), result); // cout << "\nSpeed: 0.02"; @@ -133,6 +136,7 @@ InterpolationTest::cubicInterpolationTest () cubic.set_speed (0.02); cubic.set_target_speed (cubic.speed()); result = cubic.interpolate (0, NUM_SAMPLES, input, output); + CPPUNIT_ASSERT_EQUAL (result, cubic.interpolate (0, NUM_SAMPLES, NULL, NULL)); CPPUNIT_ASSERT_EQUAL ((framecnt_t)(NUM_SAMPLES * cubic.speed()), result); /* This one fails due too error accumulation @@ -150,6 +154,7 @@ InterpolationTest::cubicInterpolationTest () cubic.set_speed (2.0); cubic.set_target_speed (cubic.speed()); result = cubic.interpolate (0, NUM_SAMPLES / 2, input, output); + CPPUNIT_ASSERT_EQUAL (result, cubic.interpolate (0, NUM_SAMPLES / 2, NULL, NULL)); CPPUNIT_ASSERT_EQUAL ((framecnt_t)(NUM_SAMPLES / 2 * cubic.speed()), result); for (int i = 0; i < NUM_SAMPLES / 2; i += (INTERVAL / cubic.speed() +0.5)) { CPPUNIT_ASSERT_EQUAL (1.0f, output[i]); @@ -159,6 +164,7 @@ InterpolationTest::cubicInterpolationTest () cubic.set_speed (10.0); cubic.set_target_speed (cubic.speed()); result = cubic.interpolate (0, NUM_SAMPLES / 10, input, output); + CPPUNIT_ASSERT_EQUAL (result, cubic.interpolate (0, NUM_SAMPLES / 10, NULL, NULL)); CPPUNIT_ASSERT_EQUAL ((framecnt_t)(NUM_SAMPLES / 10 * cubic.speed()), result); for (int i = 0; i < NUM_SAMPLES / 10; i += (INTERVAL / cubic.speed() +0.5)) { CPPUNIT_ASSERT_EQUAL (1.0f, output[i]); diff --git a/libs/ardour/thread_buffers.cc b/libs/ardour/thread_buffers.cc index fd3160bb15..e469187ce9 100644 --- a/libs/ardour/thread_buffers.cc +++ b/libs/ardour/thread_buffers.cc @@ -60,7 +60,7 @@ ThreadBuffers::ensure_buffers (ChanCount howmany) for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) { size_t count = std::max (scratch_buffers->available().get(*t), howmany.get(*t)); - size_t size = _engine->raw_buffer_size (*t); + size_t size = _engine->raw_buffer_size (*t) / sizeof (Sample); scratch_buffers->ensure_buffers (*t, count, size); mix_buffers->ensure_buffers (*t, count, size); @@ -68,12 +68,14 @@ ThreadBuffers::ensure_buffers (ChanCount howmany) route_buffers->ensure_buffers (*t, count, size); } + size_t audio_buffer_size = _engine->raw_buffer_size (DataType::AUDIO) / sizeof (Sample); + delete [] gain_automation_buffer; - gain_automation_buffer = new gain_t[_engine->raw_buffer_size (DataType::AUDIO)]; + gain_automation_buffer = new gain_t[audio_buffer_size]; delete [] send_gain_automation_buffer; - send_gain_automation_buffer = new gain_t[_engine->raw_buffer_size (DataType::AUDIO)]; + send_gain_automation_buffer = new gain_t[audio_buffer_size]; - allocate_pan_automation_buffers (_engine->raw_buffer_size (DataType::AUDIO), howmany.n_audio(), false); + allocate_pan_automation_buffers (audio_buffer_size, howmany.n_audio(), false); } void diff --git a/libs/ardour/ticker.cc b/libs/ardour/ticker.cc index 9a29df2641..15326af882 100644 --- a/libs/ardour/ticker.cc +++ b/libs/ardour/ticker.cc @@ -38,58 +38,66 @@ class MidiClockTicker::Position : public Timecode::BBT_Time { public: - Position() : speed(0.0f), frame(0) { } - ~Position() { } - - /** Sync timing information taken from the given Session - @return True if timings differed */ - bool sync (Session* s) { - - bool didit = false; - - double sp = s->transport_speed(); - framecnt_t fr = s->transport_frame(); - - if (speed != sp) { - speed = sp; - didit = true; - } - - if (frame != fr) { - frame = fr; - didit = true; - } - - /* Midi beats and clocks always gets updated for now */ - - s->bbt_time (this->frame, *this); - - const TempoMap& tempo = s->tempo_map(); - - const double divisions = tempo.meter_at(frame).divisions_per_bar(); - const double divisor = tempo.meter_at(frame).note_divisor(); - const double qnote_scale = divisor * 0.25f; - - /** Midi Beats in terms of Song Position Pointer is equivalent to total - sixteenth notes at 'time' */ - - midi_beats = (((bars - 1) * divisions) + beats - 1); - midi_beats += (double)ticks / (double)Position::ticks_per_beat * qnote_scale; - midi_beats *= 16.0f / divisor; - - midi_clocks = midi_beats * 6.0f; - - return didit; - } - - double speed; - framecnt_t frame; - double midi_beats; - double midi_clocks; - - void print (std::ostream& s) { - s << "frames: " << frame << " midi beats: " << midi_beats << " speed: " << speed; - } + Position() : speed(0.0f), frame(0), midi_beats(0) { } + ~Position() { } + + /** Sync timing information taken from the given Session + * @return True if timings differed + */ + + bool sync (Session* s) { + + bool changed = false; + + double sp = s->transport_speed(); + framecnt_t fr = s->transport_frame(); + + if (speed != sp) { + speed = sp; + changed = true; + } + + if (frame != fr) { + frame = fr; + changed = true; + } + + /* Midi beats and clocks always gets updated for now */ + + s->bbt_time (this->frame, *this); + + const TempoMap& tempo = s->tempo_map(); + + const double divisions = tempo.meter_at(frame).divisions_per_bar(); + const double divisor = tempo.meter_at(frame).note_divisor(); + const double qnote_scale = divisor * 0.25f; + double mb; + + /** Midi Beats in terms of Song Position Pointer is equivalent to total + * sixteenth notes at 'time' + */ + + mb = (((bars - 1) * divisions) + beats - 1); + mb += (double)ticks / (double)Position::ticks_per_beat * qnote_scale; + mb *= 16.0f / divisor; + + if (mb != midi_beats) { + midi_beats = mb; + midi_clocks = midi_beats * 6.0f; + changed = true; + } + + return changed; + } + + double speed; + framecnt_t frame; + double midi_beats; + double midi_clocks; + + void print (std::ostream& s) { + s << "frames: " << frame << " midi beats: " << midi_beats << " speed: " << speed; + } }; @@ -127,7 +135,7 @@ MidiClockTicker::session_located() { DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Session Located: %1, speed: %2\n", _session->transport_frame(), _session->transport_speed())); - if (0 == _session || ! _pos->sync (_session)) { + if (!_session || !_pos->sync (_session)) { return; } @@ -212,37 +220,30 @@ MidiClockTicker::transport_looped() void 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) { + if (!Config->get_send_midi_clock() || _session == 0 || _midi_port == 0) { return; } if (_send_pos) { if (_pos->speed == 0.0f) { - uint32_t where = llrint (_pos->midi_beats); - send_position_event (where, 0, nframes); + send_position_event (llrint (_pos->midi_beats), 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_position_event (llrint (_pos->midi_beats), 0, nframes); send_continue_event (0, nframes); } -#endif } else { /* Varispeed not supported */ } - _send_pos = true; + _send_pos = false; } + if (_send_state) { if (_pos->speed == 1.0f) { if (_session->get_play_loop()) { @@ -270,6 +271,10 @@ MidiClockTicker::tick (const framepos_t& /* transport_frame */, pframes_t nframe _send_state = false; } + if (_session->transport_speed() != 1.0f) { + /* no varispeed support and nothing to do after this if stopped */ + return; + } const framepos_t end = _pos->frame + nframes; double iter = _last_tick; @@ -317,11 +322,12 @@ MidiClockTicker::send_midi_clock_event (pframes_t offset, pframes_t nframes) return; } - DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Tick with offset %1\n", offset)); + static uint8_t msg = MIDI_CMD_COMMON_CLOCK; - static uint8_t tick_byte = { MIDI_CMD_COMMON_CLOCK }; MidiBuffer& mb (_midi_port->get_midi_buffer (nframes)); - mb.push_back (offset, 1, &tick_byte); + mb.push_back (offset, 1, &msg); + + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Tick with offset %1\n", offset)); } void @@ -331,11 +337,11 @@ MidiClockTicker::send_start_event (pframes_t offset, pframes_t nframes) return; } - DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Start %1\n", _last_tick)); - - static uint8_t tick_byte = { MIDI_CMD_COMMON_START }; + static uint8_t msg = { MIDI_CMD_COMMON_START }; MidiBuffer& mb (_midi_port->get_midi_buffer (nframes)); - mb.push_back (offset, 1, &tick_byte); + mb.push_back (offset, 1, &msg); + + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Start %1\n", _last_tick)); } void @@ -345,11 +351,11 @@ MidiClockTicker::send_continue_event (pframes_t offset, pframes_t nframes) return; } - DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Continue %1\n", _last_tick)); - - static uint8_t tick_byte = { MIDI_CMD_COMMON_CONTINUE }; + static uint8_t msg = { MIDI_CMD_COMMON_CONTINUE }; MidiBuffer& mb (_midi_port->get_midi_buffer (nframes)); - mb.push_back (offset, 1, &tick_byte); + mb.push_back (offset, 1, &msg); + + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Continue %1\n", _last_tick)); } void @@ -359,11 +365,11 @@ MidiClockTicker::send_stop_event (pframes_t offset, pframes_t nframes) return; } - DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Stop %1\n", _last_tick)); - - static uint8_t tick_byte = { MIDI_CMD_COMMON_STOP }; + static uint8_t msg = MIDI_CMD_COMMON_STOP; MidiBuffer& mb (_midi_port->get_midi_buffer (nframes)); - mb.push_back (offset, 1, &tick_byte); + mb.push_back (offset, 1, &msg); + + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Stop %1\n", _last_tick)); } void @@ -387,5 +393,7 @@ MidiClockTicker::send_position_event (uint32_t midi_beats, pframes_t offset, pfr 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)); + DEBUG_TRACE (DEBUG::MidiClock, string_compose ("Song Position Sent: %1 to %2 (events now %3, buf = %4)\n", midi_beats, _midi_port->name(), + mb.size(), &mb)); + } diff --git a/libs/ardour/utils.cc b/libs/ardour/utils.cc index 5356616324..d1d2372977 100644 --- a/libs/ardour/utils.cc +++ b/libs/ardour/utils.cc @@ -234,6 +234,41 @@ cmp_nocase (const string& s, const string& s2) return (s2.size() == s.size()) ? 0 : (s.size() < s2.size()) ? -1 : 1; } +int cmp_nocase_utf8 (const string& s1, const string& s2) +{ + const char *cstr1 = s1.c_str(); + const char *cstr2 = s2.c_str(); + gchar *cstr1folded = NULL; + gchar *cstr2folded = NULL; + int retval; + + if (!g_utf8_validate (cstr1, -1, NULL) || + !g_utf8_validate (cstr2, -1, NULL)) { + // fall back to comparing ASCII + return g_ascii_strcasecmp (cstr1, cstr2); + } + + cstr1folded = g_utf8_casefold (cstr1, -1); + cstr2folded = g_utf8_casefold (cstr2, -1); + + if (cstr1folded && cstr2folded) { + retval = strcmp (cstr1folded, cstr2folded); + } else { + // this shouldn't happen, make the best of it + retval = g_ascii_strcasecmp (cstr1, cstr2); + } + + if (cstr1folded) { + g_free (cstr1folded); + } + + if (cstr2folded) { + g_free (cstr2folded); + } + + return retval; +} + int touch_file (string path) { diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc index 5eafe7a612..168bd0506e 100644 --- a/libs/ardour/vst_plugin.cc +++ b/libs/ardour/vst_plugin.cc @@ -298,7 +298,7 @@ VSTPlugin::get_parameter_descriptor (uint32_t which, ParameterDescriptor& desc) char label[64]; /* some VST plugins expect this buffer to be zero-filled */ - memset (label, sizeof (label), 0); + memset (label, 0, sizeof (label)); _plugin->dispatcher (_plugin, effGetParamName, which, 0, label, 0); @@ -486,7 +486,7 @@ string VSTPlugin::describe_parameter (Evoral::Parameter param) { char name[64]; - memset (name, sizeof (name), 0); + memset (name, 0, sizeof (name)); /* some VST plugins expect this buffer to be zero-filled */ diff --git a/libs/ardour/vumeterdsp.cc b/libs/ardour/vumeterdsp.cc index a3d0ec23c1..edd9fa5831 100644 --- a/libs/ardour/vumeterdsp.cc +++ b/libs/ardour/vumeterdsp.cc @@ -39,7 +39,7 @@ Vumeterdsp::~Vumeterdsp (void) } -void Vumeterdsp::process (float *p, int n) +void Vumeterdsp::process (float const *p, int n) { float z1, z2, m, t1, t2; @@ -86,6 +86,6 @@ void Vumeterdsp::reset () void Vumeterdsp::init (float fsamp) { - _w = 11.1f / fsamp; + _w = 11.1f / fsamp; _g = 1.5f * 1.571f; } diff --git a/libs/ardour/wscript b/libs/ardour/wscript index e734582197..21f745e20b 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -1,4 +1,4 @@ -1#!/usr/bin/env python +#!/usr/bin/env python from waflib.extras import autowaf as autowaf from waflib import Options import os @@ -246,9 +246,8 @@ def configure(conf): 'libardour3', conf.env['MAJOR'], conf.env['MINOR'], 0, 'LIBARDOUR_API', 'ardour/libardour_visibility.h') autowaf.configure(conf) - if Options.options.dist_target == 'auto': - if re.search ("linux", sys.platform) != None: - autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA') + autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO', + exact_version='0.3.2') autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML') if Options.options.dist_target != 'mingw': autowaf.check_pkg(conf, 'lrdf', uselib_store='LRDF', @@ -323,15 +322,13 @@ def build(bld): # major increment <=> incompatible changes # minor increment <=> compatible changes (additions) # micro increment <=> no interface changes - LIBARDOUR_LIB_VERSION = "3.0.0." + LIBARDOUR_LIB_VERSION = "3.0.0" # Library if bld.is_defined ('INTERNAL_SHARED_LIBS'): obj = bld.shlib(features = 'c cxx cshlib cxxshlib', source=libardour_sources) # macros for this shared library - obj.defines = [ 'LIBARDOUR_DLL=1', 'LIBARDOUR_DLL_EXPORTS=1' ] - # macros for this other internal shared libraries that we use - obj.defines += [ 'LIBEVORAL_DLL=1', 'LIBMIDIPP_DLL=1', 'LIBPBD_DLL=1' ] + obj.defines = [ 'LIBARDOUR_DLL_EXPORTS=1' ] obj.cflags = [ '-fvisibility=hidden' ] obj.cxxflags = [ '-fvisibility=hidden' ] else: @@ -347,9 +344,17 @@ def build(bld): obj.uselib = ['GLIBMM','GTHREAD','AUBIO','SIGCPP','XML','UUID', 'SNDFILE','SAMPLERATE','LRDF','AUDIOUNITS', 'OSX','BOOST','CURL','DL'] - obj.use = ['libpbd','libmidipp','libevoral','libvamphost', - 'libvampplugin','libtaglib','librubberband', - 'libaudiographer','libltc','libtimecode'] + obj.use = ['libpbd','libmidipp','libevoral', 'libvampplugin', + 'libaudiographer', + 'libtimecode_includes', + ] + if bld.is_defined('USE_EXTERNAL_LIBS'): + obj.uselib.extend(['RUBBERBAND', 'TAGLIB', 'VAMPSDK', 'LIBLTC', + 'VAMPHOSTSDK']) + else: + obj.use.extend(['librubberband', 'libtaglib', 'libvamphost' + 'libltc_includes', 'libltc']) + obj.vnum = LIBARDOUR_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') obj.defines += [ @@ -414,9 +419,13 @@ def build(bld): 'test/test_common.cc', 'test/dummy_lxvst.cc', 'test/audio_region_test.cc', 'test/test_util.cc'] testcommon.uselib = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD', 'SAMPLERATE','XML','LRDF','COREAUDIO'] - testcommon.use = ['libpbd','libmidipp','libevoral','libvamphost', - 'libvampplugin','libtaglib','librubberband', - 'libaudiographer','libltc','ardour'] + testcommon.use = ['libpbd','libmidipp','libevoral', + 'libvampplugin','libaudiographer','ardour'] + if bld.is_defined('USE_EXTERNAL_LIBS'): + testcommon.uselib.extend(['RUBBERBAND', 'TAGLIB', 'LIBLTC', 'VAMPSDK', + 'VAMPHOSTSDK']) + else: + testcommon.use.extend(['libltc', 'librubberband', 'libtaglib', 'libvamphost']) testcommon.defines = [ 'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"', 'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"', @@ -554,9 +563,15 @@ def create_ardour_test_program(bld, includes, name, target, sources): testobj.source = sources testobj.uselib = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD', 'SAMPLERATE','XML','LRDF','COREAUDIO'] - testobj.use = ['libpbd','libmidipp','libevoral','libvamphost', - 'libvampplugin','libtaglib','librubberband', - 'libaudiographer','libltc','ardour','testcommon'] + testobj.use = ['libpbd','libmidipp','libevoral','libvampplugin', + 'libaudiographer','ardour','testcommon'] + if bld.is_defined('USE_EXTERNAL_LIBS'): + testobj.uselib.extend(['RUBBERBAND', 'TAGLIB', 'LIBLTC', 'VAMPSDK', + 'VAMPHOSTSDK']) + else: + testobj.use.extend(['libltc', 'librubberband', 'libtaglib', + 'libvamphost']) + testobj.name = name testobj.target = target # not sure about install path diff --git a/libs/audiographer/audiographer/broadcast_info.h b/libs/audiographer/audiographer/broadcast_info.h index 66b10bd9f7..dd776d17af 100644 --- a/libs/audiographer/audiographer/broadcast_info.h +++ b/libs/audiographer/audiographer/broadcast_info.h @@ -33,7 +33,7 @@ namespace AudioGrapher { -class LIBAUDIOGRAPHER_API SndfileHandle; +class SndfileHandle; class LIBAUDIOGRAPHER_API BroadcastInfo { diff --git a/libs/audiographer/audiographer/debuggable.h b/libs/audiographer/audiographer/debuggable.h index fc03d1e68d..6fda36c735 100644 --- a/libs/audiographer/audiographer/debuggable.h +++ b/libs/audiographer/audiographer/debuggable.h @@ -45,12 +45,12 @@ class LIBAUDIOGRAPHER_API Debuggable : stream (debug_stream) {} bool debug_level (DebugLevel level) { - #ifdef NDEBUG - level = DEFAULT_DEBUG_LEVEL; /* stop pedantic gcc complaints about unused parameter */ +#ifndef NDEBUG + (void) level; /* stop pedantic gcc complaints about unused parameter */ return false; - #else +#else return L >= level; - #endif +#endif } std::ostream & debug_stream() { return stream; } diff --git a/libs/audiographer/audiographer/general/silence_trimmer.h b/libs/audiographer/audiographer/general/silence_trimmer.h index 8a8dd920f5..4cb9f9a5d9 100644 --- a/libs/audiographer/audiographer/general/silence_trimmer.h +++ b/libs/audiographer/audiographer/general/silence_trimmer.h @@ -131,6 +131,9 @@ class LIBAUDIOGRAPHER_API SilenceTrimmer throw Exception(*this, "process() after reacing end of input"); } in_end = c.has_flag (ProcessContext<T>::EndOfInput); + + // If adding to end, delay end of input propagation + if (add_to_end) { c.remove_flag(ProcessContext<T>::EndOfInput); } framecnt_t frame_index = 0; @@ -209,7 +212,8 @@ class LIBAUDIOGRAPHER_API SilenceTrimmer // Finally, if in end, add silence to end if (in_end && add_to_end) { - + c.set_flag (ProcessContext<T>::EndOfInput); + if (debug_level (DebugVerbose)) { debug_stream () << DebugUtils::demangled_name (*this) << " adding to end" << std::endl; diff --git a/libs/audiographer/audiographer/visibility.h b/libs/audiographer/audiographer/visibility.h index 8c149f9efd..31a7511f8b 100644 --- a/libs/audiographer/audiographer/visibility.h +++ b/libs/audiographer/audiographer/visibility.h @@ -20,37 +20,26 @@ #ifndef __libaudiographer_visibility_h__ #define __libaudiographer_visibility_h__ -/* _WIN32 is defined by most compilers targetting Windows, but within the - * audiographer 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) +#if defined(COMPILER_MSVC) #define LIBAUDIOGRAPHER_DLL_IMPORT __declspec(dllimport) #define LIBAUDIOGRAPHER_DLL_EXPORT __declspec(dllexport) #define LIBAUDIOGRAPHER_DLL_LOCAL #else - #if __GNUC__ >= 4 - #define LIBAUDIOGRAPHER_DLL_IMPORT __attribute__ ((visibility ("default"))) - #define LIBAUDIOGRAPHER_DLL_EXPORT __attribute__ ((visibility ("default"))) - #define LIBAUDIOGRAPHER_DLL_LOCAL __attribute__ ((visibility ("hidden"))) - #else - #define LIBAUDIOGRAPHER_DLL_IMPORT - #define LIBAUDIOGRAPHER_DLL_EXPORT - #define LIBAUDIOGRAPHER_DLL_LOCAL - #endif + #define LIBAUDIOGRAPHER_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBAUDIOGRAPHER_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBAUDIOGRAPHER_DLL_LOCAL __attribute__ ((visibility ("hidden"))) #endif -#ifdef LIBAUDIOGRAPHER_DLL // libaudiographer is a DLL -#ifdef LIBAUDIOGRAPHER_DLL_EXPORTS // defined if we are building the libaudiographer DLL (instead of using it) - #define LIBAUDIOGRAPHER_API LIBAUDIOGRAPHER_DLL_EXPORT +#ifdef LIBAUDIOGRAPHER_STATIC // libaudiographer is not a DLL + #define LIBAUDIOGRAPHER_API + #define LIBAUDIOGRAPHER_LOCAL #else + #ifdef LIBAUDIOGRAPHER_DLL_EXPORTS // defined if we are building the libaudiographer DLL (instead of using it) + #define LIBAUDIOGRAPHER_API LIBAUDIOGRAPHER_DLL_EXPORT + #else #define LIBAUDIOGRAPHER_API LIBAUDIOGRAPHER_DLL_IMPORT -#endif -#define LIBAUDIOGRAPHER_LOCAL LIBAUDIOGRAPHER_DLL_LOCAL -#else /* static lib, not DLL */ -#define LIBAUDIOGRAPHER_API -#define LIBAUDIOGRAPHER_LOCAL + #endif + #define LIBAUDIOGRAPHER_LOCAL LIBAUDIOGRAPHER_DLL_LOCAL #endif #endif /* __libaudiographer_visibility_h__ */ diff --git a/libs/audiographer/src/general/sample_format_converter.cc b/libs/audiographer/src/general/sample_format_converter.cc index ea70dc6094..aaeda09477 100644 --- a/libs/audiographer/src/general/sample_format_converter.cc +++ b/libs/audiographer/src/general/sample_format_converter.cc @@ -52,25 +52,28 @@ SampleFormatConverter<float>::init (framecnt_t max_frames, int /* type */, int d template <> void -SampleFormatConverter<int32_t>::init (framecnt_t max_frames, int /*type*/, int data_width) +SampleFormatConverter<int32_t>::init (framecnt_t max_frames, int type, int data_width) { - if(throw_level (ThrowObject) && data_width < 24) { - throw Exception (*this, "Trying to use SampleFormatConverter<int32_t> for data widths < 24"); + if(throw_level (ThrowObject) && data_width > 32) { + throw Exception (*this, "Trying to use SampleFormatConverter<int32_t> with a data width > 32"); } - init_common (max_frames); + // GDither is broken with GDither32bit if the dither depth is bigger than 24. + // And since floats only have 24 bits of data, we are fine with this. + data_width = std::min(data_width, 24); - // GDither is broken with GDither32bit if the dither depth - // is bigger than 24, so lets just use that... - dither = gdither_new (GDitherNone, channels, GDither32bit, 24); + init_common (max_frames); + dither = gdither_new ((GDitherType) type, channels, GDither32bit, data_width); } template <> void SampleFormatConverter<int16_t>::init (framecnt_t max_frames, int type, int data_width) { - if (throw_level (ThrowObject) && data_width != 16) { - throw Exception (*this, "Unsupported data width"); + if (throw_level (ThrowObject) && data_width > 16) { + throw Exception (*this, boost::str(boost::format + ("Data width (%1%) too large for int16_t") + % data_width)); } init_common (max_frames); dither = gdither_new ((GDitherType) type, channels, GDither16bit, data_width); @@ -80,8 +83,10 @@ template <> void SampleFormatConverter<uint8_t>::init (framecnt_t max_frames, int type, int data_width) { - if (throw_level (ThrowObject) && data_width != 8) { - throw Exception (*this, "Unsupported data width"); + if (throw_level (ThrowObject) && data_width > 8) { + throw Exception (*this, boost::str(boost::format + ("Data width (%1%) too large for uint8_t") + % data_width)); } init_common (max_frames); dither = gdither_new ((GDitherType) type, channels, GDither8bit, data_width); diff --git a/libs/audiographer/tests/general/sample_format_converter_test.cc b/libs/audiographer/tests/general/sample_format_converter_test.cc index 9239564d5b..977e2b390a 100644 --- a/libs/audiographer/tests/general/sample_format_converter_test.cc +++ b/libs/audiographer/tests/general/sample_format_converter_test.cc @@ -31,27 +31,31 @@ class SampleFormatConverterTest : public CppUnit::TestFixture void testInit() { + // Float never uses dithering and should always use full 32 bits of data boost::shared_ptr<SampleFormatConverter<float> > f_converter (new SampleFormatConverter<float>(1)); f_converter->init (frames, D_Tri, 32); // Doesn't throw CPPUNIT_ASSERT_THROW (f_converter->init (frames, D_Tri, 24), Exception); CPPUNIT_ASSERT_THROW (f_converter->init (frames, D_Tri, 48), Exception); - + + /* Test that too large data widths throw. + We are fine with unnecessarily narrow data widths */ + boost::shared_ptr<SampleFormatConverter<int32_t> > i_converter (new SampleFormatConverter<int32_t>(1)); i_converter->init (frames, D_Tri, 32); // Doesn't throw i_converter->init (frames, D_Tri, 24); // Doesn't throw - CPPUNIT_ASSERT_THROW (i_converter->init (frames, D_Tri, 8), Exception); - CPPUNIT_ASSERT_THROW (i_converter->init (frames, D_Tri, 16), Exception); + i_converter->init (frames, D_Tri, 8); // Doesn't throw + i_converter->init (frames, D_Tri, 16); // Doesn't throw CPPUNIT_ASSERT_THROW (i_converter->init (frames, D_Tri, 48), Exception); - + boost::shared_ptr<SampleFormatConverter<int16_t> > i16_converter (new SampleFormatConverter<int16_t>(1)); i16_converter->init (frames, D_Tri, 16); // Doesn't throw - CPPUNIT_ASSERT_THROW (i16_converter->init (frames, D_Tri, 8), Exception); + i16_converter->init (frames, D_Tri, 8); // Doesn't throw CPPUNIT_ASSERT_THROW (i16_converter->init (frames, D_Tri, 32), Exception); CPPUNIT_ASSERT_THROW (i16_converter->init (frames, D_Tri, 48), Exception); - + boost::shared_ptr<SampleFormatConverter<uint8_t> > ui_converter (new SampleFormatConverter<uint8_t>(1)); ui_converter->init (frames, D_Tri, 8); // Doesn't throw - CPPUNIT_ASSERT_THROW (ui_converter->init (frames, D_Tri, 4), Exception); + ui_converter->init (frames, D_Tri, 4); // Doesn't throw CPPUNIT_ASSERT_THROW (ui_converter->init (frames, D_Tri, 16), Exception); } diff --git a/libs/audiographer/wscript b/libs/audiographer/wscript index 9e2d1c4c3c..183b272518 100644 --- a/libs/audiographer/wscript +++ b/libs/audiographer/wscript @@ -67,9 +67,7 @@ def build(bld): if bld.is_defined ('INTERNAL_SHARED_LIBS'): audiographer = bld.shlib(features = 'c cxx cshlib cxxshlib', source=audiographer_sources) # macros for this shared library - audiographer.defines = [ 'LIBAUDIOGRAPHER_DLL=1', 'LIBAUDIOGRAPHER_DLL_EXPORTS=1' ] - # macros for this other internal shared libraries that we use - audiographer.defines += [ 'LIBPBD_DLL=1' ] + audiographer.defines = [ 'LIBAUDIOGRAPHER_DLL_EXPORTS=1' ] audiographer.cflags = [ '-fvisibility=hidden' ] audiographer.cxxflags = [ '-fvisibility=hidden' ] else: diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index ff76486bad..62ed00952b 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -155,11 +155,11 @@ JACKAudioBackend::enumerate_devices () const } vector<float> -JACKAudioBackend::available_sample_rates (const string& /*device*/) const +JACKAudioBackend::available_sample_rates (const string& device) const { vector<float> f; - if (available()) { + if (device == _target_device && available()) { f.push_back (sample_rate()); return f; } @@ -183,11 +183,11 @@ JACKAudioBackend::available_sample_rates (const string& /*device*/) const } vector<uint32_t> -JACKAudioBackend::available_buffer_sizes (const string& /*device*/) const +JACKAudioBackend::available_buffer_sizes (const string& device) const { vector<uint32_t> s; - - if (available()) { + + if (device == _target_device && available()) { s.push_back (buffer_size()); return s; } @@ -509,6 +509,7 @@ JACKAudioBackend::setup_jack_startup_command (bool for_latency_measurement) /* error, somehow - we will still try to start JACK * automatically but it will be without our preferred options */ + std::cerr << "get_jack_command_line_string () failed: using default settings." << std::endl; return; } @@ -546,8 +547,11 @@ JACKAudioBackend::_start (bool for_latency_measurement) /* Now that we have buffer size and sample rate established, the engine can go ahead and do its stuff */ - - engine.reestablish_ports (); + + if (engine.reestablish_ports ()) { + error << _("Could not re-establish ports after connecting to JACK") << endmsg; + return -1; + } 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; @@ -582,18 +586,6 @@ JACKAudioBackend::stop () } 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); @@ -773,11 +765,9 @@ int JACKAudioBackend::jack_sync_callback (jack_transport_state_t state, jack_position_t* pos) { TransportState tstate; + bool tstate_valid = true; switch (state) { - case JackTransportStopped: - tstate = TransportStopped; - break; case JackTransportRolling: tstate = TransportRolling; break; @@ -787,9 +777,18 @@ JACKAudioBackend::jack_sync_callback (jack_transport_state_t state, jack_positio case JackTransportStarting: tstate = TransportStarting; break; + case JackTransportStopped: + tstate = TransportStopped; + break; + default: + // ignore "unofficial" states like JackTransportNetStarting (jackd2) + tstate_valid = false; + break; } - return engine.sync_callback (tstate, pos->frame); + if (tstate_valid) { + return engine.sync_callback (tstate, pos->frame); + } return true; } @@ -1023,7 +1022,7 @@ JACKAudioBackend::disconnected (const char* why) } float -JACKAudioBackend::cpu_load() const +JACKAudioBackend::dsp_load() const { GET_PRIVATE_JACK_POINTER_RET(_priv_jack,0); return jack_cpu_load (_priv_jack); @@ -1095,6 +1094,8 @@ JACKAudioBackend::control_app_name () const appname = "hdspconf"; } else if (_target_device == "M Audio Delta 1010") { appname = "mudita24"; + } else if (_target_device == "M2496") { + appname = "mudita24"; } } } else { @@ -1131,3 +1132,46 @@ JACKAudioBackend::set_midi_option (const string& opt) _target_midi_option = opt; return 0; } + +bool +JACKAudioBackend::speed_and_position (double& speed, framepos_t& position) +{ + jack_position_t pos; + jack_transport_state_t state; + bool starting; + + /* 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() + */ + + speed = 0; + position = 0; + + GET_PRIVATE_JACK_POINTER_RET (_priv_jack, true); + + state = jack_transport_query (_priv_jack, &pos); + + switch (state) { + case JackTransportStopped: + speed = 0; + starting = false; + break; + case JackTransportRolling: + speed = 1.0; + starting = false; + break; + case JackTransportLooping: + speed = 1.0; + starting = false; + break; + case JackTransportStarting: + starting = true; + // don't adjust speed here, just leave it as it was + break; + default: + std::cerr << "WARNING: Unknown JACK transport state: " << state << std::endl; + } + + position = pos.frame; + return starting; +} diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index 3c48be5ead..d5378247c3 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -89,12 +89,10 @@ class JACKAudioBackend : public AudioBackend { std::string control_app_name () const; void launch_control_app (); - int _start (bool for_latency_measurement); int stop (); - int pause (); int freewheel (bool); - float cpu_load() const; + float dsp_load() const; pframes_t sample_time (); pframes_t sample_time_at_cycle_start (); @@ -127,7 +125,7 @@ class JACKAudioBackend : public AudioBackend { int set_port_name (PortHandle, const std::string&); std::string get_port_name (PortHandle) const; - PortHandle* get_port_by_name (const std::string&) 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<std::string>&) const; @@ -183,6 +181,10 @@ class JACKAudioBackend : public AudioBackend { void* get_buffer (PortHandle, pframes_t); + /* transport sync */ + + bool speed_and_position (double& sp, framepos_t& pos); + private: boost::shared_ptr<JackConnection> _jack_connection; bool _running; @@ -269,6 +271,9 @@ class JACKAudioBackend : public AudioBackend { */ JACKSession* _session; + + protected: + int _start (bool for_latency_measurement); }; } // namespace diff --git a/libs/backends/jack/jack_connection.cc b/libs/backends/jack/jack_connection.cc index b3d7fcecc4..09e6c9d6e7 100644 --- a/libs/backends/jack/jack_connection.cc +++ b/libs/backends/jack/jack_connection.cc @@ -143,7 +143,12 @@ JackConnection::close () if (_priv_jack) { int ret = jack_client_close (_priv_jack); _jack = 0; + + /* If we started JACK, it will be closing down */ + usleep (500000); + Disconnected (""); /* EMIT SIGNAL */ + return ret; } diff --git a/libs/backends/jack/jack_portengine.cc b/libs/backends/jack/jack_portengine.cc index 0d66f50448..1fe77fbb70 100644 --- a/libs/backends/jack/jack_portengine.cc +++ b/libs/backends/jack/jack_portengine.cc @@ -116,11 +116,11 @@ JACKAudioBackend::get_port_name (PortHandle port) const return jack_port_name ((jack_port_t*) port); } -PortEngine::PortHandle* +PortEngine::PortHandle 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()); + return (PortHandle) jack_port_by_name (_priv_jack, name.c_str()); } void diff --git a/libs/backends/jack/jack_session.cc b/libs/backends/jack/jack_session.cc index ca51dafccc..7cd7f6c62b 100644 --- a/libs/backends/jack/jack_session.cc +++ b/libs/backends/jack/jack_session.cc @@ -23,6 +23,7 @@ #include <glibmm/miscutils.h> #include <jack/jack.h> +#include <jack/transport.h> #include "ardour/audioengine.h" #include "ardour/filename_extensions.h" diff --git a/libs/backends/jack/jack_utils.cc b/libs/backends/jack/jack_utils.cc index 57ae8cee96..331c164353 100644 --- a/libs/backends/jack/jack_utils.cc +++ b/libs/backends/jack/jack_utils.cc @@ -756,6 +756,9 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c string command_line_driver_name; + string command_line_input_device_name; + string command_line_output_device_name; + if (!get_jack_command_line_audio_driver_name (options.driver, command_line_driver_name)) { return false; } @@ -763,60 +766,71 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c 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 (options.driver != dummy_driver_name) { + if (options.output_device.empty() && options.input_device.empty()) { + 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()) { + if (!get_jack_command_line_audio_device_name (options.driver, + options.input_device, command_line_input_device_name)) { return false; } - args.push_back ("-P"); - } else if (options.output_device.empty()) { - // capture only - if (options.input_device.empty()) { + + if (!get_jack_command_line_audio_device_name (options.driver, + options.output_device, command_line_output_device_name)) { 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); + + if (options.input_device.empty()) { + // playback only + if (options.output_device.empty()) { + return false; + } args.push_back ("-P"); - args.push_back (command_line_output_device_name); - } else { - return false; + } 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.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 (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)); + } + } else { + // jackd dummy backend + if (options.input_channels) { + args.push_back ("-C"); + args.push_back (to_string (options.input_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)); + if (options.output_channels) { + args.push_back ("-P"); + args.push_back (to_string (options.output_channels, std::dec)); + } } args.push_back ("-r"); @@ -836,9 +850,11 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c } } - 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 != dummy_driver_name) { + 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) { diff --git a/libs/backends/jack/wscript b/libs/backends/jack/wscript index 80edd92634..4e54af0be5 100644 --- a/libs/backends/jack/wscript +++ b/libs/backends/jack/wscript @@ -53,8 +53,6 @@ def build(bld): obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"', 'ARDOURBACKEND_DLL_EXPORTS' ] - if bld.is_defined ('INTERNAL_SHARED_LIBS'): - obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ] # # device discovery code in the jack backend needs ALSA diff --git a/libs/canvas/arc.cc b/libs/canvas/arc.cc index eeecd3204a..e95fbe0ad5 100644 --- a/libs/canvas/arc.cc +++ b/libs/canvas/arc.cc @@ -16,8 +16,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include <cmath> #include <algorithm> + #include <cairomm/context.h> + #include "pbd/compose.h" #include "canvas/circle.h" #include "canvas/types.h" @@ -97,7 +100,6 @@ Arc::set_radius (Coord r) end_change (); } - void Arc::set_arc (double deg) { @@ -121,3 +123,15 @@ Arc::set_start (double deg) end_change (); } +bool +Arc::covers (Duple const & point) const +{ + Duple p = canvas_to_item (point); + + double angle_degs = atan (p.y/p.x) * 2.0 * M_PI; + double radius = sqrt (p.x * p.x + p.y * p.y); + + return (angle_degs >= _start_degrees) && + (angle_degs <= (_start_degrees + _arc_degrees)) && + (radius < _radius); +} diff --git a/libs/canvas/arrow.cc b/libs/canvas/arrow.cc index f82f2d96de..55f5173253 100644 --- a/libs/canvas/arrow.cc +++ b/libs/canvas/arrow.cc @@ -221,3 +221,20 @@ Arrow::set_color (Color color) _heads[i].polygon->set_fill_color (color); } } + +bool +Arrow::covers (Duple const & point) const +{ + if (_heads[0].polygon && _heads[0].polygon->covers (point)) { + return true; + } + if (_line && _line->covers (point)) { + return true; + } + + if (_heads[1].polygon && _heads[1].polygon->covers (point)) { + return true; + } + + return false; +} diff --git a/libs/canvas/canvas.cc b/libs/canvas/canvas.cc index 908af16065..7fa3f98236 100644 --- a/libs/canvas/canvas.cc +++ b/libs/canvas/canvas.cc @@ -22,6 +22,7 @@ * @brief Implementation of the main canvas classes. */ +#include <list> #include <cassert> #include <gtkmm/adjustment.h> #include <gtkmm/label.h> @@ -31,6 +32,7 @@ #include "canvas/canvas.h" #include "canvas/debug.h" +#include "canvas/line.h" using namespace std; using namespace ArdourCanvas; @@ -49,6 +51,14 @@ Canvas::scroll_to (Coord x, Coord y) { _scroll_offset_x = x; _scroll_offset_y = y; + + pick_current_item (0); // no current mouse position +} + +void +Canvas::zoomed () +{ + pick_current_item (0); // no current mouse position } /** Render an area of the canvas. @@ -60,7 +70,7 @@ Canvas::render (Rect const & area, Cairo::RefPtr<Cairo::Context> const & context { #ifdef CANVAS_DEBUG if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - cerr << "RENDER: " << area << endl; + cerr << this << " RENDER: " << area << endl; //cerr << "CANVAS @ " << this << endl; //dump (cerr); //cerr << "-------------------------\n"; @@ -77,12 +87,20 @@ Canvas::render (Rect const & area, Cairo::RefPtr<Cairo::Context> const & context boost::optional<Rect> draw = root_bbox->intersection (area); if (draw) { + /* there's a common area between the root and the requested area, so render it. */ _root.render (*draw, context); + + // This outlines the rect being rendered, after it has been drawn. + // context->rectangle (draw->x0, draw->y0, draw->x1 - draw->x0, draw->y1 - draw->y0); + // context->set_source_rgba (1.0, 0, 0, 1.0); + // context->stroke (); + } + } ostream& @@ -177,7 +195,14 @@ Canvas::window_to_canvas (Duple const & d) const Duple Canvas::canvas_to_window (Duple const & d) const { - return d.translate (Duple (-_scroll_offset_x, -_scroll_offset_y)); + Duple wd = d.translate (Duple (-_scroll_offset_x, -_scroll_offset_y)); + + /* Note that this intentionally always returns integer coordinates */ + + wd.x = round (wd.x); + wd.y = round (wd.y); + + return wd; } Rect @@ -189,7 +214,16 @@ Canvas::window_to_canvas (Rect const & r) const Rect Canvas::canvas_to_window (Rect const & r) const { - return r.translate (Duple (-_scroll_offset_x, -_scroll_offset_y)); + Rect wr = r.translate (Duple (-_scroll_offset_x, -_scroll_offset_y)); + + /* Note that this intentionally always returns integer coordinates */ + + wr.x0 = round (wr.x0); + wr.x1 = round (wr.x1); + wr.y0 = round (wr.y0); + wr.y1 = round (wr.y1); + + return wr; } /** Called when an item has moved. @@ -205,11 +239,11 @@ Canvas::item_moved (Item* item, boost::optional<Rect> pre_change_parent_bounding * to be in parent coordinate space since the bounding box of * an item does not change when moved. If we use * item->item_to_canvas() on the old bounding box, we will be + * using the item's new position, and so will compute the wrong * invalidation area. If we use the parent (which has not * moved, then this will work. */ - queue_draw_item_area (item->parent(), pre_change_parent_bounding_box.get ()); } @@ -228,67 +262,29 @@ void Canvas::queue_draw_item_area (Item* item, Rect area) { ArdourCanvas::Rect canvas_area = item->item_to_canvas (area); - // cerr << "CANVAS " << this << " for " << item->whatami() << ' ' << item->name << " invalidate " << area << " TRANSLATE AS " << canvas_area << endl; + // cerr << "CANVAS " << this << " for " << item->whatami() << ' ' << item->name << " invalidate " << area << " TRANSLATE AS " << canvas_area << " window = " << canvas_to_window (canvas_area) << std::endl; request_redraw (canvas_area); } /** Construct a GtkCanvas */ GtkCanvas::GtkCanvas () : _current_item (0) + , _new_current_item (0) , _grabbed_item (0) + , _focused_item (0) { /* these are the events we want to know about */ - add_events (Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK); -} - -/** Handler for button presses on the canvas. - * @param ev GDK event. - */ -bool -GtkCanvas::button_handler (GdkEventButton* ev) -{ - DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("canvas button %3 %1 %1\n", ev->x, ev->y, (ev->type == GDK_BUTTON_PRESS ? "press" : "release"))); - /* The Duple that we are passing in here is in canvas coordinates */ - return deliver_event (Duple (ev->x, ev->y), reinterpret_cast<GdkEvent*> (ev)); -} - -/** Handler for pointer motion events on the canvas. - * @param ev GDK event. - * @return true if the motion event was handled, otherwise false. - */ -bool -GtkCanvas::motion_notify_handler (GdkEventMotion* ev) -{ - DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("canvas motion @ %1, %2\n", ev->x, ev->y)); - - if (_grabbed_item) { - /* if we have a grabbed item, it gets just the motion event, - since no enter/leave events can have happened. - */ - DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("%1 %2 (%3) was grabbed, send MOTION event there\n", - _grabbed_item, _grabbed_item->whatami(), _grabbed_item->name)); - return _grabbed_item->Event (reinterpret_cast<GdkEvent*> (ev)); - } - - Duple point (ev->x, ev->y); - - enter_leave_items (point, ev->state); - - /* Now deliver the motion event. It may seem a little inefficient - to recompute the items under the event, but the enter notify/leave - events may have deleted canvas items so it is important to - recompute the list in deliver_event. - */ - return deliver_event (point, reinterpret_cast<GdkEvent*> (ev)); + add_events (Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::POINTER_MOTION_MASK | + Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK); } void -GtkCanvas::enter_leave_items (int state) +GtkCanvas::pick_current_item (int state) { int x; int y; - /* this version of ::enter_leave_items() is called after an item is + /* this version of ::pick_current_item() is called after an item is * added or removed, so we have no coordinates to work from as is the * case with a motion event. Find out where the mouse is and use that. */ @@ -299,24 +295,75 @@ GtkCanvas::enter_leave_items (int state) return; } - enter_leave_items (window_to_canvas (Duple (x, y)), state); + pick_current_item (window_to_canvas (Duple (x, y)), state); } void -GtkCanvas::enter_leave_items (Duple const & point, int state) +GtkCanvas::pick_current_item (Duple const & point, int state) { + /* we do not enter/leave items during a drag/grab */ + + if (_grabbed_item) { + return; + } + /* find the items at the given position */ vector<Item const *> items; _root.add_items_at_point (point, items); + /* put all items at point that are event-sensitive and visible and NOT + groups into within_items. Note that items is sorted from bottom to + top, but we're going to reverse that for within_items so that its + first item is the upper-most item that can be chosen as _current_item. + */ + + vector<Item const *>::const_iterator i; + list<Item const *> within_items; + + for (i = items.begin(); i != items.end(); ++i) { + + Item const * new_item = *i; + + /* We ignore invisible items, groups and items that ignore events */ + + if (!new_item->visible() || new_item->ignore_events() || dynamic_cast<Group const *>(new_item) != 0) { + continue; + } + + within_items.push_front (new_item); + } + + if (within_items.empty()) { + + /* no items at point, just send leave event below */ + + } else { + + if (within_items.front() == _current_item) { + /* uppermost item at point is already _current_item */ + return; + } + + _new_current_item = const_cast<Item*> (within_items.front()); + } + + if (_new_current_item != _current_item) { + deliver_enter_leave (point, state); + } +} + +void +GtkCanvas::deliver_enter_leave (Duple const & point, int state) +{ + /* setup enter & leave event structures */ + GdkEventCrossing enter_event; enter_event.type = GDK_ENTER_NOTIFY; enter_event.window = get_window()->gobj(); enter_event.send_event = 0; enter_event.subwindow = 0; enter_event.mode = GDK_CROSSING_NORMAL; - enter_event.detail = GDK_NOTIFY_NONLINEAR; enter_event.focus = FALSE; enter_event.state = state; enter_event.x = point.x; @@ -324,73 +371,141 @@ GtkCanvas::enter_leave_items (Duple const & point, int state) GdkEventCrossing leave_event = enter_event; leave_event.type = GDK_LEAVE_NOTIFY; - leave_event.detail = GDK_NOTIFY_ANCESTOR; - leave_event.subwindow = 0; - if (items.empty()) { + Item* i; + GdkNotifyType enter_detail; + GdkNotifyType leave_detail; + vector<Item*> items_to_leave_virtual; + vector<Item*> items_to_enter_virtual; + + if (_new_current_item == 0) { + + leave_detail = GDK_NOTIFY_UNKNOWN; + if (_current_item) { - /* leave event */ - _current_item->Event (reinterpret_cast<GdkEvent*> (&leave_event)); - _current_item = 0; + + /* no current item, so also send virtual leave events to the + * entire heirarchy for the current item + */ + + for (i = _current_item->parent(); i ; i = i->parent()) { + items_to_leave_virtual.push_back (i); + } } - return; - } - /* items is sorted from top to bottom, so reverse through it from bottom - * to top to find the lowest, first event-sensitive item and notify that - * we have entered it - */ + } else if (_current_item == 0) { - cerr << "E/L: " << items.size() << " to check at " << point << endl; -#ifdef CANVAS_DEBUG - for (vector<Item const*>::const_reverse_iterator i = items.rbegin(); i != items.rend(); ++i) { - cerr << '\t' << (*i)->whatami() << ' ' << (*i)->name << " ignore ? " << (*i)->ignore_events() << " current ? " << (_current_item == (*i)) << endl; - } -#endif - cerr << "------------\n"; + enter_detail = GDK_NOTIFY_UNKNOWN; - for (vector<Item const*>::const_reverse_iterator i = items.rbegin(); i != items.rend(); ++i) { + /* no current item, so also send virtual enter events to the + * entire heirarchy for the new item + */ - Item const * new_item = *i; -#ifdef CANVAS_DEBUG - cerr << "\tE/L check out " << new_item->whatami() << ' ' << new_item->name << " ignore ? " << new_item->ignore_events() << " current ? " << (_current_item == new_item) << endl; -#endif - if (new_item->ignore_events()) { - cerr << "continue1\n"; - continue; + for (i = _new_current_item->parent(); i ; i = i->parent()) { + items_to_enter_virtual.push_back (i); } - if (_current_item == new_item) { - cerr << "continue2\n"; - continue; + } else if (_current_item->is_descendant_of (*_new_current_item)) { + + /* move from descendant to ancestor (X: "_current_item is an + * inferior ("child") of _new_current_item") + * + * Deliver "virtual" leave notifications to all items in the + * heirarchy between current and new_current. + */ + + + for (i = _current_item->parent(); i && i != _new_current_item; i = i->parent()) { + items_to_leave_virtual.push_back (i); } - if (_current_item) { - /* leave event */ - DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("Leave %1 %2\n", _current_item->whatami(), _current_item->name)); - _current_item->Event (reinterpret_cast<GdkEvent*> (&leave_event)); + enter_detail = GDK_NOTIFY_INFERIOR; + leave_detail = GDK_NOTIFY_ANCESTOR; + + + } else if (_new_current_item->is_descendant_of (*_current_item)) { + /* move from ancestor to descendant (X: "_new_current_item is + * an inferior ("child") of _current_item") + * + * Deliver "virtual" enter notifications to all items in the + * heirarchy between current and new_current. + */ + + for (i = _new_current_item->parent(); i && i != _current_item; i = i->parent()) { + items_to_enter_virtual.push_back (i); } - if (new_item && _current_item != new_item) { - /* enter event */ - _current_item = new_item; - DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("Enter %1 %2\n", _current_item->whatami(), _current_item->name)); - _current_item->Event (reinterpret_cast<GdkEvent*> (&enter_event)); - break; + enter_detail = GDK_NOTIFY_ANCESTOR; + leave_detail = GDK_NOTIFY_INFERIOR; + + } else { + + Item const * common_ancestor = _current_item->closest_ancestor_with (*_new_current_item); + + /* deliver virtual leave events to everything between _current + * and common_ancestor. + */ + + for (i = _current_item->parent(); i && i != common_ancestor; i = i->parent()) { + items_to_leave_virtual.push_back (i); } - cerr << "Loop around again\n"; + /* deliver virtual enter events to everything between + * _new_current and common_ancestor. + */ + + for (i = _new_current_item->parent(); i && i != common_ancestor; i = i->parent()) { + items_to_enter_virtual.push_back (i); + } + + enter_detail = GDK_NOTIFY_NONLINEAR; + leave_detail = GDK_NOTIFY_NONLINEAR; + } + + + if (_current_item && !_current_item->ignore_events ()) { + leave_event.detail = leave_detail; + _current_item->Event ((GdkEvent*)&leave_event); + // std::cerr << "LEAVE " << _current_item->whatami() << '/' << _current_item->name << std::endl; } + + leave_event.detail = GDK_NOTIFY_VIRTUAL; + enter_event.detail = GDK_NOTIFY_VIRTUAL; + + for (vector<Item*>::iterator it = items_to_leave_virtual.begin(); it != items_to_leave_virtual.end(); ++it) { + if (!(*it)->ignore_events()) { + (*it)->Event ((GdkEvent*)&leave_event); + // std::cerr << "leave " << (*it)->whatami() << '/' << (*it)->name << std::endl; + } + } + + for (vector<Item*>::iterator it = items_to_enter_virtual.begin(); it != items_to_enter_virtual.end(); ++it) { + if (!(*it)->ignore_events()) { + (*it)->Event ((GdkEvent*)&enter_event); + // std::cerr << "enter " << (*it)->whatami() << '/' << (*it)->name << std::endl; + } + } + + if (_new_current_item && !_new_current_item->ignore_events()) { + enter_event.detail = enter_detail; + _new_current_item->Event ((GdkEvent*)&enter_event); + // std::cerr << "ENTER " << _new_current_item->whatami() << '/' << _new_current_item->name << std::endl; + } + + _current_item = _new_current_item; } + /** Deliver an event to the appropriate item; either the grabbed item, or * one of the items underneath the event. * @param point Position that the event has occurred at, in canvas coordinates. * @param event The event. */ bool -GtkCanvas::deliver_event (Duple point, GdkEvent* event) +GtkCanvas::deliver_event (GdkEvent* event) { + /* Point in in canvas coordinate space */ + if (_grabbed_item) { /* we have a grabbed item, so everything gets sent there */ DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("%1 %2 (%3) was grabbed, send event there\n", @@ -398,51 +513,37 @@ GtkCanvas::deliver_event (Duple point, GdkEvent* event) return _grabbed_item->Event (event); } - /* find the items that exist at the event's position */ - vector<Item const *> items; - _root.add_items_at_point (point, items); + if (!_current_item) { + return false; + } - DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("%1 possible items to deliver event to\n", items.size())); + /* run through the items from child to parent, until one claims the event */ - /* run through the items under the event, from top to bottom, until one claims the event */ - vector<Item const *>::const_reverse_iterator i = items.rbegin (); - while (i != items.rend()) { + Item* item = const_cast<Item*> (_current_item); + + while (item) { - if ((*i)->ignore_events ()) { - DEBUG_TRACE ( - PBD::DEBUG::CanvasEvents, - string_compose ("canvas event ignored by %1 %2\n", (*i)->whatami(), (*i)->name.empty() ? "[unknown]" : (*i)->name) - ); - ++i; - continue; - } - - if ((*i)->Event (event)) { + Item* parent = item->parent (); + + if (!item->ignore_events () && + item->Event (event)) { /* this item has just handled the event */ DEBUG_TRACE ( PBD::DEBUG::CanvasEvents, - string_compose ("canvas event handled by %1 %2\n", (*i)->whatami(), (*i)->name.empty() ? "[unknown]" : (*i)->name) + string_compose ("canvas event handled by %1 %2\n", item->whatami(), item->name.empty() ? "[unknown]" : item->name) ); return true; } - DEBUG_TRACE ( - PBD::DEBUG::CanvasEvents, - string_compose ("canvas event left unhandled by %1 %2\n", (*i)->whatami(), (*i)->name.empty() ? "[unknown]" : (*i)->name) - ); - - ++i; - } + DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("canvas event left unhandled by %1 %2\n", item->whatami(), item->name.empty() ? "[unknown]" : item->name)); - /* debugging */ - if (PBD::debug_bits & PBD::DEBUG::CanvasEvents) { - while (i != items.rend()) { - DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("canvas event not seen by %1\n", (*i)->name.empty() ? "[unknown]" : (*i)->name)); - ++i; + if ((item = parent) == 0) { + break; } + } - + return false; } @@ -457,6 +558,13 @@ GtkCanvas::item_going_away (Item* item, boost::optional<Rect> bounding_box) queue_draw_item_area (item, bounding_box.get ()); } + /* no need to send a leave event to this item, since it is going away + */ + + if (_new_current_item == item) { + _new_current_item = 0; + } + if (_current_item == item) { _current_item = 0; } @@ -465,7 +573,11 @@ GtkCanvas::item_going_away (Item* item, boost::optional<Rect> bounding_box) _grabbed_item = 0; } - enter_leave_items (0); // no mouse state + if (_focused_item == item) { + _focused_item = 0; + } + + pick_current_item (0); // no mouse state } @@ -476,9 +588,10 @@ GtkCanvas::item_going_away (Item* item, boost::optional<Rect> bounding_box) bool GtkCanvas::on_expose_event (GdkEventExpose* ev) { - Cairo::RefPtr<Cairo::Context> c = get_window()->create_cairo_context (); + Cairo::RefPtr<Cairo::Context> cairo_context = get_window()->create_cairo_context (); + Rect area (ev->area.x, ev->area.y, ev->area.x + ev->area.width, ev->area.y + ev->area.height); - render (Rect (ev->area.x, ev->area.y, ev->area.x + ev->area.width, ev->area.y + ev->area.height), c); + render (area, cairo_context); return true; } @@ -509,11 +622,14 @@ GtkCanvas::on_button_press_event (GdkEventButton* ev) copy.button.x = where.x; copy.button.y = where.y; - + /* Coordinates in the event will be canvas coordinates, correctly adjusted for scroll if this GtkCanvas is in a GtkCanvasViewport. */ - return button_handler ((GdkEventButton*) ©); + + pick_current_item (where, ev->state); + DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("canvas button press @ %1, %2 => %3\n", ev->x, ev->y, where)); + return deliver_event (reinterpret_cast<GdkEvent*>(©)); } /** Handler for GDK button release events. @@ -527,6 +643,8 @@ GtkCanvas::on_button_release_event (GdkEventButton* ev) GdkEvent copy = *((GdkEvent*)ev); Duple where = window_to_canvas (Duple (ev->x, ev->y)); + + pick_current_item (where, ev->state); copy.button.x = where.x; copy.button.y = where.y; @@ -534,7 +652,10 @@ GtkCanvas::on_button_release_event (GdkEventButton* ev) /* Coordinates in the event will be canvas coordinates, correctly adjusted for scroll if this GtkCanvas is in a GtkCanvasViewport. */ - return button_handler ((GdkEventButton*) ©); + + pick_current_item (where, ev->state); + DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("canvas button release @ %1, %2 => %3\n", ev->x, ev->y, where)); + return deliver_event (reinterpret_cast<GdkEvent*>(©)); } /** Handler for GDK motion events. @@ -547,15 +668,52 @@ GtkCanvas::on_motion_notify_event (GdkEventMotion* ev) /* translate event coordinates from window to canvas */ GdkEvent copy = *((GdkEvent*)ev); - Duple where = window_to_canvas (Duple (ev->x, ev->y)); + Duple point (ev->x, ev->y); + Duple where = window_to_canvas (point); copy.motion.x = where.x; copy.motion.y = where.y; - /* Coordinates in the event will be canvas coordinates, correctly adjusted - for scroll if this GtkCanvas is in a GtkCanvasViewport. + /* Coordinates in "copy" will be canvas coordinates, */ - return motion_notify_handler ((GdkEventMotion*) ©); + + // DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("canvas motion @ %1, %2\n", ev->x, ev->y)); + + if (_grabbed_item) { + /* if we have a grabbed item, it gets just the motion event, + since no enter/leave events can have happened. + */ + DEBUG_TRACE (PBD::DEBUG::CanvasEvents, string_compose ("%1 %2 (%3) was grabbed, send MOTION event there\n", + _grabbed_item, _grabbed_item->whatami(), _grabbed_item->name)); + return _grabbed_item->Event (reinterpret_cast<GdkEvent*> (©)); + } + + pick_current_item (where, ev->state); + + /* Now deliver the motion event. It may seem a little inefficient + to recompute the items under the event, but the enter notify/leave + events may have deleted canvas items so it is important to + recompute the list in deliver_event. + */ + + return deliver_event (reinterpret_cast<GdkEvent*> (©)); +} + +bool +GtkCanvas::on_enter_notify_event (GdkEventCrossing* ev) +{ + Duple where = window_to_canvas (Duple (ev->x, ev->y)); + pick_current_item (where, ev->state); + return true; +} + +bool +GtkCanvas::on_leave_notify_event (GdkEventCrossing* ev) +{ + _new_current_item = 0; + Duple where = window_to_canvas (Duple (ev->x, ev->y)); + deliver_enter_leave (where, ev->state); + return true; } /** Called to request a redraw of our canvas. @@ -564,9 +722,13 @@ GtkCanvas::on_motion_notify_event (GdkEventMotion* ev) void GtkCanvas::request_redraw (Rect const & request) { - Rect area = canvas_to_window (request); - // cerr << this << " Invalidate " << request << " TRANSLATE AS " << area << endl; - queue_draw_area (floor (area.x0), floor (area.y0), ceil (area.x1) - floor (area.x0), ceil (area.y1) - floor (area.y0)); + boost::optional<Rect> req = request.intersection (visible_area()); + + if (req) { + Rect r = req.get(); + Rect area = canvas_to_window (r); + queue_draw_area (area.x0, area.y0, area.width(), area.height()); + } } /** Called to request that we try to get a particular size for ourselves. @@ -600,6 +762,7 @@ GtkCanvas::grab (Item* item) _grabbed_item = item; } + /** `Ungrab' any item that was previously grabbed */ void GtkCanvas::ungrab () @@ -608,6 +771,24 @@ GtkCanvas::ungrab () _grabbed_item = 0; } +/** Set keyboard focus on an item, so that all keyboard events are sent to that item until the focus + * moves elsewhere. + * @param item Item to grab. + */ +void +GtkCanvas::focus (Item* item) +{ + _focused_item = item; +} + +void +GtkCanvas::unfocus (Item* item) +{ + if (item == _focused_item) { + _focused_item = 0; + } +} + /** @return The visible area of the canvas, in canvas coordinates */ Rect GtkCanvas::visible_area () const diff --git a/libs/canvas/canvas/arc.h b/libs/canvas/canvas/arc.h index fc1b72163e..306a1acb7b 100644 --- a/libs/canvas/canvas/arc.h +++ b/libs/canvas/canvas/arc.h @@ -19,13 +19,14 @@ #ifndef __CANVAS_ARC_H__ #define __CANVAS_ARC_H__ +#include "canvas/visibility.h" #include "canvas/item.h" #include "canvas/outline.h" #include "canvas/fill.h" namespace ArdourCanvas { -class Arc : virtual public Item, public Outline, public Fill +class LIBCANVAS_API Arc : virtual public Item, public Outline, public Fill { public: Arc (Group *); @@ -51,6 +52,8 @@ public: return _start_degrees; } + bool covers (Duple const &) const; + private: Duple _center; Coord _radius; diff --git a/libs/canvas/canvas/arrow.h b/libs/canvas/canvas/arrow.h index a5a338a3ba..beaed84c27 100644 --- a/libs/canvas/canvas/arrow.h +++ b/libs/canvas/canvas/arrow.h @@ -25,6 +25,8 @@ #ifndef __CANVAS_ARROW_H__ #define __CANVAS_ARROW_H__ +#include "canvas/visibility.h" + #include "canvas/group.h" namespace ArdourCanvas { @@ -43,7 +45,7 @@ class Polygon; * to draw lines at any angle. */ -class Arrow : public Group +class LIBCANVAS_API Arrow : public Group { public: Arrow (Group *); @@ -62,6 +64,8 @@ public: void set_y0 (Coord); void set_y1 (Coord); + bool covers (Duple const &) const; + private: void setup_polygon (int); diff --git a/libs/canvas/canvas/canvas.h b/libs/canvas/canvas/canvas.h index e65abf6b27..616336409d 100644 --- a/libs/canvas/canvas/canvas.h +++ b/libs/canvas/canvas/canvas.h @@ -24,12 +24,18 @@ #ifndef __CANVAS_CANVAS_H__ #define __CANVAS_CANVAS_H__ +#include <set> + #include <gdkmm/window.h> #include <gtkmm/eventbox.h> #include <gtkmm/alignment.h> #include <cairomm/surface.h> #include <cairomm/context.h> + #include "pbd/signals.h" + +#include "canvas/visibility.h" + #include "canvas/root_group.h" namespace ArdourCanvas @@ -48,7 +54,7 @@ class Group; * rightwards and y increases downwards. */ -class Canvas +class LIBCANVAS_API Canvas { public: Canvas (); @@ -63,6 +69,11 @@ public: /** called to ask the canvas' host to `ungrab' any grabbed item */ virtual void ungrab () = 0; + /** called to ask the canvas' host to keyboard focus on an item */ + virtual void focus (Item *) = 0; + /** called to ask the canvas' host to drop keyboard focus on an item */ + virtual void unfocus (Item*) = 0; + void render (Rect const &, Cairo::RefPtr<Cairo::Context> const &) const; /** @return root group */ @@ -99,6 +110,8 @@ public: void scroll_to (Coord x, Coord y); virtual Rect visible_area () const = 0; + void zoomed(); + std::string indent() const; std::string render_indent() const; void dump (std::ostream&) const; @@ -112,12 +125,12 @@ protected: Coord _scroll_offset_x; Coord _scroll_offset_y; - virtual void enter_leave_items (int state) = 0; - virtual void enter_leave_items (Duple const &, int state) = 0; + virtual void pick_current_item (int state) = 0; + virtual void pick_current_item (Duple const &, int state) = 0; }; /** A canvas which renders onto a GTK EventBox */ -class GtkCanvas : public Canvas, public Gtk::EventBox +class LIBCANVAS_API GtkCanvas : public Canvas, public Gtk::EventBox { public: GtkCanvas (); @@ -126,6 +139,8 @@ public: void request_size (Duple); void grab (Item *); void ungrab (); + void focus (Item *); + void unfocus (Item*); Cairo::RefPtr<Cairo::Context> context (); @@ -136,23 +151,29 @@ protected: bool on_button_press_event (GdkEventButton *); bool on_button_release_event (GdkEventButton* event); bool on_motion_notify_event (GdkEventMotion *); + bool on_enter_notify_event (GdkEventCrossing*); + bool on_leave_notify_event (GdkEventCrossing*); bool button_handler (GdkEventButton *); bool motion_notify_handler (GdkEventMotion *); - bool deliver_event (Duple, GdkEvent *); - - void enter_leave_items (int state); - void enter_leave_items (Duple const &, int state); + bool deliver_event (GdkEvent *); + void deliver_enter_leave (Duple const & point, int state); + + void pick_current_item (int state); + void pick_current_item (Duple const &, int state); private: void item_going_away (Item *, boost::optional<Rect>); bool send_leave_event (Item const *, double, double) const; - - /** the item that the mouse is currently over, or 0 */ - Item const * _current_item; + /** Item currently chosen for event delivery based on pointer position */ + Item * _current_item; + /** Item pending as _current_item */ + Item * _new_current_item; /** the item that is currently grabbed, or 0 */ - Item const * _grabbed_item; + Item * _grabbed_item; + /** the item that currently has key focus or 0 */ + Item * _focused_item; }; /** A GTK::Alignment with a GtkCanvas inside it plus some Gtk::Adjustments for @@ -161,7 +182,7 @@ private: * This provides a GtkCanvas that can be scrolled. It does NOT implement the * Gtk::Scrollable interface. */ -class GtkCanvasViewport : public Gtk::Alignment +class LIBCANVAS_API GtkCanvasViewport : public Gtk::Alignment { public: GtkCanvasViewport (Gtk::Adjustment &, Gtk::Adjustment &); diff --git a/libs/canvas/canvas/circle.h b/libs/canvas/canvas/circle.h index 030e73312c..ee17208a1f 100644 --- a/libs/canvas/canvas/circle.h +++ b/libs/canvas/canvas/circle.h @@ -19,11 +19,13 @@ #ifndef __CANVAS_CIRCLE_H__ #define __CANVAS_CIRCLE_H__ +#include "canvas/visibility.h" + #include "canvas/arc.h" namespace ArdourCanvas { -class Circle : public Arc +class LIBCANVAS_API Circle : public Arc { public: Circle (Group *); diff --git a/libs/canvas/canvas/curve.h b/libs/canvas/canvas/curve.h index f2ed6a1d0e..93c14386dc 100644 --- a/libs/canvas/canvas/curve.h +++ b/libs/canvas/canvas/curve.h @@ -19,21 +19,23 @@ #ifndef __CANVAS_CURVE_H__ #define __CANVAS_CURVE_H__ +#include "canvas/visibility.h" + #include "canvas/poly_item.h" namespace ArdourCanvas { -class Curve : public PolyItem +class LIBCANVAS_API Curve : public PolyItem { public: Curve (Group *); void compute_bounding_box () const; - void render (Rect const & area, Cairo::RefPtr<Cairo::Context>) const; - void set (Points const &); + bool covers (Duple const &) const; + protected: void render_path (Rect const &, Cairo::RefPtr<Cairo::Context>) const; void render_curve (Rect const &, Cairo::RefPtr<Cairo::Context>) const; diff --git a/libs/canvas/canvas/debug.h b/libs/canvas/canvas/debug.h index a025e605dc..09fa97789b 100644 --- a/libs/canvas/canvas/debug.h +++ b/libs/canvas/canvas/debug.h @@ -24,12 +24,14 @@ #include <map> #include "pbd/debug.h" +#include "canvas/visibility.h" + namespace PBD { namespace DEBUG { - extern uint64_t CanvasItems; - extern uint64_t CanvasItemsDirtied; - extern uint64_t CanvasEvents; - extern uint64_t CanvasRender; + LIBCANVAS_API extern uint64_t CanvasItems; + LIBCANVAS_API extern uint64_t CanvasItemsDirtied; + LIBCANVAS_API extern uint64_t CanvasEvents; + LIBCANVAS_API extern uint64_t CanvasRender; } } @@ -40,13 +42,13 @@ namespace PBD { #endif namespace ArdourCanvas { - extern struct timeval epoch; - extern std::map<std::string, struct timeval> last_time; - extern void checkpoint (std::string, std::string); - extern void set_epoch (); - extern int render_count; - extern int render_depth; - extern int dump_depth; + LIBCANVAS_API extern struct timeval epoch; + LIBCANVAS_API extern std::map<std::string, struct timeval> last_time; + LIBCANVAS_API extern void checkpoint (std::string, std::string); + LIBCANVAS_API extern void set_epoch (); + LIBCANVAS_API extern int render_count; + LIBCANVAS_API extern int render_depth; + LIBCANVAS_API extern int dump_depth; } #endif diff --git a/libs/canvas/canvas/drag_handle.h b/libs/canvas/canvas/drag_handle.h new file mode 100644 index 0000000000..389386fb1a --- /dev/null +++ b/libs/canvas/canvas/drag_handle.h @@ -0,0 +1,41 @@ +/* + Copyright (C) 2011-2014 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 __canvas_drag_handle_h__ +#define __canvas_drag_handle_h__ + +#include "canvas/rectangle.h" +#include "canvas/circle.h" + +namespace ArdourCanvas +{ + +class LIBCANVAS_API DragHandle : public Rectangle +{ + public: + DragHandle (Group *, Rect const &, bool left_side); + void render (Rect const &, Cairo::RefPtr<Cairo::Context>) const; + + protected: + bool _left_side; +}; + +} + + +#endif /* __canvas_drag_handle_h__ */ diff --git a/libs/canvas/canvas/fill.h b/libs/canvas/canvas/fill.h index f52260c571..23708e42e5 100644 --- a/libs/canvas/canvas/fill.h +++ b/libs/canvas/canvas/fill.h @@ -22,11 +22,13 @@ #include <vector> #include <stdint.h> + +#include "canvas/visibility.h" #include "canvas/item.h" namespace ArdourCanvas { -class Fill : virtual public Item +class LIBCANVAS_API Fill : virtual public Item { public: Fill (Group *); diff --git a/libs/canvas/canvas/flag.h b/libs/canvas/canvas/flag.h index 6664524a19..0975d9373e 100644 --- a/libs/canvas/canvas/flag.h +++ b/libs/canvas/canvas/flag.h @@ -17,6 +17,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "canvas/visibility.h" #include "canvas/group.h" #include "canvas/types.h" @@ -26,13 +27,15 @@ class Text; class Line; class Rectangle; -class Flag : public Group +class LIBCANVAS_API Flag : public Group { public: Flag (Group *, Distance, Color, Color, Duple); void set_text (std::string const &); void set_height (Distance); + + bool covers (Duple const &) const; private: Distance _height; diff --git a/libs/canvas/canvas/group.h b/libs/canvas/canvas/group.h index 9a72d50873..b89f1467ba 100644 --- a/libs/canvas/canvas/group.h +++ b/libs/canvas/canvas/group.h @@ -22,13 +22,15 @@ #include <list> #include <vector> + +#include "canvas/visibility.h" #include "canvas/item.h" #include "canvas/types.h" #include "canvas/lookup_table.h" namespace ArdourCanvas { -class Group : public Item +class LIBCANVAS_API Group : public Item { public: explicit Group (Group *); @@ -44,7 +46,7 @@ public: std::list<Item*> const & items () const { return _items; } - + void raise_child_to_top (Item *); void raise_child (Item *, int); void lower_child_to_bottom (Item *); diff --git a/libs/canvas/canvas/image.h b/libs/canvas/canvas/image.h index 0dcf8e51b3..d54edd3827 100644 --- a/libs/canvas/canvas/image.h +++ b/libs/canvas/canvas/image.h @@ -23,6 +23,7 @@ #include <boost/shared_ptr.hpp> #include <boost/shared_array.hpp> +#include "canvas/visibility.h" #include "canvas/item.h" typedef void (*ImageReleaseCallback)(uint8_t *d, void *arg); @@ -30,7 +31,7 @@ typedef void (*ImageReleaseCallback)(uint8_t *d, void *arg); namespace ArdourCanvas { -class Image : public Item +class LIBCANVAS_API Image : public Item { public: Image (Group *, Cairo::Format, int width, int height); @@ -90,7 +91,7 @@ public: void render (Rect const &, Cairo::RefPtr<Cairo::Context>) const; void compute_bounding_box () const; - + private: Cairo::Format _format; int _width; diff --git a/libs/canvas/canvas/item.h b/libs/canvas/canvas/item.h index e856c7e149..da061f5bfc 100644 --- a/libs/canvas/canvas/item.h +++ b/libs/canvas/canvas/item.h @@ -28,6 +28,7 @@ #include "pbd/signals.h" +#include "canvas/visibility.h" #include "canvas/types.h" namespace ArdourCanvas @@ -48,7 +49,7 @@ class Rect; * and all except the `root group' have a pointer to their parent group. */ -class Item +class LIBCANVAS_API Item { public: Item (Canvas *); @@ -56,6 +57,8 @@ public: Item (Group *, Duple); virtual ~Item (); + void redraw () const; + /** Render this item to a Cairo context. * @param area Area to draw, in **window** coordinates * @@ -73,6 +76,8 @@ public: items.push_back (this); } + virtual bool covers (Duple const &) const; + /** Update _bounding_box and _bounding_box_dirty */ virtual void compute_bounding_box () const = 0; @@ -86,6 +91,21 @@ public: Group* parent () const { return _parent; } + + uint32_t depth() const; + const Item* closest_ancestor_with (const Item& other) const; + bool common_ancestor_within (uint32_t, const Item& other) const; + + /** returns true if this item is an ancestor of @param candidate, + * and false otherwise. + */ + bool is_ancestor_of (const Item& candidate) const { + return candidate.is_descendant_of (*this); + } + /** returns true if this Item is a descendant of @param candidate, + * and false otherwise. + */ + bool is_descendant_of (const Item& candidate) const; void set_position (Duple); void set_x_position (Coord); @@ -222,7 +242,7 @@ private: bool _ignore_events; }; -extern std::ostream& operator<< (std::ostream&, const ArdourCanvas::Item&); +extern LIBCANVAS_API std::ostream& operator<< (std::ostream&, const ArdourCanvas::Item&); } diff --git a/libs/canvas/canvas/line.h b/libs/canvas/canvas/line.h index 36c0f48379..85b1d41e15 100644 --- a/libs/canvas/canvas/line.h +++ b/libs/canvas/canvas/line.h @@ -20,19 +20,21 @@ #ifndef __CANVAS_LINE_H__ #define __CANVAS_LINE_H__ +#include "canvas/visibility.h" #include "canvas/item.h" #include "canvas/outline.h" #include "canvas/poly_line.h" namespace ArdourCanvas { -class Line : virtual public Item, public Outline +class LIBCANVAS_API Line : virtual public Item, public Outline { public: Line (Group *); void render (Rect const & area, Cairo::RefPtr<Cairo::Context>) const; void compute_bounding_box () const; + bool covers (Duple const &) const; void set (Duple, Duple); void set_x0 (Coord); diff --git a/libs/canvas/canvas/line_set.h b/libs/canvas/canvas/line_set.h index cd551438b1..a9b13651d9 100644 --- a/libs/canvas/canvas/line_set.h +++ b/libs/canvas/canvas/line_set.h @@ -17,11 +17,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "canvas/visibility.h" #include "canvas/item.h" namespace ArdourCanvas { -class LineSet : public Item +class LIBCANVAS_API LineSet : public Item { public: enum Orientation { @@ -34,6 +35,8 @@ public: void compute_bounding_box () const; void render (Rect const & area, Cairo::RefPtr<Cairo::Context>) const; + bool covers (Duple const &) const; + void set_height (Distance); void add (Coord, Distance, Color); diff --git a/libs/canvas/canvas/lookup_table.h b/libs/canvas/canvas/lookup_table.h index 4ab69b6167..5be33c1bca 100644 --- a/libs/canvas/canvas/lookup_table.h +++ b/libs/canvas/canvas/lookup_table.h @@ -22,6 +22,8 @@ #include <vector> #include <boost/multi_array.hpp> + +#include "canvas/visibility.h" #include "canvas/types.h" class OptimizingLookupTableTest; @@ -31,53 +33,56 @@ namespace ArdourCanvas { class Item; class Group; -class LookupTable +class LIBCANVAS_API LookupTable { public: - LookupTable (Group const &); - virtual ~LookupTable (); - - virtual std::vector<Item*> get (Rect const &) = 0; - virtual std::vector<Item*> items_at_point (Duple) const = 0; + LookupTable (Group const &); + virtual ~LookupTable (); + + virtual std::vector<Item*> get (Rect const &) = 0; + virtual std::vector<Item*> items_at_point (Duple const &) const = 0; + virtual bool has_item_at_point (Duple const & point) const = 0; protected: - Group const & _group; + Group const & _group; }; -class DumbLookupTable : public LookupTable +class LIBCANVAS_API DumbLookupTable : public LookupTable { public: - DumbLookupTable (Group const &); - - std::vector<Item*> get (Rect const &); - std::vector<Item*> items_at_point (Duple) const; + DumbLookupTable (Group const &); + + std::vector<Item*> get (Rect const &); + std::vector<Item*> items_at_point (Duple const &) const; + bool has_item_at_point (Duple const & point) const; }; -class OptimizingLookupTable : public LookupTable +class LIBCANVAS_API OptimizingLookupTable : public LookupTable { public: - OptimizingLookupTable (Group const &, int); - ~OptimizingLookupTable (); - std::vector<Item*> get (Rect const &); - std::vector<Item*> items_at_point (Duple) const; - - static int default_items_per_cell; - -private: - - void area_to_indices (Rect const &, int &, int &, int &, int &) const; - void point_to_indices (Duple, int &, int &) const; - - friend class ::OptimizingLookupTableTest; - - typedef std::vector<Item*> Cell; - int _items_per_cell; - int _dimension; - Duple _cell_size; - Duple _offset; - Cell** _cells; - bool _added; + OptimizingLookupTable (Group const &, int); + ~OptimizingLookupTable (); + std::vector<Item*> get (Rect const &); + std::vector<Item*> items_at_point (Duple const &) const; + bool has_item_at_point (Duple const & point) const; + + static int default_items_per_cell; + + private: + + void area_to_indices (Rect const &, int &, int &, int &, int &) const; + void point_to_indices (Duple, int &, int &) const; + + friend class ::OptimizingLookupTableTest; + + typedef std::vector<Item*> Cell; + int _items_per_cell; + int _dimension; + Duple _cell_size; + Duple _offset; + Cell** _cells; + bool _added; }; } diff --git a/libs/canvas/canvas/outline.h b/libs/canvas/canvas/outline.h index c315da874c..972c07b11c 100644 --- a/libs/canvas/canvas/outline.h +++ b/libs/canvas/canvas/outline.h @@ -21,12 +21,14 @@ #define __CANVAS_OUTLINE_H__ #include <stdint.h> + +#include "canvas/visibility.h" #include "canvas/types.h" #include "canvas/item.h" namespace ArdourCanvas { -class Outline : virtual public Item +class LIBCANVAS_API Outline : virtual public Item { public: Outline (Group *); @@ -50,27 +52,6 @@ public: virtual void set_outline (bool); -#ifdef CANVAS_COMPATIBILITY - int& property_first_arrowhead () { - return _foo_int; - } - int& property_last_arrowhead () { - return _foo_int; - } - int& property_arrow_shape_a () { - return _foo_int; - } - int& property_arrow_shape_b () { - return _foo_int; - } - int& property_arrow_shape_c () { - return _foo_int; - } - bool& property_draw () { - return _foo_bool; - } -#endif - protected: void setup_outline_context (Cairo::RefPtr<Cairo::Context>) const; @@ -78,11 +59,6 @@ protected: Color _outline_color; Distance _outline_width; bool _outline; - -#ifdef CANVAS_COMPATIBILITY - int _foo_int; - bool _foo_bool; -#endif }; } diff --git a/libs/canvas/canvas/pixbuf.h b/libs/canvas/canvas/pixbuf.h index ed1be5fe5c..3974b560a9 100644 --- a/libs/canvas/canvas/pixbuf.h +++ b/libs/canvas/canvas/pixbuf.h @@ -22,6 +22,7 @@ #include <glibmm/refptr.h> +#include "canvas/visibility.h" #include "canvas/item.h" namespace Gdk { @@ -30,7 +31,7 @@ namespace Gdk { namespace ArdourCanvas { -class Pixbuf : public Item +class LIBCANVAS_API Pixbuf : public Item { public: Pixbuf (Group *); diff --git a/libs/canvas/canvas/poly_item.h b/libs/canvas/canvas/poly_item.h index 10e41e9ca6..4745d24ab9 100644 --- a/libs/canvas/canvas/poly_item.h +++ b/libs/canvas/canvas/poly_item.h @@ -20,12 +20,13 @@ #ifndef __CANVAS_POLY_ITEM_H__ #define __CANVAS_POLY_ITEM_H__ +#include "canvas/visibility.h" #include "canvas/item.h" #include "canvas/outline.h" namespace ArdourCanvas { -class PolyItem : virtual public Item, public Outline +class LIBCANVAS_API PolyItem : virtual public Item, public Outline { public: PolyItem (Group *); diff --git a/libs/canvas/canvas/poly_line.h b/libs/canvas/canvas/poly_line.h index 911dd140fc..72c20e0674 100644 --- a/libs/canvas/canvas/poly_line.h +++ b/libs/canvas/canvas/poly_line.h @@ -20,17 +20,20 @@ #ifndef __CANVAS_POLY_LINE_H__ #define __CANVAS_POLY_LINE_H__ +#include "canvas/visibility.h" #include "canvas/poly_item.h" #include "canvas/outline.h" namespace ArdourCanvas { -class PolyLine : public PolyItem +class LIBCANVAS_API PolyLine : public PolyItem { public: PolyLine (Group *); void render (Rect const & area, Cairo::RefPtr<Cairo::Context>) const; + + bool covers (Duple const &) const; }; } diff --git a/libs/canvas/canvas/polygon.h b/libs/canvas/canvas/polygon.h index addfe48100..917122a9a2 100644 --- a/libs/canvas/canvas/polygon.h +++ b/libs/canvas/canvas/polygon.h @@ -20,18 +20,29 @@ #ifndef __CANVAS_POLYGON_H__ #define __CANVAS_POLYGON_H__ +#include "canvas/visibility.h" #include "canvas/poly_item.h" #include "canvas/outline.h" #include "canvas/fill.h" namespace ArdourCanvas { -class Polygon : public PolyItem, public Fill +class LIBCANVAS_API Polygon : public PolyItem, public Fill { public: Polygon (Group *); + virtual ~Polygon(); void render (Rect const & area, Cairo::RefPtr<Cairo::Context>) const; + void compute_bounding_box () const; + bool covers (Duple const &) const; + + protected: + mutable float* multiple; + mutable float* constant; + mutable Points::size_type cached_size; + + void cache_shape_computation () const; }; } diff --git a/libs/canvas/canvas/rectangle.h b/libs/canvas/canvas/rectangle.h index f93324b39e..ff2ff994b7 100644 --- a/libs/canvas/canvas/rectangle.h +++ b/libs/canvas/canvas/rectangle.h @@ -20,6 +20,7 @@ #ifndef __CANVAS_RECTANGLE_H__ #define __CANVAS_RECTANGLE_H__ +#include "canvas/visibility.h" #include "canvas/item.h" #include "canvas/types.h" #include "canvas/outline.h" @@ -28,7 +29,7 @@ namespace ArdourCanvas { -class Rectangle : virtual public Item, public Outline, public Fill +class LIBCANVAS_API Rectangle : virtual public Item, public Outline, public Fill { public: Rectangle (Group *); diff --git a/libs/canvas/canvas/root_group.h b/libs/canvas/canvas/root_group.h index 74cfbac29f..70c3e5b90b 100644 --- a/libs/canvas/canvas/root_group.h +++ b/libs/canvas/canvas/root_group.h @@ -20,11 +20,12 @@ #ifndef __CANVAS_ROOT_GROUP_H__ #define __CANVAS_ROOT_GROUP_H__ -#include "group.h" +#include "canvas/visibility.h" +#include "canvas/group.h" namespace ArdourCanvas { -class RootGroup : public Group +class LIBCANVAS_API RootGroup : public Group { private: friend class Canvas; diff --git a/libs/canvas/canvas/text.h b/libs/canvas/canvas/text.h index 6ae6d58a37..59d2007ceb 100644 --- a/libs/canvas/canvas/text.h +++ b/libs/canvas/canvas/text.h @@ -23,11 +23,12 @@ #include <pangomm/fontdescription.h> #include <pangomm/layout.h> +#include "canvas/visibility.h" #include "canvas/item.h" namespace ArdourCanvas { -class Text : public Item +class LIBCANVAS_API Text : public Item { public: Text (Group *); @@ -46,6 +47,8 @@ public: void set_size_chars (int nchars); void dump (std::ostream&) const; + std::string text() const { return _text; } + private: std::string _text; uint32_t _color; @@ -59,6 +62,8 @@ private: double _clamped_width; void redraw (Cairo::RefPtr<Cairo::Context>) const; + void redraw (Glib::RefPtr<Pango::Context>) const; + void _redraw (Glib::RefPtr<Pango::Layout>) const; }; } diff --git a/libs/canvas/canvas/types.h b/libs/canvas/canvas/types.h index 33bb92ca58..1e8b7b145f 100644 --- a/libs/canvas/canvas/types.h +++ b/libs/canvas/canvas/types.h @@ -27,6 +27,8 @@ #include <cairomm/refptr.h> +#include "canvas/visibility.h" + namespace Cairo { struct Context; } @@ -38,9 +40,9 @@ typedef double Coord; typedef double Distance; typedef uint32_t Color; -extern Coord const COORD_MAX; +extern LIBCANVAS_API Coord const COORD_MAX; -struct Duple +struct LIBCANVAS_API Duple { Duple () : x (0) @@ -59,14 +61,14 @@ struct Duple }; -extern Duple operator- (Duple const &); -extern Duple operator+ (Duple const &, Duple const &); -extern bool operator== (Duple const &, Duple const &); -extern Duple operator- (Duple const &, Duple const &); -extern Duple operator/ (Duple const &, double); -extern std::ostream & operator<< (std::ostream &, Duple const &); +extern LIBCANVAS_API Duple operator- (Duple const &); +extern LIBCANVAS_API Duple operator+ (Duple const &, Duple const &); +extern LIBCANVAS_API bool operator== (Duple const &, Duple const &); +extern LIBCANVAS_API Duple operator- (Duple const &, Duple const &); +extern LIBCANVAS_API Duple operator/ (Duple const &, double); +extern LIBCANVAS_API std::ostream & operator<< (std::ostream &, Duple const &); -struct Rect +struct LIBCANVAS_API Rect { Rect () : x0 (0) @@ -93,9 +95,7 @@ struct Rect Rect expand (Distance) const; bool contains (Duple) const; Rect fix () const; - - Rect convert_to_device (Cairo::RefPtr<Cairo::Context>) const; - Rect convert_to_user (Cairo::RefPtr<Cairo::Context>) const; + bool empty() const { return (x0 == x1 && y0 == y1); } Distance width () const { return x1 - x0; @@ -106,7 +106,7 @@ struct Rect } }; -extern std::ostream & operator<< (std::ostream &, Rect const &); +extern LIBCANVAS_API std::ostream & operator<< (std::ostream &, Rect const &); typedef std::vector<Duple> Points; diff --git a/libs/canvas/canvas/utils.h b/libs/canvas/canvas/utils.h index 9db677b61b..cd9d884475 100644 --- a/libs/canvas/canvas/utils.h +++ b/libs/canvas/canvas/utils.h @@ -17,16 +17,19 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include "canvas/visibility.h" #include "canvas/types.h" namespace ArdourCanvas { - extern void color_to_hsv (Color color, double& h, double& s, double& v); - extern Color hsv_to_color (double h, double s, double v, double a); + extern LIBCANVAS_API void color_to_hsv (Color color, double& h, double& s, double& v); + extern LIBCANVAS_API Color hsv_to_color (double h, double s, double v, double a); - extern void color_to_rgba (Color, double& r, double& g, double& b, double& a); - extern Color rgba_to_color (double r, double g, double b, double a); + extern LIBCANVAS_API void color_to_rgba (Color, double& r, double& g, double& b, double& a); + extern LIBCANVAS_API Color rgba_to_color (double r, double g, double b, double a); - extern void set_source_rgba (Cairo::RefPtr<Cairo::Context>, Color); + extern LIBCANVAS_API void set_source_rgba (Cairo::RefPtr<Cairo::Context>, Color); + + Distance LIBCANVAS_API distance_to_segment_squared (Duple const & p, Duple const & p1, Duple const & p2, double& t, Duple& at); } diff --git a/libs/canvas/canvas/visibility.h b/libs/canvas/canvas/visibility.h new file mode 100644 index 0000000000..e44fe86705 --- /dev/null +++ b/libs/canvas/canvas/visibility.h @@ -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. + +*/ + +#ifndef __libcanvas_visibility_h__ +#define __libcanvas_visibility_h__ + +#if defined(COMPILER_MSVC) + #define LIBCANVAS_DLL_IMPORT __declspec(dllimport) + #define LIBCANVAS_DLL_EXPORT __declspec(dllexport) + #define LIBCANVAS_DLL_LOCAL +#else + #define LIBCANVAS_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBCANVAS_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBCANVAS_DLL_LOCAL __attribute__ ((visibility ("hidden"))) +#endif + +#ifdef LIBCANVAS_STATIC // libcanvas is not a DLL +#define LIBCANVAS_API +#define LIBCANVAS_LOCAL +#else + #ifdef LIBCANVAS_DLL_EXPORTS // defined if we are building the libcanvas DLL (instead of using it) + #define LIBCANVAS_API LIBCANVAS_DLL_EXPORT + #else + #define LIBCANVAS_API LIBCANVAS_DLL_IMPORT + #endif + #define LIBCANVAS_LOCAL LIBCANVAS_DLL_LOCAL +#endif + +#endif /* __libcanvas_visibility_h__ */ diff --git a/libs/canvas/canvas/wave_view.h b/libs/canvas/canvas/wave_view.h index fc39d7e555..b80ae5183d 100644 --- a/libs/canvas/canvas/wave_view.h +++ b/libs/canvas/canvas/wave_view.h @@ -28,6 +28,7 @@ #include <glibmm/refptr.h> +#include "canvas/visibility.h" #include "canvas/item.h" #include "canvas/fill.h" #include "canvas/outline.h" @@ -44,7 +45,7 @@ class WaveViewTest; namespace ArdourCanvas { -class WaveView : virtual public Item, public Outline, public Fill +class LIBCANVAS_API WaveView : virtual public Item, public Outline, public Fill { public: enum Shape { @@ -97,7 +98,6 @@ public: double gradient_depth() const { return _gradient_depth; } void set_shape (Shape); - /* currently missing because we don't need them (yet): set_shape_independent(); set_logscaled_independent() @@ -115,6 +115,9 @@ public: void set_amplitude_above_axis (double v); double amplitude_above_axis () const { return _amplitude_above_axis; } + static void set_clip_level (double dB); + static PBD::Signal0<void> ClipLevelChanged; + #ifdef CANVAS_COMPATIBILITY void*& property_gain_src () { return _foo_void; @@ -163,6 +166,7 @@ private: static bool _global_logscaled; static Shape _global_shape; static bool _global_show_waveform_clipping; + static double _clip_level; static PBD::Signal0<void> VisualPropertiesChanged; diff --git a/libs/canvas/curve.cc b/libs/canvas/curve.cc index 5bbd33799d..de988ee4b2 100644 --- a/libs/canvas/curve.cc +++ b/libs/canvas/curve.cc @@ -209,3 +209,25 @@ Curve::solve (std::vector<double> const & rhs) return x; } + +bool +Curve::covers (Duple const & pc) const +{ + Duple point = canvas_to_item (pc); + + /* XXX Hellaciously expensive ... */ + + for (Points::const_iterator p = _points.begin(); p != _points.end(); ++p) { + + const Coord dx = point.x - (*p).x; + const Coord dy = point.y - (*p).y; + const Coord dx2 = dx * dx; + const Coord dy2 = dy * dy; + + if ((dx2 < 2.0 && dy2 < 2.0) || (dx2 + dy2 < 4.0)) { + return true; + } + } + + return false; +} diff --git a/libs/canvas/drag_handle.cc b/libs/canvas/drag_handle.cc new file mode 100644 index 0000000000..94b2e7dafb --- /dev/null +++ b/libs/canvas/drag_handle.cc @@ -0,0 +1,55 @@ +/* + Copyright (C) 2014 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 <iostream> +#include <cairomm/context.h> +#include "pbd/stacktrace.h" +#include "pbd/compose.h" + +#include "canvas/drag_handle.h" + +using namespace ArdourCanvas; + +DragHandle::DragHandle (Group* g, Rect const & r, bool left_side) + : Item (g) + , Rectangle (g, r) + , _left_side (left_side) +{ +} + +void +DragHandle::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const +{ + Rectangle::render (area, context); + +#if 0 + Duple circle_center (_left_side ? x0() : x1(), (y1() - y0())/2.0); + Duple window_circle_center = item_to_window (circle_center); + + context->set_source_rgba (1.0, 0.0, 0.0, 1.0); + + if (_left_side) { + context->arc (window_circle_center.x, window_circle_center.y, 7.0, -M_PI/2.0, +M_PI/2.0); + } else { + context->arc_negative (window_circle_center.x, window_circle_center.y, 7.0, -M_PI/2.0, +M_PI/2.0); + } + + context->fill (); +#endif + +} diff --git a/libs/canvas/flag.cc b/libs/canvas/flag.cc index 8eb320e74b..756b54545f 100644 --- a/libs/canvas/flag.cc +++ b/libs/canvas/flag.cc @@ -66,3 +66,13 @@ Flag::set_height (Distance) { _line->set (Duple (0, 0), Duple (0, _height)); } + +bool +Flag::covers (Duple const & point) const +{ + if (_rectangle) { + return _rectangle->covers (point); + } + + return false; +} diff --git a/libs/canvas/group.cc b/libs/canvas/group.cc index 63754ae72f..619444c4e6 100644 --- a/libs/canvas/group.cc +++ b/libs/canvas/group.cc @@ -74,21 +74,21 @@ Group::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const ensure_lut (); vector<Item*> items = _lut->get (area); - ++render_depth; - #ifdef CANVAS_DEBUG if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - cerr << string_compose ("%1GROUP %2 render %5 %3 items out of %4\n", - _canvas->render_indent(), (name.empty() ? string ("[unnamed]") : name), items.size(), _items.size(), area); + cerr << string_compose ("%1GROUP %2 @ %7 render %5 @ %6 %3 items out of %4\n", + _canvas->render_indent(), (name.empty() ? string ("[unnamed]") : name), items.size(), _items.size(), area, _position, this); } #endif + ++render_depth; + for (vector<Item*>::const_iterator i = items.begin(); i != items.end(); ++i) { if (!(*i)->visible ()) { #ifdef CANVAS_DEBUG if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - // cerr << _canvas->render_indent() << "Item " << (*i)->whatami() << " [" << (*i)->name << "] invisible - skipped\n"; + cerr << _canvas->render_indent() << "Item " << (*i)->whatami() << " [" << (*i)->name << "] invisible - skipped\n"; } #endif continue; @@ -99,33 +99,52 @@ Group::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const if (!item_bbox) { #ifdef CANVAS_DEBUG if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - // cerr << _canvas->render_indent() << "Item " << (*i)->whatami() << " [" << (*i)->name << "] empty - skipped\n"; + cerr << _canvas->render_indent() << "Item " << (*i)->whatami() << " [" << (*i)->name << "] empty - skipped\n"; } #endif continue; } - + Rect item = (*i)->item_to_window (item_bbox.get()); - boost::optional<Rect> draw = item.intersection (area); + boost::optional<Rect> d = item.intersection (area); - if (draw) { + if (d) { + Rect draw = d.get(); + if (draw.width() && draw.height()) { #ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - cerr << string_compose ("%1render %2 %3\n", _canvas->render_indent(), (*i)->whatami(), - (*i)->name); - } + if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + if (dynamic_cast<Group*>(*i) == 0) { + cerr << _canvas->render_indent() << "render " + << ' ' + << (*i) + << ' ' + << (*i)->whatami() + << ' ' + << (*i)->name + << " item = " + << item + << " intersect = " + << draw + << " @ " + << _position + << endl; + } + } #endif - (*i)->render (area, context); - ++render_count; + (*i)->render (area, context); + ++render_count; + } } else { + #ifdef CANVAS_DEBUG if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { - //cerr << string_compose ("%1skip render of %2 %3, no intersection\n", _canvas->render_indent(), (*i)->whatami(), - // (*i)->name); + cerr << string_compose ("%1skip render of %2 %3, no intersection\n", _canvas->render_indent(), (*i)->whatami(), + (*i)->name); } #endif + } } @@ -139,7 +158,9 @@ Group::compute_bounding_box () const bool have_one = false; for (list<Item*>::const_iterator i = _items.begin(); i != _items.end(); ++i) { + boost::optional<Rect> item_bbox = (*i)->bounding_box (); + if (!item_bbox) { continue; } @@ -216,6 +237,12 @@ Group::clear (bool with_delete) void Group::raise_child_to_top (Item* i) { + if (!_items.empty()) { + if (_items.back() == i) { + return; + } + } + _items.remove (i); _items.push_back (i); invalidate_lut (); @@ -242,6 +269,11 @@ Group::raise_child (Item* i, int levels) void Group::lower_child_to_bottom (Item* i) { + if (!_items.empty()) { + if (_items.front() == i) { + return; + } + } _items.remove (i); _items.push_front (i); invalidate_lut (); @@ -278,17 +310,24 @@ Group::add_items_at_point (Duple const point, vector<Item const *>& items) const { boost::optional<Rect> const bbox = bounding_box (); - if (!bbox || !bbox.get().contains (point)) { + /* Point is in canvas coordinate system */ + + if (!bbox || !item_to_canvas (bbox.get()).contains (point)) { return; } - Item::add_items_at_point (point, items); - + /* now recurse and add any items within our group that contain point */ + ensure_lut (); - vector<Item*> our_items = _lut->items_at_point (point); + + if (!our_items.empty()) { + /* this adds this group itself to the list of items at point */ + Item::add_items_at_point (point, items); + } + for (vector<Item*>::iterator i = our_items.begin(); i != our_items.end(); ++i) { - (*i)->add_items_at_point (point - (*i)->position(), items); + (*i)->add_items_at_point (point, items); } } diff --git a/libs/canvas/item.cc b/libs/canvas/item.cc index b553d8d6ae..3c3816881a 100644 --- a/libs/canvas/item.cc +++ b/libs/canvas/item.cc @@ -287,6 +287,103 @@ Item::reparent (Group* new_parent) _parent->add (this); } +bool +Item::common_ancestor_within (uint32_t limit, const Item& other) const +{ + uint32_t d1 = depth(); + uint32_t d2 = other.depth(); + const Item* i1 = this; + const Item* i2 = &other; + + /* move towards root until we are at the same level + for both items + */ + + while (d1 != d2) { + if (d1 > d2) { + i1 = i1->parent(); + d1--; + limit--; + } else { + i2 = i2->parent(); + d2--; + limit--; + } + if (limit == 0) { + return false; + } + } + + /* now see if there is a common parent */ + + while (i1 != i2) { + if (i1) { + i1 = i1->parent(); + } + if (i2) { + i2 = i2->parent (); + } + + limit--; + if (limit == 0) { + return false; + } + } + + return true; +} + +const Item* +Item::closest_ancestor_with (const Item& other) const +{ + uint32_t d1 = depth(); + uint32_t d2 = other.depth(); + const Item* i1 = this; + const Item* i2 = &other; + + /* move towards root until we are at the same level + for both items + */ + + while (d1 != d2) { + if (d1 > d2) { + i1 = i1->parent(); + d1--; + } else { + i2 = i2->parent(); + d2--; + } + } + + /* now see if there is a common parent */ + + while (i1 != i2) { + if (i1) { + i1 = i1->parent(); + } + if (i2) { + i2 = i2->parent (); + } + } + + return i1; +} + +bool +Item::is_descendant_of (const Item& candidate) const +{ + Item const * i = _parent; + + while (i) { + if (i == &candidate) { + return true; + } + i = i->parent(); + } + + return false; +} + void Item::grab_focus () { @@ -329,6 +426,14 @@ Item::width () const } void +Item::redraw () const +{ + if (_visible && _bounding_box && _canvas) { + _canvas->request_redraw (item_to_canvas (_bounding_box.get())); + } +} + +void Item::begin_change () { _pre_change_bounding_box = bounding_box (); @@ -429,9 +534,40 @@ Item::whatami () const return type.substr (type.find_last_of (':') + 1); } +uint32_t +Item::depth () const +{ + Item* i = _parent; + int d = 0; + while (i) { + ++d; + i = i->parent(); + } + return d; +} + +bool +Item::covers (Duple const & point) const +{ + Duple p = canvas_to_item (point); + + if (_bounding_box_dirty) { + compute_bounding_box (); + } + + boost::optional<Rect> r = bounding_box(); + + if (!r) { + return false; + } + + return r.get().contains (p); +} + ostream& ArdourCanvas::operator<< (ostream& o, const Item& i) { i.dump (o); return o; } + diff --git a/libs/canvas/line.cc b/libs/canvas/line.cc index af2a0e47db..61acf89252 100644 --- a/libs/canvas/line.cc +++ b/libs/canvas/line.cc @@ -147,3 +147,53 @@ Line::set_y1 (Coord y1) DEBUG_TRACE (PBD::DEBUG::CanvasItemsDirtied, "canvas item dirty: line change\n"); } + +bool +Line::covers (Duple const & point) const +{ + const Duple p = canvas_to_item (point); + static const Distance threshold = 2.0; + + /* this quick check works for vertical and horizontal lines, which are + * common. + */ + + if (_points[0].x == _points[1].x) { + /* line is vertical, just check x coordinate */ + return fabs (_points[0].x - p.x) <= threshold; + } + + if (_points[0].y == _points[1].y) { + /* line is horizontal, just check y coordinate */ + return fabs (_points[0].y - p.y) <= threshold; + } + + Duple at; + double t; + Duple a (_points[0]); + Duple b (_points[1]); + const Rect visible (_canvas->visible_area()); + + /* + Clamp the line endpoints to the visible area of the canvas. If we do + not do this, we have a line segment extending to COORD_MAX and our + math goes wrong. + */ + + a.x = min (a.x, visible.x1); + a.y = min (a.y, visible.y1); + b.x = min (b.x, visible.x1); + b.y = min (b.y, visible.y1); + + double d = distance_to_segment_squared (p, a, b, t, at); + + if (t < 0.0 || t > 1.0) { + return false; + } + + if (d < threshold) { + return true; + } + + return false; +} diff --git a/libs/canvas/line_set.cc b/libs/canvas/line_set.cc index 5aefe1bf47..1625e0478d 100644 --- a/libs/canvas/line_set.cc +++ b/libs/canvas/line_set.cc @@ -45,11 +45,9 @@ LineSet::compute_bounding_box () const { if (_lines.empty ()) { _bounding_box = boost::optional<Rect> (); - _bounding_box_dirty = false; - return; + } else { + _bounding_box = Rect (0, _lines.front().y - (_lines.front().width/2.0), COORD_MAX, min (_height, _lines.back().y - (_lines.back().width/2.0))); } - - _bounding_box = Rect (0, _lines.front().y, COORD_MAX, min (_height, _lines.back().y)); _bounding_box_dirty = false; } @@ -67,18 +65,22 @@ LineSet::set_height (Distance height) void LineSet::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const { + /* area is in window coordinates */ + for (list<Line>::const_iterator i = _lines.begin(); i != _lines.end(); ++i) { - if (i->y > area.y1) { - break; - } else if (i->y > area.y0) { - set_source_rgba (context, i->color); - context->set_line_width (i->width); - Duple p0 = item_to_window (Duple (area.x0, i->y)); - Duple p1 = item_to_window (Duple (area.x1, i->y)); - context->move_to (p0.x, p0.y); - context->line_to (p1.x, p1.y); - context->stroke (); + + Rect self = item_to_window (Rect (0, i->y - (i->width/2.0), COORD_MAX, i->y + (i->width/2.0))); + boost::optional<Rect> intersect = self.intersection (area); + + if (!intersect) { + continue; } + + set_source_rgba (context, i->color); + context->set_line_width (i->width); + context->move_to (intersect->x0, self.y0 + ((self.y1 - self.y0)/2.0)); + context->line_to (intersect->x1, self.y0 + ((self.y1 - self.y0)/2.0)); + context->stroke (); } } @@ -102,3 +104,9 @@ LineSet::clear () _bounding_box_dirty = true; end_change (); } + +bool +LineSet::covers (Duple const & /*point*/) const +{ + return false; +} diff --git a/libs/canvas/lookup_table.cc b/libs/canvas/lookup_table.cc index 9697ba8103..f88531537a 100644 --- a/libs/canvas/lookup_table.cc +++ b/libs/canvas/lookup_table.cc @@ -49,26 +49,49 @@ DumbLookupTable::get (Rect const &) return vitems; } -/* XXX: what coordinate system is the point in? parent of our group I think */ vector<Item *> -DumbLookupTable::items_at_point (Duple point) const +DumbLookupTable::items_at_point (Duple const & point) const { - list<Item *> items = _group.items (); + /* Point is in canvas coordinate system */ + + list<Item *> const & items (_group.items ()); vector<Item *> vitems; for (list<Item *>::const_iterator i = items.begin(); i != items.end(); ++i) { - boost::optional<Rect> item_bbox = (*i)->bounding_box (); - if (item_bbox) { - Rect parent_bbox = (*i)->item_to_parent (item_bbox.get ()); - if (parent_bbox.contains (point)) { - vitems.push_back (*i); - } + + if ((*i)->covers (point)) { + // std::cerr << "\t\t" << (*i)->whatami() << '/' << (*i)->name << " covers " << point << std::endl; + vitems.push_back (*i); } } return vitems; } +bool +DumbLookupTable::has_item_at_point (Duple const & point) const +{ + /* Point is in canvas coordinate system */ + + list<Item *> const & items (_group.items ()); + vector<Item *> vitems; + + for (list<Item *>::const_iterator i = items.begin(); i != items.end(); ++i) { + + if (!(*i)->visible()) { + continue; + } + + if ((*i)->covers (point)) { + // std::cerr << "\t\t" << (*i)->whatami() << '/' << (*i)->name << " covers " << point << std::endl; + return true; + + } + } + + return false; +} + OptimizingLookupTable::OptimizingLookupTable (Group const & group, int items_per_cell) : LookupTable (group) , _items_per_cell (items_per_cell) @@ -188,7 +211,7 @@ OptimizingLookupTable::point_to_indices (Duple point, int& x, int& y) const } vector<Item*> -OptimizingLookupTable::items_at_point (Duple point) const +OptimizingLookupTable::items_at_point (Duple const & point) const { int x; int y; @@ -223,6 +246,43 @@ OptimizingLookupTable::items_at_point (Duple point) const return items; } + +bool +OptimizingLookupTable::has_item_at_point (Duple const & point) const +{ + int x; + int y; + point_to_indices (point, x, y); + + if (x >= _dimension) { + cout << "WARNING: x=" << x << ", dim=" << _dimension << ", px=" << point.x << " cellsize=" << _cell_size << "\n"; + } + + if (y >= _dimension) { + cout << "WARNING: y=" << y << ", dim=" << _dimension << ", py=" << point.y << " cellsize=" << _cell_size << "\n"; + } + + /* XXX: hmm */ + x = min (_dimension - 1, x); + y = min (_dimension - 1, y); + + assert (x >= 0); + assert (y >= 0); + + Cell const & cell = _cells[x][y]; + vector<Item*> items; + for (Cell::const_iterator i = cell.begin(); i != cell.end(); ++i) { + boost::optional<Rect> const item_bbox = (*i)->bounding_box (); + if (item_bbox) { + Rect parent_bbox = (*i)->item_to_parent (item_bbox.get ()); + if (parent_bbox.contains (point)) { + return true; + } + } + } + + return false; +} /** @param area Area in our owning group's coordinates */ vector<Item*> diff --git a/libs/canvas/outline.cc b/libs/canvas/outline.cc index 3e57887070..be8b924df2 100644 --- a/libs/canvas/outline.cc +++ b/libs/canvas/outline.cc @@ -32,7 +32,7 @@ using namespace ArdourCanvas; Outline::Outline (Group* parent) : Item (parent) , _outline_color (0x000000ff) - , _outline_width (0.5) + , _outline_width (1.0) , _outline (true) { diff --git a/libs/canvas/poly_item.cc b/libs/canvas/poly_item.cc index 2500ac90e2..69afb5ac24 100644 --- a/libs/canvas/poly_item.cc +++ b/libs/canvas/poly_item.cc @@ -38,7 +38,6 @@ void PolyItem::compute_bounding_box () const { bool have_one = false; - Rect bbox; for (Points::const_iterator i = _points.begin(); i != _points.end(); ++i) { @@ -65,26 +64,28 @@ PolyItem::compute_bounding_box () const } void -PolyItem::render_path (Rect const & /*area*/, Cairo::RefPtr<Cairo::Context> context) const +PolyItem::render_path (Rect const & /* area */, Cairo::RefPtr<Cairo::Context> context) const { - bool done_first = false; - for (Points::const_iterator i = _points.begin(); i != _points.end(); ++i) { - if (done_first) { - Duple c = item_to_window (Duple (i->x, i->y)); - context->line_to (c.x, c.y); - } else { - Duple c = item_to_window (Duple (i->x, i->y)); - context->move_to (c.x, c.y); - done_first = true; - } + if (_points.size() < 2) { + return; + } + + Points::const_iterator i = _points.begin(); + Duple c (item_to_window (Duple (i->x, i->y))); + + context->move_to (c.x, c.y); + ++i; + + while (i != _points.end()) { + c = item_to_window (Duple (i->x, i->y)); + context->line_to (c.x, c.y); + ++i; } } void PolyItem::render_curve (Rect const & area, Cairo::RefPtr<Cairo::Context> context, Points const & first_control_points, Points const & second_control_points) const { - bool done_first = false; - if (_points.size() <= 2) { render_path (area, context); return; @@ -92,26 +93,24 @@ PolyItem::render_curve (Rect const & area, Cairo::RefPtr<Cairo::Context> context Points::const_iterator cp1 = first_control_points.begin(); Points::const_iterator cp2 = second_control_points.begin(); + Points::const_iterator p = _points.begin(); - for (Points::const_iterator i = _points.begin(); i != _points.end(); ++i) { - - if (done_first) { + Duple c = item_to_window (Duple (p->x, p->y)); + context->move_to (c.x, c.y); + ++p; - Duple c1 = item_to_window (Duple (cp1->x, cp1->y)); - Duple c2 = item_to_window (Duple (cp2->x, cp2->y)); - Duple c3 = item_to_window (Duple (i->x, i->y)); + while (p != _points.end()) { - context->curve_to (c1.x, c1.y, c2.x, c2.y, c3.x, c3.y); + Duple c1 = item_to_window (Duple (cp1->x, cp1->y)); + Duple c2 = item_to_window (Duple (cp2->x, cp2->y)); - cp1++; - cp2++; - - } else { - - Duple c = item_to_window (Duple (i->x, i->y)); - context->move_to (c.x, c.y); - done_first = true; - } + c = item_to_window (Duple (p->x, p->y)); + + context->curve_to (c1.x, c1.y, c2.x, c2.y, c.x, c.y); + + ++cp1; + ++cp2; + ++p; } } diff --git a/libs/canvas/poly_line.cc b/libs/canvas/poly_line.cc index bdc4af9c10..7118e47555 100644 --- a/libs/canvas/poly_line.cc +++ b/libs/canvas/poly_line.cc @@ -17,7 +17,11 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ +#include <algorithm> + #include "canvas/poly_line.h" +#include "canvas/canvas.h" +#include "canvas/utils.h" using namespace ArdourCanvas; @@ -37,3 +41,55 @@ PolyLine::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) cons context->stroke (); } } + +bool +PolyLine::covers (Duple const & point) const +{ + Duple p = canvas_to_item (point); + + const Points::size_type npoints = _points.size(); + + if (npoints < 2) { + return false; + } + + Points::size_type i; + Points::size_type j; + + /* repeat for each line segment */ + + const Rect visible (_canvas->visible_area()); + static const double threshold = 2.0; + + for (i = 1, j = 0; i < npoints; ++i, ++j) { + + Duple at; + double t; + Duple a (_points[j]); + Duple b (_points[i]); + + /* + Clamp the line endpoints to the visible area of the canvas. If we do + not do this, we may have a line segment extending to COORD_MAX and our + math goes wrong. + */ + + a.x = std::min (a.x, visible.x1); + a.y = std::min (a.y, visible.y1); + b.x = std::min (b.x, visible.x1); + b.y = std::min (b.y, visible.y1); + + double d = distance_to_segment_squared (p, a, b, t, at); + + if (t < 0.0 || t > 1.0) { + return false; + } + + if (d < threshold) { + return true; + } + + } + + return false; +} diff --git a/libs/canvas/polygon.cc b/libs/canvas/polygon.cc index 1103cedbee..2e81823616 100644 --- a/libs/canvas/polygon.cc +++ b/libs/canvas/polygon.cc @@ -25,10 +25,19 @@ Polygon::Polygon (Group* parent) : Item (parent) , PolyItem (parent) , Fill (parent) + , multiple (0) + , constant (0) + , cached_size (0) { } +Polygon::~Polygon () +{ + delete [] multiple; + delete [] constant; +} + void Polygon::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const { @@ -51,3 +60,72 @@ Polygon::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const } } +void +Polygon::cache_shape_computation () const +{ + Points::size_type npoints = _points.size(); + + if (npoints == 0) { + return; + } + + Points::size_type i; + Points::size_type j = npoints -1; + + if (cached_size < npoints) { + cached_size = npoints; + delete [] multiple; + multiple = new float[cached_size]; + delete [] constant; + constant = new float[cached_size]; + } + + for (i = 0; i < npoints; i++) { + if (_points[j].y == _points[i].y) { + constant[i] = _points[i].x; + multiple[i] = 0; + } else { + constant[i] = _points[i].x-(_points[i].y*_points[j].x)/(_points[j].y-_points[i].y)+(_points[i].y*_points[i].x)/(_points[j].y-_points[i].y); + multiple[i] = (_points[j].x-_points[i].x)/(_points[j].y-_points[i].y); + } + + j = i; + } +} + +bool +Polygon::covers (Duple const & point) const +{ + Duple p = canvas_to_item (point); + + Points::size_type npoints = _points.size(); + + if (npoints == 0) { + return false; + } + + Points::size_type i; + Points::size_type j = npoints -1; + bool oddNodes = false; + + if (_bounding_box_dirty) { + compute_bounding_box (); + } + + for (i = 0; i < npoints; i++) { + if (((_points[i].y < p.y && _points[j].y >= p.y) || (_points[j].y < p.y && _points[i].y >= p.y))) { + oddNodes ^= (p.y * multiple[i] + constant[i] < p.x); + } + j = i; + } + + return oddNodes; +} + +void +Polygon::compute_bounding_box () const +{ + PolyItem::compute_bounding_box (); + cache_shape_computation (); +} + diff --git a/libs/canvas/rectangle.cc b/libs/canvas/rectangle.cc index a5aa0a2895..d5808b9bb0 100644 --- a/libs/canvas/rectangle.cc +++ b/libs/canvas/rectangle.cc @@ -36,7 +36,6 @@ Rectangle::Rectangle (Group* parent) , Fill (parent) , _outline_what ((What) (LEFT | RIGHT | TOP | BOTTOM)) { - } Rectangle::Rectangle (Group* parent, Rect const & rect) @@ -53,24 +52,14 @@ void Rectangle::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const { Rect self = item_to_window (_rect); - boost::optional<Rect> d = self.intersection (area); + boost::optional<Rect> r = self.intersection (area); - if (!d) { + if (!r) { + std::cerr << whatami() << '/' << name << " not covered by render area! ... " << self << " vs. " << area << std::endl; return; } - - Rect draw = d.get(); - static const double boundary = 0.5; - const double x_limit = _canvas->visible_area().width(); - - draw.x0 = max (self.x0, max (0.0, draw.x0 - boundary)); - draw.x1 = min (self.x1, min (x_limit, draw.x1 + boundary)); - draw.y0 = max (self.y0, max (0.0, draw.y0 - boundary)); - draw.y1 = min (self.y1, min (x_limit, draw.y1 + boundary)); - - Rect fill_rect = draw; - Rect stroke_rect = fill_rect.expand (0.5); + Rect draw = r.get (); if (_fill) { if (_stops.empty()) { @@ -78,32 +67,56 @@ Rectangle::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) con } else { setup_gradient_context (context, self, Duple (draw.x0, draw.y0)); } - context->rectangle (fill_rect.x0, fill_rect.y0, fill_rect.width(), fill_rect.height()); + + context->rectangle (draw.x0, draw.y0, draw.width(), draw.height()); context->fill (); - } + } if (_outline) { setup_outline_context (context); - - if (_outline_what & LEFT) { - context->move_to (stroke_rect.x0, stroke_rect.y0); - context->line_to (stroke_rect.x0, stroke_rect.y1); - } - - if (_outline_what & BOTTOM) { - context->move_to (stroke_rect.x0, stroke_rect.y1); - context->line_to (stroke_rect.x1, stroke_rect.y1); - } - if (_outline_what & RIGHT) { - context->move_to (stroke_rect.x1, stroke_rect.y0); - context->line_to (stroke_rect.x1, stroke_rect.y1); - } - - if (_outline_what & TOP) { - context->move_to (stroke_rect.x0, stroke_rect.y0); - context->line_to (stroke_rect.x1, stroke_rect.y0); + if (_outline_what == What (LEFT|RIGHT|BOTTOM|TOP)) { + + /* outline must be on pixels (hence 0.5 offset) and + must be WITHIN coordinates of rect, not outside it + (hence the -2.0 size adjustment, since we use 1 + pixel on each side for the outline) + */ + + context->rectangle (self.x0 + 0.5, self.y0 + 0.5, self.width() - 1.0, self.height() - 1.0); + + } else { + + // context->set_line_cap (Cairo::LINE_CAP_SQUARE); + + /* see the cairo FAQ on single pixel lines to see why we do + * this expansion of the perimeter. + */ + + if (_outline_what & LEFT) { + /* vertical line: move x-coordinate by 0.5 pixels */ + context->move_to (self.x0 + 0.5, self.y0); + context->line_to (self.x0 + 0.5, self.y1); + } + + if (_outline_what & BOTTOM) { + /* horizontal line: move y-coordinate by 0.5 pixels */ + context->move_to (self.x0, self.y1 - 0.5); + context->line_to (self.x1, self.y1 - 0.5); + } + + if (_outline_what & RIGHT) { + /* vertical line: move x-coordinate by 0.5 pixels */ + context->move_to (self.x1 - 0.5, self.y0); + context->line_to (self.x1 - 0.5, self.y1); + } + + if (_outline_what & TOP) { + /* horizontal line: move y-coordinate by 0.5 pixels */ + context->move_to (self.x0, self.y0 + 0.5); + context->line_to (self.x1, self.y0 + 0.5); + } } context->stroke (); @@ -113,9 +126,19 @@ Rectangle::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) con void Rectangle::compute_bounding_box () const { - Rect r = _rect.fix (); - _bounding_box = boost::optional<Rect> (r.expand (_outline_width / 2)); - + if (!_rect.empty()) { + Rect r = _rect.fix (); + + /* our outlines are always inside our coordinates, but we have + * to ensure that our bounding box fully *contains* the + * rectangle + * + * XXX: or something like that, waffle. + * + */ + _bounding_box = _rect.fix (); + } + _bounding_box_dirty = false; } diff --git a/libs/canvas/text.cc b/libs/canvas/text.cc index 7143f2aca7..438413080a 100644 --- a/libs/canvas/text.cc +++ b/libs/canvas/text.cc @@ -71,6 +71,23 @@ Text::redraw (Cairo::RefPtr<Cairo::Context> context) const Glib::RefPtr<Pango::Layout> layout = Pango::Layout::create (context); + _redraw (layout); +} + +void +Text::redraw (Glib::RefPtr<Pango::Context> context) const +{ + if (_text.empty()) { + return; + } + + Glib::RefPtr<Pango::Layout> layout = Pango::Layout::create (context); + _redraw (layout); +} + +void +Text::_redraw (Glib::RefPtr<Pango::Layout> layout) const +{ layout->set_text (_text); if (_font_description) { @@ -79,13 +96,13 @@ Text::redraw (Cairo::RefPtr<Cairo::Context> context) const layout->set_alignment (_alignment); - Pango::Rectangle ink_rect = layout->get_ink_extents(); - - _origin.x = ink_rect.get_x() / Pango::SCALE; - _origin.y = ink_rect.get_y() / Pango::SCALE; + int w; + int h; - _width = _origin.x + (ink_rect.get_width() / Pango::SCALE); - _height = _origin.y + (ink_rect.get_height() / Pango::SCALE); + layout->get_size (w, h); + + _width = w / Pango::SCALE; + _height = h / Pango::SCALE; _image = Cairo::ImageSurface::create (Cairo::FORMAT_ARGB32, _width, _height); @@ -116,6 +133,7 @@ Text::render (Rect const & /*area*/, Cairo::RefPtr<Cairo::Context> context) cons } Rect self = item_to_window (Rect (0, 0, min (_clamped_width, _width), _height)); + context->rectangle (self.x0, self.y0, self.width(), self.height()); context->set_source (_image, self.x0, self.y0); context->fill (); @@ -137,29 +155,11 @@ Text::compute_bounding_box () const } if (_bounding_box_dirty) { - if (!_image) { - - PangoContext* _pc = gdk_pango_context_get (); - Glib::RefPtr<Pango::Context> context = Glib::wrap (_pc); // context now owns _pc and will free it - Glib::RefPtr<Pango::Layout> layout = Pango::Layout::create (context); - - layout->set_text (_text); - if (_font_description) { - layout->set_font_description (*_font_description); - } - layout->set_alignment (_alignment); - Pango::Rectangle const r = layout->get_ink_extents (); - - _bounding_box = Rect ( - 0, 0, - (r.get_x() + r.get_width()) / Pango::SCALE, - (r.get_y() + r.get_height()) / Pango::SCALE - ); - } else { - - _bounding_box = Rect (0, 0, _image->get_width(), _image->get_height()); + if (_need_redraw || !_image) { + Glib::RefPtr<Pango::Context> context = Glib::wrap (gdk_pango_context_get()); // context now owns C object and will free it + redraw (context); } - + _bounding_box = Rect (0, 0, min (_clamped_width, (double) _image->get_width()), _image->get_height()); _bounding_box_dirty = false; } } diff --git a/libs/canvas/types.cc b/libs/canvas/types.cc index a8c690bbbe..9d8ed05622 100644 --- a/libs/canvas/types.cc +++ b/libs/canvas/types.cc @@ -95,8 +95,8 @@ Rect Rect::expand (Distance amount) const { Rect r; - r.x0 = x0 - amount; - r.y0 = y0 - amount; + r.x0 = max (0.0, x0 - amount); + r.y0 = max (0.0, y0 - amount); r.x1 = safe_add (x1, amount); r.y1 = safe_add (y1, amount); return r; @@ -121,39 +121,6 @@ Rect::fix () const return r; } -Rect -Rect::convert_to_device (Cairo::RefPtr<Cairo::Context> c) const -{ - Coord xa, ya, xb, yb; - - xa = x0; - xb = x1; - ya = y0; - yb = y1; - - c->user_to_device (xa, ya); - c->user_to_device (xb, yb); - - return Rect (xa, ya, xb, yb); -} - - -Rect -Rect::convert_to_user (Cairo::RefPtr<Cairo::Context> c) const -{ - Coord xa, ya, xb, yb; - - xa = x0; - xb = x1; - ya = y0; - yb = y1; - - c->device_to_user (xa, ya); - c->device_to_user (xb, yb); - - return Rect (xa, ya, xb, yb); -} - Duple ArdourCanvas::operator- (Duple const & o) { diff --git a/libs/canvas/utils.cc b/libs/canvas/utils.cc index b431042c35..bdc8fad039 100644 --- a/libs/canvas/utils.cc +++ b/libs/canvas/utils.cc @@ -154,3 +154,69 @@ ArdourCanvas::set_source_rgba (Cairo::RefPtr<Cairo::Context> context, Color colo ); } +ArdourCanvas::Distance +ArdourCanvas::distance_to_segment_squared (Duple const & p, Duple const & p1, Duple const & p2, double& t, Duple& at) +{ + static const double kMinSegmentLenSquared = 0.00000001; // adjust to suit. If you use float, you'll probably want something like 0.000001f + static const double kEpsilon = 1.0E-14; // adjust to suit. If you use floats, you'll probably want something like 1E-7f + double dx = p2.x - p1.x; + double dy = p2.y - p1.y; + double dp1x = p.x - p1.x; + double dp1y = p.y - p1.y; + const double segLenSquared = (dx * dx) + (dy * dy); + + if (segLenSquared >= -kMinSegmentLenSquared && segLenSquared <= kMinSegmentLenSquared) { + // segment is a point. + at = p1; + t = 0.0; + return ((dp1x * dp1x) + (dp1y * dp1y)); + } + + + // Project a line from p to the segment [p1,p2]. By considering the line + // extending the segment, parameterized as p1 + (t * (p2 - p1)), + // we find projection of point p onto the line. + // It falls where t = [(p - p1) . (p2 - p1)] / |p2 - p1|^2 + + t = ((dp1x * dx) + (dp1y * dy)) / segLenSquared; + + if (t < kEpsilon) { + // intersects at or to the "left" of first segment vertex (p1.x, p1.y). If t is approximately 0.0, then + // intersection is at p1. If t is less than that, then there is no intersection (i.e. p is not within + // the 'bounds' of the segment) + if (t > -kEpsilon) { + // intersects at 1st segment vertex + t = 0.0; + } + // set our 'intersection' point to p1. + at = p1; + // Note: If you wanted the ACTUAL intersection point of where the projected lines would intersect if + // we were doing PointLineDistanceSquared, then qx would be (p1.x + (t * dx)) and qy would be (p1.y + (t * dy)). + + } else if (t > (1.0 - kEpsilon)) { + // intersects at or to the "right" of second segment vertex (p2.x, p2.y). If t is approximately 1.0, then + // intersection is at p2. If t is greater than that, then there is no intersection (i.e. p is not within + // the 'bounds' of the segment) + if (t < (1.0 + kEpsilon)) { + // intersects at 2nd segment vertex + t = 1.0; + } + // set our 'intersection' point to p2. + at = p2; + // Note: If you wanted the ACTUAL intersection point of where the projected lines would intersect if + // we were doing PointLineDistanceSquared, then qx would be (p1.x + (t * dx)) and qy would be (p1.y + (t * dy)). + } else { + // The projection of the point to the point on the segment that is perpendicular succeeded and the point + // is 'within' the bounds of the segment. Set the intersection point as that projected point. + at = Duple (p1.x + (t * dx), p1.y + (t * dy)); + } + + // return the squared distance from p to the intersection point. Note that we return the squared distance + // as an optimization because many times you just need to compare relative distances and the squared values + // works fine for that. If you want the ACTUAL distance, just take the square root of this value. + double dpqx = p.x - at.x; + double dpqy = p.y - at.y; + + return ((dpqx * dpqx) + (dpqy * dpqy)); +} + diff --git a/libs/canvas/wave_view.cc b/libs/canvas/wave_view.cc index 4ea9ff9fd3..c36ee8f147 100644 --- a/libs/canvas/wave_view.cc +++ b/libs/canvas/wave_view.cc @@ -45,8 +45,10 @@ double WaveView::_global_gradient_depth = 0.6; bool WaveView::_global_logscaled = false; WaveView::Shape WaveView::_global_shape = WaveView::Normal; bool WaveView::_global_show_waveform_clipping = true; +double WaveView::_clip_level = 0.98853; PBD::Signal0<void> WaveView::VisualPropertiesChanged; +PBD::Signal0<void> WaveView::ClipLevelChanged; WaveView::WaveView (Group* parent, boost::shared_ptr<ARDOUR::AudioRegion> region) : Item (parent) @@ -57,7 +59,7 @@ WaveView::WaveView (Group* parent, boost::shared_ptr<ARDOUR::AudioRegion> region , _samples_per_pixel (0) , _height (64) , _wave_color (0xffffffff) - , _show_zero (true) + , _show_zero (false) , _zero_color (0xff0000ff) , _clip_color (0xff0000ff) , _logscaled (_global_logscaled) @@ -161,6 +163,13 @@ alt_log_meter (float power) return _log_meter (power, -192.0, 0.0, 8.0); } +void +WaveView::set_clip_level (double dB) +{ + _clip_level = dB_to_coefficient (dB); + ClipLevelChanged (); +} + struct LineTips { double top; double bot; @@ -189,7 +198,7 @@ WaveView::draw_image (PeakData* _peaks, int n_peaks) const has been scaled by scale_amplitude() already. */ - const double clip_level = 0.98853 * _region->scale_amplitude(); + const double clip_level = _clip_level * _region->scale_amplitude(); if (_shape == WaveView::Rectified) { @@ -381,9 +390,11 @@ WaveView::draw_image (PeakData* _peaks, int n_peaks) const } if (show_zero_line()) { + set_source_rgba (context, _zero_color); - context->move_to (0, position (0.0)); - context->line_to (n_peaks, position (0.0)); + context->set_line_width (1.0); + context->move_to (0, position (0.0) + 0.5); + context->line_to (n_peaks, position (0.0) + 0.5); context->stroke (); } } @@ -686,3 +697,4 @@ WaveView::set_global_show_waveform_clipping (bool yn) VisualPropertiesChanged (); /* EMIT SIGNAL */ } } + diff --git a/libs/canvas/wscript b/libs/canvas/wscript index d4b9ad4177..9503bfe3ec 100644 --- a/libs/canvas/wscript +++ b/libs/canvas/wscript @@ -34,6 +34,7 @@ canvas_sources = [ 'circle.cc', 'curve.cc', 'debug.cc', + 'drag_handle.cc', 'item.cc', 'fill.cc', 'flag.cc', @@ -61,12 +62,18 @@ def options(opt): def configure(conf): conf.load ('compiler_cxx') autowaf.configure(conf) + autowaf.build_version_files(path_prefix+'canvas/version.h', path_prefix+'version.cc', + 'libcanvas', conf.env['MAJOR'], conf.env['MINOR'], 0, + 'LIBCANVAS_API', 'canvas/visibility.h') autowaf.check_pkg(conf, 'cairomm-1.0', uselib_store='CAIROMM', atleast_version='1.8.4') def build(bld): # Library if bld.is_defined ('INTERNAL_SHARED_LIBS'): obj = bld.shlib(features = 'cxx cxxshlib', source=canvas_sources) + obj.defines = [ 'LIBCANVAS_DLL_EXPORTS=1' ] + obj.cflags = [ '-fvisibility=hidden' ] + obj.cxxflags = [ '-fvisibility=hidden' ] else: obj = bld.stlib(features = 'cxx cxxstlib', source=canvas_sources) obj.cxxflags = [ '-fPIC' ] diff --git a/libs/clearlooks-newer/clearlooks_draw_glossy.c b/libs/clearlooks-newer/clearlooks_draw_glossy.c index 0e573e1b53..a8dd9ef7a3 100644 --- a/libs/clearlooks-newer/clearlooks_draw_glossy.c +++ b/libs/clearlooks-newer/clearlooks_draw_glossy.c @@ -746,7 +746,7 @@ clearlooks_glossy_draw_tab (cairo_t *cr, if (params->active) { - CairoColor shadow, hilight, f1, f2; + CairoColor shadow, f1, f2; pattern = cairo_pattern_create_linear (tab->gap_side == CL_GAP_LEFT ? width-1 : 0, tab->gap_side == CL_GAP_TOP ? height-2 : 1, diff --git a/libs/clearlooks-newer/clearlooks_rc_style.c b/libs/clearlooks-newer/clearlooks_rc_style.c index b54abebb4d..8d6e0aa898 100644 --- a/libs/clearlooks-newer/clearlooks_rc_style.c +++ b/libs/clearlooks-newer/clearlooks_rc_style.c @@ -306,7 +306,7 @@ clearlooks_gtk2_rc_parse_style (GtkSettings *settings, static guint clearlooks_gtk2_rc_parse_dummy (GtkSettings *settings, GScanner *scanner, - gchar *name) + const gchar *name) { guint token; diff --git a/libs/evoral/evoral/visibility.h b/libs/evoral/evoral/visibility.h index 380caca2fd..fc6d23a401 100644 --- a/libs/evoral/evoral/visibility.h +++ b/libs/evoral/evoral/visibility.h @@ -20,37 +20,26 @@ #ifndef __libevoral_visibility_h__ #define __libevoral_visibility_h__ -/* _WIN32 is defined by most compilers targetting Windows, but within the - * evoral 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) +#if defined(COMPILER_MSVC) #define LIBEVORAL_DLL_IMPORT __declspec(dllimport) #define LIBEVORAL_DLL_EXPORT __declspec(dllexport) #define LIBEVORAL_DLL_LOCAL #else - #if __GNUC__ >= 4 - #define LIBEVORAL_DLL_IMPORT __attribute__ ((visibility ("default"))) - #define LIBEVORAL_DLL_EXPORT __attribute__ ((visibility ("default"))) - #define LIBEVORAL_DLL_LOCAL __attribute__ ((visibility ("hidden"))) - #else - #define LIBEVORAL_DLL_IMPORT - #define LIBEVORAL_DLL_EXPORT - #define LIBEVORAL_DLL_LOCAL - #endif + #define LIBEVORAL_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBEVORAL_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBEVORAL_DLL_LOCAL __attribute__ ((visibility ("hidden"))) #endif -#ifdef LIBEVORAL_DLL // libevoral is a DLL -#ifdef LIBEVORAL_DLL_EXPORTS // defined if we are building the libevoral DLL (instead of using it) - #define LIBEVORAL_API LIBEVORAL_DLL_EXPORT +#ifdef LIBEVORAL_STATIC // libevoral is not a DLL + #define LIBEVORAL_API + #define LIBEVORAL_LOCAL #else + #ifdef LIBEVORAL_DLL_EXPORTS // defined if we are building the libevoral DLL (instead of using it) + #define LIBEVORAL_API LIBEVORAL_DLL_EXPORT + #else #define LIBEVORAL_API LIBEVORAL_DLL_IMPORT -#endif -#define LIBEVORAL_LOCAL LIBEVORAL_DLL_LOCAL -#else /* static lib, not DLL */ -#define LIBEVORAL_API -#define LIBEVORAL_LOCAL + #endif + #define LIBEVORAL_LOCAL LIBEVORAL_DLL_LOCAL #endif #endif /* __libevoral_visibility_h__ */ diff --git a/libs/evoral/src/libsmf/smf.c b/libs/evoral/src/libsmf/smf.c index ba805e0b04..3fde1d831e 100644 --- a/libs/evoral/src/libsmf/smf.c +++ b/libs/evoral/src/libsmf/smf.c @@ -155,7 +155,9 @@ smf_track_delete(smf_track_t *track) void smf_add_track(smf_t *smf, smf_track_t *track) { +#ifndef NDEBUG int cantfail; +#endif assert(track->smf == NULL); @@ -166,8 +168,13 @@ smf_add_track(smf_t *smf, smf_track_t *track) track->track_number = smf->number_of_tracks; if (smf->number_of_tracks > 1) { +#ifndef NDEBUG cantfail = smf_set_format(smf, 1); assert(!cantfail); +#else + smf_set_format(smf, 1); +#endif + } } @@ -864,9 +871,8 @@ smf_get_next_event(smf_t *smf) void smf_skip_next_event(smf_t *smf) { - void *notused; - - notused = smf_get_next_event(smf); + smf_event_t *ignored = smf_get_next_event(smf); + (void) ignored; } /** diff --git a/libs/evoral/src/libsmf/smf_decode.c b/libs/evoral/src/libsmf/smf_decode.c index 7a64a15d0d..8037fd80d2 100644 --- a/libs/evoral/src/libsmf/smf_decode.c +++ b/libs/evoral/src/libsmf/smf_decode.c @@ -494,7 +494,7 @@ static void note_from_int(char *buf, int note_number) { int note, octave; - char *names[] = {"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"}; + const char *names[] = {"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"}; octave = note_number / 12 - 1; note = note_number % 12; diff --git a/libs/evoral/src/libsmf/smf_load.c b/libs/evoral/src/libsmf/smf_load.c index fed4d28bb7..d8168d0e6a 100644 --- a/libs/evoral/src/libsmf/smf_load.c +++ b/libs/evoral/src/libsmf/smf_load.c @@ -282,7 +282,11 @@ expected_sysex_length(const unsigned char status, const unsigned char *second_by uint32_t sysex_length = 0; uint32_t len = 0; +#ifndef NDEBUG + (void) status; +#else assert(status == 0xF0); +#endif if (buffer_length < 3) { g_critical("SMF error: end of buffer in expected_sysex_length()."); @@ -545,7 +549,7 @@ extract_midi_event(const unsigned char *buf, const size_t buffer_length, smf_eve static smf_event_t * parse_next_event(smf_track_t *track) { - uint32_t time = 0; + uint32_t etime = 0; uint32_t len; size_t buffer_length; unsigned char *c, *start; @@ -564,7 +568,7 @@ parse_next_event(smf_track_t *track) assert(buffer_length > 0); /* First, extract time offset from previous event. */ - if (smf_extract_vlq(c, buffer_length, &time, &len)) + if (smf_extract_vlq(c, buffer_length, &etime, &len)) goto error; c += len; @@ -582,7 +586,7 @@ parse_next_event(smf_track_t *track) track->last_status = event->midi_buffer[0]; track->next_event_offset += c - start; - smf_track_add_event_delta_pulses(track, event, time); + smf_track_add_event_delta_pulses(track, event, etime); return (event); @@ -637,7 +641,7 @@ smf_event_is_textual(const smf_event_t *event) if (event->midi_buffer_length < 4) return (0); - if (event->midi_buffer[3] < 1 && event->midi_buffer[3] > 9) + if (event->midi_buffer[3] < 1 || event->midi_buffer[3] > 9) return (0); return (1); diff --git a/libs/evoral/src/libsmf/smf_private.h b/libs/evoral/src/libsmf/smf_private.h index 537a29b889..f415eac9da 100644 --- a/libs/evoral/src/libsmf/smf_private.h +++ b/libs/evoral/src/libsmf/smf_private.h @@ -75,6 +75,7 @@ void remove_last_tempo_with_pulses(smf_t *smf, size_t pulses); int smf_event_is_tempo_change_or_time_signature(const smf_event_t *event) WARN_UNUSED_RESULT; int smf_event_length_is_valid(const smf_event_t *event) WARN_UNUSED_RESULT; int is_status_byte(const unsigned char status) WARN_UNUSED_RESULT; +smf_track_t* smf_find_track_with_next_event (smf_t *smf); #endif /* SMF_PRIVATE_H */ diff --git a/libs/evoral/src/libsmf/smf_save.c b/libs/evoral/src/libsmf/smf_save.c index 3b313cff5a..120c3a95eb 100644 --- a/libs/evoral/src/libsmf/smf_save.c +++ b/libs/evoral/src/libsmf/smf_save.c @@ -219,7 +219,11 @@ smf_event_new_textual(int type, const char *text) vlq_length = smf_format_vlq(event->midi_buffer + 2, MAX_VLQ_LENGTH - 2, text_length); copied_length = snprintf((char *)event->midi_buffer + vlq_length + 2, event->midi_buffer_length - vlq_length - 2, "%s", text); +#ifndef NDEBUG + (void) copied_length; /* stop gcc warning about unusued vars for non-debug build */ +#else assert(copied_length == text_length); +#endif event->midi_buffer_length = 2 + vlq_length + text_length; diff --git a/libs/evoral/src/libsmf/smf_tempo.c b/libs/evoral/src/libsmf/smf_tempo.c index 6620cd405c..f3e3f7fc1b 100644 --- a/libs/evoral/src/libsmf/smf_tempo.c +++ b/libs/evoral/src/libsmf/smf_tempo.c @@ -133,13 +133,13 @@ maybe_add_to_tempo_map(smf_event_t *event) /* Tempo Change? */ if (event->midi_buffer[1] == 0x51) { - int new_tempo = (event->midi_buffer[3] << 16) + (event->midi_buffer[4] << 8) + event->midi_buffer[5]; - if (new_tempo <= 0) { + int ntempo = (event->midi_buffer[3] << 16) + (event->midi_buffer[4] << 8) + event->midi_buffer[5]; + if (ntempo <= 0) { g_critical("Ignoring invalid tempo change."); return; } - add_tempo(event->track->smf, event->time_pulses, new_tempo); + add_tempo(event->track->smf, event->time_pulses, ntempo); } /* Time Signature? */ diff --git a/libs/evoral/wscript b/libs/evoral/wscript index 569aa0fc6b..30b20f2cbd 100644 --- a/libs/evoral/wscript +++ b/libs/evoral/wscript @@ -91,9 +91,7 @@ def build(bld): if bld.is_defined ('INTERNAL_SHARED_LIBS'): obj = bld.shlib(features = 'c cxx cshlib cxxshlib', source=lib_source) # DLL exports for this library - obj.defines = [ 'LIBEVORAL_DLL=1', 'LIBEVORAL_DLL_EXPORTS=1' ] - # DLL imports for other libraries - obj.defines += [ 'LIBPBD_DLL=1' ] + obj.defines = [ 'LIBEVORAL_DLL_EXPORTS=1' ] obj.cxxflags = [ '-fvisibility=hidden' ] obj.cflags = [ '-fvisibility=hidden' ] else: diff --git a/libs/gtkmm2ext/gtkmm2ext/dndvbox.h b/libs/gtkmm2ext/gtkmm2ext/dndvbox.h index e41437fbcc..232b5b50a7 100644 --- a/libs/gtkmm2ext/gtkmm2ext/dndvbox.h +++ b/libs/gtkmm2ext/gtkmm2ext/dndvbox.h @@ -298,7 +298,7 @@ private: /* make up an icon for the drag */ _drag_icon = new Gtk::Window (Gtk::WINDOW_POPUP); - Gtk::Allocation a = child->widget().get_allocation (); + Gtk::Allocation a = child->action_widget().get_allocation (); _drag_icon->set_size_request (a.get_width(), a.get_height()); _drag_icon->signal_expose_event().connect (sigc::mem_fun (*this, &DnDVBox::icon_expose)); @@ -328,7 +328,7 @@ private: cairo_t* cr = gdk_cairo_create (_drag_icon->get_window()->gobj ()); - Glib::RefPtr<Gdk::Pixmap> p = _drag_child->widget().get_snapshot(); + Glib::RefPtr<Gdk::Pixmap> p = _drag_child->action_widget().get_snapshot(); gdk_cairo_set_source_pixmap (cr, p->gobj(), 0, 0); cairo_rectangle (cr, 0, 0, w, h); cairo_fill (cr); diff --git a/libs/gtkmm2ext/gtkmm2ext/utils.h b/libs/gtkmm2ext/gtkmm2ext/utils.h index 7d161e2518..de9f7b765d 100644 --- a/libs/gtkmm2ext/gtkmm2ext/utils.h +++ b/libs/gtkmm2ext/gtkmm2ext/utils.h @@ -56,6 +56,10 @@ namespace Gtkmm2ext { LIBGTKMM2EXT_API void get_ink_pixel_size (Glib::RefPtr<Pango::Layout>, int& width, int& height); + + LIBGTKMM2EXT_API void get_pixel_size (Glib::RefPtr<Pango::Layout>, + int& width, int& height); + LIBGTKMM2EXT_API void set_size_request_to_display_given_text (Gtk::Widget &w, const gchar *text, gint hpadding, @@ -104,6 +108,7 @@ namespace Gtkmm2ext { LIBGTKMM2EXT_API void rounded_top_half_rectangle (Cairo::RefPtr<Cairo::Context>, double x, double y, double w, double h, double r=10); LIBGTKMM2EXT_API void rounded_bottom_half_rectangle (Cairo::RefPtr<Cairo::Context>, double x, double y, double w, double h, double r=10); LIBGTKMM2EXT_API void rounded_right_half_rectangle (Cairo::RefPtr<Cairo::Context>, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_left_half_rectangle (Cairo::RefPtr<Cairo::Context>, double x, double y, double w, double h, double r=10); /* C API for rounded rectangles */ @@ -114,6 +119,7 @@ namespace Gtkmm2ext { LIBGTKMM2EXT_API void rounded_top_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); LIBGTKMM2EXT_API void rounded_bottom_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); LIBGTKMM2EXT_API void rounded_right_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10); + LIBGTKMM2EXT_API void rounded_left_half_rectangle (cairo_t* cr, double x, double y, double w, double h, double r=10); LIBGTKMM2EXT_API Gtk::Label* left_aligned_label (std::string const &); @@ -121,7 +127,7 @@ namespace Gtkmm2ext { LIBGTKMM2EXT_API void enable_tooltips (); LIBGTKMM2EXT_API void disable_tooltips (); - void convert_bgra_to_rgba (guint8 const *, guint8 * dst, int, int); + LIBGTKMM2EXT_API void convert_bgra_to_rgba (guint8 const *, guint8 * dst, int, int); }; #endif /* __gtkmm2ext_utils_h__ */ diff --git a/libs/gtkmm2ext/gtkmm2ext/visibility.h b/libs/gtkmm2ext/gtkmm2ext/visibility.h index ce2d3e6e42..902e94d779 100644 --- a/libs/gtkmm2ext/gtkmm2ext/visibility.h +++ b/libs/gtkmm2ext/gtkmm2ext/visibility.h @@ -20,37 +20,26 @@ #ifndef __libgtkmm2ext_visibility_h__ #define __libgtkmm2ext_visibility_h__ -/* _WIN32 is defined by most compilers targetting Windows, but within the - * gtkmm2ext 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) +#if defined(COMPILER_MSVC) #define LIBGTKMM2EXT_DLL_IMPORT __declspec(dllimport) #define LIBGTKMM2EXT_DLL_EXPORT __declspec(dllexport) #define LIBGTKMM2EXT_DLL_LOCAL #else - #if __GNUC__ >= 4 - #define LIBGTKMM2EXT_DLL_IMPORT __attribute__ ((visibility ("default"))) - #define LIBGTKMM2EXT_DLL_EXPORT __attribute__ ((visibility ("default"))) - #define LIBGTKMM2EXT_DLL_LOCAL __attribute__ ((visibility ("hidden"))) - #else - #define LIBGTKMM2EXT_DLL_IMPORT - #define LIBGTKMM2EXT_DLL_EXPORT - #define LIBGTKMM2EXT_DLL_LOCAL - #endif + #define LIBGTKMM2EXT_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBGTKMM2EXT_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBGTKMM2EXT_DLL_LOCAL __attribute__ ((visibility ("hidden"))) #endif -#ifdef LIBGTKMM2EXT_DLL // libgtkmm2ext is a DLL -#ifdef LIBGTKMM2EXT_DLL_EXPORTS // defined if we are building the libgtkmm2ext DLL (instead of using it) - #define LIBGTKMM2EXT_API LIBGTKMM2EXT_DLL_EXPORT +#ifdef LIBGTKMM2EXT_STATIC // libgtkmm2ext is a DLL + #define LIBGTKMM2EXT_API + #define LIBGTKMM2EXT_LOCAL #else - #define LIBGTKMM2EXT_API LIBGTKMM2EXT_DLL_IMPORT -#endif -#define LIBGTKMM2EXT_LOCAL LIBGTKMM2EXT_DLL_LOCAL -#else /* static lib, not DLL */ -#define LIBGTKMM2EXT_API -#define LIBGTKMM2EXT_LOCAL + #ifdef LIBGTKMM2EXT_DLL_EXPORTS // defined if we are building the libgtkmm2ext DLL (instead of using it) + #define LIBGTKMM2EXT_API LIBGTKMM2EXT_DLL_EXPORT + #else + #define LIBGTKMM2EXT_API LIBGTKMM2EXT_DLL_IMPORT + #endif + #define LIBGTKMM2EXT_LOCAL LIBGTKMM2EXT_DLL_LOCAL #endif #endif /* __libgtkmm2ext_visibility_h__ */ diff --git a/libs/gtkmm2ext/pixfader.cc b/libs/gtkmm2ext/pixfader.cc index 0185550259..ef1dffc1dd 100644 --- a/libs/gtkmm2ext/pixfader.cc +++ b/libs/gtkmm2ext/pixfader.cc @@ -33,7 +33,9 @@ using namespace Gtk; using namespace std; #define CORNER_RADIUS 4 -#define FADER_RESERVE (2*CORNER_RADIUS) +#define CORNER_SIZE 2 +#define CORNER_OFFSET 1 +#define FADER_RESERVE 5 std::list<PixFader::FaderImage*> PixFader::_patterns; @@ -54,6 +56,12 @@ PixFader::PixFader (Gtk::Adjustment& adj, int orientation, int fader_length, int adjustment.signal_value_changed().connect (mem_fun (*this, &PixFader::adjustment_changed)); adjustment.signal_changed().connect (mem_fun (*this, &PixFader::adjustment_changed)); + + if (_orien == VERT) { + DrawingArea::set_size_request(girth, span); + } else { + DrawingArea::set_size_request(span, girth); + } } PixFader::~PixFader () @@ -105,11 +113,8 @@ PixFader::create_patterns () cairo_surface_t* surface; cairo_t* tc = 0; - float radius = CORNER_RADIUS; - double w = get_width(); - - if (w <= 1 || get_height() <= 1) { + if (get_width() <= 1 || get_height() <= 1) { return; } @@ -136,13 +141,12 @@ PixFader::create_patterns () /* paint lower shade */ - w -= 2.0; - - shade_pattern = cairo_pattern_create_linear (0.0, 0.0, w, 0); + shade_pattern = cairo_pattern_create_linear (0.0, 0.0, get_width() - 2 - CORNER_OFFSET , 0); cairo_pattern_add_color_stop_rgba (shade_pattern, 0, fr*0.8,fg*0.8,fb*0.8, 1.0); cairo_pattern_add_color_stop_rgba (shade_pattern, 1, fr*0.6,fg*0.6,fb*0.6, 1.0); cairo_set_source (tc, shade_pattern); - Gtkmm2ext::rounded_top_half_rectangle (tc, 1.0, get_height(), w, get_height(), radius-1.5); + Gtkmm2ext::rounded_top_half_rectangle (tc, CORNER_OFFSET, get_height() + CORNER_OFFSET, + get_width() - CORNER_SIZE, get_height(), CORNER_RADIUS); cairo_fill (tc); cairo_pattern_destroy (shade_pattern); @@ -169,7 +173,8 @@ PixFader::create_patterns () cairo_pattern_add_color_stop_rgba (shade_pattern, 0, fr*0.8,fg*0.8,fb*0.8, 1.0); cairo_pattern_add_color_stop_rgba (shade_pattern, 1, fr*0.6,fg*0.6,fb*0.6, 1.0); cairo_set_source (tc, shade_pattern); - Gtkmm2ext::rounded_right_half_rectangle (tc, 0, 1, get_width(), get_height() - 2.0, radius-1.5); + Gtkmm2ext::rounded_right_half_rectangle (tc, CORNER_OFFSET, CORNER_OFFSET, + get_width() - CORNER_OFFSET, get_height() - CORNER_SIZE, CORNER_RADIUS); cairo_fill (tc); cairo_pattern_destroy (shade_pattern); @@ -212,7 +217,6 @@ PixFader::on_expose_event (GdkEventExpose* ev) cairo_set_source_rgb (cr, br, bg, bb); cairo_rectangle (cr, ev->area.x, ev->area.y, ev->area.width, ev->area.height); cairo_fill (cr); - return true; } @@ -223,18 +227,27 @@ PixFader::on_expose_event (GdkEventExpose* ev) float w = get_width(); float h = get_height(); + Gdk::Color c = get_style()->get_bg (Gtk::STATE_PRELIGHT); + cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p()); + cairo_rectangle (cr, 0, 0, w, h); + cairo_fill(cr); + + cairo_set_line_width (cr, 1); + cairo_set_source_rgba (cr, 0, 0, 0, 1.0); + cairo_matrix_t matrix; + Gtkmm2ext::rounded_rectangle (cr, CORNER_OFFSET, CORNER_OFFSET, w-CORNER_SIZE, h-CORNER_SIZE, CORNER_RADIUS); + cairo_stroke_preserve(cr); if (_orien == VERT) { - if (ds > h - FADER_RESERVE) { - ds = h - FADER_RESERVE; + if (ds > h - FADER_RESERVE - CORNER_OFFSET) { + ds = h - FADER_RESERVE - CORNER_OFFSET; } cairo_set_source (cr, pattern); cairo_matrix_init_translate (&matrix, 0, (h - ds)); cairo_pattern_set_matrix (pattern, &matrix); - Gtkmm2ext::rounded_rectangle (cr, 0, 0, w, h, CORNER_RADIUS-1.5); cairo_fill (cr); } else { @@ -258,7 +271,6 @@ PixFader::on_expose_event (GdkEventExpose* ev) cairo_set_source (cr, pattern); cairo_matrix_init_translate (&matrix, w - ds, 0); cairo_pattern_set_matrix (pattern, &matrix); - Gtkmm2ext::rounded_rectangle (cr, 0, 0, w, h, CORNER_RADIUS-1.5); cairo_fill (cr); } @@ -270,14 +282,14 @@ PixFader::on_expose_event (GdkEventExpose* ev) context->set_source_rgba (c.get_red_p()*1.5, c.get_green_p()*1.5, c.get_blue_p()*1.5, 0.85); if ( _orien == VERT) { if (unity_loc < h ) { - context->move_to (1.5, unity_loc + .5); - context->line_to (girth - 1.5, unity_loc + .5); + context->move_to (1.5, unity_loc + CORNER_OFFSET + .5); + context->line_to (girth - 1.5, unity_loc + CORNER_OFFSET + .5); context->stroke (); } } else { if ( unity_loc < w ){ - context->move_to (unity_loc + .5, 1.5); - context->line_to (unity_loc + .5, girth - 1.5); + context->move_to (unity_loc - CORNER_OFFSET + .5, 1.5); + context->line_to (unity_loc - CORNER_OFFSET + .5, girth - 1.5); context->stroke (); } } @@ -293,11 +305,11 @@ PixFader::on_expose_event (GdkEventExpose* ev) } if (!get_sensitive()) { - Gtkmm2ext::rounded_rectangle (cr, 0, 0, get_width(), get_height(), 3); + Gtkmm2ext::rounded_rectangle (cr, CORNER_OFFSET, CORNER_OFFSET, w-CORNER_SIZE, h-CORNER_SIZE, CORNER_RADIUS); cairo_set_source_rgba (cr, 0.505, 0.517, 0.525, 0.4); cairo_fill (cr); } else if (_hovering) { - Gtkmm2ext::rounded_rectangle (cr, 0, 0, get_width(), get_height(), 3); + Gtkmm2ext::rounded_rectangle (cr, CORNER_OFFSET, CORNER_OFFSET, w-CORNER_SIZE, h-CORNER_SIZE, CORNER_RADIUS); cairo_set_source_rgba (cr, 0.905, 0.917, 0.925, 0.1); cairo_fill (cr); } @@ -546,9 +558,9 @@ void PixFader::update_unity_position () { if (_orien == VERT) { - unity_loc = (int) rint (span * (1 - (default_value / (adjustment.get_upper() - adjustment.get_lower())))) - 1; + unity_loc = (int) rint (span * (1 - ((default_value - adjustment.get_lower()) / (adjustment.get_upper() - adjustment.get_lower())))) - 1; } else { - unity_loc = (int) rint (default_value * span / (adjustment.get_upper() - adjustment.get_lower())); + unity_loc = (int) rint ((default_value - adjustment.get_lower()) * span / (adjustment.get_upper() - adjustment.get_lower())); } queue_draw (); @@ -614,6 +626,7 @@ PixFader::on_state_changed (Gtk::StateType old_state) { Widget::on_state_changed (old_state); create_patterns (); + queue_draw (); } void @@ -630,4 +643,5 @@ PixFader::on_style_changed (const Glib::RefPtr<Gtk::Style>&) */ pattern = 0; + queue_draw (); } diff --git a/libs/gtkmm2ext/po/cs.po b/libs/gtkmm2ext/po/cs.po index fa282e4ed5..1c99a821c5 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-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2013-06-13 22:33+0200\n" "Last-Translator: Pavel Fric <pavelfric@seznam.cz>\n" "Language-Team: Czech <kde-i18n-doc@kde.org>\n" @@ -33,7 +33,7 @@ msgstr "TlaÄÃtko nemůže sledovat stav neexistujÃcÃho ovladatelného cÃle\ msgid "Log" msgstr "Zápis" -#: gtk_ui.cc:361 +#: gtk_ui.cc:363 msgid "" "\n" "\n" @@ -43,11 +43,11 @@ msgstr "" "\n" "Kurzbefehl: " -#: gtk_ui.cc:633 +#: gtk_ui.cc:635 msgid "Press To Exit" msgstr "Stisknout pro ukonÄenÃ" -#: gtk_ui.cc:669 +#: gtk_ui.cc:671 msgid "I'm sorry %1, I can't do that" msgstr "Bohužel to nelze udÄ›lat, %1" @@ -75,11 +75,11 @@ msgstr "Alt" msgid "Meta" msgstr "Meta" -#: keyboard.cc:139 keyboard.cc:531 +#: keyboard.cc:139 keyboard.cc:535 msgid "Unknown" msgstr "Neznámý" -#: keyboard.cc:542 +#: keyboard.cc:546 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." diff --git a/libs/gtkmm2ext/po/de.po b/libs/gtkmm2ext/po/de.po index 4c032c8b15..673193333b 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-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2013-02-05 19:50+0100\n" "Last-Translator: Edgar Aichinger <edogawa@aon.at>\n" "Language-Team: German <ardour-dev@lists.ardour.org>\n" @@ -35,7 +35,7 @@ msgstr "" msgid "Log" msgstr "Log" -#: gtk_ui.cc:361 +#: gtk_ui.cc:363 msgid "" "\n" "\n" @@ -45,11 +45,11 @@ msgstr "" "\n" "Kurzbefehl: " -#: gtk_ui.cc:633 +#: gtk_ui.cc:635 msgid "Press To Exit" msgstr "Zum Beenden drücken" -#: gtk_ui.cc:669 +#: gtk_ui.cc:671 msgid "I'm sorry %1, I can't do that" msgstr "Leider kann ich das nicht tun, %1" @@ -77,11 +77,11 @@ msgstr "Alt" msgid "Meta" msgstr "Meta" -#: keyboard.cc:139 keyboard.cc:531 +#: keyboard.cc:139 keyboard.cc:535 msgid "Unknown" msgstr "Unbekannt" -#: keyboard.cc:542 +#: keyboard.cc:546 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" "Die Tastenkürzel-Datei \"%1\" konnte nicht gefunden werden oder enthält " diff --git a/libs/gtkmm2ext/po/el.po b/libs/gtkmm2ext/po/el.po index 62b4303bbf..65bef4ec02 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-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2005-01-11\n" "Last-Translator: Muadibas\n" "Language-Team: Hellenic(Greek) <LL@li.org>\n" @@ -21,9 +21,8 @@ msgid "Unknown action name: %1" msgstr "" #: binding_proxy.cc:84 -#, fuzzy msgid "operate controller now" -msgstr "λειτουÏγία ελεγκτή MIDI Ï„ÏŽÏα" +msgstr "" #: bindable_button.cc:48 msgid "button cannot watch state of non-existing Controllable\n" @@ -33,18 +32,18 @@ msgstr "" msgid "Log" msgstr "" -#: gtk_ui.cc:361 +#: gtk_ui.cc:363 msgid "" "\n" "\n" "Shortcut: " msgstr "" -#: gtk_ui.cc:633 +#: gtk_ui.cc:635 msgid "Press To Exit" msgstr "" -#: gtk_ui.cc:669 +#: gtk_ui.cc:671 msgid "I'm sorry %1, I can't do that" msgstr "" @@ -72,11 +71,11 @@ msgstr "" msgid "Meta" msgstr "" -#: keyboard.cc:139 keyboard.cc:531 +#: keyboard.cc:139 keyboard.cc:535 msgid "Unknown" msgstr "" -#: keyboard.cc:542 +#: keyboard.cc:546 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" @@ -91,33 +90,3 @@ msgstr "" #: textviewer.cc:34 msgid "Close" msgstr "Κλείσιμο" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Location:" -#~ msgstr "Τοποθεσία:" - -#~ msgid "Browse ..." -#~ msgstr "Αναζήτηση ..." - -#~ msgid "Cancel" -#~ msgstr "ΑκÏÏωση" - -#~ msgid "New folder" -#~ msgstr "ÎÎος φάκελος" - -#~ msgid "Add to favorites" -#~ msgstr "Î Ïόσθεση στα 'ΑγαπημÎνα'" - -#~ msgid "Remove from favorites" -#~ msgstr "Απαλοιφή από τα 'ΑγαπημÎνα'" - -#~ msgid "Show Hidden" -#~ msgstr "Ανάδειξη κÏυμμÎνων" - -#~ msgid "Hide browser" -#~ msgstr "ΑπόκÏυψη browser" - -#~ msgid "Rescan" -#~ msgstr "ΑνανÎωση" diff --git a/libs/gtkmm2ext/po/es.po b/libs/gtkmm2ext/po/es.po index 220c7501ee..6acaf755a4 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-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2013-02-09 16:21+0100\n" "Last-Translator: Pablo Fernández <pablo.fbus@gmail.com>\n" "Language-Team: Spanish\n" @@ -31,7 +31,7 @@ msgstr "" msgid "Log" msgstr "Log" -#: gtk_ui.cc:361 +#: gtk_ui.cc:363 msgid "" "\n" "\n" @@ -41,11 +41,11 @@ msgstr "" "\n" "Atajo: " -#: gtk_ui.cc:633 +#: gtk_ui.cc:635 msgid "Press To Exit" msgstr "Pulse para salir" -#: gtk_ui.cc:669 +#: gtk_ui.cc:671 msgid "I'm sorry %1, I can't do that" msgstr "Lo siento %1, no puedo hacer eso" @@ -73,11 +73,11 @@ msgstr "" msgid "Meta" msgstr "" -#: keyboard.cc:139 keyboard.cc:531 +#: keyboard.cc:139 keyboard.cc:535 msgid "Unknown" msgstr "" -#: keyboard.cc:542 +#: keyboard.cc:546 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 " @@ -94,36 +94,3 @@ msgstr "Pulsa para llevarlo a la ventana principal" #: textviewer.cc:34 msgid "Close" msgstr "Cerrar" - -#~ msgid "Error" -#~ msgstr "Error" - -#~ msgid "OK" -#~ msgstr "ACEPTAR" - -#~ msgid "Location:" -#~ msgstr "Localización:" - -#~ msgid "Browse ..." -#~ msgstr "Seleccionar ..." - -#~ msgid "Cancel" -#~ msgstr "Cancelar" - -#~ msgid "New folder" -#~ msgstr "Nueva carpeta" - -#~ msgid "Add to favorites" -#~ msgstr "Agregar a favoritos" - -#~ msgid "Remove from favorites" -#~ msgstr "Quitar de favoritos" - -#~ msgid "Show Hidden" -#~ msgstr "Mostrar ocultos" - -#~ msgid "Hide browser" -#~ msgstr "Ocultar explorador" - -#~ msgid "Rescan" -#~ msgstr "Buscar de nuevo" diff --git a/libs/gtkmm2ext/po/fr.po b/libs/gtkmm2ext/po/fr.po index b9ad99d844..310e648c67 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-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2011-06-13 00:30+0200\n" "Language-Team: American English <kde-i18n-doc@kde.org>\n" "Language: en_US\n" @@ -31,18 +31,18 @@ msgstr "Le bouton ne peut pas surveiller l'état d'un Controllable inexistant\n" msgid "Log" msgstr "Log" -#: gtk_ui.cc:361 +#: gtk_ui.cc:363 msgid "" "\n" "\n" "Shortcut: " msgstr "" -#: gtk_ui.cc:633 +#: gtk_ui.cc:635 msgid "Press To Exit" msgstr "Appuyer pour quitter" -#: gtk_ui.cc:669 +#: gtk_ui.cc:671 msgid "I'm sorry %1, I can't do that" msgstr "" @@ -55,9 +55,8 @@ msgid "Control" msgstr "Ctrl" #: keyboard.cc:70 keyboard.cc:73 keyboard.cc:87 keyboard.cc:90 -#, fuzzy msgid "Key|Shift" -msgstr "Maj" +msgstr "" #: keyboard.cc:71 msgid "Option" @@ -71,14 +70,13 @@ msgstr "Alt" msgid "Meta" msgstr "Meta" -#: keyboard.cc:139 keyboard.cc:531 +#: keyboard.cc:139 keyboard.cc:535 msgid "Unknown" msgstr "Inconnu" -#: keyboard.cc:542 -#, fuzzy +#: keyboard.cc:546 msgid "key bindings file not found at \"%2\" or contains errors." -msgstr "Raccourcis clavier pour %1 introuvable dans \"%1\" ou corrompu." +msgstr "" #: tearoff.cc:57 msgid "Click to tear this into its own window" @@ -91,6 +89,3 @@ msgstr "Cliquez pour remettre dans la fenêtre principale" #: textviewer.cc:34 msgid "Close" msgstr "Fermer" - -#~ msgid "Mod1" -#~ msgstr "Mod1" diff --git a/libs/gtkmm2ext/po/nn.po b/libs/gtkmm2ext/po/nn.po index 7e3d72bed1..4a410bee50 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-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2013-01-01 20:30+0100\n" "Last-Translator: Eivind ØdegÃ¥rd <meinmycell-lists@yahoo.no>\n" "Language-Team: Nynorsk <i18n-nn@lister.ping.uio.no>\n" @@ -36,18 +36,18 @@ msgstr "" msgid "Log" msgstr "" -#: gtk_ui.cc:361 +#: gtk_ui.cc:363 msgid "" "\n" "\n" "Shortcut: " msgstr "" -#: gtk_ui.cc:633 +#: gtk_ui.cc:635 msgid "Press To Exit" msgstr "" -#: gtk_ui.cc:669 +#: gtk_ui.cc:671 msgid "I'm sorry %1, I can't do that" msgstr "" @@ -56,9 +56,8 @@ msgid "Command" msgstr "" #: keyboard.cc:69 keyboard.cc:72 keyboard.cc:85 keyboard.cc:89 -#, fuzzy msgid "Control" -msgstr "dim kontroll" +msgstr "" #: keyboard.cc:70 keyboard.cc:73 keyboard.cc:87 keyboard.cc:90 msgid "Key|Shift" @@ -76,11 +75,11 @@ msgstr "" msgid "Meta" msgstr "" -#: keyboard.cc:139 keyboard.cc:531 +#: keyboard.cc:139 keyboard.cc:535 msgid "Unknown" msgstr "Ukjend" -#: keyboard.cc:542 +#: keyboard.cc:546 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" @@ -95,2973 +94,3 @@ msgstr "" #: textviewer.cc:34 msgid "Close" msgstr "" - -#~ msgid "Fader" -#~ msgstr "Volumkontroll" - -#~ msgid "AudioDiskstream: Playlist \"%1\" isn't an audio playlist" -#~ 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!" - -#~ 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" - -#~ msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3" -#~ msgstr "Lyd-diskstraum %1: greidde ikkje lesa %2 frÃ¥ spelelista, ramme %3" - -#~ msgid "AudioDiskstream %1: cannot write to disk" -#~ msgstr "Lyd-diskstraum %1: greidde ikkje skriva til disk" - -#~ msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!" -#~ msgstr "Lyd-diskstraum \"%1\": greier ikkje skriva opptaket til disken!" - -#~ msgid "%1: could not create region for complete audio file" -#~ msgstr "%1: greidde ikkje laga bolk for heil lydfil" - -#~ msgid "AudioDiskstream: could not create region for captured audio!" -#~ msgstr "Lyd-diskstraum: greidde ikkje laga bolk frÃ¥ opptaket!" - -#~ msgid "programmer error: %1" -#~ msgstr "programmerarfeil: %1" - -#~ msgid "AudioDiskstream: channel %1 out of range" -#~ msgstr "Lyd-diskstraum: kanal %1 utanfor rekkjevidd" - -#~ msgid "%1:%2 new capture file not initialized correctly" -#~ msgstr "%1: ny opptaksfil %2 vart ikkje pÃ¥byrja rett" - -#~ msgid "%1: cannot restore pending capture source file %2" -#~ msgstr "%1: greidde ikkje henta fram att den ventande opptakskjeldefila %2" - -#~ msgid "%1: incorrect number of pending sources listed - ignoring them all" -#~ msgstr "%1: feil tal pÃ¥ ventande kjelder pÃ¥ lista - ser bort frÃ¥ alle" - -#~ msgid "%1: cannot create whole-file region from pending capture sources" -#~ msgstr "%1: greidde ikkje laga heilfilbolk frÃ¥ ventande opptakskjelder" - -#~ msgid "Could not open %1. Audio Library not saved" -#~ msgstr "Greidde ikkje opna %1. Lydbiblioteket er ikkje lagra" - -#~ msgid "" -#~ "Legacy crossfade involved an incoming region not present in playlist " -#~ "\"%1\" - crossfade discarded" -#~ msgstr "" -#~ "Gamal overtoning inneheld ein innkomande bolk som ikkje finst i " -#~ "spelelista «%1» - overtoninga ignorert" - -#~ msgid "" -#~ "Legacy crossfade involved an outgoing region not present in playlist " -#~ "\"%1\" - crossfade discarded" -#~ msgstr "" -#~ "Gamal overtoning inneheld ein utgÃ¥ande bolk som ikkje finst i spelelista " -#~ "«%1» - overtoninga ignorert" - -#~ msgid "Audio Playlists" -#~ msgstr "Lydspelelister" - -#~ msgid "region" -#~ msgstr "bolk" - -#~ msgid "regions" -#~ msgstr "bolkar" - -#~ msgid "A playlist with this name already exists, please rename it." -#~ msgstr "" -#~ "Det finst alt ei speleliste med dette namnet, gje henne eit nytt namn." - -#~ msgid "badly-formed XML in imported playlist" -#~ msgstr "feilforma XML i den importerte spelelista" - -#~ msgid "Audio Playlists (unused)" -#~ msgstr "Lydspelelister (ubrukte)" - -#~ msgid "programming error: %1" -#~ msgstr "Programmeringsfeil: %1" - -#~ msgid "Audio Regions" -#~ msgstr "Lydbolkar" - -#~ msgid "Length: " -#~ msgstr "Lengd:" - -#~ msgid "" -#~ "\n" -#~ "Position: " -#~ msgstr "" -#~ "\n" -#~ "Posisjon:" - -#~ msgid "" -#~ "\n" -#~ "Channels: " -#~ msgstr "" -#~ "\n" -#~ "Kanalar:" - -#~ msgid "Unknown bundle \"%1\" listed for input of %2" -#~ msgstr "Ukjend bundel \"%1\" lista opp for inngangen pÃ¥ %2" - -#~ msgid "in 1" -#~ msgstr "inn 1" - -#~ msgid "No input bundles available as a replacement" -#~ msgstr "Ingen inngangsbundlar klare som erstatting" - -#~ msgid "Bundle %1 was not available - \"in 1\" used instead" -#~ msgstr "Bundelen %1 var ikkje tilgjengeleg - brukar \"inn 1\" i staden for" - -#~ msgid "improper input channel list in XML node (%1)" -#~ msgstr "Feil inngangskanalliste i XML-node (%1)" - -#~ msgid "Audio Tracks" -#~ msgstr "Lydspor" - -#~ msgid "badly-formed XML in imported track" -#~ msgstr "feilforma XML i det importerte sporet" - -#~ msgid "Error Importing Audio track %1" -#~ msgstr "Greidde ikkje importera lydsporet %1" - -#~ msgid "cannot load VAMP plugin \"%1\"" -#~ msgstr "greier ikkje lasta VAMP-innstikket \"%1\"" - -#~ msgid "VAMP Plugin \"%1\" could not be loaded" -#~ msgstr "VAMP-innstikket \"%1\" vart ikkje lasta" - -#~ msgid "" -#~ "This version of JACK is old - you should upgrade to a newer version that " -#~ "supports jack_port_type_get_buffer_size()" -#~ msgstr "" -#~ "Denne utgÃ¥va av JACK er gamal - du bør oppgradera til ei utgÃ¥ve som " -#~ "støttar jack_port_type_get_buffer_size()" - -#~ msgid "Connect session to engine" -#~ msgstr "Kople økta til maskin" - -#~ msgid "" -#~ "a port with the name \"%1\" already exists: check for duplicated track/" -#~ "bus names" -#~ msgstr "" -#~ "ein port med namnet \"%1\" finst frÃ¥ før: sjekk opp dublettar i namn pÃ¥ " -#~ "spor eller bussar" - -#~ 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 "" -#~ "Det finst ikkje fleire JACK-portar. Du mÃ¥ stoppa %1 og starta JACK pÃ¥ " -#~ "nytt med nok portar viss du treng sÃ¥ mange spor." - -#~ msgid "AudioEngine: cannot register port \"%1\": %2" -#~ msgstr "AudioEngine: greier ikkje registrera porten \"%1\": %2" - -#~ msgid "unable to create port: %1" -#~ msgstr "greidde ikkje laga port: %1" - -#~ msgid "connect called before engine was started" -#~ msgstr "tilkoplinga vart oppkalla frø tenaren starta" - -#~ msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)" -#~ msgstr "Lydmaskineri: Klarte ikkje kopla %1 (%2) til %3 (%4)." - -#~ msgid "disconnect called before engine was started" -#~ msgstr "frÃ¥koplinga vart oppkalla før tenaren starta" - -#~ msgid "get_port_by_name() called before engine was started" -#~ msgstr "get_port_by_name() vart oppkalla før tenaren starta" - -#~ msgid "get_ports called before engine was started" -#~ msgstr "get_ports vart oppkalla før tenaren starta" - -#~ msgid "failed to connect to JACK" -#~ msgstr "greidde ikkje kopla til JACK" - -#~ msgid "" -#~ "You have requested an operation that requires audio analysis.\n" -#~ "\n" -#~ "You currently have \"auto-analyse-audio\" disabled, which means that " -#~ "transient data must be generated every time it is required.\n" -#~ "\n" -#~ "If you are doing work that will require transient data on a regular " -#~ "basis, you should probably enable \"auto-analyse-audio\" then quit ardour " -#~ "and restart.\n" -#~ "\n" -#~ "This dialog will not display again. But you may notice a slight delay in " -#~ "this and future transient-detection operations.\n" -#~ msgstr "" -#~ "Du spurde etter ein operasjon som krev lydanalyse.\n" -#~ "\n" -#~ "Du har skrudd av \"auto-lydanalyse\", som tyder at lydtoppdata mÃ¥ lagast " -#~ "pÃ¥ nytt kvar gong det krevst.\n" -#~ "\n" -#~ "Viss du arbeider med lydtoppdata ofte, bør du truleg skru pÃ¥ \"auto-" -#~ "lydanalyse\", og so starta Ardour pÃ¥ nytt.\n" -#~ "\n" -#~ "Denne ruta blir ikkje synt pÃ¥ nytt, men du vil kanskje merka smÃ¥ " -#~ "forseinkingar i denne og framtidige lydtoppdata-søk.\n" - -#~ msgid "cannot rename peakfile for %1 from %2 to %3 (%4)" -#~ msgstr "kan ikkje døypa om toppfil for %1 frÃ¥ %2 til %3 (%4)" - -#~ msgid "AudioSource: cannot stat peakfile \"%1\"" -#~ msgstr "Lydkjelde: kan ikkje bruka toppfil \"%1\"" - -#~ msgid "cannot read sample data for unscaled peak computation" -#~ msgstr "kan ikkje lesa lyddata for uskalert topputrekning" - -#~ msgid "AudioSource: cannot open peakpath (a) \"%1\" (%2)" -#~ msgstr "Lydkjelde: kan ikkje opna toppstig (a) \"%1\" (%2)" - -#~ msgid "AudioSource: cannot open peakpath (b) \"%1\" (%2)" -#~ msgstr "Lydkjelde: kan ikkje opna toppstig (b) \"%1\" (%2)" - -#~ msgid "" -#~ "AudioSource[%1]: peak read - cannot read %2 samples at offset %3 of %4 " -#~ "(%5)" -#~ msgstr "" -#~ "AudioSource [%1]: topplesing - kan ikkje lesa %2 punkt ved forskuvinga %3 " -#~ "av %4 (%5)" - -#~ msgid "%1: could not write read raw data for peak computation (%2)" -#~ msgstr "%1 greidde ikkje skriva/lesa rÃ¥data for topputrekninga (%2)" - -#~ msgid "AudioSource: cannot open peakpath (c) \"%1\" (%2)" -#~ msgstr "Lydkjelde: kan ikkje opna toppstig (c) \"%1\" (%2)" - -#~ msgid "%1: could not write peak file data (%2)" -#~ msgstr "%1: greidde ikkje skriva toppfildata (%2)" - -#~ msgid "could not truncate peakfile %1 to %2 (error: %3)" -#~ msgstr "kan ikkje korta ned toppfila %1 til %2 (feil: %3)" - -#~ msgid "no outputs available for auditioner - manual connection required" -#~ msgstr "ingen utgangar for lyttinga - du mÃ¥ kopla til manuelt" - -#~ msgid "Auditioning of non-audio regions not yet supported" -#~ msgstr "Me har ikkje laga lytting for bolkar som ikkje er lyd enno" - -#~ msgid "Cannot setup auditioner processing flow for %1 channels" -#~ msgstr "Greier ikkje setja opp lyttehandteringsflyt for %1 kanalar" - -#~ msgid "Automation node has no path property" -#~ msgstr "Automasjonspunktet har ingen stigeigenskapar" - -#~ msgid "cannot open %2 to load automation data (%3)" -#~ msgstr "greier ikkje opna %2 for Ã¥ lasta automasjonsdata (%3)" - -#~ msgid "cannot load automation data from %2" -#~ msgstr "greier ikkje lasta automasjonsdata frÃ¥ %2" - -#~ msgid "" -#~ "automation list: cannot load coordinates from XML, all points ignored" -#~ msgstr "" -#~ "automasjonsliste: greier ikkje lasta koordinater frÃ¥ XML, sÃ¥g bort frÃ¥ " -#~ "alle punkt" - -#~ msgid "" -#~ "automation list: no x-coordinate stored for control point (point ignored)" -#~ msgstr "" -#~ "automasjonsliste: ingen x-koordinatar er lagra for kontrollpunktet " -#~ "(hoppar over)" - -#~ msgid "" -#~ "automation list: no y-coordinate stored for control point (point ignored)" -#~ msgstr "" -#~ "automasjonsliste: ingen y-koordinatar er lagra for kontrollpunktet " -#~ "(hoppar over)" - -#~ msgid "" -#~ "AutomationList: passed XML node called %1, not \"AutomationList\" - " -#~ "ignored" -#~ msgstr "" -#~ "AutomationList: gav XML-node med namet %1, ikkje \"AutomationList\" - sÃ¥g " -#~ "bort frÃ¥." - -#~ msgid "Cannot create transport request signal pipe (%1)" -#~ msgstr "Kan ikkje laga transportspørjingssignalrøyr (%1)" - -#~ msgid "UI: cannot set O_NONBLOCK on butler request pipe (%1)" -#~ msgstr "" -#~ "Grensesnitt: greier ikkje setja opp O_NONBLOCK pÃ¥ butler-spørjingsrøyret " -#~ "(%1)" - -#~ msgid "Session: could not create butler thread" -#~ msgstr "Økt: greier ikkje laga butler-trÃ¥d" - -#~ msgid "poll on butler request pipe failed (%1)" -#~ msgstr "undersøkjing pÃ¥ butler-spørjingsrøyret mislukka (%1)" - -#~ msgid "Error on butler thread request pipe: fd=%1 err=%2" -#~ msgstr "Feil pÃ¥ butler-spørsjingsrøyret: fd=%1 feil=%2" - -#~ msgid "Error reading from butler request pipe" -#~ msgstr "Feil: greidde ikkje lesa frÃ¥ butlerspørjingsrøyr" - -#~ msgid "Butler read ahead failure on dstream %1" -#~ msgstr "Butler-førlesingsfeil pÃ¥ dstream %1" - -#~ msgid "Butler write-behind failure on dstream %1" -#~ msgstr "Butler-etterskrivingsfeil pÃ¥ dstream %1" - -#~ msgid "control protocol name \"%1\" has no descriptor" -#~ msgstr "kontrollprotokollnamnet \"%1\" har inga skildring" - -#~ msgid "control protocol name \"%1\" could not be initialized" -#~ msgstr "kontrollprotokollnamnet \"%1\" greidde ikkje starta opp" - -#~ msgid "Instantiating mandatory control protocol %1" -#~ msgstr "Lagar obligatorisk kontrollprotokolløkt %1" - -#~ msgid "looking for control protocols in %1\n" -#~ msgstr "ser etter kontrollprotokollar i %1\n" - -#~ msgid "Control protocol %1 not usable" -#~ msgstr "Kontrollprotokollen %1 er ikkje brukande" - -#~ msgid "Control surface protocol discovered: \"%1\"" -#~ msgstr "Kontrollflateprotokollen \"%1\" oppdaga" - -#~ msgid "ControlProtocolManager: cannot load module \"%1\" (%2)" -#~ msgstr "Kontrollprotokollstyring: kan ikkje lasta modulen \"%1\" (%2)" - -#~ msgid "ControlProtocolManager: module \"%1\" has no descriptor function." -#~ msgstr "" -#~ "Kontrollprotokollstyring: modulen \"%1\" har ingen skildringsfunksjon." - -#~ msgid "CycleTimer::get_mhz(): can't open /proc/cpuinfo" -#~ msgstr "CycleTimer::get:mhz()-funksjonen: kan ikkje opna /proc/cpuinfo" - -#~ msgid "CycleTimer::get_mhz(): cannot locate cpu MHz in /proc/cpuinfo" -#~ msgstr "" -#~ "CycleTimer::get:mhz()-funksjonen: finn ikkje prosessor-MHz i /proc/cpuinfo" - -#~ msgid "cannot locate cpu MHz in /proc/cpuinfo" -#~ msgstr "finn ikkje prosessor-MHz i /proc/cpuinfo" - -#~ msgid "audio" -#~ msgstr "lyd" - -#~ msgid "MIDI" -#~ msgstr "MIDI" - -#~ msgid "unknown" -#~ msgstr "ukjend" - -#~ msgid "main outs" -#~ msgstr "hovudutgangar" - -#~ msgid "listen" -#~ msgstr "høyr pÃ¥" - -#~ msgid "Location \"%1\" not valid for track loop (start >= end)" -#~ msgstr "" -#~ "Staden \"%1\" er ikkje gyldig for Ã¥ spela spor i lykkje (start >= slutt)" - -#~ msgid "Could not get port for export channel \"%1\", dropping the channel" -#~ msgstr "" -#~ "Greidde ikkje fÃ¥ port for eksportkanalen \"%1\", hoppar over kanalen" - -#~ msgid "Export failed: %1" -#~ msgstr "Eksportfeil: %1" - -#~ msgid "" -#~ "Existing export folder for this session (%1) does not exist - ignored" -#~ msgstr "" -#~ "Eksisterande eksportmappe for denne økta (%1) finst ikkje - ignorert" - -#~ msgid "No Time" -#~ msgstr "Inga tid" - -#~ msgid "Invalid time format" -#~ msgstr "Ugyldig tidsformat" - -#~ msgid "No Date" -#~ msgstr "Ingen dato" - -#~ msgid "Invalid date format" -#~ msgstr "Ugyldig datoformat" - -#~ msgid "CD" -#~ msgstr "CD" - -#~ msgid "DVD-A" -#~ msgstr "DVD-A" - -#~ msgid "iPod" -#~ msgstr "iPod" - -#~ msgid "Something else" -#~ msgstr "Noko anna" - -#~ msgid "Any" -#~ msgstr "Alt" - -#~ msgid "Lossless (linear PCM)" -#~ msgstr "Tapsfritt (lineær PCM)" - -#~ msgid "Lossy compression" -#~ msgstr "Komprimering med tap" - -#~ msgid "Lossless compression" -#~ msgstr "Tapsfri komprimering" - -#~ msgid "Session rate" -#~ msgstr "Øktrate" - -#~ msgid "normalize" -#~ msgstr "normaliser" - -#~ msgid "trim" -#~ msgstr "skjer til" - -#~ msgid "trim start" -#~ msgstr "start tilskjering" - -#~ msgid "trim end" -#~ msgstr "slutt tilskjering" - -#~ msgid "Shaped Noise" -#~ msgstr "Forma støy" - -#~ msgid "Triangular" -#~ msgstr "Trekant" - -#~ msgid "Rectangular" -#~ msgstr "Firkant" - -#~ msgid "None" -#~ msgstr "Ingen" - -#~ msgid "8bit" -#~ msgstr "8-bit" - -#~ msgid "16bit" -#~ msgstr "16-bit" - -#~ msgid "24bit" -#~ msgstr "24-bit" - -#~ msgid "32bit" -#~ msgstr "32-bit" - -#~ msgid "float" -#~ msgstr "flyttal" - -#~ msgid "double" -#~ msgstr "dobbel" - -#~ msgid "8bit unsigned" -#~ msgstr "8bit usignert" - -#~ msgid "Vorbis sample format" -#~ msgstr "Vorbis-punktformat" - -#~ msgid "No sample format" -#~ msgstr "Ikkje noko punktformat" - -#~ msgid "Editor: cannot open \"%1\" as export file for CD marker file" -#~ msgstr "" -#~ "Redigering: greier ikkje opna \"%1\" som eksportfil for CD-markørfil" - -#~ msgid "an error occured while writing a TOC/CUE file: %1" -#~ msgstr "greidde ikkje skriva ei TOC/CUE-fil: %1" - -#~ msgid "Cannot convert %1 to Latin-1 text" -#~ msgstr "Greier ikkje omdanna %1 til Latin-1-tekst" - -#~ msgid "Searching for export formats in %1" -#~ msgstr "Leitar etter eksportformat i %1" - -#~ msgid "Unable to create export format directory %1: %2" -#~ msgstr "Greier ikkje laga eksportformatmappa %1 : %2" - -#~ msgid "Unable to remove export preset %1: %2" -#~ msgstr "Greier ikkje fjerna eksportoppsettet %1: %2" - -#~ msgid "Selection" -#~ msgstr "Val" - -#~ msgid "Session" -#~ msgstr "Økt" - -#~ msgid "Unable to rename export format %1 to %2: %3" -#~ msgstr "kan ikkje døypa om eksportformatet frÃ¥ %1 til %2: %3" - -#~ msgid "Unable to remove export profile %1: %2" -#~ msgstr "Greier ikkje fjerna eksportprofilen %1: %2" - -#~ msgid "empty format" -#~ msgstr "tomt format" - -#~ msgid "No timespan has been selected!" -#~ msgstr "Du har ikkje valt noko tidsomfang!" - -#~ msgid "No channels have been selected!" -#~ msgstr "Ingen MIDI-kanalar er valde!" - -#~ msgid "Some channels are empty" -#~ msgstr "Nokre av kanalane er tomme" - -#~ msgid "No format selected!" -#~ msgstr "Du har ikkje valt noko format!" - -#~ msgid "All channels are empty!" -#~ msgstr "Alle kanalane er tomme!" - -#~ msgid "" -#~ "One or more of the selected formats is not compatible with this system!" -#~ msgstr "" -#~ "Eitt eller fleire av desse formata samsvarar ikkje med dette systemet!" - -#~ msgid "" -#~ "%1 supports only %2 channels, but you have %3 channels in your channel " -#~ "configuration" -#~ msgstr "" -#~ "%1 støttar berre %2 kanalar, men du har %3 kanalar i kanaloppsettet ditt" - -#~ msgid "" -#~ "there are already 1000 files with names like %1; versioning discontinued" -#~ msgstr "Det er alt 1000 filer med namn som %1, kuttar ut versjonsnamn" - -#~ msgid "cannot rename file source from %1 to %2 (%3)" -#~ msgstr "kan ikkje døypa om filkjelda frÃ¥ %1 til %2 (%3)" - -#~ msgid "FileSource: search path not set" -#~ msgstr "Filkjelde: søkjestigen er ikkje sett opp" - -#~ msgid "Filesource: cannot find required file (%1): while searching %2" -#~ msgstr "Filkjelde: Kan ikkje finna fila (%1) under søking i %2" - -#~ msgid "" -#~ "FileSource: \"%1\" is ambigous when searching %2\n" -#~ "\t" -#~ msgstr "" -#~ "Filkjelde: \"%1\" er tvetydig nÃ¥r du søkjer %2\n" -#~ "\t" - -#~ msgid "Filesource: cannot find required file (%1): %2" -#~ msgstr "Filkjelde: Kan ikkje finna den naudsynte fila %1: %2" - -#~ msgid "Filesource: cannot check for existing file (%1): %2" -#~ msgstr "Filkjelde:Kan ikkje sjÃ¥ etter eksisterande fil %1: %2" - -#~ msgid "" -#~ "Programming error! %1 tried to rename a file over another file! It's safe " -#~ "to continue working, but please report this to the developers." -#~ msgstr "" -#~ "Programmeringsfeil! %1 prøvde Ã¥ døypa ei fil til eit filnamn som alt " -#~ "eksisterer. Det er trygt Ã¥ halda fram Ã¥ arbeida, men ver god Ã¥ seia frÃ¥ " -#~ "til utviklarane." - -#~ msgid "cannot rename file %1 to %2 (%3)" -#~ msgstr "kan ikkje døypa om %1 til %2 (%3)" - -#~ msgid "Cannot create Configuration directory %1 - cannot run" -#~ msgstr "Greier ikkje laga oppsettsmappa %1 - kan ikkje køyra" - -#~ msgid "" -#~ "Configuration directory %1 already exists and is not a directory/folder - " -#~ "cannot run" -#~ msgstr "" -#~ "Oppsettsmappa %1 finst allereie, men er ikkje ei mappe/katalog - kan " -#~ "ikkje køyra" - -#~ msgid "ARDOUR_DLL_PATH not set in environment - exiting\n" -#~ msgstr "ARDOUR_DLL_PATH ikkje sett i miljøet - avsluttar\n" - -#~ msgid "ARDOUR_CONFIG_PATH not set in environment - exiting\n" -#~ msgstr "ARDOUR_CONFIG_PATH ikkje sett i miljøet - avsluttar\n" - -#~ msgid "ARDOUR_DATA_PATH not set in environment - exiting\n" -#~ msgstr "ARDOUR_DATA_PATH ikkje sett i miljøet - avsluttar\n" - -#~ msgid "filter: error creating name for new file based on %1" -#~ msgstr "lydfilter: feil med Ã¥ laga namn for ny fil bygd pÃ¥ %1" - -#~ msgid "filter: error creating new file %1 (%2)" -#~ msgstr "lydfilter: feil med Ã¥ laga den nye fila %1 (%2)" - -#~ msgid "Could not resolve path: %1 (%2)" -#~ msgstr "Greidde ikkje finna stigen: %1: (%2)" - -#~ msgid "cannot check session path %1 (%2)" -#~ msgstr "greier ikkje sjekka øktstigen %1 (%2)" - -#~ msgid "cannot check statefile %1 (%2)" -#~ msgstr "greier ikkje sjekka tilstandsfila %1 (%2)" - -#~ msgid "%1 is not a snapshot file" -#~ msgstr "%1 er ikkje ei snøggbiletefil" - -#~ msgid "cannot determine current working directory (%1)" -#~ msgstr "greier ikkje avgjera kva som er arbeidsmappa no (%1)" - -#~ msgid "unknown file type for session %1" -#~ msgstr "ukjend filtype for økta %1" - -#~ msgid "Could not set system open files limit to \"unlimited\"" -#~ msgstr "Greidde ikkje setja systemgrensa for opne filer til \"uavgrensa\"" - -#~ msgid "Could not set system open files limit to %1" -#~ msgstr "Greidde ikkje setja grensa for opne systemfiler til %1" - -#~ msgid "Your system is configured to limit %1 to only %2 open files" -#~ msgstr "Maskina di er avgrensa til at %1 berre kan opna %2 filer" - -#~ msgid "Could not get system open files limit (%1)" -#~ msgstr "Greidde ikkje fÃ¥ tak i grensa for opne systemfiler (%1)" - -#~ msgid "Loading configuration" -#~ msgstr "Lastar oppsettet" - -#~ msgid "" -#~ "Could not find a source for %1 even though we are updating this file!" -#~ msgstr "" -#~ "Greier ikkje finna kjelda for %1, sjølv om det er denne fila me " -#~ "oppdaterer!" - -#~ msgid "Unable to create file %1 during import" -#~ msgstr "Greier ikkje laga fila %1 under import!" - -#~ msgid "Resampling %1 from %2kHz to %3kHz" -#~ msgstr "Kodar om %1 frÃ¥ %2kHz til %3kHz" - -#~ msgid "Copying %1" -#~ msgstr "Kopierer%1" - -#~ msgid "Track %1 of %2 contained no usable MIDI data" -#~ msgstr "Spor %1 av %2 inneheld ingen brukbare MIDI-data" - -#~ msgid "MIDI file %1 was not readable (no reason available" -#~ msgstr "MIDI-fila %1 kan ikkje lesast (og me finn ingen grunn til det" - -#~ msgid "Import: cannot open input sound file \"%1\"" -#~ msgstr "Import: greier ikkje opna inn-lydfila \"%1\"" - -#~ msgid "Import: error opening MIDI file" -#~ msgstr "Import: greidde ikkje opna MIDI-fil" - -#~ msgid "Loading MIDI file %1" -#~ msgstr "Lastar MIDI-fila %1" - -#~ msgid "Failed to remove some files after failed/cancelled import operation" -#~ msgstr "Greidde ikkje fjerna nokre filer etter mislukka/avbroten import" - -#~ msgid "preset %1 (bank %2)" -#~ msgstr "førehandsoppsett %1 (bank %2)" - -#~ msgid "%1 - cannot find any track/bus with the ID %2 to connect to" -#~ msgstr "%1 - finn ingen spor/buss med ID-en %2 Ã¥ kopla til" - -#~ msgid "IO: cannot disconnect port %1 from %2" -#~ msgstr "IU: kan ikkje kopla porten %1 frÃ¥ %2" - -#~ msgid "IO: cannot register input port %1" -#~ msgstr "IU: greier ikkje registrera inngangsporten %1" - -#~ msgid "IO: cannot register output port %1" -#~ msgstr "IU: greier ikkje registrera utgangsporten %1" - -#~ msgid "incorrect XML node \"%1\" passed to IO object" -#~ msgstr "feil XML-punkt, \"%1\", sendt til IU-objektet" - -#~ msgid "in" -#~ msgstr "inn" - -#~ msgid "out" -#~ msgstr "ut" - -#~ msgid "input" -#~ msgstr "inngang" - -#~ msgid "output" -#~ msgstr "utgang" - -#~ msgid "Unknown bundle \"%1\" listed for %2 of %3" -#~ msgstr "Ukjend bundel \"%1\" lista for %2 av %3" - -#~ msgid "Bundle %1 was not available - \"%2\" used instead" -#~ msgstr "Bundelen %1 var ikkje tilgjengeleg - brukte \"%2\" i staden" - -#~ msgid "No %1 bundles available as a replacement" -#~ msgstr "Ingen %1-bundlar klare som erstatting" - -#~ msgid "%1: cannot create I/O ports" -#~ msgstr "%1: greier ikkje laga I/U-portar" - -#~ msgid "IO: badly formed string in XML node for inputs \"%1\"" -#~ msgstr "IU: feilforma streng i XML-opunkt for inngangane \"%1\"" - -#~ msgid "bad input string in XML node \"%1\"" -#~ msgstr "feil inngangsstreng i XML-punktet \"%1\"" - -#~ msgid "IO: badly formed string in XML node for outputs \"%1\"" -#~ msgstr "IU: feilforma streng i XML-punktet for utgangane \"%1\"" - -#~ msgid "IO: bad output string in XML node \"%1\"" -#~ msgstr "IU: feil utgangsstreng i XML-punktet \"%1\"" - -#~ msgid "midi" -#~ msgstr "midi" - -#~ msgid "%s %u" -#~ msgstr "%s %u" - -#~ msgid "%s in" -#~ msgstr " %s inn" - -#~ msgid "%s out" -#~ msgstr "%s ut" - -#~ msgid "mono" -#~ msgstr "mono" - -#~ msgid "L" -#~ msgstr "V" - -#~ msgid "R" -#~ msgstr "H" - -#~ msgid "%d" -#~ msgstr "%d" - -#~ msgid "LADSPA: module has no descriptor function." -#~ msgstr "LADSPA: modulen har ingen skildringsfunksjon" - -#~ msgid "LADSPA: plugin has gone away since discovery!" -#~ msgstr "LADSPA: tilleggsprogrammet har vorte borte sidan det vart oppdaga!" - -#~ 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" - -#~ msgid "" -#~ "illegal parameter number used with plugin \"%1\". This mayindicate a " -#~ "change in the plugin design, and presets may beinvalid" -#~ msgstr "" -#~ "ein ulovleg parameter vart brukt med tilleggsprogrammet \"%1\". Dette kan " -#~ "tyda pÃ¥ feil i korleis tilleggsprogrammet er utforma, og at eventuelle " -#~ "ferdigprogram kan vera ugyldige." - -#~ msgid "Bad node sent to LadspaPlugin::set_state" -#~ msgstr "Feil punkt sendt til LadspaPlugin::set_state" - -#~ msgid "LADSPA: no ladspa port number" -#~ msgstr "LADSPA: ikkje noko Ladspa-portnummer" - -#~ msgid "LADSPA: no ladspa port data" -#~ msgstr "LADSPA: ingen portdata" - -#~ msgid "LADSPA: cannot load module from \"%1\"" -#~ msgstr "LADSPA: greier ikkje lasta modul frÃ¥ \"%1\"" - -#~ msgid "Could not locate HOME. Preset not removed." -#~ msgstr "Greidde ikkje finna heimemappa. Har ikkje fjera ferdigoppsett." - -#~ msgid "Could not create %1. Preset not saved. (%2)" -#~ msgstr "Greidde ikkje laga %1. Har ikkje lagra ferdigoppsett. (%2)" - -#~ msgid "Error saving presets file %1." -#~ msgstr "Feil med Ã¥ lagra ferdigoppsettfila %1." - -#~ msgid "Could not locate HOME. Preset not saved." -#~ msgstr "Greidde ikkje finna heimemappa. Har ikkje lagra ferdigoppsett." - -#~ msgid "You cannot put a CD marker at this position" -#~ msgstr "Du kan ikkje leggja til ein CD-markør her" - -#~ msgid "incorrect XML node passed to Location::set_state" -#~ msgstr "feil XML-punkt sendt til Location::set_state" - -#~ msgid "XML node for Location has no ID information" -#~ msgstr "XML-punktet for denne staden har ingen ID-informasjon" - -#~ msgid "XML node for Location has no name information" -#~ msgstr "XML-punktet for denne staden har ingen namneinformasjon" - -#~ msgid "XML node for Location has no start information" -#~ msgstr "XML-punktet for denne staden har ingen startinformasjon" - -#~ msgid "XML node for Location has no end information" -#~ msgstr "XML-punktet for denne staden har ingen sluttinformasjon" - -#~ msgid "XML node for Location has no flags information" -#~ msgstr "XML-punktet for denne staden har ingen flagginformasjon" - -#~ msgid "Locations: attempt to use unknown location as selected location" -#~ 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" - -#~ msgid "session" -#~ msgstr "økt" - -#~ msgid "could not load location from session file - ignored" -#~ msgstr "greidde ikkje lasta stad frÃ¥ øktfila - hoppa over" - -#~ msgid "Locations" -#~ msgstr "Plasseringar" - -#~ msgid "Location: " -#~ msgstr "Plassering:" - -#~ msgid "" -#~ "Range\n" -#~ "start: " -#~ msgstr "" -#~ "Bolk-\n" -#~ "start:" - -#~ msgid "" -#~ "\n" -#~ "end: " -#~ msgstr "" -#~ "\n" -#~ "slutten:" - -#~ msgid "" -#~ "The location is the Punch range. It will be imported as a normal range.\n" -#~ "You may rename the imported location:" -#~ msgstr "" -#~ "Plasseringa er innslagsomrÃ¥det, som vil bli importert som ein vanleg " -#~ "bolk.\n" -#~ "Du kan gje eit nytt namn til den importerte plasseringa:" - -#~ msgid "" -#~ "The location is a Loop range. It will be imported as a normal range.\n" -#~ "You may rename the imported location:" -#~ msgstr "" -#~ "Plasseringa er lykkjeomrÃ¥det, som vil bli importert som ein vanleg bolk.\n" -#~ "Du kan gje eit nytt namn til den importerte plasseringa:" - -#~ msgid "" -#~ "A location with that name already exists.\n" -#~ "You may rename the imported location:" -#~ msgstr "" -#~ "Det finst alt ei plassering med det namnet.\n" -#~ "Du kan gje eit nytt namn til den importerte plasseringa:" - -#~ msgid "Session framerate adjusted from %1 to LTC's %2." -#~ msgstr "Rammeraten for økta er endra frÃ¥ %1 til LTC %2" - -#~ msgid "Session and LTC framerate mismatch: LTC:%1 Session:%2." -#~ msgstr "Økt- og LTC-rammerate passar ikkje. LTC: %1 Økt: %2" - -#~ msgid "flywheel" -#~ msgstr "svinghjul" - -#~ msgid "" -#~ "%1: I/O configuration change %4 requested to use %2, but channel setup is " -#~ "%3" -#~ msgstr "" -#~ "%1: I/U-oppsettsendringa %4 ba om Ã¥ bruka %2, men kanaloppsettet er %3" - -#~ msgid "MidiDiskstream: Playlist \"%1\" isn't an midi playlist" -#~ 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!" - -#~ msgid "MidiDiskstream %1: cannot read %2 from playlist at frame %3" -#~ msgstr "MIDI-diskstraum %1: greidde ikkje lesa %2 frÃ¥ spelelista, ramme %3" - -#~ msgid "MidiDiskstream %1: cannot write to disk" -#~ msgstr "MIDI-diskstraum %1: greidde ikkje skriva til disk" - -#~ msgid "MidiDiskstream \"%1\": cannot flush captured data to disk!" -#~ msgstr "MIDI-diskstraum \"%1\": greier ikkje skriva opptaket til disken!" - -#~ msgid "%1: could not create region for complete midi file" -#~ msgstr "%1: greidde ikkje laga bolk for heil midifil" - -#~ msgid "MidiDiskstream: could not create region for captured midi!" -#~ msgstr "MIDI-diskstraum: greidde ikkje laga bolk frÃ¥ midi-opptaket!" - -#~ msgid "MidiDiskstream: XML property channel-mask out of range" -#~ msgstr "MIDI-diskstraum: kanalmaske for XML-eigenskap utanfor rekkjevidd" - -#~ msgid "No NoteID found for note property change - ignored" -#~ msgstr "Fann ingen NoteID for noteeigenskapsendringa - sÃ¥g bort frÃ¥" - -#~ msgid "No SysExID found for sys-ex property change - ignored" -#~ msgstr "Fann ingen SysExID for sys-ex-eigenskapsendring - sÃ¥g bort frÃ¥" - -#~ msgid "transpose" -#~ msgstr "transponer" - -#~ msgid "Missing parameter property on InterpolationStyle" -#~ msgstr "Manglar parametereigenskap pÃ¥ InterpolationStyle" - -#~ msgid "Missing style property on InterpolationStyle" -#~ msgstr "Manglar stileigenskap pÃ¥ InterpolationStyle" - -#~ msgid "Missing parameter property on AutomationState" -#~ msgstr "Manglar parameterigenskap pÃ¥ AutomationStyle" - -#~ msgid "Missing state property on AutomationState" -#~ msgstr "Manglar statuseigenskap pÃ¥ AutomationState" - -#~ msgid "monitor dim" -#~ msgstr "dim lytting" - -#~ msgid "monitor cut" -#~ msgstr "kutt lytting" - -#~ msgid "monitor mono" -#~ msgstr "lytting i mono" - -#~ msgid "monitor dim level" -#~ msgstr "dimnivÃ¥ lytting" - -#~ msgid "monitor solo boost level" -#~ msgstr "soloaukingsnivÃ¥ for lytting" - -#~ msgid "cut control %1" -#~ msgstr "kutt kontroll %1" - -#~ msgid "polarity control" -#~ msgstr "polaritetskontroll" - -#~ msgid "solo control" -#~ msgstr "solo kontroll" - -#~ msgid "MTC Slave: atomic read of current time failed, sleeping!" -#~ msgstr "MTC-slave: greidde ikkje lesa gyldig tid. Søv." - -#~ msgid "" -#~ "Unknown rate/drop value %1 in incoming MTC stream, session values used " -#~ "instead" -#~ msgstr "" -#~ "Ukjent rate/sleppverdi %1 i innkomande MTC-straum, bruker øktverdiar i " -#~ "staden" - -#~ msgid "Session framerate adjusted from %1 TO: MTC's %2." -#~ msgstr "Rammeraten for økta justert frÃ¥ %1 til MTC: %2" - -#~ msgid "Session and MTC framerate mismatch: MTC:%1 Ardour:%2." -#~ msgstr "Økt- og MTC-rammeraten passar ikkje. MTC: %1 Ardour: %2" - -#~ msgid "capture" -#~ msgstr "<b>opptak</b>" - -#~ msgid "paste" -#~ msgstr "lim inn" - -#~ msgid "duplicate region" -#~ msgstr "klon bolken" - -#~ msgid "insert file" -#~ msgstr "set inn fil" - -#~ msgid "insert region" -#~ msgstr "set inn bolk" - -#~ msgid "drag region brush" -#~ msgstr "bolkdragingsbørste" - -#~ msgid "region drag" -#~ msgstr "bolkdraging" - -#~ msgid "selection grab" -#~ msgstr "ta tak i utval" - -#~ msgid "region fill" -#~ msgstr "bolkfylling" - -#~ msgid "fill selection" -#~ msgstr "fyll utvalet" - -#~ msgid "create region" -#~ msgstr "lag ein bolk" - -#~ msgid "region copy" -#~ msgstr "bolkkopi" - -#~ msgid "fixed time region copy" -#~ msgstr "fast tid-bolkkopi" - -#~ msgid "Pannable given XML data for %1 - ignored" -#~ msgstr "Panoreringa fekk XML-data for %1 - ignorert" - -#~ msgid "looking for panners in %1" -#~ msgstr "ser etter panoreringar i %1" - -#~ msgid "Panner discovered: \"%1\" in %2" -#~ msgstr "Fann panoreringar: «%1» i %2" - -#~ msgid "PannerManager: cannot load module \"%1\" (%2)" -#~ msgstr "Panoreringsstyring: kan ikkje lasta modulen \"%1\" (%2)" - -#~ msgid "PannerManager: module \"%1\" has no descriptor function." -#~ msgstr "Panoreringsstyring: modulen \"%1\" har ingen skildringsfunksjon." - -#~ msgid "no panner discovered for in/out = %1/%2" -#~ msgstr "fann inga panorering for inn/ut = %1/%2" - -#~ msgid "Unknown panner plugin \"%1\" found in pan state - ignored" -#~ msgstr "" -#~ "Ukjent panoreringstilleggsprogram, \"%1\", funne i panoreringstilstand. " -#~ "Hoppa over." - -#~ msgid "panner plugin node has no type information!" -#~ msgstr "tilleggsprogrampunktet for panoreringa har ingen typeinformasjon!" - -#~ msgid "region state node has no ID, ignored" -#~ msgstr "omrÃ¥destatusnoden har ingen ID, ser bort frÃ¥" - -#~ msgid "Playlist: cannot create region from XML" -#~ msgstr "Speleliste: greier ikkje laga bolk frÃ¥ XML" - -#~ msgid "No playlist ID in PlaylistSource XML!" -#~ 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!" - -#~ msgid "programming error: " -#~ msgstr "programmeringsfeil: " - -#~ msgid "XML node describing plugin is missing the `type' field" -#~ msgstr "XML-punktet som skildrar utvidinga manglar 'type'-feltet" - -#~ msgid "unknown plugin type %1 in plugin insert state" -#~ msgstr "ukjent programtilleggstype %1 i innpluggingstilstanden" - -#~ msgid "Plugin has no unique ID field" -#~ msgstr "Innstikket har ikkje noko eige ID-felt" - -#~ msgid "" -#~ "Found a reference to a plugin (\"%1\") that is unknown.\n" -#~ "Perhaps it was removed or moved since it was last used." -#~ msgstr "" -#~ "Fann ein referanse til det ukjende tilleggsprogrammet \"%1\".\n" -#~ "Kanskje det har vorte fjerna eller flytt sidan sist det vart brukt." - -#~ msgid "PluginInsert: Auto: no ladspa port number" -#~ msgstr "PluginInsert:Auto: ikkje noko ladspa-portnummer" - -#~ msgid "PluginInsert: Auto: port id out of range" -#~ msgstr "PluginInsert: Auto: port-id utanfor rekkjevidd" - -#~ msgid "PluginInsert: automatable control %1 not found - ignored" -#~ msgstr "" -#~ "PluginInsert: fann ikkje den automasjonsferdige kontrollen %1, sÃ¥g bort " -#~ "frÃ¥ han." - -#~ msgid "Discovering Plugins" -#~ msgstr "Finn innstikk" - -#~ msgid "Could not parse rdf file: %1" -#~ msgstr "Greidde ikkje tolka rdf-fila: %1" - -#~ msgid "LADSPA: cannot load module \"%1\" (%2)" -#~ msgstr "LADSPA: greier ikkje lasta modulen \"%1\" (%2)" - -#~ msgid "LADSPA: module \"%1\" has no descriptor function." -#~ msgstr "LADSPA: modulen \"%1\" har ingen skildringsfunksjon." - -#~ msgid "" -#~ "VST plugin %1 does not support processReplacing, and so cannot be used in " -#~ "ardour at this time" -#~ msgstr "" -#~ "VST-tilleggsprogrammet %1 støttar ikkje prosessbyte, og kan ikkje brukast " -#~ "i Ardour nett no." - -#~ msgid "" -#~ "linuxVST plugin %1 does not support processReplacing, and so cannot be " -#~ "used in ardour at this time" -#~ msgstr "" -#~ "linuxVST-utvidinga %1 støttar ikkje prosessbyte, og kan ikkje brukast i " -#~ "Ardour nett no." - -#~ msgid "unknown plugin status type \"%1\" - all entries ignored" -#~ msgstr "\"%1\" er ein ukjend utvidingsstatustype, sÃ¥g bort frÃ¥ alt" - -#~ msgid "unknown plugin type \"%1\" - ignored" -#~ msgstr "\"%1\" er ein ukjend innstikktype - hoppa over" - -#~ msgid "get_connected_latency_range() called while disconnected from JACK" -#~ msgstr "get_connected_latency_range() kalla opp dÃ¥ JACK vart frÃ¥kopla" - -#~ msgid "could not reregister %1" -#~ msgstr "greidde ikkje registrera %1." - -#~ msgid "insert %1" -#~ msgstr "set inn %1" - -#~ msgid "XML node describing port insert is missing the `type' field" -#~ msgstr "XML-punktet som skildrar portinnstikket manglar 'type'-feltet" - -#~ msgid "non-port insert XML used for port plugin insert" -#~ msgstr "" -#~ "tappingspunkt-XML som ikkje er ein port er brukt for porttilleggstapping" - -#~ msgid "No %1 property flag in element %2" -#~ msgstr "Ikkje noko %1-eigenskapsflagg i elementet %2" - -#~ msgid "No child node with active property" -#~ msgstr "Ingen undernode med aktiv eigenskap" - -#~ msgid "Loading system configuration file %1" -#~ msgstr "Lastar systemoppsettfila %1" - -#~ msgid "%1: cannot read system configuration file \"%2\"" -#~ msgstr "%1: greier ikkje lesa systemoppsettfila \"%2\"" - -#~ msgid "%1: system configuration file \"%2\" not loaded successfully." -#~ msgstr "%1: greidde ikkje lasta systemoppsettfila \"%2\" skikkeleg." - -#~ msgid "" -#~ "your system %1 configuration file is empty. This probably means that " -#~ "there as an error installing %1" -#~ msgstr "" -#~ "Oppsettsfila for %1 er tom. Dette tyder truleg at det var ein feil dÃ¥ %1 " -#~ "vart installert." - -#~ msgid "Loading user configuration file %1" -#~ msgstr "Lastar brukaroppsettfila %1" - -#~ msgid "%1: cannot read configuration file \"%2\"" -#~ msgstr "%1: greier ikkje lesa oppsettfila \"%2\"" - -#~ msgid "%1: user configuration file \"%2\" not loaded successfully." -#~ msgstr "%1: greidde ikkje lasta brukaroppsettfila \"%2\" skikkeleg." - -#~ msgid "your %1 configuration file is empty. This is not normal." -#~ msgstr "%1-oppsettsfila di er tom. Dette er ikkje normalt." - -#~ msgid "Config file %1 not saved" -#~ msgstr "Oppsettfila %1 er ikkje lagra" - -#~ msgid "cannot open recent session file %1 (%2)" -#~ msgstr "greier ikkje opna den nyleg brukte øktfila %1 (%2)" - -#~ msgid "" -#~ "programming error: RegionFactory::create() called with unknown Region type" -#~ msgstr "" -#~ "programmeringsfeil: RegionFactory::create()-funksjonen oppkalle med " -#~ "ukjent bolktype" - -#~ msgid "%1 compound-%2 (%3)" -#~ msgstr "%1 samansett-%2 (%3)" - -#~ msgid "%1 compound-%2.1 (%3)" -#~ msgstr "%1 samansett-%2.1 (%3)" - -#~ msgid "cannot create new name for region \"%1\"" -#~ msgstr "greier ikkje laga nytt namn for bolken \"%1\"" - -#~ msgid "Import: %1" -#~ msgstr "Import: %1" - -#~ msgid "Import: src_new() failed : %1" -#~ msgstr "Import: src_new()-funkjsonen lukkast ikkje: %1" - -#~ msgid "return %1" -#~ msgstr "retur %1" - -#~ msgid "unknown Processor type \"%1\"; ignored" -#~ msgstr "\"%1\" er ein ukjend prosesseringstype, hoppa over" - -#~ msgid "processor could not be created. Ignored." -#~ msgstr "greidde ikkje laga prosessering. Hoppa over." - -#~ msgid "Bad node sent to Route::set_state() [%1]" -#~ msgstr "Feil punkt sendt til Route::set_state()-funksjonen [%1]" - -#~ msgid "Pannable state found for route (%1) without a panner!" -#~ msgstr "Fann panoreringsstatus for ruta (%1) utan panorering!" - -#~ msgid "badly formed order key string in state file! [%1] ... ignored." -#~ msgstr "feilforma tingingsnykjelstreng i tilstandsfil! [%1] ... hoppa over." - -#~ msgid "You cannot subgroup MIDI tracks at this time" -#~ msgstr "Du kan ikkje laga undergrupper for MIDI-spor no" - -#~ msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)" -#~ msgstr "" -#~ "lag tempo: greidde ikkje lesa data frÃ¥ %1 ved %2 (ville ha %3, fekk %4)" - -#~ msgid "error writing tempo-adjusted data to %1" -#~ msgstr "greidde ikkje skriva tempo-justert fil til %1" - -#~ msgid "timefx code failure. please notify ardour-developers." -#~ msgstr "kodefeil pÃ¥ tidseffektar, sei frÃ¥ til Ardour-utviklarane" - -#~ msgid "aux %1" -#~ msgstr "aux %1" - -#~ msgid "send %1" -#~ msgstr "send %1" - -#~ msgid "programming error: send created using role %1" -#~ msgstr "programmeringsfeil: laga send med rolla %1" - -#~ msgid "Set block size and sample rate" -#~ msgstr "Set blokkstorleik og punktrate" - -#~ msgid "Using configuration" -#~ msgstr "Bruker oppsett" - -#~ msgid "LTC In" -#~ msgstr "LTC inn" - -#~ msgid "LTC Out" -#~ msgstr "LTC ut" - -#~ msgid "LTC-in" -#~ msgstr "LTC-inn" - -#~ msgid "LTC-out" -#~ msgstr "LTC-ut" - -#~ msgid "could not setup Click I/O" -#~ msgstr "greidde ikkje setja opp klikk-I/U" - -#~ msgid "cannot setup Click I/O" -#~ msgstr "greier ikkje setja opp klikk-I/U" - -#~ msgid "Compute I/O Latencies" -#~ msgstr "Rekn ut I/U-seinkingar" - -#~ msgid "Set up standard connections" -#~ msgstr "Set opp standartilkoplingar" - -#~ msgid "out %<PRIu32>" -#~ msgstr "ut %<PRIu32>" - -#~ msgid "out %<PRIu32>+%<PRIu32>" -#~ msgstr "ut %<PRIu32>+%<PRIu32>" - -#~ msgid "in %<PRIu32>" -#~ msgstr "inn %<PRIu32>" - -#~ msgid "in %<PRIu32>+%<PRIu32>" -#~ msgstr "inn %<PRIu32>+%<PRIu32>" - -#~ msgid "Setup signal flow and plugins" -#~ msgstr "Set opp signalflyt og innstikk" - -#~ msgid "Connect to engine" -#~ msgstr "Kople til maskin" - -#~ msgid "cannot connect master output %1 to %2" -#~ msgstr "greier ikkje kopla til hovudutgangane %1 til %2" - -#~ msgid "monitor" -#~ msgstr "lytting" - -#~ msgid "cannot connect control input %1 to %2" -#~ msgstr "greier ikkje kopla til kontrollinngangane %1 til %2" - -#~ msgid "The preferred I/O for the monitor bus (%1) cannot be found" -#~ msgstr "Greidde ikkje finna føretrekt I/U for lyttebussen (%1)" - -#~ msgid "cannot connect control output %1 to %2" -#~ msgstr "greier ikkje kopla til kontrollutgangane %1 til %2" - -#~ msgid "cannot create Auditioner: no auditioning of regions possible" -#~ msgstr "" -#~ "greier ikkje laga Lytting: det er ikkje rÃ¥d Ã¥ lytta pÃ¥ nokon bolkar." - -#~ msgid "Session: you can't use that location for auto punch (start <= end)" -#~ msgstr "Økt: du kan ikkje bruka denne staden for autoinnslag (start<=slutt)" - -#~ msgid "Session: you can't use a mark for auto loop" -#~ msgstr "Økt: du kan ikkje bruka eit merke for auto-lykkjespel" - -#~ msgid "feedback loop setup between %1 and %2" -#~ msgstr "rundgang-lykkjeoppsett mellom %1 og %2" - -#~ msgid "Session: could not create new midi track." -#~ msgstr "Økt: greidde ikkje laga nytt midispor." - -#~ msgid "" -#~ "No more JACK ports are available. You will need to stop %1 and restart " -#~ "JACK with ports if you need this many tracks." -#~ 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." - -#~ msgid "Audio" -#~ msgstr "Lyd" - -#~ msgid "cannot configure %1 in/%2 out configuration for new audio track" -#~ msgstr "" -#~ "greier ikkje stilla inn %1 inn/%2 ut-innstillingane for det nye lydsporet" - -#~ msgid "Session: could not create new audio track." -#~ msgstr "Økt: greidde ikkje laga nytt lydspor." - -#~ msgid "Bus" -#~ msgstr "Buss" - -#~ msgid "Session: could not create new audio route." -#~ msgstr "Økt: greidde ikkje laga ny lydrute." - -#~ msgid "Session: UINT_MAX routes? impossible!" -#~ msgstr "Økt: UINT_MAX-ruter? GÃ¥r ikkje an!" - -#~ msgid "Session: cannot create track/bus from template description" -#~ msgstr "Økt: greier ikkje laga spor/buss frÃ¥ malskildringa" - -#~ msgid "Session: could not create new route from template" -#~ msgstr "Økt: greidde ikkje laga ny lydrute frÃ¥ malen" - -#~ msgid "Adding new tracks/busses failed" -#~ msgstr "Greidde ikkje leggja til nye spor/bussar" - -#~ msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename" -#~ msgstr "" -#~ "ALVORLEG FEIL! Greidde ikkje finna ei høveleg utgÃ¥ve av %1 for Ã¥ døypa om" - -#~ msgid "There are already %1 recordings for %2, which I consider too many." -#~ msgstr "Det er alt %1 opptak for %2, og eg synest det er for mange." - -#~ msgid "send ID %1 appears to be in use already" -#~ msgstr "send-IDen %1 ser ut til Ã¥ vera i bruk frÃ¥ før" - -#~ msgid "aux send ID %1 appears to be in use already" -#~ msgstr "aux-send-IDen %1 ser ut til Ã¥ vera i bruk frÃ¥ før" - -#~ msgid "return ID %1 appears to be in use already" -#~ msgstr "retur-IDen %1 ser ut til Ã¥ vera i bruk frÃ¥ før" - -#~ msgid "insert ID %1 appears to be in use already" -#~ msgstr "send-IDen %2 ser ut til Ã¥ vera i bruk frÃ¥ før" - -#~ msgid "Cannot write a range where end <= start (e.g. %1 <= %2)" -#~ msgstr "Kan ikkje skriva eit omrÃ¥de der slutten <= starten (td. %1 <= %2)" - -#~ msgid "too many bounced versions of playlist \"%1\"" -#~ msgstr "for mange samanmiksa versjonar av spelelista \"%1\"" - -#~ msgid "cannot create new audio file \"%1\" for %2" -#~ msgstr "greier ikkje laga ny lydfil \"%1\" for %2" - -#~ msgid "cannot open click soundfile %1 (%2)" -#~ msgstr "greier ikkje opna klikk-lydfila %1 (%2)" - -#~ msgid "cannot read data from click soundfile" -#~ msgstr "greier ikkje lesa data frÃ¥ klikklydfila" - -#~ msgid "" -#~ "Tried to reconstitute a MementoCommand with no contents, failing. id=" -#~ msgstr "" -#~ "Prøvde Ã¥ byggja opp att ein memento-kommando utan innhald, og mislukkast. " -#~ "id=" - -#~ msgid "" -#~ "could not reconstitute MementoCommand from XMLNode. object type = %1 id = " -#~ "%2" -#~ msgstr "" -#~ "greier ikkje byggja oppatt Memento-kommando frÃ¥ XML-punkt. Objekttype = " -#~ "%1 id = %2" - -#~ msgid "" -#~ "could not reconstitute StatefulDiffCommand from XMLNode. object type = %1 " -#~ "id = %2" -#~ msgstr "" -#~ "greier ikkje byggja oppatt StatefulDiff-kommando frÃ¥ XML-punkt. " -#~ "Objekttype = %1 id = %2" - -#~ msgid "Cannot create Session directory at path %1 Error: %2" -#~ msgstr "greier ikkje laga øktmappa i stigen \"%1\", feil: %2" - -#~ msgid "Session subdirectory does not exist at path %1" -#~ msgstr "Undermappa for økta finst ikkje i stigen %1" - -#~ msgid "Session: cannot have two events of type %1 at the same frame (%2)." -#~ msgstr "Økt: du kan ikkje ha to handlingar av typen %1 pÃ¥ same ramma (%2)." - -#~ msgid "%1: cannot seek to %2 for export" -#~ msgstr "%1: greier ikkje finna %2 for eksportering" - -#~ msgid "Export ended unexpectedly: %1" -#~ msgstr "Eksporten avslutta uventa: %1" - -#~ msgid "" -#~ "LTC encoder: invalid framerate - LTC encoding is disabled for the " -#~ "remainder of this session." -#~ msgstr "" -#~ "LTC-omkoding: ugyldig rammerate - LTC-omodinga blir skrudd av for resten " -#~ "av økta." - -#~ msgid "Session: could not send full MIDI time code" -#~ msgstr "Økt: greidde ikke senda full MIDI-tidskode" - -#~ msgid "Session: cannot send quarter-frame MTC message (%1)" -#~ 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." - -#~ msgid "Session: error in no roll for %1" -#~ msgstr "Økt: feil pÃ¥ ingen rull for %1" - -#~ msgid "Programming error: illegal event type in process_event (%1)" -#~ msgstr "Programmeringsfeil: ulovleg handlingstype i process-event (%1)" - -#~ msgid "Could not use path %1 (%s)" -#~ msgstr "Greidde ikkje bruka stigen %1 (%s)" - -#~ msgid "solo cut control (dB)" -#~ msgstr "solokutt-kontroll (dB)" - -#~ msgid "Reset Remote Controls" -#~ msgstr "Still tilbake fjernkontrollar" - -#~ msgid "Session loading complete" -#~ msgstr "Ferdig Ã¥ lasta økta." - -#~ msgid "Session: cannot create session peakfile folder \"%1\" (%2)" -#~ msgstr "Økt: greier ikkje laga mappa \"%1\" for økttoppfiler (%2)" - -#~ msgid "Session: cannot create session sounds dir \"%1\" (%2)" -#~ msgstr "Økt: greier ikkje laga øktmappa \"%1\" for lydfiler (%2)" - -#~ msgid "Session: cannot create session midi dir \"%1\" (%2)" -#~ msgstr "Økt: greier ikkje laga midimappa \"%1\" for økta (%2)" - -#~ msgid "Session: cannot create session dead sounds folder \"%1\" (%2)" -#~ msgstr "Økt: greier ikkje laga mappa \"%1\" for daudlyd (%2)" - -#~ msgid "Session: cannot create session export folder \"%1\" (%2)" -#~ msgstr "Økt: greidde ikkje laga mappa \"%1\" for eksportlyd (%2)" - -#~ msgid "Session: cannot create session analysis folder \"%1\" (%2)" -#~ msgstr "Økt: greidde ikkje laga mappa \"%1\" for øktanalyse (%2)" - -#~ msgid "Session: cannot create session plugins folder \"%1\" (%2)" -#~ msgstr "Økt: greier ikkje laga utvidingmappa \"%1\" for økta (%2)" - -#~ msgid "Session: cannot create session externals folder \"%1\" (%2)" -#~ msgstr "Økt: greidde ikkje laga eksternmappa «%1» (%2)" - -#~ msgid "Session: cannot create session folder \"%1\" (%2)" -#~ msgstr "Økt: greidde ikkje laga øktmappa \"%1\" (%2)" - -#~ msgid "Could not open %1 for writing session template" -#~ msgstr "Greidde ikkje opna %1 for Ã¥ skriva miksarmal" - -#~ msgid "Could not open session template %1 for reading" -#~ msgstr "Greidde ikkje opna miksarmalen %1 for Ã¥ lesa han" - -#~ msgid "master" -#~ msgstr "master" - -#~ msgid "Could not remove pending capture state at path \"%1\" (%2)" -#~ msgstr "Greidde ikkje fjerna ventande opptaksstatus pÃ¥ stigen «%1» (%2)" - -#~ msgid "could not rename snapshot %1 to %2 (%3)" -#~ msgstr "greidde ikkje døypa om snøggbiletet %1 til %2 (%3)" - -#~ msgid "Could not remove state file at path \"%1\" (%2)" -#~ msgstr "Greidde ikkje fjerna tilstandsfil pÃ¥ stigen «%1» (%2)" - -#~ msgid "" -#~ "the %1 audio engine is not connected and state saving would lose all I/O " -#~ "connections. Session not saved" -#~ msgstr "" -#~ "lydmotoren i %1 er ikkje kopla til, og Ã¥ lagra statusen ville kasta bort " -#~ "alle I/U-tilkoplingar. Økta er ikkje lagra" - -#~ msgid "state could not be saved to %1" -#~ msgstr "greidde ikkje lagra tilstanden til %1" - -#~ msgid "Could not remove temporary state file at path \"%1\" (%2)" -#~ msgstr "Greidde ikkje fjerna mellombels tilstandsfil pÃ¥ stigen «%1» (%2)" - -#~ msgid "could not rename temporary session file %1 to %2" -#~ msgstr "greidde ikkje døypa om mellombels øktfil %1 til %2" - -#~ msgid "%1: session state information file \"%2\" doesn't exist!" -#~ msgstr "%1: tilstandsinformasjonsfila \"%2\" for økta finst ikkje!" - -#~ msgid "Could not understand ardour file %1" -#~ msgstr "Skjønte ikkje ardour-fila %1" - -#~ msgid "Session file %1 is not a session" -#~ msgstr "Øktfila %1 er ikkje ei økt" - -#~ msgid "" -#~ "Copying old session file %1 to %2\n" -#~ "Use %2 with %3 versions before 2.0 from now on" -#~ msgstr "" -#~ "Kopierer gamal øktfil %1 til %2\n" -#~ "Bruk %2 med %3-versjonar før 2.0 frÃ¥ no av" - -#~ msgid "programming error: Session: incorrect XML node sent to set_state()" -#~ msgstr "" -#~ "programmeringsfeil: Økt: feil XML-punkt sendt til set_state()-funksjonen" - -#~ msgid "Session: XML state has no options section" -#~ msgstr "Økt: XML-tilstandsfila har ikkje noko avsnitt om instillingar" - -#~ msgid "Session: XML state has no metadata section" -#~ msgstr "Økt: XML-fila har inga avdeling for metadata" - -#~ msgid "Session: XML state has no sources section" -#~ msgstr "Økt: XML-tilstandsfila har ikkje noko avsnitt om kjelder" - -#~ msgid "Session: XML state has no Tempo Map section" -#~ msgstr "Økt: XML-fila har ikkje noko avsnitt om tempokart" - -#~ msgid "Session: XML state has no locations section" -#~ msgstr "Økt: XML-fila har ikkje noko avsnitt om stader" - -#~ msgid "Session: XML state has no Regions section" -#~ msgstr "Økt: XML-tilstandsfila har ikkje noko avsnitt om bolkar" - -#~ msgid "Session: XML state has no playlists section" -#~ msgstr "Økt: XML-tilstandsfila har ikkje noko avsnitt om spelelister" - -#~ msgid "Session: XML state has no bundles section" -#~ msgstr "Økt: XML-fila har inga avdeling for bundlar" - -#~ msgid "Session: XML state has no diskstreams section" -#~ msgstr "Økt: XML-fila har ikkje nok avsnitt om diskstraumar" - -#~ msgid "Session: XML state has no routes section" -#~ msgstr "Økt: XML-fila har ikkje noko avsnitt om ruter" - -#~ msgid "Session: XML state has no route groups section" -#~ msgstr "Økt: XML-fila har inga avdeling for rutegrupper" - -#~ msgid "Session: XML state has no edit groups section" -#~ msgstr "Økt: XML-fila har ikkje noko avsnitt om grupperedigering" - -#~ msgid "Session: XML state has no mix groups section" -#~ msgstr "Økt: XML-fila har ikkje noko avsnitt om miksgrupper" - -#~ msgid "Session: XML state has no click section" -#~ msgstr "Økt: XML-fila har ikkje noko avsnitt om klikk" - -#~ msgid "Session: cannot create Route from XML description." -#~ msgstr "Økt: greier ikkje laga rute ut frÃ¥ XML-skildringa." - -#~ msgid "Loaded track/bus %1" -#~ msgstr "Lasta spor/buss %1" - -#~ msgid "Could not find diskstream for route" -#~ msgstr "Greidde ikkje finna diskstraumen for rute" - -#~ msgid "Session: cannot create Region from XML description." -#~ msgstr "Økt: greier ikkje laga bolkar ut frÃ¥ XML-skildringa." - -#~ msgid "Can not load state for region '%1'" -#~ msgstr "Greier ikkje laga status for bolken '%1'" - -#~ msgid "Regions in compound description not found (ID's %1 and %2): ignored" -#~ msgstr "Fann ikkje bolkar i samansetjingsstatus (IDar %1 og %2): ignorert" - -#~ msgid "Nested source has no ID info in session state file! (ignored)" -#~ msgstr "Nøsta kjelde har ingen ID-info i øktstatusfila! (ignorert)" - -#~ msgid "Cannot reconstruct nested source for region %1" -#~ msgstr "Greier ikkje rekonstruera nøsta kjelde for bolken %1" - -#~ msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)" -#~ msgstr "" -#~ "Økt: XML-punktet som skildrar ein lydbolk er uferdig (manglar kjelde)" - -#~ msgid "" -#~ "Session: XMLNode describing a AudioRegion references an unknown source id " -#~ "=%1" -#~ msgstr "" -#~ "Økt: XML-punktet som skildrar ein lydbolk peikar pÃ¥ ein ukjend kjelde-ID " -#~ "= %1" - -#~ msgid "" -#~ "Session: XMLNode describing a AudioRegion references a non-audio source " -#~ "id =%1" -#~ msgstr "" -#~ "Økt: XML-punktet som skildrar ein lydbolk peikar pÃ¥ ein kjelde-ID %1 som " -#~ "ikkje er ei lydfil" - -#~ msgid "" -#~ "Session: XMLNode describing an AudioRegion is missing some master " -#~ "sources; ignored" -#~ msgstr "" -#~ "Økt: XML-punktet som skildrar ein lydbolk manglar nokre masterkjelder, " -#~ "ser bort frÃ¥" - -#~ msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)" -#~ msgstr "" -#~ "Økt: XML-punktet som skildrar ein midibolk er uferdig (manglar kjelde)" - -#~ msgid "" -#~ "Session: XMLNode describing a MidiRegion references an unknown source id =" -#~ "%1" -#~ msgstr "" -#~ "Økt: XML-punktet som skildrar ein midibolk peikar pÃ¥ ein ukjend kjelde-ID " -#~ "= %1" - -#~ msgid "" -#~ "Session: XMLNode describing a MidiRegion references a non-midi source id =" -#~ "%1" -#~ msgstr "" -#~ "Økt: XML-punktet som skildrar ein midibolk peikar pÃ¥ ein kjelde-ID %1 som " -#~ "ikkje er ei midi-fil" - -#~ msgid "" -#~ "cannot create new file from region name \"%1\" with ident = \"%2\": too " -#~ "many existing files with similar names" -#~ msgstr "" -#~ "greier ikkje laga ny fil frÃ¥ bolknamn \"%1\" med ident = \"%2\": det " -#~ "finst for mange med same namnet" - -#~ msgid "Session: cannot create Source from XML description." -#~ msgstr "Økt: greier ikkje laga kjelde ut frÃ¥ XML-skildringa." - -#~ msgid "A sound file is missing. It will be replaced by silence." -#~ msgstr "Det manglar ei lydfil. Ho vil bli erstatta med stille." - -#~ msgid "" -#~ "Found a sound file that cannot be used by %1. Talk to the progammers." -#~ msgstr "Fann ei lydfil som %1 ikkje kan bruka. Prat med utviklarane." - -#~ msgid "Could not create templates directory \"%1\" (%2)" -#~ msgstr "Greidde ikkje laga malmappa «%1» (%2)" - -#~ msgid "Template \"%1\" already exists - new version not created" -#~ msgstr "Malen \"%1\" finst alt - laga ingen ny versjon" - -#~ msgid "Could not create directory for Session template\"%1\" (%2)" -#~ msgstr "Greidde ikkje laga mappa for øktmalar «%1» (%2)" - -#~ msgid "template not saved" -#~ msgstr "malen vart ikkje lagra" - -#~ msgid "" -#~ "Could not create directory for Session template plugin state\"%1\" (%2)" -#~ msgstr "" -#~ "Greidde ikkje laga malmappa for utvidingstilstandar i økta «%1» (%2)" - -#~ msgid "Unknown node \"%1\" found in Bundles list from state file" -#~ msgstr "Fann ukjent punkt \"%1\" i bundellista frÃ¥ tilstandsfila" - -#~ msgid "Cannot expand path %1 (%2)" -#~ msgstr "Greier ikkje utvida stigen %1 (%2)" - -#~ msgid "Session: cannot create dead file folder \"%1\" (%2)" -#~ msgstr "Økt: greier ikkje laga mappa \"%1\" for daudlyd (%2)" - -#~ msgid "cannot rename unused file source from %1 to %2 (%3)" -#~ msgstr "kan ikkje døypa om den ubrukte filkjelda frÃ¥ %1 til %2 (%3)" - -#~ msgid "cannot remove peakfile %1 for %2 (%3)" -#~ msgstr "kan ikkje fjerna toppfil %1 for %2 (%3)" - -#~ msgid "could not backup old history file, current history not saved" -#~ msgstr "" -#~ "greidde ikkje ta tryggingskopi av den gamle historiefila, noverande " -#~ "historie vart ikkje lagra." - -#~ msgid "history could not be saved to %1" -#~ msgstr "greidde ikkje lagra historia til %1" - -#~ msgid "Could not remove history file at path \"%1\" (%2)" -#~ msgstr "Greidde ikkje fjerna historiefila pÃ¥ stigen «%1» (%2)" - -#~ msgid "could not restore history file from backup %1 (%2)" -#~ msgstr "" -#~ "greidde ikkje henta fram att historiefila frÃ¥ tryggingskopien %1 (%2)" - -#~ msgid "%1: no history file \"%2\" for this session." -#~ msgstr "%1: inga historiefil \"%2\" for denne økta." - -#~ msgid "Could not understand session history file \"%1\"" -#~ msgstr "Skjønte ikkje økthistoriefila \"%1\"" - -#~ msgid "Failed to downcast MidiSource for NoteDiffCommand" -#~ msgstr "Greidde ikkje kasta ned midi-kjelde for NoteDiffCommand" - -#~ msgid "Failed to downcast MidiSource for SysExDiffCommand" -#~ msgstr "Greidde ikkje kasta ned midi-kjelde for SysExDiffCommand" - -#~ msgid "Failed to downcast MidiSource for PatchChangeDiffCommand" -#~ msgstr "Greidde ikkje kasta ned midi-kjelde for PatchChangeDiffCommand" - -#~ msgid "Couldn't figure out how to make a Command out of a %1 XMLNode." -#~ msgstr "" -#~ "Fann ikkje ut korleis eg skal laga ein kommando av eit %1-XML-punkt." - -#~ msgid "Session: unknown diskstream type in XML" -#~ msgstr "Økt: ukjend diskstraumtype i XML" - -#~ msgid "Session: could not load diskstream via XML state" -#~ msgstr "Økt: greidde ikkje lasta diskstraumen via XML-tilstand" - -#~ msgid "Unknown JACK transport state %1 in sync callback" -#~ 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" - -#~ msgid "" -#~ "Seamless looping cannot be supported while %1 is using JACK transport.\n" -#~ "Recommend changing the configured options" -#~ msgstr "" -#~ "Samanhengande lykkjespeling er ikkje støtta nÃ¥r %1 bruker JACK-" -#~ "transporten.\n" -#~ "Me rÃ¥r til at du endrar innstillingane." - -#~ msgid "" -#~ "Global varispeed cannot be supported while %1 is connected to JACK " -#~ "transport control" -#~ msgstr "" -#~ "Allmenn varifart-kontroll kan ikkje brukast nÃ¥r %1 er kopla til JACK-" -#~ "transportkontrollen" - -#~ msgid "Unable to read event prefix, corrupt MIDI ring buffer" -#~ msgstr "Greier ikkje lesa handlingsprefiks, MIDI-ringbufferen i ulage" - -#~ msgid "Read time/size but not buffer, corrupt MIDI ring buffer" -#~ msgstr "Les tid/storleik men ikkje buffer, MIDI-ringbufferen i ulage" - -#~ msgid "cannot open MIDI file %1 for write" -#~ msgstr "greier ikkje opna MIDI-fila %1 for skriving" - -#~ msgid "WAV" -#~ msgstr "WAV" - -#~ msgid "AIFF" -#~ msgstr "AIFF" - -#~ msgid "CAF" -#~ msgstr "CAF" - -#~ msgid "W64 (64 bit WAV)" -#~ msgstr "W64 (64-bits WAV)" - -#~ msgid "FLAC" -#~ msgstr "FLAC" - -#~ msgid "Ogg/Vorbis" -#~ msgstr "Ogg/Vorbis" - -#~ msgid "raw (no header)" -#~ msgstr "rÃ¥ fil (utan tittellinje)" - -#~ msgid ".wav" -#~ msgstr ".wav" - -#~ msgid ".aiff" -#~ msgstr ".aiff" - -#~ msgid ".caf" -#~ msgstr ".caf" - -#~ msgid ".w64" -#~ msgstr ".w64" - -#~ msgid ".flac" -#~ msgstr ".flac" - -#~ msgid ".ogg" -#~ msgstr ".ogg" - -#~ msgid ".raw" -#~ msgstr ".raw" - -#~ msgid "Signed 16 bit PCM" -#~ msgstr "Signert 16bit PCM" - -#~ msgid "Signed 24 bit PCM" -#~ msgstr "Signert 24bit PCM" - -#~ msgid "Signed 32 bit PCM" -#~ msgstr "Signert 32bit PCM" - -#~ msgid "Signed 8 bit PCM" -#~ msgstr "Signert 8bit PCM" - -#~ msgid "32 bit float" -#~ msgstr "32-bit flytpunkt" - -#~ msgid "Little-endian (Intel)" -#~ msgstr "Liten endian (Intel)" - -#~ msgid "Big-endian (PowerPC)" -#~ msgstr "Viktigaste bit fyrst (Mac)" - -#~ msgid "SndFileSource: cannot open file \"%1\" for %2 (%3)" -#~ msgstr "Lydfilkjelde: greier ikkje opna fila \"%1\" for %2 (%3)" - -#~ msgid "" -#~ "SndFileSource: file only contains %1 channels; %2 is invalid as a channel " -#~ "number" -#~ msgstr "" -#~ "Lydfilkjelde: fila inneheld berre %1 kanalar, %2 er eit ugyldig " -#~ "kanalnummer" - -#~ msgid "" -#~ "cannot set broadcast info for audio file %1 (%2); dropping broadcast info " -#~ "for this file" -#~ msgstr "" -#~ "greier ikkje fastsetja kringkastingsinformasjon for lydfila %1 (%2), " -#~ "hoppar over kringkastingsinformasjonen for denne fila" - -#~ msgid "could not allocate file %1 for reading." -#~ msgstr "greidde ikkje tildela fila %1 for Ã¥ lesa" - -#~ msgid "SndFileSource: could not seek to frame %1 within %2 (%3)" -#~ msgstr "Lydfilkjelde: greier ikkje leita fram til ramma %1 innan %2 (%3)" - -#~ msgid "" -#~ "SndFileSource: @ %1 could not read %2 within %3 (%4) (len = %5, ret was " -#~ "%6)" -#~ msgstr "" -#~ "SndFileSource: @ %1 greidde ikkje lesa %2 i %3 (%4) (len = %5, ret var %6)" - -#~ msgid "attempt to write a non-writable audio file source (%1)" -#~ msgstr "prøvde Ã¥ skriva til ei ikkje-skrivbar lydkjeldefil (%1)" - -#~ msgid "programming error: %1 %2" -#~ msgstr "programmeringsfeil: %1 %2" - -#~ msgid "attempt to flush a non-writable audio file source (%1)" -#~ msgstr "prøvde Ã¥ tømma ei ikkje-skrivbar lydkjeldefil (%1)" - -#~ msgid "attempt to flush an un-opened audio file source (%1)" -#~ msgstr "prøvde Ã¥ tømma ei uopna lydkjeldefil (%1)" - -#~ msgid "could not allocate file %1 to write header" -#~ msgstr "greidde ikkje tildela fila %1 for Ã¥ skriva hovudet" - -#~ msgid "" -#~ "attempt to store broadcast info in a non-writable audio file source (%1)" -#~ msgstr "" -#~ "prøvde Ã¥ lagra kringastingsinfo til ei ikkje-skrivbar lydkjeldefil (%1)" - -#~ msgid "attempt to set BWF info for an un-opened audio file source (%1)" -#~ msgstr "prøvde Ã¥ laga BWF-info for ei uopna lydkjeldefil (%1)" - -#~ msgid "%1: cannot seek to %2 (libsndfile error: %3" -#~ msgstr "%1: greier ikkje gÃ¥ til %2 (libsndfile-feil: %3" - -#~ msgid "SndFileSource: \"%1\" bad read retval: %2 of %5 (%3: %4)" -#~ msgstr "SndFileSource: \"%1\" feillesen returverdi: %2 av %5 (%3: %4)" - -#~ msgid "SndFileSource: \"%1\" bad write (%2)" -#~ msgstr "SndFileSource: \"%1\" feilskriving (%2)" - -#~ msgid "" -#~ "Filesource: start time is already set for existing file (%1): Cannot " -#~ "change start time." -#~ msgstr "" -#~ "Filkjelde: starttida er alt sett for denne fila (%1): kan ikkje endra " -#~ "starttid." - -#~ msgid "Speaker information is missing azimuth - speaker ignored" -#~ msgstr "Høgtalaroppsettet manglar asimutvinkel - høgtalaren ikkje medteken" - -#~ msgid "Speaker information is missing elevation - speaker ignored" -#~ msgstr "" -#~ "Høgtalaroppsettet manglar opplysingar om høgd over golvet - høgtalaren " -#~ "ikkje medteken" - -#~ msgid "Speaker information is missing distance - speaker ignored" -#~ msgstr "" -#~ "Høgtalaroppsettet manglar opplysingar om avstand - høgtalaren ikkje " -#~ "medteken" - -#~ msgid "Cannot compile tape track regexp for use (%1)" -#~ msgstr "Greier ikkje setja saman bandspor-reguttrykk til bruk (%1)" - -#~ msgid "TempoSection XML node has no \"start\" property" -#~ msgstr "TempoSection-XML-punktet har ingen \"start\"-eigenskap" - -#~ msgid "TempoSection XML node has an illegal \"start\" value" -#~ msgstr "TempoSection-XML-punktet har ein ulovleg \"start\"-verdi" - -#~ msgid "TempoSection XML node has no \"beats-per-minute\" property" -#~ msgstr "TempoSection-XML-punktet har ingen \"slag per minutt\"-eigenskap" - -#~ msgid "TempoSection XML node has an illegal \"beats_per_minute\" value" -#~ msgstr "TempoSection-XML-punktet har ein ulovleg \"slag per minutt\"-verdi" - -#~ msgid "TempoSection XML node has an illegal \"note-type\" value" -#~ msgstr "TempoSection-XML-punktet har ein ulovleg \"note-type\"-verdi" - -#~ msgid "TempoSection XML node has no \"movable\" property" -#~ msgstr "TempoSection-XML-punktet har ingen \"flyttbar\"-eigenskap" - -#~ msgid "TempoSection XML node has an illegal \"bar-offset\" value" -#~ msgstr "TempoSection-XML-punktet har ein ulovleg «taktavvik»-verdi" - -#~ msgid "MeterSection XML node has no \"start\" property" -#~ msgstr "MeterSection-XML-punktet har ingen \"start\"-eigenskap" - -#~ msgid "MeterSection XML node has an illegal \"start\" value" -#~ msgstr "MeterSection-XML-punktet har ein ulovleg \"start\"-verdi" - -#~ msgid "" -#~ "MeterSection XML node has no \"beats-per-bar\" or \"divisions-per-bar\" " -#~ "property" -#~ msgstr "" -#~ "MeterSection-XML-punktet har ingen «slag per takt»-eigenskap eller «delar " -#~ "per takt»-eigenskap" - -#~ msgid "" -#~ "MeterSection XML node has an illegal \"beats-per-bar\" or \"divisions-per-" -#~ "bar\" value" -#~ msgstr "" -#~ "MeterSection-XML-punktet har ein ulovleg «slag per takt»- eller «delar " -#~ "per takt»-verdi" - -#~ msgid "MeterSection XML node has no \"note-type\" property" -#~ msgstr "MeterSection-XML-punktet har ingen \"notetype\"-eigenskap" - -#~ msgid "MeterSection XML node has an illegal \"note-type\" value" -#~ msgstr "MeterSection-XML-punktet har ein ulovleg \"start\"-verdi" - -#~ msgid "MeterSection XML node has no \"movable\" property" -#~ msgstr "MeterSection-XML-punktet har ingen \"flyttbar\"-eigenskap" - -#~ msgid "" -#~ "Meter changes can only be positioned on the first beat of a bar. Moving " -#~ "from %1 to %2" -#~ msgstr "" -#~ "Taktartsendringar kan berre stÃ¥ i fyrste slaget i takta. Flyttar frÃ¥ %1 " -#~ "til %2" - -#~ msgid "no tempo sections defined in tempo map - cannot change tempo @ %1" -#~ msgstr "" -#~ "ingen temposeksjonar sette opp i tempokartet - kan ikkje endra tempoet " -#~ "ved %1" - -#~ msgid "programming error: no tempo section in tempo map!" -#~ msgstr "programmeringsfeil: ikkje noko tempoavsnitt i tempokartet!" - -#~ msgid "programming error: unhandled MetricSection type" -#~ msgstr "programmeringsfeil: uhandtert MetricSection-type" - -#~ msgid "tempo map asked for BBT time at frame %1\n" -#~ msgstr "tempokartet spurte for BBT-tid pÃ¥ ramma %1\n" - -#~ msgid "tempo map asked for frame time at bar < 1 (%1)\n" -#~ msgstr "tempokartet spurde etter rammetid ved takt < 1 (%1)\n" - -#~ msgid "Tempo map: could not set new state, restoring old one." -#~ msgstr "" -#~ "Tempokart: greidde ikkje fastsetja den nye tilstanden, hentar fram att " -#~ "den gamle." - -#~ msgid "Multiple meter definitions found at %1" -#~ msgstr "Fann fleire taktartsdefinisjonar ved %1" - -#~ msgid "Multiple tempo definitions found at %1" -#~ msgstr "Fann fleire tempodefinisjonar ved %1" - -#~ msgid "Tempo map" -#~ msgstr "Tempokart" - -#~ msgid "Tempo Map" -#~ msgstr "Tempokart" - -#~ msgid "Tempo marks: " -#~ msgstr "Tempomerke:" - -#~ msgid "" -#~ "\n" -#~ "Meter marks: " -#~ msgstr "" -#~ "\n" -#~ "Taktmerke:" - -#~ msgid "" -#~ "This will replace the current tempo map!\n" -#~ "Are you shure you want to do this?" -#~ msgstr "" -#~ "Dette byter ut det gjeldande tempokartet!\n" -#~ "Er du sikker pÃ¥ at du vil gjera dette?" - -#~ msgid "Node for Bundle has no \"name\" property" -#~ msgstr "Punkt for bundelen har ingen \"namn\"-eigenskap" - -#~ msgid "Unknown node \"%s\" in Bundle" -#~ msgstr "Ukjend node \"%s\" i bundelen" - -#~ msgid "Node for Channel has no \"name\" property" -#~ msgstr "Punktet for kanalen har ingen \"namn\"-eigenskap" - -#~ msgid "Node for Channel has no \"type\" property" -#~ msgstr "Punktet for kanalen har ingen \"type\"-eigenskap" - -#~ msgid "Node for Port has no \"name\" property" -#~ msgstr "Punktet for porten har ingen \"namn\"-eigenskap" - -#~ msgid "Splice" -#~ msgstr "Splitt" - -#~ msgid "Slide" -#~ msgstr "Gli" - -#~ msgid "Lock" -#~ msgstr "LÃ¥s" - -#~ msgid "programming error: unknown edit mode string \"%1\"" -#~ msgstr "programmeringsfeil: ukjend redigeringsmodus-streng \"%1\"" - -#~ msgid "MIDI Timecode" -#~ msgstr "MIDI-tidskode" - -#~ msgid "MTC" -#~ msgstr "MTC" - -#~ msgid "MIDI Clock" -#~ msgstr "MIDI-klokke" - -#~ msgid "JACK" -#~ msgstr "JACK" - -#~ msgid "programming error: unknown sync source string \"%1\"" -#~ msgstr "programmeringsfeil: ukjend synkkjeldestreng \"%1\"" - -#~ msgid "M-Clock" -#~ msgstr "M-klokke" - -#~ msgid "LTC" -#~ msgstr "LTC" - -#~ msgid "programming error: unknown native header format: %1" -#~ msgstr "programmeringsfeil: ukjent opphavleg hovudformat: \"%1\"" - -#~ msgid "cannot open directory %1 (%2)" -#~ msgstr "greier ikkje opna mappa %1 (%2)" - -#~ msgid "" -#~ "programming error: non-audio Region passed to remove_overlap in audio " -#~ "playlist" -#~ msgstr "" -#~ "programmeringsfeil: ikkje-lydbolk gjeve til fjern_overlapping i " -#~ "lydspelelista" - -#~ msgid "" -#~ "programming error: non-audio Region tested for overlap in audio playlist" -#~ msgstr "" -#~ "programmeringsfeil: ikkje-lydbolk prøvd for overlapping i lydspelelista" - -#~ msgid "control protocol XML node has no name property. Ignored." -#~ msgstr "" -#~ "XML-noden for kontrollprotokollen har ingen namneeigenskap. SÃ¥g bort frÃ¥." - -#~ msgid "control protocol \"%1\" is not known. Ignored" -#~ msgstr "kontrollprotokollen \"%1\" er ukjent. SÃ¥g bort frÃ¥" - -#~ msgid "Crossfade: no \"in\" region in state" -#~ msgstr "Overtoning: Ingen \"inn\"-bolk her" - -#~ msgid "" -#~ "Crossfade: no \"in\" region %1 found in playlist %2 nor in region map" -#~ msgstr "" -#~ "Krysstoning: fann ingen \"inn\"-bolk %1, korkje i spelelista %2 eller i " -#~ "bolkkartet" - -#~ msgid "Crossfade: no \"out\" region in state" -#~ msgstr "Overtoning: ingen \"ut\"-bolk her" - -#~ msgid "" -#~ "Crossfade: no \"out\" region %1 found in playlist %2 nor in region map" -#~ msgstr "" -#~ "Krysstoning: fann ingen \"ut\"-bolk %1, korkje i spelelista %2 eller i " -#~ "bolkkartet" - -#~ msgid "old-style crossfade information - no position information" -#~ msgstr "gamaldags overtoningsinformasjon - ingen posisjonsinformasjon" - -#~ msgid "Removed open file count limit. Excellent!" -#~ msgstr "Fjerna teljegrensa for opne filer. Steikande bra!" - -#~ msgid "%1 will be limited to %2 open files" -#~ msgstr "%1 vil vera avgrensa til Ã¥ opna %2 filer" - -#~ msgid "midiui" -#~ msgstr "midibrukarflate" - -#~ msgid "Chunk %1 uses an unknown playlist \"%2\"" -#~ msgstr "Beten %1 bruker ei ukjend speleliste, \"%2\"" - -#~ msgid "Chunk %1 contains misformed playlist information" -#~ msgstr "Beten %1 inneheld feilforma spelelisteinformasjon" - -#~ msgid "Cannot become GUI app" -#~ msgstr "Greier ikkje bli grafisk program" - -#~ msgid "" -#~ "%1: could not find configuration file (ardour.rc), canvas will look " -#~ "broken." -#~ msgstr "" -#~ "%1: greidde ikkje finna oppsettsfila (ardour.rc), arbeidsomrÃ¥det vil sjÃ¥ " -#~ "øydelagt ut." - -#~ msgid "signal" -#~ msgstr "signal" - -#~ msgid "Midi" -#~ msgstr "Midi" - -#~ msgid "editor" -#~ msgstr "redigering" - -#~ msgid "Template \"%1\" already exists - template not renamed" -#~ msgstr "Malen \"%1\" finst alt - malen fekk ikkje nytt namn" - -#~ msgid "Session: cannot create Named Selection from XML description." -#~ msgstr "Økt: greier ikkje laga namngjeve utval ut frÃ¥ XML-skildringa." - -#~ msgid "Unable to create a backup copy of file %1 (%2)" -#~ msgstr "Greidde ikkje laga tryggingskopi av fila %1 (%2)" - -#~ msgid "illegal or badly-formed string used for path (%1)" -#~ msgstr "ulovleg eller feilforma streng brukt for stigen (%1)" - -#~ msgid "path (%1) is ambiguous" -#~ msgstr "stigen (%1) er tvitydig" - -#~ msgid "Could not move capture file from %1" -#~ msgstr "Greidde ikkje flytta opptaksfila frÃ¥ %1" - -#~ msgid "Cannot create temporary MIDI port to determine MIDI buffer size" -#~ msgstr "" -#~ "Greier ikkje laga mellombels MIDI-port for Ã¥ avgjera MIDI-bufferstorleiken" - -#~ msgid "Pan %1" -#~ msgstr "Pan %1" - -#~ msgid "rename from %1 to %2 failed: %3)" -#~ msgstr "omdøyping frÃ¥ %1 til %2 mislukka: %3)" - -#~ msgid "Using %2 threads on %1 CPUs" -#~ msgstr "Brukar %2 trÃ¥dar pÃ¥ %1 prosessorar" - -#~ msgid "direction" -#~ msgstr "retning" - -#~ msgid "" -#~ "badly formatted pan automation event record at line %1 of %2 (ignored) " -#~ "[%3]" -#~ msgstr "" -#~ "feilformatert handlingsopptak av panoreringsautomasjon pÃ¥ linja %1 av %2 " -#~ "(hoppa over) [%3]" - -#~ msgid "programming error:" -#~ msgstr "programmeringsfeil: " - -#~ msgid "cannot open pan automation file %1 (%2)" -#~ msgstr "greier ikkje opna panoreringsautomasjonsfil %1 (%2)" - -#~ msgid "badly formed version number in pan automation event file \"%1\"" -#~ msgstr "" -#~ "feilforma versjonsnummer i handlingsfila for panoreringsautomasjon \"%1\"" - -#~ msgid "" -#~ "no version information in pan automation event file \"%1\" (first line = " -#~ "%2)" -#~ msgstr "" -#~ "ingen versjonsinformasjon i handlingsfila for panoreringsautomasjon " -#~ "\"%1\" (fyrste linja= %2)" - -#~ msgid "too many panner states found in pan automation file %1" -#~ msgstr "for mange panoreringstilstandar i automasjonsfila %1" - -#~ msgid "C" -#~ msgstr "S" - -#~ msgid "lr" -#~ msgstr "vh" - -#~ msgid "width" -#~ msgstr "breidd" - -#~ msgid "cannot open click emphasis soundfile %1 (%2)" -#~ msgstr "greier ikkje opna uthevings-klikklydfila %1 (%2)" - -#~ msgid "cannot read data from click emphasis soundfile" -#~ msgstr "greier ikkje lesa data frÃ¥ uthevings-klikklydfila" - -#~ msgid "Reset Control Protocols" -#~ msgstr "Still tilbake kontrollprotokollar" - -#~ msgid "Session: cannot create session stub sounds dir \"%1\" (%2)" -#~ msgstr "Økt: greier ikkje laga mappa \"%1\" for lydfilbetar (%2)" - -#~ msgid "Session: cannot create session stub midi dir \"%1\" (%2)" -#~ msgstr "Økt: greier ikkje laga midibetemappa \"%1\" for økta (%2)" - -#~ msgid "could not allocate file %1" -#~ msgstr "greidde ikkje tildela fila %1" - -#~ msgid "" -#~ "AudioDiskstream %1: cannot read xfade samples %2 from playlist at frame %3" -#~ msgstr "" -#~ "Lyd-diskstraum %1: greidde ikkje lesa krysstoningspunkt %2 frÃ¥ " -#~ "spelelista, ramme %3" - -#~ msgid "%1: cannot create region from pending capture sources" -#~ msgstr "%1: greidde ikkje laga bolk frÃ¥ ventande opptakskjelder" - -#~ msgid "register input port called before engine was started" -#~ msgstr "registerinngangsporten vart oppkalla før tenaren starta" - -#~ msgid "register output port called before engine was started" -#~ msgstr "registerutgangsporten vart oppkalla før tenaren starta" - -#~ msgid "AudioEngine: connection already exists: %1 (%2) to %3 (%4)" -#~ msgstr "AudioEngine: tilkoplinga finst frÃ¥ før: %1 (%2) til %3 (%4)." - -#~ msgid "" -#~ "Disconnected from JACK while reconnecting. You should quit Ardour now." -#~ msgstr "Kopla frÃ¥ JACK ved ny tilkopling. Du bør avslutta Ardour no." - -#~ msgid "could not reconnect %1 and %2 (err = %3)" -#~ msgstr "greidde ikkje kopla til att %1 og %2 (feil = %3)" - -#~ msgid "" -#~ "This is an old Ardour session that does not have\n" -#~ "sufficient information for rendered FX" -#~ msgstr "" -#~ "Dette er ei gamal Ardour-økt som ikkje har\n" -#~ "nok informasjon for oppteikna effektar" - -#~ msgid "in 1+2" -#~ msgstr "inn 1+2" - -#~ msgid "AudioTrack: audio diskstream \"%1\" not known by session" -#~ msgstr "Lydspor: økta kjenner ikkje att lyd-diskstraumen \"%1\"" - -#~ msgid "programming error: AudioTrack given state without diskstream!" -#~ msgstr "Programmeringsfeil: Ardour fekk tilstand utan diskstraum1" - -#~ msgid "ill-formed MIDI port specification in ardour rcfile (ignored)" -#~ msgstr "" -#~ "feilforma MIDI-portspesifikasjon oppgjeve i ardour-rc-fila (hoppa over)" - -#~ msgid "Node for Connection has no \"connections\" property" -#~ msgstr "Punkt for tilkopling har ingen \"tilkopingar\"-eigenskapar" - -#~ msgid "Starting OSC" -#~ msgstr "Startar OSC" - -#~ msgid "no MIDI ports specified: no MMC or MTC control possible" -#~ msgstr "" -#~ "ingen MIDI-portar er spesifiserte. MMC- eller MTC-kontroll er ikkje " -#~ "mogleg." - -#~ msgid "Configuring MIDI ports" -#~ msgstr "Set opp MIDI-portar" - -#~ msgid "default" -#~ msgstr "standard" - -#~ msgid "No MMC control (MIDI port \"%1\" not available)" -#~ msgstr "Ingen MMC-kontroll (MIDI-porten \"%1\" er ikkje tilgjengeleg)" - -#~ msgid "No MTC support (MIDI port \"%1\" not available)" -#~ msgstr "Inga MTC-støtte (MIDI-porten \"%1\" er ikkje tilgjengeleg)" - -#~ msgid "No MIDI parameter support (MIDI port \"%1\" not available)" -#~ msgstr "" -#~ "Ingen MIDI-parameterstøtte (MIDI-porten \"%1\" er ikkje tilgjengeleg)" - -#~ msgid "" -#~ "converting %1\n" -#~ "(resample from %2KHz to %3KHz)\n" -#~ "(%4 of %5)" -#~ msgstr "" -#~ "omdannar %1\n" -#~ "(ompunkting frÃ¥ %1KHz til %3KHz)\n" -#~ "(%4 av %5)" - -#~ msgid "" -#~ "converting %1\n" -#~ "(%2 of %3)" -#~ msgstr "" -#~ "omdannar %1\n" -#~ "(%2 av %3)" - -#~ msgid "XML node describing a plugin insert is missing the `%1' information" -#~ msgstr "" -#~ "XML-punktet som skildrar tilleggsprogramtappinga manglar '%1'-informasjon" - -#~ msgid "XML node describing insert is missing a Redirect node" -#~ msgstr "XML-punktet som skildrar tappinga manglar omdirigeringspunkt" - -#~ msgid "" -#~ "XML node describing a port automation is missing the `%1' information" -#~ msgstr "XML-punktet som skildrar portautomasjonen manglar '%1'-informasjon" - -#~ msgid "%1: cannot open automation event file \"%2\"" -#~ msgstr "%1: greier ikkje opna automasjonshendingsfila \"%2\"" - -#~ msgid "badly formed version number in automation event file \"%1\"" -#~ msgstr "feilforma versjonsnummer i automasjonshendingsfila \"%1\"" - -#~ msgid "no version information in automation event file \"%1\"" -#~ msgstr "ingen versjonsinformasjon i automasjonshendingsfila \"%1\"" - -#~ msgid "badly formatted automation event record at line %1 of %2 (ignored)" -#~ msgstr "" -#~ "feilformatert automasjonshendingsopptak pÃ¥ linje %1 av %2 (hoppa over)" - -#~ msgid "IO::connecting_became_legal() called without a pending state node" -#~ msgstr "" -#~ "IO::connecting_became_legal()-funksjonen vart oppkalla utan ventande " -#~ "tilstandsnode" - -#~ msgid "IO::ports_became_legal() called without a pending state node" -#~ msgstr "" -#~ "IO::ports_became_legal()-funksjonen vart oppkalla utan ventande " -#~ "tilstandsnode" - -#~ msgid "improper output channel list in XML node (%1)" -#~ msgstr "feil utgangskanalliste i XML-punktet %1" - -#~ msgid "you cannot use colons to name objects with I/O connections" -#~ msgstr "du kan ikkje bruka kolon i namn pÃ¥ objekt med I/U-tilkoplingar" - -#~ msgid "badly-formed positional data for Multi2dPanner - ignored" -#~ msgstr "feilforma posisjonsdata for Multi2dPanner - hoppa over" - -#~ msgid "playlist const copy constructor called" -#~ msgstr "konstant kopikonstruktør for speleliste vart oppkalla" - -#~ msgid "playlist non-const copy constructor called" -#~ msgstr "ikkje-konstant kopikonstruktør for speleliste vart oppkalla" - -#~ msgid "%1: bounds changed received for region (%2)not in playlist" -#~ msgstr "%1: mottok grenseendring for bolken (%2) - ikkje i spelelista" - -#~ msgid "Playlist: cannot reset region state from XML" -#~ msgstr "Speleliste: greier ikkje stilla bolkstatusen tilbake frÃ¥ XML" - -#~ msgid "programming error: unknown Redirect type in Redirect::Clone!\n" -#~ msgstr "" -#~ "programmeringsfeil: ukjend omdirigeringstype i Redirect::Clone-" -#~ "funksjonen!\n" - -#~ msgid "%2: badly formatted node name in XML automation state, ignored" -#~ msgstr "%2: feilforma nodenamn i XML-automasjonsstatusen, sÃ¥g bort frÃ¥" - -#~ msgid "%1: cannot load automation data from XML" -#~ msgstr "%1: greier ikkje lasta automasjonsdata frÃ¥ XML" - -#~ msgid "incorrect XML node \"%1\" passed to Redirect object" -#~ msgstr "feil XML-punkt, \"%1\", vart sendt til omdirigeringsobjektet" - -#~ msgid "XML node describing an IO is missing an IO node" -#~ msgstr "XML-punktet som skildrar IU manglar eit IU-punkt" - -#~ msgid "XML node describing a redirect is missing the `active' field" -#~ msgstr "XML-punktet som skildrar ei omdirigering manglar 'aktiv'-feltet" - -#~ msgid "XML node describing a redirect is missing the `placement' field" -#~ msgstr "" -#~ "XML-punktet som skildrar ei omdirigering manglar 'plassering'-feltet" - -#~ msgid "XMLNode describing a Region is incomplete (no name)" -#~ msgstr "XML-punktet som skildrar ein bolk er ufullstendig (utan namn)" - -#~ msgid "Session: XMLNode describing a Region is incomplete (no id)" -#~ msgstr "Økt: XML-punktet som skildrar ein bolk er ufullstendig (ingen id)" - -#~ msgid "Send construction failed" -#~ msgstr "Send-konstruksjon mislukka" - -#~ msgid "Insert XML node has no type property" -#~ msgstr "Tappings-XML-punkt har ingen typeeigenskapar" - -#~ msgid "Route %1: unknown edit group \"%2 in saved state (ignored)" -#~ msgstr "" -#~ "Ruting %1: ukjend redigert gruppe \"%2 i lagra tilstand (hoppa over)" - -#~ msgid "Route %1: unknown mix group \"%2 in saved state (ignored)" -#~ msgstr "Ruting %1: ukjend miksgruppe \"%2 i lagra tilstand (hoppa over)" - -#~ msgid "could not connect %1 to %2" -#~ msgstr "greidde ikkje kopla %1 til %2" - -#~ msgid "XML node describing a send is missing a Redirect node" -#~ msgstr "XML-punktet som skildrar ein send manglar eit omdirigeringspunkt" - -#~ msgid "cannot setup master inputs" -#~ msgstr "greier ikkje setja opp masterinngangar" - -#~ msgid "Master Out" -#~ msgstr "Master ut" - -#~ msgid "Catch up with send/insert state" -#~ msgstr "Ta att send/omvegstatus" - -#~ msgid "OSC startup" -#~ msgstr "OSC-oppstart" - -#~ msgid "cannot set up master outputs" -#~ msgstr "greier ikkje setja opp masterutgangar" - -#~ msgid "" -#~ "Session::add_region() ignored a null region. Warning: you might have lost " -#~ "a region." -#~ msgstr "" -#~ "Økt::add_region() sÃ¥g bort frÃ¥ ein null-bolk. Pass pÃ¥: det kan henda du " -#~ "har mista ein bolk." - -#~ msgid "programming error: unknown type of Insert created!" -#~ msgstr "programmeringsfeil: det er laga ein ukjend tappingstype!" - -#~ msgid "programming error: unknown type of Redirect created!" -#~ msgstr "programmeringsfeil: det er laga ein ukjend omdirigeringstype!" - -#~ msgid "programming error: unknown type of Redirect deleted!" -#~ msgstr "programmeringsfeil: det er sletta ein ukjend omdirigeringstype!" - -#~ msgid "Memory allocation error: posix_memalign (%1 * %2) failed (%3)" -#~ msgstr "Minnetildelingsfeil: posix_memalign (%1 * %2) mislukka (%3)" - -#~ msgid "" -#~ "Programming error: get_silent_buffers() called for %1 buffers but only %2 " -#~ "exist" -#~ msgstr "" -#~ "Programmeringsfeil: get_silent_buffers() oppropt for %1 bufrar, men det " -#~ "finst berre %2" - -#~ msgid "GlobalRouteStateCommand has no \"type\" node, ignoring" -#~ msgstr "GlobalRouteStateCommand har ingen \"type\"-node, ser bort frÃ¥" - -#~ msgid "unknown type of GlobalRouteStateCommand (%1), ignored" -#~ msgstr "ukjent slag GlobalRouteStateCommand (%1), ser bort frÃ¥" - -#~ msgid "" -#~ "global route state command has no \"%1\" node, ignoring entire command" -#~ msgstr "" -#~ "allmenn rutestatuskommando har ingen \"%1\"-node, ser bort frÃ¥ heile " -#~ "kommandoen" - -#~ msgid "" -#~ "cannot find track/bus \"%1\" while rebuilding a global route state " -#~ "command, ignored" -#~ msgstr "" -#~ "greier ikkje finna spor/buss \"%1\" ved oppattbygging ein allmenn " -#~ "rutestatuskommando, sÃ¥g bort frÃ¥" - -#~ msgid "" -#~ "global route meter state command has no \"%1\" node, ignoring entire " -#~ "command" -#~ msgstr "" -#~ "allmenn kommando for rutemælestatus har ingen \"%1\"-node, ser bort frÃ¥ " -#~ "heile kommandoen" - -#~ msgid "Export: no output file specified" -#~ msgstr "Eksport: du har ikkje skrive inn ut-fil" - -#~ msgid "illegal frame range in export specification" -#~ msgstr "ulovleg " - -#~ msgid "Bad data width size. Report me!" -#~ msgstr "Feil storleik pÃ¥ databreidd. Sei frÃ¥ om dette til utviklarane!" - -#~ msgid "Export: cannot open output file \"%1\" (%2)" -#~ msgstr "Eksport: greier ikkje opna utfila \"%1\" (%2)" - -#~ msgid "cannot initialize sample rate conversion: %1" -#~ msgstr "greier ikkje byrja punktrateomdanning: %1" - -#~ msgid "warning, leftover frames overflowed, glitches might occur in output" -#~ msgstr "Ã¥tvaring: nokre rammer vart til overs i, det kan vera hakk i utfila" - -#~ msgid "Export: could not write data to output file (%1)" -#~ msgstr "Eksport: greidde ikkje skriva data til utfil (%1)" - -#~ msgid "Ardour is slaved to MTC - port cannot be reset" -#~ msgstr "Ardour er slave til ein MTC-port og kan ikkje nullstillast" - -#~ msgid "unknown port %1 requested for MTC" -#~ msgstr "førespurnad til ukjend MTC-port %1" - -#~ msgid "Error reading from MIDI port %1" -#~ msgstr "Greidde ikkje lesa frÃ¥ MIDI-port %1" - -#~ msgid "MMC: cannot send command %1%2%3" -#~ msgstr "MMC: greier ikkje senda kommandoen %1%2%3" - -#~ msgid "UI: cannot set O_NONBLOCK on signal read pipe (%1)" -#~ msgstr "Grensesnitt: O_NONBLOCK fastsett for signallesingsrøyr (%1)" - -#~ msgid "UI: cannot set O_NONBLOCK on signal write pipe (%1)" -#~ msgstr "" -#~ "Grensesnitt: greier ikkje fastsetja O_NONBLOCK for signalskrivingsrøyr " -#~ "(%1)" - -#~ msgid "Session: could not create transport thread" -#~ msgstr "Økt: greidde ikkje laga transporttrÃ¥d" - -#~ msgid "cannot send signal to midi thread! (%1)" -#~ msgstr "greier ikkje senda signal til MIDI-trÃ¥den! (%1)" - -#~ msgid "MIDI thread poll failed (%1)" -#~ msgstr "Spørjing pÃ¥ MIDI-trÃ¥d mislukka (%1)" - -#~ msgid "Error on transport thread request pipe" -#~ msgstr "Feil pÃ¥ transporttrÃ¥dspørjingsrøyr" - -#~ msgid "Error reading from transport request pipe" -#~ msgstr "Greidde ikkje lesa frÃ¥ transportspørjingsrøyr" - -#~ msgid "start" -#~ msgstr "start" - -#~ msgid "Session: XML state has no connections section" -#~ msgstr "Økt: XML-fila har ikkje noko avsnitt om tilkoplingar" - -#~ msgid "cannot create dead sounds directory \"%1\"; ignored" -#~ msgstr "greier ikkje laga daudlydmappa \"%1\", hoppa over" - -#~ msgid "cannot create peak file directory \"%1\"; ignored" -#~ msgstr "greier ikkje laga toppfilmappa \"%1\", hoppa over" - -#~ msgid "cannot remove dead sound file %1 (%2)" -#~ msgstr "greier ikkje fjerna daudlyd-fila %1 (%2)" - -#~ msgid "could not remove corrupt history file %1" -#~ msgstr "greidde ikkje fjerna den øydelagde historiefila %1" - -#~ msgid "Loading history from '%1'." -#~ msgstr "Lastar historie frÃ¥ '%1'." - -#~ msgid "please stop the transport before adjusting slave settings" -#~ msgstr "hugs Ã¥ stoppa spelinga før du justerer slaveinnstillingar" - -#~ msgid "No MTC port defined: MTC slaving is impossible." -#~ msgstr "Ingen MTC-port er gjeven. MTC-slaving er umogleg." - -#~ msgid "" -#~ "cannot set broadcast info for audio file %1; Dropping broadcast info for " -#~ "this file" -#~ msgstr "" -#~ "greier ikkje fastsetja kringkastingsinformasjon for lydfila %1, hoppar " -#~ "over kringkastingsinformasjon for denne fila" - -#~ msgid "Internal" -#~ msgstr "Intern" - -#~ msgid "Bad node sent to VSTPlugin::set_state" -#~ msgstr "Feil punkt sendt til VSTPlugin::set_state-funksjonen" - -#~ msgid "no support for presets using chunks at this time" -#~ msgstr "" -#~ "det er ikkje støtte for ferdigprogram som brukar bitar for augneblinken" - -#~ msgid "VST plugin called with zero frames - please notify Ardour developers" -#~ msgstr "" -#~ "VST-innstikk pÃ¥kalla med null rammer - sei frÃ¥ til Ardour-utviklarane" - -#~ msgid "VST: cannot load module from \"%1\"" -#~ msgstr "VST: greier ikkje lasta modul frÃ¥ \"%1\"" - -#~ msgid "You asked ardour to not use any VST plugins" -#~ msgstr "Du sa at Ardour ikkje skulle bruka nokon VST-tilleggsprogram" - -#~ msgid "CoreAudioSource: cannot open file \"%1\" for %2" -#~ msgstr "CoreAudioSource: greier ikkje opna fila \"%1\" for %2" - -#~ msgid "Could not create XML version of property list" -#~ msgstr "Greidde ikkje laga XML-versjon av eigenskaplista" - -#~ msgid "Cannot open preset file %1 (%2)" -#~ msgstr "Greier ikkje opna ferdigoppsettfila %1 (%2)" - -#~ msgid "Exception thrown during AudioUnit plugin loading - plugin ignored" -#~ msgstr "" -#~ "Det vart kasta inn eit unntak under AudioUnit-innstikklastinga - sÃ¥g bort " -#~ "frÃ¥ innstikket" - -#~ msgid "AudioUnit: Could not convert CAComponent to CAAudioUnit" -#~ msgstr "Lydeinging: Greidde ikkje gjera om CAComponent til CAAudioUnit" - -#~ msgid "AUPlugin: cannot set processing block size" -#~ msgstr "AUPlugin: Greier ikkje setja opp blokkstorleik for handsaming" - -#~ msgid "AUPlugin: %1 cannot initialize plugin (err = %2)" -#~ msgstr "AUPlugin: %1 greier ikkje starta innstikk (feil = %2)" - -#~ msgid "AU %1 has zero outputs - configuration ignored" -#~ msgstr "AU %1 har ingen utgangar - sÃ¥g bort frÃ¥ oppsettet" - -#~ msgid "AU plugin %1 has illegal IO configuration (-2,-2)" -#~ msgstr "AU-innstikket %1 har ugyldig IU-oppsett (-2,-2)" - -#~ msgid "AUPlugin: could not set stream format for %1/%2 (err = %3)" -#~ msgstr "" -#~ "AUPlugin: greidde ikkje setja opp straumformat for %1/%2 (feil = %3)" - -#~ msgid "AUPlugin: %1 input_streams() called without any format set!" -#~ msgstr "AUPlugin: %1 input_streams() pÃ¥kalla utan oppsett format!" - -#~ msgid "AUPlugin: %1 output_streams() called without any format set!" -#~ msgstr "AUPlugin: %1 output_streams() pÃ¥kalla utan oppsett format!" - -#~ 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" - -#~ msgid "" -#~ "Restoring AudioUnit settings is not supported in this build of Ardour. " -#~ "Consider paying for a newer version" -#~ msgstr "" -#~ "Du kan ikkje henta framatt AudioUnit-innstillingar i denne versjonen av " -#~ "Ardour. Du bør vurdera Ã¥ betala for ein nyare verjson" - -#~ msgid "" -#~ "Loading AudioUnit presets 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 "Cannot create user plugin presets folder (%1)" -#~ msgstr "Greier ikkje laga mappe for brukarlaga innstikkoppsett (%1)" - -#~ 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...)" - -#~ msgid "Cannot get I/O configuration info for AU %1" -#~ msgstr "Greier ikkje fÃ¥ tak i I/U-oppsettsinfo for AU %1" - -#~ msgid "Checking AudioUnit: %1" -#~ msgstr "Sjekkar AudioUnit: %1" - -#~ msgid "Could not load AU plugin %1 - ignored" -#~ msgstr "Greier ikkje lasta AU-innstikk %1 - sÃ¥g bort frÃ¥" - -#~ msgid "could not save AU cache to %1" -#~ msgstr "greidde ikkje lagra AU-mellomlageret til %1" - -#~ msgid "initial state" -#~ msgstr "opphavstilstand" - -#~ msgid "xfade change" -#~ msgstr "overtoningsendring" - -#~ msgid "region modified" -#~ msgstr "bolk endra" - -#~ msgid "cannot activate JACK client" -#~ msgstr "greier ikkje slÃ¥ pÃ¥ JACK-klienten" - -#~ msgid "get_nth_physical called before engine was started" -#~ msgstr "get_nth_physical vart oppkalla før tenaren starta" - -#~ msgid "get_port_total_latency() called with no JACK client connection" -#~ msgstr "" -#~ "get_port_total_latency()-funksjonen vart oppkalla utan tilknyting til " -#~ "JACK-klienten" - -#~ msgid "get_port_total_latency() called before engine was started" -#~ msgstr "" -#~ "get_port_total_latency()-funksjonen vart oppkalla før tenaren starta" - -#~ msgid "Unable to connect to JACK server" -#~ msgstr "Greidde ikkje kopla til JACK-tenaren" - -#~ msgid "Could not connect to JACK server as \"%1\"" -#~ msgstr "Greidde ikkje kopla til JACK-tenaren som \"%1\"" - -#~ msgid "JACK server started" -#~ msgstr "JACK-tenaren er starta" - -#~ msgid "cannot shutdown connection to JACK" -#~ msgstr "greier ikkje kopla frÃ¥ JACK" - -#~ msgid "fade in change" -#~ msgstr "inntoningsendring" - -#~ msgid "envelope change" -#~ msgstr "omhyllingsendring" - -#~ msgid "poll on peak request pipe failed (%1)" -#~ msgstr "undersøking ved toppspørjingsrøyr gjekk gale (%1)" - -#~ msgid "Error on peak thread request pipe" -#~ msgstr "Feil pÃ¥ topptrÃ¥dspørjingsrøyr" - -#~ msgid "Error reading from peak request pipe" -#~ msgstr "Feil ved lesing frÃ¥ toppspørjingsrøyr" - -#~ msgid "UI: cannot set O_NONBLOCK on peak request pipe (%1)" -#~ msgstr "Brukarflate: Kan ikkje bruka O_NONBLOCK ved toppspørjingsrøyr (%1)" - -#~ msgid "AudioSource: could not create peak thread" -#~ msgstr "Lydkjelde: greidde ikkje laga topptrÃ¥d" - -#~ msgid "initial" -#~ msgstr "fyrste" - -#~ msgid "cleared" -#~ msgstr "tom" - -#~ msgid "added event" -#~ msgstr "la til hending" - -#~ msgid "removed event" -#~ msgstr "fjerna hending" - -#~ msgid "removed multiple events" -#~ msgstr "fjerna fleire hendingar" - -#~ msgid "removed range" -#~ msgstr "fjerna omrÃ¥de" - -#~ msgid "event range adjusted" -#~ msgstr "justert hendingsomrÃ¥de" - -#~ msgid "event adjusted" -#~ msgstr "justert hending" - -#~ msgid "cut/copy/clear" -#~ msgstr "klypp/kopier/tøm" - -#~ msgid "copy" -#~ msgstr "kopier" - -#~ msgid "active changed" -#~ msgstr "endra pÃ¥/av" - -#~ msgid "MIDI port specifications for \"%1\" are not understandable." -#~ msgstr "MIDI-portspesifikasjonane for \"%1\" er uforstÃ¥elege." - -#, fuzzy -#~ msgid "resampling audio" -#~ msgstr "samplar om lyd" - -#~ msgid "Import: cannot open converted sound file \"%1\"" -#~ msgstr "Import: kan ikkje opna den omkoda lydfila \"%1\"" - -#~ msgid "" -#~ "Session::import_audiofile: cannot open new file source for channel %1" -#~ msgstr "Økt::import_lydfil: kan ikkje opna ny kjeldefil for kanalen %1" - -#~ msgid "Import/SRC: could not open input file: %1" -#~ msgstr "Import/kjelde: greidde ikkje opna innfila: %1" - -#~ msgid "Import/SRC: could not open output file: %1" -#~ msgstr "Import/kjelde: greidde ikkje opna utfila: %1" - -#~ msgid "XML node describing insert is missing the `id' field" -#~ msgstr "XML-punktet som skildrar tappinga manglar 'id'-feltet" - -#~ msgid "PortInsert: cannot add input port" -#~ msgstr "PortInsert: greier ikkje leggja til inngangsport" - -#~ msgid "PortInsert: cannot add output port" -#~ msgstr "PortInsert: greier ikkje leggja til utgangsport" - -#~ msgid "%s/out %u" -#~ msgstr "%s/ut %u" - -#~ msgid "Unknown connection \"%1\" listed for output of %2" -#~ msgstr "Ukjend tilkopling \"%1\" lista opp for %2-utgangen" - -#~ msgid "No output connections available as a replacement" -#~ msgstr "Det finst ingen utgangstilkoplingar som kan brukast som erstatting" - -#~ msgid "%1: could not open automation event file \"%2\"" -#~ msgstr "%1: greier ikkje opna automasjonshendingsfila \"%2\"" - -#~ msgid "mismatched automation event file version (%1)" -#~ msgstr "ikkje like versjonsnummer i automasjonshendingsfila (%1)" - -#~ msgid "loaded from disk" -#~ msgstr "lasta frÃ¥ disk" - -#~ msgid "automation write/touch" -#~ msgstr "automasjonsskriving/rørsle" - -#~ msgid "clear" -#~ msgstr "tøm" - -#~ msgid "clear markers" -#~ msgstr "tøm merke" - -#~ msgid "clear ranges" -#~ msgstr "tøm omrÃ¥de" - -#~ msgid "add" -#~ msgstr "legg til" - -#~ msgid "remove" -#~ msgstr "fjern" - -#~ msgid "automation write pass" -#~ msgstr "automasjonsskriveomgang" - -#~ msgid "error writing pan automation file (%s)" -#~ msgstr "greidde ikkje skriva panoreringsautomasjonsfil (%s)" - -#~ msgid "cannot open pan automation file \"%1\" for saving (%2)" -#~ msgstr "" -#~ "kan ikkje opna panoreringsautomasjonsfil \"%1\" for Ã¥ lagra henne (%2)" - -#~ msgid "mismatched pan automation event file version (%1)" -#~ msgstr "" -#~ "handlingsfila for panoreringsautomasjon har versjonsnummer som ikkje " -#~ "stemmer overeins (%1)" - -#~ msgid "remove region" -#~ msgstr "fjern bolk" - -#~ msgid "separate" -#~ msgstr "del opp" - -#~ msgid "cut" -#~ msgstr "klypp" - -#~ msgid "duplicate" -#~ msgstr "klon" - -#~ msgid "split" -#~ msgstr "del" - -#~ msgid "nudged" -#~ msgstr "skubba" - -#~ msgid "" -#~ "programming error: Playlist::copyPlaylist called with unknown Playlist " -#~ "type" -#~ msgstr "" -#~ "programmeringsfeil: Playlist::copyPlaylist-funksjonen vart oppkalla med " -#~ "ukjend spelelistetype" - -#~ msgid "post" -#~ msgstr "etter" - -#~ msgid "Redirect: unknown placement string \"%1\" (ignored)" -#~ msgstr "Omdirigering: ukjend plasseringsstreng \"%1\" (hoppa over)" - -#~ msgid "%1: cannot open %2 to store automation data (%3)" -#~ msgstr "%1: greier ikkje opna %2 for Ã¥ lagra automasjonsdata (%3)" - -#~ msgid "%1: could not save automation state to %2" -#~ msgstr "%1: greier ikkje lagra automasjonstilstanden til %2" - -#~ msgid "" -#~ "Could not get state from Redirect (%1). Problem with save_automation" -#~ msgstr "" -#~ "Greier ikkje fÃ¥ tak i tilstanden frÃ¥ omdirigeringa (%1). Problem med Ã¥ " -#~ "lagra automasjonen." - -#~ msgid "active_changed" -#~ msgstr "aktiv_endra" - -#~ msgid "Could not get state of route. Problem with save_automation" -#~ msgstr "" -#~ "Greidde ikkje fÃ¥ tak i tilstanden for rutinga. Problem med Ã¥ lagra " -#~ "automasjon." - -#~ msgid "too many regions with names like %1" -#~ msgstr "for mange bolkar med namn som %1" - -#~ msgid "programming error: unknown type of Insert deleted!" -#~ msgstr "programmeringsfeil: ein ukjend tappingstype er sletta!" - -#~ msgid "could not backup old state file, current state not saved." -#~ msgstr "" -#~ "greidde ikkje ta tryggingskopi av den gamle tilstandsfila. Den noverande " -#~ "tilstanden er ikkje lagra." - -#~ msgid "tempoize: error creating name for new audio file based on %1" -#~ msgstr "" -#~ "lag tempo: greidde ikkje gje namn til den nye lydfila som er bygd pÃ¥ %1" - -#~ msgid "tempoize: error creating new audio file %1 (%2)" -#~ msgstr "lag tempo: greidde ikkje laga den nye lydfila %1 (%2)" - -#~ msgid "PAF (Ensoniq Paris)" -#~ msgstr "PAF (Ensoniq Paris)" - -#~ msgid "AU (Sun/NeXT)" -#~ msgstr "AU (Sun/NeXT)" - -#~ msgid "IRCAM" -#~ msgstr "IRCAM" - -#~ msgid ".au" -#~ msgstr ".au" - -#~ msgid ".ircam" -#~ msgstr ".ircam" - -#~ msgid "FileSource: cannot get host information for BWF header (%1)" -#~ msgstr "" -#~ "Filkjelde: greier ikkje finna vertsinformasjonen for BWF-tittellinja (%1)" - -#~ msgid "%1: cannot seek to %2" -#~ msgstr "%1: greier ikkje leita fram til %2" - -#~ msgid "cleared history" -#~ msgstr "tømte historia" - -#~ msgid "" -#~ "programming error: illegal state ID (%1) passed to StateManager::set_state" -#~ "() (range = 0-%2)" -#~ msgstr "" -#~ "programmeringsfeil: ulovleg tilgangs-ID (%1) send til StateManager::" -#~ "set_state()-funksjonen (omrÃ¥de = 0-%2)" - -#, fuzzy -#~ msgid "move metric" -#~ msgstr "flytt taktart" - -#~ msgid "metric removed" -#~ msgstr "fjerna taktart" - -#~ msgid "add tempo" -#~ msgstr "legg til tempo" - -#~ msgid "replace tempo" -#~ msgstr "byt ut tempo" - -#~ msgid "add meter" -#~ msgstr "legg til taktart" - -#~ msgid "replaced meter" -#~ msgstr "bytte ut taktart" - -#~ msgid "load XML data" -#~ msgstr "last XML-data" - -#~ msgid "cannot create VST chunk directory: %1" -#~ msgstr "greier ikkje laga mappe for VST-bitar: %1" - -#~ msgid "cannot check VST chunk directory: %1" -#~ msgstr "greier ikkje sjekka mappe for VST-bitar: %1" - -#~ msgid "%1 exists but is not a directory" -#~ msgstr "%1 finst, men det er ikkje ei mappe" diff --git a/libs/gtkmm2ext/po/pl.po b/libs/gtkmm2ext/po/pl.po index da5720a331..d3b3414041 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-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2008-04-10 10:54+0100\n" "Last-Translator: Piotr Zaryk <pzaryk@gmail.com>\n" "Language-Team: Polish <pl@li.org>\n" @@ -32,18 +32,18 @@ msgstr "" msgid "Log" msgstr "Log" -#: gtk_ui.cc:361 +#: gtk_ui.cc:363 msgid "" "\n" "\n" "Shortcut: " msgstr "" -#: gtk_ui.cc:633 +#: gtk_ui.cc:635 msgid "Press To Exit" msgstr "WciÅ›nij by zakoÅ„czyć" -#: gtk_ui.cc:669 +#: gtk_ui.cc:671 msgid "I'm sorry %1, I can't do that" msgstr "" @@ -71,11 +71,11 @@ msgstr "" msgid "Meta" msgstr "" -#: keyboard.cc:139 keyboard.cc:531 +#: keyboard.cc:139 keyboard.cc:535 msgid "Unknown" msgstr "" -#: keyboard.cc:542 +#: keyboard.cc:546 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" @@ -90,18 +90,3 @@ msgstr "" #: textviewer.cc:34 msgid "Close" msgstr "Zamknij" - -#~ msgid "Error" -#~ msgstr "BÅ‚Ä…d" - -#~ msgid "+" -#~ msgstr "+" - -#~ msgid "-" -#~ msgstr "-" - -#~ msgid "Paths" -#~ msgstr "PoÅ‚ożenia" - -#~ msgid "Path Chooser" -#~ msgstr "Wybór poÅ‚ożenia" diff --git a/libs/gtkmm2ext/po/pt.po b/libs/gtkmm2ext/po/pt.po index 3c0633240d..9d8427193f 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-08-15 15:09-0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2004-05-17 20:36+0200\n" "Last-Translator: Chris Ross <chris.ross@tebibyte.org>\n" "Language-Team: Portuguese\n" @@ -21,9 +21,8 @@ msgid "Unknown action name: %1" msgstr "" #: binding_proxy.cc:84 -#, fuzzy msgid "operate controller now" -msgstr "Operar controladora de MIDI agora" +msgstr "" #: bindable_button.cc:48 msgid "button cannot watch state of non-existing Controllable\n" @@ -33,18 +32,18 @@ msgstr "" msgid "Log" msgstr "" -#: gtk_ui.cc:361 +#: gtk_ui.cc:363 msgid "" "\n" "\n" "Shortcut: " msgstr "" -#: gtk_ui.cc:633 +#: gtk_ui.cc:635 msgid "Press To Exit" msgstr "" -#: gtk_ui.cc:669 +#: gtk_ui.cc:671 msgid "I'm sorry %1, I can't do that" msgstr "" @@ -72,11 +71,11 @@ msgstr "" msgid "Meta" msgstr "" -#: keyboard.cc:139 keyboard.cc:531 +#: keyboard.cc:139 keyboard.cc:535 msgid "Unknown" msgstr "" -#: keyboard.cc:542 +#: keyboard.cc:546 msgid "key bindings file not found at \"%2\" or contains errors." msgstr "" @@ -91,33 +90,3 @@ msgstr "" #: textviewer.cc:34 msgid "Close" msgstr "Fechar" - -#~ msgid "OK" -#~ msgstr "OK" - -#~ msgid "Location:" -#~ msgstr "localização:" - -#~ msgid "Browse ..." -#~ msgstr "Localizar ..." - -#~ msgid "Cancel" -#~ msgstr "Cancelar" - -#~ msgid "New folder" -#~ msgstr "Novo diretório" - -#~ msgid "Add to favorites" -#~ msgstr "Adicionar a favoritos" - -#~ msgid "Remove from favorites" -#~ msgstr "Remover de favoritos" - -#~ msgid "Show Hidden" -#~ msgstr "Mostrar ocultos" - -#~ msgid "Hide browser" -#~ msgstr "Ocultar explorador" - -#~ msgid "Rescan" -#~ msgstr "Buscar de novo" diff --git a/libs/gtkmm2ext/po/ru.po b/libs/gtkmm2ext/po/ru.po index 0d1a8e4092..d702745ea4 100644 --- a/libs/gtkmm2ext/po/ru.po +++ b/libs/gtkmm2ext/po/ru.po @@ -7,10 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: gtkmm2ext\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-10-15 21:33+0400\n" +"POT-Creation-Date: 2013-11-05 11:11-0500\n" "PO-Revision-Date: 2013-10-15 21:54+0300\n" "Last-Translator: ÐлекÑандр Прокудин <alexandre.prokoudine@gmail.com>\n" "Language-Team: руÑÑкий <>\n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -96,42 +97,3 @@ msgstr "Щелкните, чтобы превратить Ñто плавающР#: textviewer.cc:34 msgid "Close" msgstr "Закрыть" - -#~ msgid "" -#~ "\n" -#~ "\n" -#~ "Key: " -#~ msgstr "" -#~ "\n" -#~ "\n" -#~ "Клавиша: " - -#~ msgid "OK" -#~ msgstr "ОК" - -#~ msgid "Location:" -#~ msgstr "Путь:" - -#~ msgid "Browse ..." -#~ msgstr "Обзор ..." - -#~ msgid "Cancel" -#~ msgstr "Отмена" - -#~ msgid "New folder" -#~ msgstr "ÐÐ¾Ð²Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°" - -#~ msgid "Add to favorites" -#~ msgstr "Добавить в избранное" - -#~ msgid "Remove from favorites" -#~ msgstr "ИÑключить из избранного" - -#~ msgid "Show Hidden" -#~ msgstr "Показывать Ñкрытые файлы" - -#~ msgid "Hide browser" -#~ msgstr "Скрыть облаÑÑ‚ÑŒ обзора" - -#~ msgid "Rescan" -#~ msgstr "Обновить" diff --git a/libs/gtkmm2ext/utils.cc b/libs/gtkmm2ext/utils.cc index a11b431ef0..0f04b8cfe7 100644 --- a/libs/gtkmm2ext/utils.cc +++ b/libs/gtkmm2ext/utils.cc @@ -57,9 +57,9 @@ Gtkmm2ext::get_ink_pixel_size (Glib::RefPtr<Pango::Layout> layout, } void -get_pixel_size (Glib::RefPtr<Pango::Layout> layout, - int& width, - int& height) +Gtkmm2ext::get_pixel_size (Glib::RefPtr<Pango::Layout> layout, + int& width, + int& height) { layout->get_pixel_size (width, height); } @@ -415,6 +415,13 @@ Gtkmm2ext::rounded_bottom_half_rectangle (Cairo::RefPtr<Cairo::Context> context, { rounded_bottom_half_rectangle (context->cobj(), x, y, w, h, r); } + +void +Gtkmm2ext::rounded_left_half_rectangle (Cairo::RefPtr<Cairo::Context> context, double x, double y, double w, double h, double r) +{ + rounded_left_half_rectangle (context->cobj(), x, y, w, h, r); +} + void Gtkmm2ext::rounded_right_half_rectangle (Cairo::RefPtr<Cairo::Context> context, double x, double y, double w, double h, double r) { @@ -435,6 +442,19 @@ Gtkmm2ext::rounded_rectangle (cairo_t* cr, double x, double y, double w, double } void +Gtkmm2ext::rounded_left_half_rectangle (cairo_t* cr, double x, double y, double w, double h, double r) +{ + double degrees = M_PI / 180.0; + + cairo_new_sub_path (cr); + cairo_line_to (cr, x+w, y); // tr + cairo_line_to (cr, x+w, y + h); // br + cairo_arc (cr, x + r, y + h - r, r, 90 * degrees, 180 * degrees); //bl + cairo_arc (cr, x + r, y + r, r, 180 * degrees, 270 * degrees); //tl + cairo_close_path (cr); +} + +void Gtkmm2ext::rounded_right_half_rectangle (cairo_t* cr, double x, double y, double w, double h, double r) { double degrees = M_PI / 180.0; diff --git a/libs/gtkmm2ext/wscript b/libs/gtkmm2ext/wscript index 955b133d33..c87e1aa1d0 100644 --- a/libs/gtkmm2ext/wscript +++ b/libs/gtkmm2ext/wscript @@ -87,9 +87,7 @@ def build(bld): if bld.is_defined ('INTERNAL_SHARED_LIBS'): obj = bld.shlib(features = 'c cxx cshlib cxxshlib', source=gtkmm2ext_sources) # defines for this library - obj.defines = [ 'LIBGTKMM2EXT_DLL=1', 'LIBGTKMM2EXT_DLL_EXPORTS=1' ] - # internal shared libs that we use - obj.defines += [ 'LIBPBD_DLL=1' ] + obj.defines = [ 'LIBGTKMM2EXT_DLL_EXPORTS=1' ] obj.cxxflags = [ '-fvisibility=hidden' ] obj.cflags = [ '-fvisibility=hidden' ] else: diff --git a/libs/libltc/wscript b/libs/libltc/wscript index 9be750ee55..8cf7bb6389 100644 --- a/libs/libltc/wscript +++ b/libs/libltc/wscript @@ -29,25 +29,25 @@ def options(opt): autowaf.set_options(opt) def configure(conf): - conf.load('compiler_c') - autowaf.configure(conf) + if conf.is_defined('USE_EXTERNAL_LIBS'): + autowaf.check_pkg(conf, 'ltc', uselib_store='LIBLTC', atleast_version=LIBLTC_LIB_VERSION, mandatory=True) + else: + conf.load('compiler_c') + autowaf.configure(conf) def build(bld): - obj = bld(features = 'c cshlib') - obj.source = ''' - ltc.c - timecode.c - encoder.c - decoder.c - ''' - - obj.export_includes = ['.'] - obj.includes = ['.'] - obj.name = 'libltc' - obj.target = 'ltc' - obj.vnum = LIBLTC_LIB_VERSION - obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') - obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"'] + if bld.is_defined('USE_EXTERNAL_LIBS'): + return + bld (export_includes = ['ltc'], + name = 'libltc_includes' + ) + + bld.stlib (source = ['ltc.c', 'timecode.c', 'encoder.c', 'decoder.c'], + cflags = [ '-fPIC' ], + includes = ['.'], + target = 'libltc', + use = 'libltc_includes' + ) def shutdown(): autowaf.shutdown() diff --git a/libs/midi++2/ipmidi_port.cc b/libs/midi++2/ipmidi_port.cc index 4c0282f1f7..567df99335 100644 --- a/libs/midi++2/ipmidi_port.cc +++ b/libs/midi++2/ipmidi_port.cc @@ -44,9 +44,6 @@ typedef int socklen_t; inline void closesocket(int s) { ::close(s); } #endif -#include <jack/jack.h> -#include <jack/midiport.h> - #include "pbd/xml++.h" #include "pbd/error.h" #include "pbd/failed_constructor.h" diff --git a/libs/midi++2/midi++/ipmidi_port.h b/libs/midi++2/midi++/ipmidi_port.h index 3f5f1c023b..a056612514 100644 --- a/libs/midi++2/midi++/ipmidi_port.h +++ b/libs/midi++2/midi++/ipmidi_port.h @@ -41,8 +41,6 @@ #include <glibmm/threads.h> -#include <jack/types.h> - #include "pbd/xml++.h" #include "pbd/crossthread.h" #include "pbd/signals.h" diff --git a/libs/midi++2/midi++/libmidi_visibility.h b/libs/midi++2/midi++/libmidi_visibility.h index 62eebfe8e2..17b57045cf 100644 --- a/libs/midi++2/midi++/libmidi_visibility.h +++ b/libs/midi++2/midi++/libmidi_visibility.h @@ -20,37 +20,26 @@ #ifndef __libmidi_libmidi_visibility_h__ #define __libmidi_libmidi_visibility_h__ -/* _WIN32 is defined by most compilers targetting Windows, but within the - * midi 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) +#if defined(COMPILER_MSVC) #define LIBMIDIPP_DLL_IMPORT __declspec(dllimport) #define LIBMIDIPP_DLL_EXPORT __declspec(dllexport) #define LIBMIDIPP_DLL_LOCAL #else - #if __GNUC__ >= 4 - #define LIBMIDIPP_DLL_IMPORT __attribute__ ((visibility ("default"))) - #define LIBMIDIPP_DLL_EXPORT __attribute__ ((visibility ("default"))) - #define LIBMIDIPP_DLL_LOCAL __attribute__ ((visibility ("hidden"))) - #else - #define LIBMIDIPP_DLL_IMPORT - #define LIBMIDIPP_DLL_EXPORT - #define LIBMIDIPP_DLL_LOCAL - #endif + #define LIBMIDIPP_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBMIDIPP_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBMIDIPP_DLL_LOCAL __attribute__ ((visibility ("hidden"))) #endif -#ifdef LIBMIDIPP_DLL // libmidi is a DLL -#ifdef LIBMIDIPP_DLL_EXPORTS // defined if we are building the libmidi DLL (instead of using it) - #define LIBMIDIPP_API LIBMIDIPP_DLL_EXPORT +#ifdef LIBMIDIPP_STATIC // libmidi is not a DLL + #define LIBMIDIPP_API + #define LIBMIDIPP_LOCAL #else - #define LIBMIDIPP_API LIBMIDIPP_DLL_IMPORT -#endif -#define LIBMIDIPP_LOCAL LIBMIDIPP_DLL_LOCAL -#else /* static lib, not DLL */ -#define LIBMIDIPP_API -#define LIBMIDIPP_LOCAL + #ifdef LIBMIDIPP_DLL_EXPORTS // defined if we are building the libmidi DLL (instead of using it) + #define LIBMIDIPP_API LIBMIDIPP_DLL_EXPORT + #else + #define LIBMIDIPP_API LIBMIDIPP_DLL_IMPORT + #endif + #define LIBMIDIPP_LOCAL LIBMIDIPP_DLL_LOCAL #endif #endif /* __libmidi_libmidi_visibility_h__ */ diff --git a/libs/midi++2/midi++/mmc.h b/libs/midi++2/midi++/mmc.h index 2f34b9c793..ffabf863a0 100644 --- a/libs/midi++2/midi++/mmc.h +++ b/libs/midi++2/midi++/mmc.h @@ -20,7 +20,6 @@ #ifndef __midipp_mmc_h_h__ #define __midipp_mmc_h_h__ -#include <jack/types.h> #include "timecode/time.h" #include "pbd/signals.h" diff --git a/libs/midi++2/midi++/port.h b/libs/midi++2/midi++/port.h index 9515bdb5a4..6e55134bb5 100644 --- a/libs/midi++2/midi++/port.h +++ b/libs/midi++2/midi++/port.h @@ -22,7 +22,9 @@ #include <string> #include <iostream> -#include <jack/types.h> +#include <jack/types.h> /* XXX ... desirable to get rid of this but needed for + * now due to use of JackPortIsXXXX + */ #include <pthread.h> diff --git a/libs/midi++2/midi++/types.h b/libs/midi++2/midi++/types.h index a731855daa..92858eaa60 100644 --- a/libs/midi++2/midi++/types.h +++ b/libs/midi++2/midi++/types.h @@ -20,7 +20,6 @@ #ifndef __midi_types_h__ #define __midi_types_h__ -#include <jack/jack.h> #include <inttypes.h> #include "midi++/libmidi_visibility.h" @@ -34,8 +33,8 @@ namespace MIDI { typedef uint32_t timestamp_t; /** XXX: dupes from libardour */ - typedef int64_t framecnt_t; - typedef jack_nframes_t pframes_t; + typedef int64_t framecnt_t; + typedef uint32_t pframes_t; enum eventType { none = 0x0, diff --git a/libs/midi++2/midnam_patch.cc b/libs/midi++2/midnam_patch.cc index 0498168843..9dd5bc33db 100644 --- a/libs/midi++2/midnam_patch.cc +++ b/libs/midi++2/midnam_patch.cc @@ -542,7 +542,9 @@ MasterDeviceNames::channel_name_set_by_device_mode_and_channel(const std::string boost::shared_ptr<Patch> MasterDeviceNames::find_patch(const std::string& mode, uint8_t channel, const PatchPrimaryKey& key) { - return channel_name_set_by_device_mode_and_channel(mode, channel)->find_patch(key); + boost::shared_ptr<ChannelNameSet> cns = channel_name_set_by_device_mode_and_channel(mode, channel); + if (!cns) return boost::shared_ptr<Patch>(); + return cns->find_patch(key); } boost::shared_ptr<ChannelNameSet> diff --git a/libs/midi++2/mmc.cc b/libs/midi++2/mmc.cc index 1b9481c9bf..b92e686ce6 100644 --- a/libs/midi++2/mmc.cc +++ b/libs/midi++2/mmc.cc @@ -22,6 +22,7 @@ #include <map> #include "timecode/time.h" +#include "timecode/bbt_time.h" #include "pbd/error.h" @@ -37,6 +38,13 @@ using namespace std; using namespace MIDI; using namespace PBD; +/** + * As libtimecode is linked statically to libmidi++ this + * is necessary to pull in all the symbols from libtimecode + * so they are exported for other users of libtimecode. + */ +double tmp = Timecode::BBT_Time::ticks_per_beat; + static std::map<int,string> mmc_cmd_map; static void build_mmc_cmd_map () { diff --git a/libs/midi++2/port.cc b/libs/midi++2/port.cc index 1480202867..90ec260eae 100644 --- a/libs/midi++2/port.cc +++ b/libs/midi++2/port.cc @@ -22,9 +22,6 @@ #include <fcntl.h> #include <errno.h> -#include <jack/jack.h> -#include <jack/midiport.h> - #include "pbd/xml++.h" #include "pbd/error.h" #include "pbd/failed_constructor.h" diff --git a/libs/midi++2/wscript b/libs/midi++2/wscript index e27c4876ee..a42d909e65 100644 --- a/libs/midi++2/wscript +++ b/libs/midi++2/wscript @@ -50,7 +50,6 @@ def configure(conf): 'midipp', MAJOR, MINOR, MICRO, 'LIBMIDIPP_API', 'midi++/libmidi_visibility.h') autowaf.configure(conf) autowaf.check_pkg(conf, 'cppunit', uselib_store='CPPUNIT', atleast_version='1.12.0', mandatory=False) - autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.118.2') autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML') autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP', atleast_version='2.0') @@ -62,13 +61,12 @@ def build(bld): # Library if bld.is_defined ('INTERNAL_SHARED_LIBS'): obj = bld.shlib(features = 'cxx cxxshlib', source=libmidi_sources) - obj.defines = [ 'LIBMIDIPP_DLL=1', 'LIBMIDIPP_DLL_EXPORTS=1' ] - obj.defines += [ 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ] + obj.defines = [ 'LIBMIDIPP_DLL_EXPORTS=1' ] obj.cxxflags = [ '-fvisibility=hidden' ] obj.cflags = [ '-fvisibility=hidden' ] else: obj = bld.stlib(features = 'cxx cxxstlib', source=libmidi_sources) - obj.cxxflags = [ '-fPIC', '-DWITH_JACK_MIDI' ] + obj.cxxflags = [ '-fPIC' ] obj.defines = [] # everybody loves JACK @@ -76,8 +74,8 @@ def build(bld): obj.includes = ['.', '../surfaces/control_protocol', '../ardour' ] obj.name = 'libmidipp' obj.target = 'midipp' - obj.uselib = 'GLIBMM SIGCPP XML JACK OSX' - obj.use = 'libpbd libevoral libtimecode' + obj.uselib = 'GLIBMM SIGCPP XML OSX' + obj.use = 'libpbd libevoral libtimecode libtimecode_includes' obj.vnum = LIBMIDIPP_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') diff --git a/libs/panners/1in2out/panner_1in2out.cc b/libs/panners/1in2out/panner_1in2out.cc index 00024768e4..d92120c7aa 100644 --- a/libs/panners/1in2out/panner_1in2out.cc +++ b/libs/panners/1in2out/panner_1in2out.cc @@ -51,7 +51,6 @@ #include "ardour/buffer_set.h" #include "ardour/audio_buffer.h" #include "ardour/pannable.h" -#include "ardour/visibility.h" #include "i18n.h" #include "panner_1in2out.h" @@ -64,7 +63,10 @@ using namespace PBD; static PanPluginDescriptor _descriptor = { "Mono to Stereo Panner", + "http://ardour.org/plugin/panner_1in2out", + "http://ardour.org/plugin/panner_1in2out#ui", 1, 2, + 10000, Panner1in2out::factory }; @@ -333,6 +335,8 @@ XMLNode& Panner1in2out::get_state () { XMLNode& root (Panner::get_state ()); + root.add_property (X_("uri"), _descriptor.panner_uri); + /* this is needed to allow new sessions to load with old Ardour: */ root.add_property (X_("type"), _descriptor.name); return root; } diff --git a/libs/panners/1in2out/wscript b/libs/panners/1in2out/wscript index 86d1693d91..de6b21af25 100644 --- a/libs/panners/1in2out/wscript +++ b/libs/panners/1in2out/wscript @@ -22,10 +22,8 @@ def build(bld): obj = bld(features = 'cxx cxxshlib') obj.source = [ 'panner_1in2out.cc' ] obj.export_includes = ['.'] - obj.defines = [ 'PACKAGE="libardour_pan1in2out"' ] - if bld.is_defined ('INTERNAL_SHARED_LIBS'): - obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ] - obj.defines = [ 'ARDOURPANNER_DLL_EXPORTS' ] + obj.defines = [ 'PACKAGE="libardour_pan1in2out"' ] + obj.defines += [ 'ARDOURPANNER_DLL_EXPORTS' ] obj.includes = ['.'] obj.name = 'libardour_pan1in2out' obj.target = 'pan1in2out' diff --git a/libs/panners/2in2out/panner_2in2out.cc b/libs/panners/2in2out/panner_2in2out.cc index 6740f56e65..a10c4adc29 100644 --- a/libs/panners/2in2out/panner_2in2out.cc +++ b/libs/panners/2in2out/panner_2in2out.cc @@ -49,7 +49,6 @@ #include "ardour/runtime_functions.h" #include "ardour/session.h" #include "ardour/utils.h" -#include "ardour/visibility.h" #include "ardour/mix.h" #include "panner_2in2out.h" @@ -64,7 +63,10 @@ using namespace PBD; static PanPluginDescriptor _descriptor = { "Equal Power Stereo", + "http://ardour.org/plugin/panner_2in2out", + "http://ardour.org/plugin/panner_2in2out#ui", 2, 2, + 10000, Panner2in2out::factory }; @@ -465,6 +467,8 @@ XMLNode& Panner2in2out::get_state () { XMLNode& root (Panner::get_state ()); + root.add_property (X_("uri"), _descriptor.panner_uri); + /* this is needed to allow new sessions to load with old Ardour: */ root.add_property (X_("type"), _descriptor.name); return root; } diff --git a/libs/panners/2in2out/wscript b/libs/panners/2in2out/wscript index bd955e79fb..63f029f287 100644 --- a/libs/panners/2in2out/wscript +++ b/libs/panners/2in2out/wscript @@ -22,10 +22,8 @@ def build(bld): obj = bld(features = 'cxx cxxshlib') obj.source = [ 'panner_2in2out.cc' ] obj.export_includes = ['.'] - obj.defines = [ 'PACKAGE="libardour_pan2in2out"' ] - if bld.is_defined ('INTERNAL_SHARED_LIBS'): - obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ] - obj.defines = [ 'ARDOURPANNER_DLL_EXPORTS' ] + obj.defines = [ 'PACKAGE="libardour_pan2in2out"' ] + obj.defines += [ 'ARDOURPANNER_DLL_EXPORTS' ] obj.includes = ['.'] obj.name = 'libardour_pan2in2out' obj.target = 'pan2in2out' diff --git a/libs/panners/stereobalance/panner_balance.cc b/libs/panners/stereobalance/panner_balance.cc new file mode 100644 index 0000000000..d5ab96b73c --- /dev/null +++ b/libs/panners/stereobalance/panner_balance.cc @@ -0,0 +1,333 @@ +/* + Copyright (C) 2004-2011 Paul Davis + adopted from 2in2out panner by Robin Gareus <robin@gareus.org> + + 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 <inttypes.h> + +#include <cmath> +#include <cerrno> +#include <fstream> +#include <cstdlib> +#include <string> +#include <cstdio> +#include <locale.h> +#include <unistd.h> +#include <float.h> +#include <iomanip> + +#include <glibmm.h> + +#include "pbd/cartesian.h" +#include "pbd/convert.h" +#include "pbd/error.h" +#include "pbd/failed_constructor.h" +#include "pbd/xml++.h" +#include "pbd/enumwriter.h" + +#include "evoral/Curve.hpp" + +#include "ardour/audio_buffer.h" +#include "ardour/audio_buffer.h" +#include "ardour/buffer_set.h" +#include "ardour/pan_controllable.h" +#include "ardour/pannable.h" +#include "ardour/runtime_functions.h" +#include "ardour/session.h" +#include "ardour/utils.h" +#include "ardour/mix.h" + +#include "panner_balance.h" + +#include "i18n.h" + +#include "pbd/mathfix.h" + +using namespace std; +using namespace ARDOUR; +using namespace PBD; + +static PanPluginDescriptor _descriptor = { + "Stereo Balance", + "http://ardour.org/plugin/panner_balance", + "http://ardour.org/plugin/panner_balance#ui", + 2, 2, + 2000, + Pannerbalance::factory +}; + +extern "C" { PanPluginDescriptor* panner_descriptor () { return &_descriptor; } } + +Pannerbalance::Pannerbalance (boost::shared_ptr<Pannable> p) + : Panner (p) +{ + if (!_pannable->has_state()) { + _pannable->pan_azimuth_control->set_value (0.5); + } + + update (); + + /* LEFT SIGNAL */ + pos_interp[0] = pos[0] = desired_pos[0]; + /* RIGHT SIGNAL */ + pos_interp[1] = pos[1] = desired_pos[1]; + + _pannable->pan_azimuth_control->Changed.connect_same_thread (*this, boost::bind (&Pannerbalance::update, this)); +} + +Pannerbalance::~Pannerbalance () +{ +} + +double +Pannerbalance::position () const +{ + return _pannable->pan_azimuth_control->get_value(); +} + + void +Pannerbalance::set_position (double p) +{ + if (clamp_position (p)) { + _pannable->pan_azimuth_control->set_value (p); + } +} + + void +Pannerbalance::thaw () +{ + Panner::thaw (); + if (_frozen == 0) { + update (); + } +} + +void +Pannerbalance::update () +{ + if (_frozen) { + return; + } + + float const pos = _pannable->pan_azimuth_control->get_value(); + + if (pos == .5) { + desired_pos[0] = 1.0; + desired_pos[1] = 1.0; + } else if (pos > .5) { + desired_pos[0] = 2 - 2. * pos; + desired_pos[1] = 1.0; + } else { + desired_pos[0] = 1.0; + desired_pos[1] = 2. * pos; + } +} + +bool +Pannerbalance::clamp_position (double& p) +{ + p = max (min (p, 1.0), 0.0); + return true; +} + +pair<double, double> +Pannerbalance::position_range () const +{ + return make_pair (0, 1); +} + +void +Pannerbalance::distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gain_coeff, pframes_t nframes, uint32_t which) +{ + assert (obufs.count().n_audio() == 2); + + pan_t delta; + Sample* dst; + pan_t pan; + + Sample* const src = srcbuf.data(); + + dst = obufs.get_audio(which).data(); + + if (fabsf ((delta = (pos[which] - desired_pos[which]))) > 0.002) { // about 1 degree of arc + + /* we've moving the pan by an appreciable amount, so we must + interpolate over 64 frames or nframes, whichever is smaller */ + + pframes_t const limit = min ((pframes_t) 64, nframes); + pframes_t n; + + delta = -(delta / (float) (limit)); + + for (n = 0; n < limit; n++) { + pos_interp[which] = pos_interp[which] + delta; + pos[which] = pos_interp[which] + 0.9 * (pos[which] - pos_interp[which]); + dst[n] += src[n] * pos[which] * gain_coeff; + } + + /* then pan the rest of the buffer; no need for interpolation for this bit */ + + pan = pos[which] * gain_coeff; + + mix_buffers_with_gain (dst+n,src+n,nframes-n,pan); + + } else { + + pos[which] = desired_pos[which]; + pos_interp[which] = pos[which]; + + if ((pan = (pos[which] * gain_coeff)) != 1.0f) { + + if (pan != 0.0f) { + + /* pan is 1 but also not 0, so we must do it "properly" */ + + //obufs.get_audio(1).read_from (srcbuf, nframes); + mix_buffers_with_gain(dst,src,nframes,pan); + + /* mark that we wrote into the buffer */ + + // obufs[0] = 0; + + } + + } else { + /* pan is 1 so we can just copy the input samples straight in */ + mix_buffers_no_gain(dst,src,nframes); + } + } +} + +void +Pannerbalance::distribute_one_automated (AudioBuffer& srcbuf, BufferSet& obufs, + framepos_t start, framepos_t end, pframes_t nframes, + pan_t** buffers, uint32_t which) +{ + assert (obufs.count().n_audio() == 2); + + Sample* dst; + pan_t* pbuf; + Sample* const src = srcbuf.data(); + pan_t* const position = buffers[0]; + + /* fetch positional data */ + + if (!_pannable->pan_azimuth_control->list()->curve().rt_safe_get_vector (start, end, position, nframes)) { + /* fallback */ + distribute_one (srcbuf, obufs, 1.0, nframes, which); + return; + } + + for (pframes_t n = 0; n < nframes; ++n) { + + float const pos = position[n]; + + if (which == 0) { // Left + if (pos > .5) { + buffers[which][n] = 2 - 2. * pos; + } else { + buffers[which][n] = 1.0; + } + } else { // Right + if (pos < .5) { + buffers[which][n] = 2. * pos; + } else { + buffers[which][n] = 1.0; + } + } + } + + dst = obufs.get_audio(which).data(); + pbuf = buffers[which]; + + for (pframes_t n = 0; n < nframes; ++n) { + dst[n] += src[n] * pbuf[n]; + } + + /* XXX it would be nice to mark the buffer as written to */ +} + +Panner* +Pannerbalance::factory (boost::shared_ptr<Pannable> p, boost::shared_ptr<Speakers> /* ignored */) +{ + return new Pannerbalance (p); +} + + XMLNode& +Pannerbalance::get_state () +{ + XMLNode& root (Panner::get_state ()); + root.add_property (X_("uri"), _descriptor.panner_uri); + /* this is needed to allow new sessions to load with old Ardour: */ + root.add_property (X_("type"), _descriptor.name); + return root; +} + +std::set<Evoral::Parameter> +Pannerbalance::what_can_be_automated() const +{ + set<Evoral::Parameter> s; + s.insert (Evoral::Parameter (PanAzimuthAutomation)); + return s; +} + +string +Pannerbalance::describe_parameter (Evoral::Parameter p) +{ + switch (p.type()) { + case PanAzimuthAutomation: + return _("L/R"); + default: + return _pannable->describe_parameter (p); + } +} + +string +Pannerbalance::value_as_string (boost::shared_ptr<AutomationControl> ac) const +{ + /* DO NOT USE LocaleGuard HERE */ + double val = ac->get_value(); + + switch (ac->parameter().type()) { + case PanAzimuthAutomation: + /* We show the position of the center of the image relative to the left & right. + This is expressed as a pair of percentage values that ranges from (100,0) + (hard left) through (50,50) (hard center) to (0,100) (hard right). + + This is pretty wierd, but its the way audio engineers expect it. Just remember that + the center of the USA isn't Kansas, its (50LA, 50NY) and it will all make sense. + + This is designed to be as narrow as possible. Dedicated + panner GUIs can do their own version of this if they need + something less compact. + */ + + return string_compose (_("L%1R%2"), (int) rint (100.0 * (1.0 - val)), + (int) rint (100.0 * val)); + + default: + return _pannable->value_as_string (ac); + } +} + +void +Pannerbalance::reset () +{ + set_position (0.5); + update (); +} diff --git a/libs/panners/stereobalance/panner_balance.h b/libs/panners/stereobalance/panner_balance.h new file mode 100644 index 0000000000..f381340888 --- /dev/null +++ b/libs/panners/stereobalance/panner_balance.h @@ -0,0 +1,83 @@ +/* + Copyright (C) 2004-2014 Paul Davis + adopted from 2in2out panner by Robin Gareus <robin@gareus.org> + + 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_panner_balance_h__ +#define __ardour_panner_balance_h__ + +#include <cmath> +#include <cassert> +#include <vector> +#include <string> +#include <iostream> + +#include "pbd/stateful.h" +#include "pbd/controllable.h" +#include "pbd/cartesian.h" + +#include "ardour/automation_control.h" +#include "ardour/automatable.h" +#include "ardour/panner.h" +#include "ardour/types.h" + +namespace ARDOUR { + +class Pannerbalance : public Panner +{ + public: + Pannerbalance (boost::shared_ptr<Pannable>); + ~Pannerbalance (); + + ChanCount in() const { return ChanCount (DataType::AUDIO, 2); } + ChanCount out() const { return ChanCount (DataType::AUDIO, 2); } + + void set_position (double); + bool clamp_position (double&); + std::pair<double, double> position_range () const; + double position () const; + + std::set<Evoral::Parameter> what_can_be_automated() const; + + static Panner* factory (boost::shared_ptr<Pannable>, boost::shared_ptr<Speakers>); + + std::string describe_parameter (Evoral::Parameter); + std::string value_as_string (boost::shared_ptr<AutomationControl>) const; + + XMLNode& get_state (); + + void reset (); + void thaw (); + + protected: + float pos[2]; + float desired_pos[2]; + float pos_interp[2]; + + void update (); + + private: + void distribute_one (AudioBuffer& srcbuf, BufferSet& obufs, gain_t gain_coeff, pframes_t nframes, uint32_t which); + void distribute_one_automated (AudioBuffer& srcbuf, BufferSet& obufs, + framepos_t start, framepos_t end, pframes_t nframes, + pan_t** buffers, uint32_t which); +}; + +} // namespace + +#endif /* __ardour_panner_balance_h__ */ diff --git a/libs/panners/stereobalance/wscript b/libs/panners/stereobalance/wscript new file mode 100644 index 0000000000..b66a2ffee6 --- /dev/null +++ b/libs/panners/stereobalance/wscript @@ -0,0 +1,35 @@ +#!/usr/bin/env python +from waflib.extras import autowaf as autowaf +import os + +# Library version (UNIX style major, minor, micro) +# major increment <=> incompatible changes +# minor increment <=> compatible changes (additions) +# micro increment <=> no interface changes +LIBARDOUR_PAN2IN2OUT_LIB_VERSION = '1.0.0' + +# 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 = [ 'panner_balance.cc' ] + obj.export_includes = ['.'] + obj.defines = ['PACKAGE="libardour_panbalance"'] + obj.defines += ['ARDOURPANNER_DLL_EXPORTS'] + obj.includes = ['.'] + obj.name = 'libardour_panbalance' + obj.target = 'panbalance' + obj.use = 'libardour libardour_cp libpbd' + obj.vnum = LIBARDOUR_PAN2IN2OUT_LIB_VERSION + obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3', 'panners') + +def shutdown(): + autowaf.shutdown() diff --git a/libs/panners/vbap/vbap.cc b/libs/panners/vbap/vbap.cc index 6d7496729c..f160ae3d24 100644 --- a/libs/panners/vbap/vbap.cc +++ b/libs/panners/vbap/vbap.cc @@ -50,7 +50,10 @@ using namespace std; static PanPluginDescriptor _descriptor = { "VBAP 2D panner", + "http://ardour.org/plugin/panner_vbap", + "http://ardour.org/plugin/panner_vbap#ui", -1, -1, + 1000, VBAPanner::factory }; @@ -396,7 +399,9 @@ VBAPanner::distribute_one_automated (AudioBuffer& /*src*/, BufferSet& /*obufs*/, XMLNode& VBAPanner::get_state () { - XMLNode& node (Panner::get_state()); + XMLNode& node (Panner::get_state()); + node.add_property (X_("uri"), _descriptor.panner_uri); + /* this is needed to allow new sessions to load with old Ardour: */ node.add_property (X_("type"), _descriptor.name); return node; } diff --git a/libs/panners/vbap/wscript b/libs/panners/vbap/wscript index 1f8208317d..8fe9dc8e8a 100644 --- a/libs/panners/vbap/wscript +++ b/libs/panners/vbap/wscript @@ -22,10 +22,8 @@ def build(bld): obj = bld(features = 'cxx cxxshlib') obj.source = [ 'vbap_speakers.cc', 'vbap.cc' ] obj.export_includes = ['.'] - obj.defines = [ 'PACKAGE="libardour_panvbap"' ] - if bld.is_defined ('INTERNAL_SHARED_LIBS'): - obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL_=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ] - obj.defines = [ 'ARDOURPANNER_DLL_EXPORTS' ] + obj.defines = ['PACKAGE="libardour_panvbap"'] + obj.defines += ['ARDOURPANNER_DLL_EXPORTS'] obj.includes = ['.'] obj.name = 'libardour_panvbap' obj.target = 'panvbap' diff --git a/libs/panners/wscript b/libs/panners/wscript index aec57eb40f..f3ce6e6f19 100644 --- a/libs/panners/wscript +++ b/libs/panners/wscript @@ -6,7 +6,7 @@ import os top = '.' out = 'build' -panners = [ '2in2out', '1in2out', 'vbap' ] +panners = [ '2in2out', '1in2out', 'vbap', 'stereobalance' ] def options(opt): autowaf.set_options(opt) diff --git a/libs/pbd/fpu.cc b/libs/pbd/fpu.cc index 5d81cd2fd3..73bc7e599d 100644 --- a/libs/pbd/fpu.cc +++ b/libs/pbd/fpu.cc @@ -105,9 +105,9 @@ FPU::FPU () *fxbuf = (char *) malloc (512); assert (*fxbuf); #else - posix_memalign ((void **) &fxbuf, 16, sizeof (char *)); + (void) posix_memalign ((void **) &fxbuf, 16, sizeof (char *)); assert (fxbuf); - posix_memalign ((void **) fxbuf, 16, 512); + (void) posix_memalign ((void **) fxbuf, 16, 512); assert (*fxbuf); #endif diff --git a/libs/pbd/openuri.cc b/libs/pbd/openuri.cc index 45154d0ad1..13d534e760 100644 --- a/libs/pbd/openuri.cc +++ b/libs/pbd/openuri.cc @@ -49,7 +49,7 @@ PBD::open_uri (const char* uri) std::string command = "xdg-open "; command += uri; command += " &"; - system (command.c_str()); + (void) system (command.c_str()); return true; #endif diff --git a/libs/pbd/pbd/libpbd_visibility.h b/libs/pbd/pbd/libpbd_visibility.h index e2c6235f0b..0fcebd554f 100644 --- a/libs/pbd/pbd/libpbd_visibility.h +++ b/libs/pbd/pbd/libpbd_visibility.h @@ -20,37 +20,26 @@ #ifndef __libpbd_libpbd_visibility_h__ #define __libpbd_libpbd_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) +#if defined(COMPILER_MSVC) #define LIBPBD_DLL_IMPORT __declspec(dllimport) #define LIBPBD_DLL_EXPORT __declspec(dllexport) #define LIBPBD_DLL_LOCAL #else - #if __GNUC__ >= 4 - #define LIBPBD_DLL_IMPORT __attribute__ ((visibility ("default"))) - #define LIBPBD_DLL_EXPORT __attribute__ ((visibility ("default"))) - #define LIBPBD_DLL_LOCAL __attribute__ ((visibility ("hidden"))) - #else - #define LIBPBD_DLL_IMPORT - #define LIBPBD_DLL_EXPORT - #define LIBPBD_DLL_LOCAL - #endif + #define LIBPBD_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBPBD_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBPBD_DLL_LOCAL __attribute__ ((visibility ("hidden"))) #endif -#ifdef LIBPBD_DLL // libpbd is a DLL -#ifdef LIBPBD_DLL_EXPORTS // defined if we are building the libpbd DLL (instead of using it) - #define LIBPBD_API LIBPBD_DLL_EXPORT +#ifdef LIBPBD_STATIC // libpbd is a DLL + #define LIBPBD_API + #define LIBPBD_LOCAL #else + #ifdef LIBPBD_DLL_EXPORTS // defined if we are building the libpbd DLL (instead of using it) + #define LIBPBD_API LIBPBD_DLL_EXPORT + #else #define LIBPBD_API LIBPBD_DLL_IMPORT -#endif -#define LIBPBD_LOCAL LIBPBD_DLL_LOCAL -#else /* static lib, not DLL */ -#define LIBPBD_API -#define LIBPBD_LOCAL + #endif + #define LIBPBD_LOCAL LIBPBD_DLL_LOCAL #endif #endif /* __libpbd_libpbd_visibility_h__ */ diff --git a/libs/pbd/pbd/search_path.h b/libs/pbd/pbd/search_path.h index 5203588f72..909bffb0a4 100644 --- a/libs/pbd/pbd/search_path.h +++ b/libs/pbd/pbd/search_path.h @@ -17,8 +17,8 @@ */ -#ifndef PBD_SEARCH_PATH_INCLUDED -#define PBD_SEARCH_PATH_INCLUDED +#ifndef __libpbd_search_path_h__ +#define __libpbd_search_path_h__ #include <string> #include <vector> @@ -112,4 +112,4 @@ protected: } // namespace PBD -#endif +#endif /* __libpbd_search_path_h__ */ diff --git a/libs/pbd/pbd/stacktrace.h b/libs/pbd/pbd/stacktrace.h index 672ee2acad..c5d9743b1e 100644 --- a/libs/pbd/pbd/stacktrace.h +++ b/libs/pbd/pbd/stacktrace.h @@ -38,9 +38,10 @@ namespace PBD { + LIBPBD_API void stacktrace (std::ostream& out, int levels = 0); LIBPBD_API void trace_twb(); -/* JE - !!!! Declaration might possibly get removed (except it's still used in 'libs/canvas/item.cc') */ std::string demangle (const std::string&); + LIBPBD_API std::string demangle (const std::string&); template<typename T> class /*LIBPBD_API*/ thing_with_backtrace diff --git a/libs/pbd/semutils.cc b/libs/pbd/semutils.cc index e5e5898218..cf7b54d30e 100644 --- a/libs/pbd/semutils.cc +++ b/libs/pbd/semutils.cc @@ -40,6 +40,8 @@ ProcessSemaphore::ProcessSemaphore (const char* name, int val) } #else + (void) name; /* stop gcc warning on !Apple systems */ + if (sem_init (&_sem, 0, val)) { throw failed_constructor (); } diff --git a/libs/pbd/stacktrace.cc b/libs/pbd/stacktrace.cc index 5721c69c54..c74dd946f7 100644 --- a/libs/pbd/stacktrace.cc +++ b/libs/pbd/stacktrace.cc @@ -106,7 +106,7 @@ PBD::stacktrace (std::ostream& out, int levels) #else std::string -/* JE - !!!! 'PBD' namespace might possibly get removed (except it's still used in 'libs/canvas/item.cc') */PBD::demangle (std::string const & l) +PBD::demangle (std::string const & l) /* JE - !!!! 'PBD' namespace might possibly get removed (except it's still used in 'libs/canvas/item.cc') */ { return std::string(); } diff --git a/libs/pbd/wscript b/libs/pbd/wscript index de831c92a2..d721a78675 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -115,9 +115,7 @@ def build(bld): if bld.is_defined ('INTERNAL_SHARED_LIBS'): print('BUILD SHARED LIB') obj = bld.shlib(features = 'cxx cxxshlib', source=libpbd_sources) - obj.defines = [ 'LIBPBD_DLL=1', - 'LIBPBD_DLL_EXPORTS=1' - ] + obj.defines = [ 'LIBPBD_DLL_EXPORTS=1' ] obj.cxxflags = [ '-fvisibility=hidden' ] obj.cflags = [ '-fvisibility=hidden' ] else: diff --git a/libs/plugins/reasonablesynth.lv2/lv2.c b/libs/plugins/reasonablesynth.lv2/lv2.c new file mode 100644 index 0000000000..6b9c81d8dd --- /dev/null +++ b/libs/plugins/reasonablesynth.lv2/lv2.c @@ -0,0 +1,214 @@ +/* reasonable simple synth + * + * Copyright (C) 2013 Robin Gareus <robin@gareus.org> + * + * 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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#define _GNU_SOURCE + +#include <stdio.h> +#include <stdlib.h> +#include <stdint.h> +#include <time.h> + +/* LV2 */ +#include "lv2/lv2plug.in/ns/lv2core/lv2.h" +#include "lv2/lv2plug.in/ns/ext/atom/atom.h" +#include "lv2/lv2plug.in/ns/ext/urid/urid.h" +#include "lv2/lv2plug.in/ns/ext/midi/midi.h" + +#define RSY_URI "https://community.ardour.org/node/7596" + +/* the synth interface */ +static void * synth_alloc (void); +static void synth_init (void *, double rate); +static void synth_free (void *); +static void synth_parse_midi (void *, const uint8_t *data, const size_t size); +static uint32_t synth_sound (void *, uint32_t written, uint32_t nframes, float **out); + +#include "rsynth.c" + +typedef enum { + RSY_MIDIIN = 0, + RSY_OUTL, + RSY_OUTR +} PortIndex; + +typedef struct { + const LV2_Atom_Sequence* midiin; + float* outL; + float* outR; + + LV2_URID_Map* map; + LV2_URID midi_MidiEvent; + + double SampleRateD; + void *synth; + bool xmas; +} RSynth; + +/* main LV2 */ + +static LV2_Handle +instantiate(const LV2_Descriptor* descriptor, + double rate, + const char* bundle_path, + const LV2_Feature* const* features) +{ + (void) descriptor; /* unused variable */ + (void) bundle_path; /* unused variable */ + + if (rate < 8000) { + fprintf(stderr, "RSynth.lv2 error: unsupported sample-rate (must be > 8k)\n"); + return NULL; + } + RSynth* self = (RSynth*)calloc(1, sizeof(RSynth)); + if(!self) { + return NULL; + } + + self->SampleRateD = rate; + + int i; + for (i=0; features[i]; ++i) { + if (!strcmp(features[i]->URI, LV2_URID__map)) { + self->map = (LV2_URID_Map*)features[i]->data; + } + } + + if (!self->map) { + fprintf(stderr, "RSynth.lv2 error: Host does not support urid:map\n"); + free(self); + return NULL; + } + + self->midi_MidiEvent = self->map->map(self->map->handle, LV2_MIDI__MidiEvent); + + self->synth = synth_alloc(); + synth_init(self->synth, rate); + + + struct tm date; + time_t now; + time(&now); + localtime_r(&now, &date); + if (getenv("ITSXMAS") || (date.tm_mon == 11 /*dec*/ && date.tm_mday == 25)) { + printf("reasonable synth.lv2 says: happy holidays!\n"); + self->xmas = true; + } + + return (LV2_Handle)self; +} + +static void +connect_port(LV2_Handle handle, + uint32_t port, + void* data) +{ + RSynth* self = (RSynth*)handle; + + switch ((PortIndex)port) { + case RSY_MIDIIN: + self->midiin = (const LV2_Atom_Sequence*)data; + break; + case RSY_OUTL: + self->outL = (float*)data; + break; + case RSY_OUTR: + self->outR = (float*)data; + break; + } +} + +static void +run(LV2_Handle handle, uint32_t n_samples) +{ + RSynth* self = (RSynth*)handle; + float* audio[2]; + + audio[0] = self->outL; + audio[1] = self->outR; + + uint32_t written = 0; + + /* Process incoming MIDI events */ + if (self->midiin) { + LV2_Atom_Event const* ev = (LV2_Atom_Event const*)((&(self->midiin)->body) + 1); // lv2_atom_sequence_begin + while( // !lv2_atom_sequence_is_end + (const uint8_t*)ev < ((const uint8_t*) &(self->midiin)->body + (self->midiin)->atom.size) + ) + { + if (ev->body.type == self->midi_MidiEvent) { + if (written + BUFFER_SIZE_SAMPLES < ev->time.frames + && ev->time.frames < n_samples) { + /* first synthesize sound up until the message timestamp */ + written = synth_sound(self->synth, written, ev->time.frames, audio); + } + /* send midi message to synth */ + if (self->xmas) { + synth_parse_xmas(self->synth, (const uint8_t*)(ev+1), ev->body.size); + } else { + synth_parse_midi(self->synth, (const uint8_t*)(ev+1), ev->body.size); + } + } + ev = (LV2_Atom_Event const*) // lv2_atom_sequence_next() + ((const uint8_t*)ev + sizeof(LV2_Atom_Event) + ((ev->body.size + 7) & ~7)); + } + } + + /* synthesize [remaining] sound */ + synth_sound(self->synth, written, n_samples, audio); +} + +static void +cleanup(LV2_Handle handle) +{ + RSynth* self = (RSynth*)handle; + synth_free(self->synth); + free(handle); +} + +static const void* +extension_data(const char* uri) +{ + (void) uri; /* unused variable */ + return NULL; +} + +static const LV2_Descriptor descriptor = { + RSY_URI, + instantiate, + connect_port, + NULL, + run, + NULL, + cleanup, + extension_data +}; + +LV2_SYMBOL_EXPORT +const LV2_Descriptor* +lv2_descriptor(uint32_t idx) +{ + switch (idx) { + case 0: + return &descriptor; + default: + return NULL; + } +} + +/* vi:set ts=8 sts=2 sw=2 et: */ diff --git a/libs/plugins/reasonablesynth.lv2/manifest.ttl.in b/libs/plugins/reasonablesynth.lv2/manifest.ttl.in new file mode 100644 index 0000000000..92b20b40b8 --- /dev/null +++ b/libs/plugins/reasonablesynth.lv2/manifest.ttl.in @@ -0,0 +1,7 @@ +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . + +<https://community.ardour.org/node/7596> + a lv2:Plugin ; + lv2:binary <reasonablesynth@LIB_EXT@> ; + rdfs:seeAlso <reasonablesynth.ttl> . diff --git a/libs/plugins/reasonablesynth.lv2/reasonablesynth.ttl.in b/libs/plugins/reasonablesynth.lv2/reasonablesynth.ttl.in new file mode 100644 index 0000000000..fe4cddbad4 --- /dev/null +++ b/libs/plugins/reasonablesynth.lv2/reasonablesynth.ttl.in @@ -0,0 +1,50 @@ +@prefix atom: <http://lv2plug.in/ns/ext/atom#> . +@prefix doap: <http://usefulinc.com/ns/doap#> . +@prefix foaf: <http://xmlns.com/foaf/0.1/> . +@prefix lv2: <http://lv2plug.in/ns/lv2core#> . +@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . +@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . +@prefix pg: <http://lv2plug.in/ns/ext/port-groups#> . +@prefix urid: <http://lv2plug.in/ns/ext/urid#> . + +<http://gareus.org/rgareus#me> + a foaf:Person ; + foaf:name "Robin Gareus" ; + foaf:mbox <mailto:robin@gareus.org> ; + foaf:homepage <http://gareus.org/> . + +<https://community.ardour.org/node/7596> + a lv2:Plugin, lv2:InstrumentPlugin, doap:Project; + doap:license <http://usefulinc.com/doap/licenses/gpl> ; + doap:maintainer <http://gareus.org/rgareus#me> ; + doap:name "Reasonable Synth"; + lv2:optionalFeature lv2:hardRTCapable ; + lv2:requiredFeature urid:map ; + rdfs:comment """A simple synthesizer with no controls at all but a reasonable sound instead.""" ; + lv2:port + [ + a atom:AtomPort , + lv2:InputPort ; + atom:bufferType atom:Sequence ; + atom:supports <http://lv2plug.in/ns/ext/midi#MidiEvent> ; + lv2:index 0 ; + lv2:symbol "MidiIn" ; + lv2:name "MIDI Input" ; + ], + [ + a lv2:AudioPort , + lv2:OutputPort ; + lv2:index 1 ; + lv2:symbol "outL" ; + lv2:name "Left output" ; + lv2:designation pg:left ; + ], + [ + a lv2:AudioPort , + lv2:OutputPort ; + lv2:index 2 ; + lv2:symbol "outR" ; + lv2:name "Right Output" ; + lv2:designation pg:right ; + ] + . diff --git a/libs/plugins/reasonablesynth.lv2/rsynth.c b/libs/plugins/reasonablesynth.lv2/rsynth.c new file mode 100644 index 0000000000..a6c74aa26c --- /dev/null +++ b/libs/plugins/reasonablesynth.lv2/rsynth.c @@ -0,0 +1,545 @@ +/* reasonable simple synth + * + * Copyright (C) 2013 Robin Gareus <robin@gareus.org> + * + * 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, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE // needed for M_PI +#endif + +#include <math.h> +#include <stdlib.h> +#include <string.h> +#include <stdint.h> +#include <stdbool.h> +#include <assert.h> + +#ifndef BUFFER_SIZE_SAMPLES +#define BUFFER_SIZE_SAMPLES 64 +#endif + +#ifndef MIN +#define MIN(A, B) ( (A) < (B) ? (A) : (B) ) +#endif + +/* internal MIDI event abstraction */ +enum RMIDI_EV_TYPE { + INVALID=0, + NOTE_ON, + NOTE_OFF, + PROGRAM_CHANGE, + CONTROL_CHANGE, +}; + +struct rmidi_event_t { + enum RMIDI_EV_TYPE type; + uint8_t channel; /**< the MIDI channel number 0-15 */ + union { + struct { + uint8_t note; + uint8_t velocity; + } tone; + struct { + uint8_t param; + uint8_t value; + } control; + } d; +}; + +typedef struct { + uint32_t tme[3]; // attack, decay, release times [settings:ms || internal:samples] + float vol[2]; // attack, sustain volume [0..1] + uint32_t off[3]; // internal use (added attack,decay,release times) +} ADSRcfg; + +typedef struct _RSSynthChannel { + uint32_t keycomp; + uint32_t adsr_cnt[128]; + float adsr_amp[128]; + float phase[128]; // various use, zero'ed on note-on + int8_t miditable[128]; // internal, note-on/off velocity + int8_t midimsgs [128]; // internal, note-off + on in same cycle + ADSRcfg adsr; + void (*synthesize) (struct _RSSynthChannel* sc, + const uint8_t note, const float vol, const float pc, + const size_t n_samples, float* left, float* right); +} RSSynthChannel; + +typedef void (*SynthFunction) (RSSynthChannel* sc, + const uint8_t note, const float vol, const float pc, + const size_t n_samples, float* left, float* right); + +typedef struct { + uint32_t boffset; + float buf [2][BUFFER_SIZE_SAMPLES]; + RSSynthChannel sc[16]; + float freqs[128]; + float kcgain; + float kcfilt; + double rate; + uint32_t xmas_on; + uint32_t xmas_off; +} RSSynthesizer; + + +/* initialize ADSR values + * + * @param rate sample-rate + * @param a attack time in seconds + * @param d decay time in seconds + * @param r release time in seconds + * @param avol attack gain [0..1] + * @param svol sustain volume level [0..1] + */ +static void init_adsr(ADSRcfg *adsr, const double rate, + const uint32_t a, const uint32_t d, const uint32_t r, + const float avol, const float svol) { + + adsr->vol[0] = avol; + adsr->vol[1] = svol; + adsr->tme[0] = a * rate / 1000.0; + adsr->tme[1] = d * rate / 1000.0; + adsr->tme[2] = r * rate / 1000.0; + + assert(adsr->tme[0] > 32); + assert(adsr->tme[1] > 32); + assert(adsr->tme[2] > 32); + assert(adsr->vol[0] >=0 && adsr->vol[1] <= 1.0); + assert(adsr->vol[1] >=0 && adsr->vol[1] <= 1.0); + + adsr->off[0] = adsr->tme[0]; + adsr->off[1] = adsr->tme[1] + adsr->off[0]; + adsr->off[2] = adsr->tme[2] + adsr->off[1]; +} + +/* calculate per-sample, per-key envelope */ +static inline float adsr_env(RSSynthChannel *sc, const uint8_t note) { + + if (sc->adsr_cnt[note] < sc->adsr.off[0]) { + // attack + const uint32_t p = ++sc->adsr_cnt[note]; + if (p == sc->adsr.tme[0]) { + sc->adsr_amp[note] = sc->adsr.vol[0]; + return sc->adsr.vol[0]; + } else { + const float d = sc->adsr.vol[0] - sc->adsr_amp[note]; + return sc->adsr_amp[note] + (p / (float) sc->adsr.tme[0]) * d; + } + } + else if (sc->adsr_cnt[note] < sc->adsr.off[1]) { + // decay + const uint32_t p = ++sc->adsr_cnt[note] - sc->adsr.off[0]; + if (p == sc->adsr.tme[1]) { + sc->adsr_amp[note] = sc->adsr.vol[1]; + return sc->adsr.vol[1]; + } else { + const float d = sc->adsr.vol[1] - sc->adsr_amp[note]; + return sc->adsr_amp[note] + (p / (float) sc->adsr.tme[1]) * d; + } + } + else if (sc->adsr_cnt[note] == sc->adsr.off[1]) { + // sustain + return sc->adsr.vol[1]; + } + else if (sc->adsr_cnt[note] < sc->adsr.off[2]) { + // release + const uint32_t p = ++sc->adsr_cnt[note] - sc->adsr.off[1]; + if (p == sc->adsr.tme[2]) { + sc->adsr_amp[note] = 0; + return 0; + } else { + const float d = 0 - sc->adsr_amp[note]; + return sc->adsr_amp[note] + (p / (float) sc->adsr.tme[2]) * d; + } + } + else { + sc->adsr_cnt[note] = 0; + return 0; + } +} + + +/*****************************************************************************/ +/* piano like sound w/slight stereo phase */ +static void synthesize_sineP (RSSynthChannel* sc, + const uint8_t note, const float vol, const float fq, + const size_t n_samples, float* left, float* right) { + + size_t i; + float phase = sc->phase[note]; + + for (i=0; i < n_samples; ++i) { + float env = adsr_env(sc, note); + if (sc->adsr_cnt[note] == 0) break; + const float amp = vol * env; + + left[i] += amp * sinf(2.0 * M_PI * phase); + left[i] += .300 * amp * sinf(2.0 * M_PI * phase * 2.0); + left[i] += .150 * amp * sinf(2.0 * M_PI * phase * 3.0); + left[i] += .080 * amp * sinf(2.0 * M_PI * phase * 4.0); + //left[i] -= .007 * amp * sinf(2.0 * M_PI * phase * 5.0); + //left[i] += .010 * amp * sinf(2.0 * M_PI * phase * 6.0); + left[i] += .020 * amp * sinf(2.0 * M_PI * phase * 7.0); + phase += fq; + right[i] += amp * sinf(2.0 * M_PI * phase); + right[i] += .300 * amp * sinf(2.0 * M_PI * phase * 2.0); + right[i] += .150 * amp * sinf(2.0 * M_PI * phase * 3.0); + right[i] -= .080 * amp * sinf(2.0 * M_PI * phase * 4.0); + //right[i] += .007 * amp * sinf(2.0 * M_PI * phase * 5.0); + //right[i] += .010 * amp * sinf(2.0 * M_PI * phase * 6.0); + right[i] -= .020 * amp * sinf(2.0 * M_PI * phase * 7.0); + if (phase > 1.0) phase -= 2.0; + } + sc->phase[note] = phase; +} + +static const ADSRcfg piano_adsr = {{ 5, 800, 100}, { 1.0, 0.0}, {0,0,0}}; + +/*****************************************************************************/ + + +/* process note - move through ADSR states, count active keys,.. */ +static void process_key (void *synth, + const uint8_t chn, const uint8_t note, + const size_t n_samples, float *left, float *right) +{ + RSSynthesizer* rs = (RSSynthesizer*)synth; + RSSynthChannel* sc = &rs->sc[chn]; + const int8_t vel = sc->miditable[note]; + const int8_t msg = sc->midimsgs[note]; + const float vol = /* master_volume */ 0.25 * fabsf(vel) / 127.0; + const float phase = sc->phase[note]; + sc->midimsgs[note] = 0; + + if (phase == -10 && vel > 0) { + // new note on + assert(sc->adsr_cnt[note] == 0); + sc->adsr_amp[note] = 0; + sc->adsr_cnt[note] = 0; + sc->phase[note] = 0; + sc->keycomp++; + //printf("[On] Now %d keys active on chn %d\n", sc->keycomp, chn); + } + else if (phase >= -1.0 && phase <= 1.0 && vel > 0) { + // sustain note or re-start note while adsr in progress: + if (sc->adsr_cnt[note] > sc->adsr.off[1] || msg == 3) { + // x-fade to attack + sc->adsr_amp[note] = adsr_env(sc, note); + sc->adsr_cnt[note] = 0; + } + } + else if (phase >= -1.0 && phase <= 1.0 && vel < 0) { + // note off + if (sc->adsr_cnt[note] <= sc->adsr.off[1]) { + if (sc->adsr_cnt[note] != sc->adsr.off[1]) { + // x-fade to release + sc->adsr_amp[note] = adsr_env(sc, note); + } + sc->adsr_cnt[note] = sc->adsr.off[1] + 1; + } + } + else { + /* note-on + off in same cycle */ + sc->miditable[note] = 0; + sc->adsr_cnt[note] = 0; + sc->phase[note] = -10; + return; + } + + // synthesize actual sound + sc->synthesize(sc, note, vol, rs->freqs[note], n_samples, left, right); + + if (sc->adsr_cnt[note] == 0) { + //printf("Note %d,%d released\n", chn, note); + sc->miditable[note] = 0; + sc->adsr_amp[note] = 0; + sc->phase[note] = -10; + sc->keycomp--; + //printf("[off] Now %d keys active on chn %d\n", sc->keycomp, chn); + } +} + +/* synthesize a BUFFER_SIZE_SAMPLES's of audio-data */ +static void synth_fragment (void *synth, const size_t n_samples, float *left, float *right) { + RSSynthesizer* rs = (RSSynthesizer*)synth; + memset (left, 0, n_samples * sizeof(float)); + memset (right, 0, n_samples * sizeof(float)); + uint8_t keycomp = 0; + int c,k; + size_t i; + + for (c=0; c < 16; ++c) { + for (k=0; k < 128; ++k) { + if (rs->sc[c].miditable[k] == 0) continue; + process_key(synth, c, k, n_samples, left, right); + } + keycomp += rs->sc[c].keycomp; + } + +#if 1 // key-compression + float kctgt = 8.0 / (float)(keycomp + 7.0); + if (kctgt < .5) kctgt = .5; + if (kctgt > 1.0) kctgt = 1.0; + const float _w = rs->kcfilt; + for (i=0; i < n_samples; ++i) { + rs->kcgain += _w * (kctgt - rs->kcgain); + left[i] *= rs->kcgain; + right[i] *= rs->kcgain; + } + rs->kcgain += 1e-12; +#endif +} + +static void synth_reset_channel(RSSynthChannel* sc) { + int k; + for (k=0; k < 128; ++k) { + sc->adsr_cnt[k] = 0; + sc->adsr_amp[k] = 0; + sc->phase[k] = -10; + sc->miditable[k] = 0; + sc->midimsgs[k] = 0; + } + sc->keycomp = 0; +} + +static void synth_reset(void *synth) { + RSSynthesizer* rs = (RSSynthesizer*)synth; + int c; + for (c=0; c < 16; ++c) { + synth_reset_channel(&(rs->sc[c])); + } + rs->kcgain = 0; +} + +static void synth_load(RSSynthChannel *sc, const double rate, + SynthFunction synthesize, + ADSRcfg const * const adsr) { + synth_reset_channel(sc); + init_adsr(&sc->adsr, rate, + adsr->tme[0], adsr->tme[1], adsr->tme[2], + adsr->vol[0], adsr->vol[1]); + sc->synthesize = synthesize; +} + + +/** + * internal abstraction of MIDI data handling + */ +static void synth_process_midi_event(void *synth, struct rmidi_event_t *ev) { + RSSynthesizer* rs = (RSSynthesizer*)synth; + switch(ev->type) { + case NOTE_ON: + rs->sc[ev->channel].midimsgs[ev->d.tone.note] |= 1; + if (rs->sc[ev->channel].miditable[ev->d.tone.note] <= 0) + rs->sc[ev->channel].miditable[ev->d.tone.note] = ev->d.tone.velocity; + break; + case NOTE_OFF: + rs->sc[ev->channel].midimsgs[ev->d.tone.note] |= 2; + if (rs->sc[ev->channel].miditable[ev->d.tone.note] > 0) + rs->sc[ev->channel].miditable[ev->d.tone.note] *= -1.0; + break; + case PROGRAM_CHANGE: + break; + case CONTROL_CHANGE: + if (ev->d.control.param == 0x00 || ev->d.control.param == 0x20) { + /* 0x00 and 0x20 are used for BANK select */ + break; + } else + if (ev->d.control.param == 121) { + /* reset all controllers */ + break; + } else + if (ev->d.control.param == 120 || ev->d.control.param == 123) { + /* Midi panic: 120: all sound off, 123: all notes off*/ + synth_reset_channel(&(rs->sc[ev->channel])); + break; + } else + if (ev->d.control.param >= 120) { + /* params 122-127 are reserved - skip them. */ + break; + } + break; + default: + break; + } +} + +/****************************************************************************** + * PUBLIC API (used by lv2.c) + */ + +/** + * align LV2 and internal synth buffers + * call synth_fragment as often as needed for the given LV2 buffer size + * + * @param synth synth-handle + * @param written samples written so far (offset in \ref out) + * @param nframes total samples to synthesize and write to the \out buffer + * @param out pointer to stereo output buffers + * @return end of buffer (written + nframes) + */ +static uint32_t synth_sound (void *synth, uint32_t written, const uint32_t nframes, float **out) { + RSSynthesizer* rs = (RSSynthesizer*)synth; + + while (written < nframes) { + uint32_t nremain = nframes - written; + + if (rs->boffset >= BUFFER_SIZE_SAMPLES) { + rs->boffset = 0; + synth_fragment(rs, BUFFER_SIZE_SAMPLES, rs->buf[0], rs->buf[1]); + } + + uint32_t nread = MIN(nremain, (BUFFER_SIZE_SAMPLES - rs->boffset)); + + memcpy(&out[0][written], &rs->buf[0][rs->boffset], nread*sizeof(float)); + memcpy(&out[1][written], &rs->buf[1][rs->boffset], nread*sizeof(float)); + + written += nread; + rs->boffset += nread; + } + return written; +} + +/** + * parse raw midi-data. + * + * @param synth synth-handle + * @param data 8bit midi message + * @param size number of bytes in the midi-message + */ +static void synth_parse_midi(void *synth, const uint8_t *data, const size_t size) { + if (size < 2 || size > 3) return; + // All messages need to be 3 bytes; except program-changes: 2bytes. + if (size == 2 && (data[0] & 0xf0) != 0xC0) return; + + struct rmidi_event_t ev; + + ev.channel = data[0]&0x0f; + switch (data[0] & 0xf0) { + case 0x80: + ev.type=NOTE_OFF; + ev.d.tone.note=data[1]&0x7f; + ev.d.tone.velocity=data[2]&0x7f; + break; + case 0x90: + ev.type=NOTE_ON; + ev.d.tone.note=data[1]&0x7f; + ev.d.tone.velocity=data[2]&0x7f; + break; + case 0xB0: + ev.type=CONTROL_CHANGE; + ev.d.control.param=data[1]&0x7f; + ev.d.control.value=data[2]&0x7f; + break; + case 0xC0: + ev.type=PROGRAM_CHANGE; + ev.d.control.value=data[1]&0x7f; + break; + default: + return; + } + synth_process_midi_event(synth, &ev); +} + +static const uint8_t jingle[] = { 71 ,71 ,71 ,71 ,71 ,71 ,71 ,74 ,67 ,69 ,71 ,72 ,72 ,72 ,72 ,72 ,71 ,71 ,71 ,71 ,71 ,69 ,69 ,71 ,69 ,74 ,71 ,71 ,71 ,71 ,71 ,71 ,71 ,74 ,67 ,69 ,71 ,72 ,72 ,72 ,72 ,72 ,71 ,71 ,71 ,71 ,74 ,74 ,72 ,69 ,67 ,62 ,62 ,71 ,69 ,67 ,62 ,62 ,62 ,62 ,71 ,69 ,67 ,64 ,64 ,64 ,72 ,71 ,69 ,66 ,74 ,76 ,74 ,72 ,69 ,71 ,62 ,62 ,71 ,69 ,67 ,62 ,62 ,62 ,62 ,71 ,69 ,67 ,64 ,64 ,64 ,72 ,71 ,69 ,74 ,74 ,74 ,74 ,76 ,74 ,72 ,69 ,67 ,74 ,71 ,71 ,71 ,71 ,71 ,71 ,71 ,74 ,67 ,69 ,71 ,72 ,72 ,72 ,72 ,72 ,71 ,71 ,71 ,71 ,71 ,69 ,69 ,71 ,69 ,74 ,71 ,71 ,71 ,71 ,71 ,71 ,71 ,74 ,67 ,69 ,71 ,72 ,72 ,72 ,72 ,72 ,71 ,71 ,71 ,71 ,74 ,74 ,72 ,69 ,67 }; + +static void synth_parse_xmas(void *synth, const uint8_t *data, const size_t size) { + RSSynthesizer* rs = (RSSynthesizer*)synth; + if (size < 2 || size > 3) return; + // All messages need to be 3 bytes; except program-changes: 2bytes. + if (size == 2 && (data[0] & 0xf0) != 0xC0) return; + + struct rmidi_event_t ev; + + ev.channel = data[0]&0x0f; + switch (data[0] & 0xf0) { + case 0x80: + ev.type=NOTE_OFF; + ev.d.tone.note=jingle[rs->xmas_off++]; + ev.d.tone.velocity=data[2]&0x7f; + if (rs->xmas_off >= sizeof(jingle)) rs->xmas_off = 0; + break; + case 0x90: + ev.type=NOTE_ON; + ev.d.tone.note=jingle[rs->xmas_on++]; + ev.d.tone.velocity=data[2]&0x7f; + if (rs->xmas_on >= sizeof(jingle)) rs->xmas_on = 0; + break; + case 0xB0: + ev.type=CONTROL_CHANGE; + ev.d.control.param=data[1]&0x7f; + ev.d.control.value=data[2]&0x7f; + break; + case 0xC0: + ev.type=PROGRAM_CHANGE; + ev.d.control.value=data[1]&0x7f; + break; + default: + return; + } + synth_process_midi_event(synth, &ev); +} +/** + * initialize the synth + * This should be called after synth_alloc() + * as soon as the sample-rate is known + * + * @param synth synth-handle + * @param rate sample-rate + */ +static void synth_init(void *synth, double rate) { + RSSynthesizer* rs = (RSSynthesizer*)synth; + rs->rate = rate; + rs->boffset = BUFFER_SIZE_SAMPLES; + const float tuning = 440; + int c,k; + for (k=0; k < 128; k++) { + rs->freqs[k] = (tuning / 32.0f) * powf(2, (k - 9.0) / 12.0) / rate; + assert(rs->freqs[k] < M_PI/2); // otherwise spatialization may phase out.. + } + rs->kcfilt = 12.0 / rate; + synth_reset(synth); + + for (c=0; c < 16; c++) { + synth_load(&rs->sc[c], rate, &synthesize_sineP, &piano_adsr); + } + rs->xmas_on = 0; + rs->xmas_off = 0; +} + +/** + * Allocate data-structure, create a handle for all other synth_* functions. + * + * This data should be freeded with \ref synth_free when the synth is no + * longer needed. + * + * The synth can only be used after calling \rev synth_init as well. + * + * @return synth-handle + */ +static void * synth_alloc(void) { + return calloc(1, sizeof(RSSynthesizer)); +} + +/** + * release synth data structure + * @param synth synth-handle + */ +static void synth_free(void *synth) { + free(synth); +} +/* vi:set ts=8 sts=2 sw=2 et: */ diff --git a/libs/plugins/reasonablesynth.lv2/wscript b/libs/plugins/reasonablesynth.lv2/wscript new file mode 100644 index 0000000000..db0bf0af8a --- /dev/null +++ b/libs/plugins/reasonablesynth.lv2/wscript @@ -0,0 +1,47 @@ +#!/usr/bin/env python +import os +import re +import shutil +import waflib.extras.autowaf as autowaf +from waflib import Options + +# Mandatory variables +top = '.' +out = 'build' + +def options(opt): + autowaf.set_options(opt) + +def configure(conf): + conf.load('compiler_c') + autowaf.configure(conf) + if Options.options.lv2: + autowaf.check_pkg(conf, 'lv2', atleast_version='1.0.0', + uselib_store='LV2_1_0_0') + +def build(bld): + bundle = 'reasonablesynth.lv2' + module_pat = re.sub('^lib', '', bld.env.cshlib_PATTERN) + module_ext = module_pat[module_pat.rfind('.'):] + + if bld.is_defined ('HAVE_LV2'): + # Build RDF files + for i in ['manifest.ttl', 'reasonablesynth.ttl']: + bld(features = 'subst', + source = i + '.in', + target = '../../LV2/%s/%s' % (bundle, i), + install_path = '${LV2DIR}/%s' % bundle, + LIB_EXT = module_ext) + + # Build plugin library + obj = bld(features = 'c cshlib', + source = 'lv2.c', + dep_files = 'rsynth.c', + name = 'reasonablesynth', + target = '../../LV2/%s/reasonablesynth' % bundle, + install_path = '${LV2DIR}/%s' % bundle, + use = 'LV2_1_0_0' + ) + obj.env.cshlib_PATTERN = module_pat + +# vi:set ts=4 sw=4 et: diff --git a/libs/rubberband/wscript b/libs/rubberband/wscript index 7e9ca0250c..e21492ebf4 100644 --- a/libs/rubberband/wscript +++ b/libs/rubberband/wscript @@ -24,10 +24,16 @@ def options(opt): autowaf.set_options(opt) def configure(conf): - conf.load('compiler_cxx') - autowaf.configure(conf) + if conf.is_defined('USE_EXTERNAL_LIBS'): + autowaf.check_pkg(conf, 'rubberband', uselib_store='RUBBERBAND', atleast_version='1.0', mandatory=True) + else: + conf.load('compiler_cxx') + autowaf.configure(conf) def build(bld): + if bld.is_defined('USE_EXTERNAL_LIBS'): + return + # Library obj = bld(features = 'cxx cxxshlib') prefix = 'libs/rubberband/' diff --git a/libs/surfaces/control_protocol/control_protocol.cc b/libs/surfaces/control_protocol/control_protocol.cc index e0eb57fc87..cd379b10dc 100644 --- a/libs/surfaces/control_protocol/control_protocol.cc +++ b/libs/surfaces/control_protocol/control_protocol.cc @@ -53,6 +53,8 @@ PBD::Signal0<void> ControlProtocol::ClearRouteSelection; PBD::Signal0<void> ControlProtocol::StepTracksDown; PBD::Signal0<void> ControlProtocol::StepTracksUp; +const std::string ControlProtocol::state_node_name ("Protocol"); + ControlProtocol::ControlProtocol (Session& s, string str) : BasicUI (s) , _name (str) @@ -64,6 +66,13 @@ ControlProtocol::~ControlProtocol () { } +int +ControlProtocol::set_active (bool yn) +{ + _active = yn; + return 0; +} + void ControlProtocol::next_track (uint32_t initial_id) { @@ -356,5 +365,15 @@ ControlProtocol:: route_get_name (uint32_t table_index) list<boost::shared_ptr<Bundle> > ControlProtocol::bundles () { - return list<boost::shared_ptr<Bundle> > (); + return list<boost::shared_ptr<Bundle> > (); +} + +XMLNode& +ControlProtocol::get_state () +{ + XMLNode* node = new XMLNode (state_node_name); + + node->add_property ("name", _name); + + return *node; } diff --git a/libs/surfaces/control_protocol/control_protocol/control_protocol.h b/libs/surfaces/control_protocol/control_protocol/control_protocol.h index 7dbda7d3eb..f5af008e4a 100644 --- a/libs/surfaces/control_protocol/control_protocol/control_protocol.h +++ b/libs/surfaces/control_protocol/control_protocol/control_protocol.h @@ -30,18 +30,10 @@ #include "pbd/stateful.h" #include "pbd/signals.h" -#include "ardour/visibility.h" #include "control_protocol/visibility.h" #include "control_protocol/basic_ui.h" #include "control_protocol/types.h" -#ifdef ARDOURSURFACE_DLL_EXPORTS // defined if we are building the ARDOUR surface DLLs (instead of using them) - #define ARDOURSURFACE_API LIBARDOUR_HELPER_DLL_EXPORT -#else - #define ARDOURSURFACE_API LIBARDOUR_HELPER_DLL_IMPORT -#endif -#define ARDOURSURFACE_LOCAL LIBARDOUR_HELPER_DLL_LOCAL - namespace ARDOUR { class Route; @@ -56,8 +48,8 @@ class LIBCONTROLCP_API ControlProtocol : public PBD::Stateful, public PBD::Scope std::string name() const { return _name; } - virtual int set_active (bool yn) = 0; - bool get_active() const { return _active; } + virtual int set_active (bool yn); + bool active() const { return _active; } virtual int set_feedback (bool /*yn*/) { return 0; } virtual bool get_feedback () const { return false; } @@ -142,16 +134,19 @@ class LIBCONTROLCP_API ControlProtocol : public PBD::Stateful, public PBD::Scope virtual void* get_gui() const { return 0; } virtual void tear_down_gui() { } + XMLNode& get_state (); + static const std::string state_node_name; + protected: std::vector<boost::shared_ptr<ARDOUR::Route> > route_table; std::string _name; - bool _active; void next_track (uint32_t initial_id); void prev_track (uint32_t initial_id); private: - ARDOURSURFACE_LOCAL ControlProtocol (const ControlProtocol&); /* noncopyable */ + LIBCONTROLCP_LOCAL ControlProtocol (const ControlProtocol&); /* noncopyable */ + bool _active; }; extern "C" { diff --git a/libs/surfaces/control_protocol/control_protocol/visibility.h b/libs/surfaces/control_protocol/control_protocol/visibility.h index 40c83b8580..88dcff0940 100644 --- a/libs/surfaces/control_protocol/control_protocol/visibility.h +++ b/libs/surfaces/control_protocol/control_protocol/visibility.h @@ -20,37 +20,26 @@ #ifndef __libcontrolcp_visibility_h__ #define __libcontrolcp_visibility_h__ -/* _WIN32 is defined by most compilers targetting Windows, but within the - * controlcp 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) +#if defined(COMPILER_MSVC) #define LIBCONTROLCP_DLL_IMPORT __declspec(dllimport) #define LIBCONTROLCP_DLL_EXPORT __declspec(dllexport) #define LIBCONTROLCP_DLL_LOCAL #else - #if __GNUC__ >= 4 - #define LIBCONTROLCP_DLL_IMPORT __attribute__ ((visibility ("default"))) - #define LIBCONTROLCP_DLL_EXPORT __attribute__ ((visibility ("default"))) - #define LIBCONTROLCP_DLL_LOCAL __attribute__ ((visibility ("hidden"))) - #else - #define LIBCONTROLCP_DLL_IMPORT - #define LIBCONTROLCP_DLL_EXPORT - #define LIBCONTROLCP_DLL_LOCAL - #endif + #define LIBCONTROLCP_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBCONTROLCP_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBCONTROLCP_DLL_LOCAL __attribute__ ((visibility ("hidden"))) #endif -#ifdef LIBCONTROLCP_DLL // libcontrolcp is a DLL -#ifdef LIBCONTROLCP_DLL_EXPORTS // defined if we are building the libcontrolcp DLL (instead of using it) - #define LIBCONTROLCP_API LIBCONTROLCP_DLL_EXPORT +#ifdef LIBCONTROLCP_STATIC // libcontrolcp is not a DLL + #define LIBCONTROLCP_API + #define LIBCONTROLCP_LOCAL #else + #ifdef LIBCONTROLCP_DLL_EXPORTS // defined if we are building the libcontrolcp DLL (instead of using it) + #define LIBCONTROLCP_API LIBCONTROLCP_DLL_EXPORT + #else #define LIBCONTROLCP_API LIBCONTROLCP_DLL_IMPORT -#endif -#define LIBCONTROLCP_LOCAL LIBCONTROLCP_DLL_LOCAL -#else /* static lib, not DLL */ -#define LIBCONTROLCP_API -#define LIBCONTROLCP_LOCAL + #endif + #define LIBCONTROLCP_LOCAL LIBCONTROLCP_DLL_LOCAL #endif #endif /* __libcontrolcp_visibility_h__ */ diff --git a/libs/surfaces/control_protocol/wscript b/libs/surfaces/control_protocol/wscript index 10ec7f6c95..c79a3a2dbc 100644 --- a/libs/surfaces/control_protocol/wscript +++ b/libs/surfaces/control_protocol/wscript @@ -28,9 +28,7 @@ def build(bld): if bld.is_defined ('INTERNAL_SHARED_LIBS'): obj = bld.shlib(features = 'c cxx cshlib cxxshlib', source=controlcp_sources) # defines for this library - obj.defines = [ 'LIBCONTROLCP_DLL=1', 'LIBCONTROLCP_DLL_EXPORTS=1' ] - # internal shared libs that we use - obj.defines += [ 'LIBPBD_DLL=1', 'LIBARDOUR_DLL=1', 'LIBEVORAL_DLL=1' ] + obj.defines = [ 'LIBCONTROLCP_DLL_EXPORTS' ] obj.cxxflags = [ '-fvisibility=hidden' ] obj.cflags = [ '-fvisibility=hidden' ] else: @@ -41,10 +39,9 @@ def build(bld): obj.export_includes = ['.', './control_protocol' ] obj.defines += [ 'PACKAGE="ardour_cp"' ] obj.includes = ['.', './control_protocol'] - obj.defines = [ 'ARDOURCP_DLL_EXPORTS' ] obj.name = 'libardour_cp' obj.target = 'ardourcp' - obj.use = 'libardour libtimecode' + obj.use = 'libardour' obj.vnum = LIBARDOUR_CP_LIB_VERSION obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') diff --git a/libs/surfaces/frontier/tranzport/tranzport_control_protocol.cc b/libs/surfaces/frontier/tranzport/tranzport_control_protocol.cc index 550daef37b..f83e55c9d9 100644 --- a/libs/surfaces/frontier/tranzport/tranzport_control_protocol.cc +++ b/libs/surfaces/frontier/tranzport/tranzport_control_protocol.cc @@ -1921,9 +1921,7 @@ TranzportControlProtocol::print_noretry (int row, int col, const char *text) XMLNode& TranzportControlProtocol::get_state () { - XMLNode* node = new XMLNode (X_("Protocol")); - node->add_property (X_("name"), _name); - return *node; + return ControlProtocol::get_state(); } int diff --git a/libs/surfaces/frontier/wscript b/libs/surfaces/frontier/wscript index aa7d119895..ac8341c64d 100644 --- a/libs/surfaces/frontier/wscript +++ b/libs/surfaces/frontier/wscript @@ -35,8 +35,6 @@ def build(bld): ''' obj.export_includes = ['./generic_midi'] obj.defines = [ 'PACKAGE="ardour_frontier"' ] - if bld.is_defined ('INTERNAL_SHARED_LIBS'): - obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1' ] obj.includes = ['.', './generic_midi'] obj.name = 'libgeneric_midi' obj.target = 'generic_midi' diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc index e0b06a9369..bae6a48837 100644 --- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc +++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc @@ -80,16 +80,14 @@ GenericMidiControlProtocol::GenericMidiControlProtocol (Session& s) Controllable::CreateBinding.connect_same_thread (*this, boost::bind (&GenericMidiControlProtocol::create_binding, this, _1, _2, _3)); Controllable::DeleteBinding.connect_same_thread (*this, boost::bind (&GenericMidiControlProtocol::delete_binding, this, _1)); - Session::SendFeedback.connect (*this, MISSING_INVALIDATOR, boost::bind (&GenericMidiControlProtocol::send_feedback, this), midi_ui_context());; -#if 0 - /* XXXX SOMETHING GOES WRONG HERE (april 2012) - STILL DEBUGGING */ /* this signal is emitted by the process() callback, and if * send_feedback() is going to do anything, it should do it in the * context of the process() callback itself. */ Session::SendFeedback.connect_same_thread (*this, boost::bind (&GenericMidiControlProtocol::send_feedback, this)); -#endif + //Session::SendFeedback.connect (*this, MISSING_INVALIDATOR, boost::bind (&GenericMidiControlProtocol::send_feedback, this), midi_ui_context());; + /* this one is cross-thread */ Route::RemoteControlIDChange.connect (*this, MISSING_INVALIDATOR, boost::bind (&GenericMidiControlProtocol::reset_controllables, this), midi_ui_context()); @@ -466,23 +464,22 @@ GenericMidiControlProtocol::create_binding (PBD::Controllable* control, int pos, XMLNode& GenericMidiControlProtocol::get_state () { - XMLNode* node = new XMLNode ("Protocol"); + XMLNode& node (ControlProtocol::get_state()); char buf[32]; - node->add_property (X_("name"), _name); - node->add_property (X_("feedback"), do_feedback ? "1" : "0"); + node.add_property (X_("feedback"), do_feedback ? "1" : "0"); snprintf (buf, sizeof (buf), "%" PRIu64, _feedback_interval); - node->add_property (X_("feedback_interval"), buf); + node.add_property (X_("feedback_interval"), buf); snprintf (buf, sizeof (buf), "%d", _threshold); - node->add_property (X_("threshold"), buf); + node.add_property (X_("threshold"), buf); if (!_current_binding.empty()) { - node->add_property ("binding", _current_binding); + node.add_property ("binding", _current_binding); } XMLNode* children = new XMLNode (X_("Controls")); - node->add_child_nocopy (*children); + node.add_child_nocopy (*children); Glib::Threads::Mutex::Lock lm2 (controllables_lock); for (MIDIControllables::iterator i = controllables.begin(); i != controllables.end(); ++i) { @@ -497,7 +494,7 @@ GenericMidiControlProtocol::get_state () } } - return *node; + return node; } int diff --git a/libs/surfaces/generic_midi/wscript b/libs/surfaces/generic_midi/wscript index f3868fadfc..e871aeeec1 100644 --- a/libs/surfaces/generic_midi/wscript +++ b/libs/surfaces/generic_midi/wscript @@ -31,8 +31,6 @@ def build(bld): ''' obj.export_includes = ['.'] obj.defines = [ 'PACKAGE="ardour_genericmidi"' ] - if bld.is_defined ('INTERNAL_SHARED_LIBS'): - obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBGTKMM2EXT_DLL=1', 'LIBEVORAL_DLL=1' ] obj.includes = ['.', './generic_midi'] obj.name = 'libardour_generic_midi' obj.target = 'ardour_generic_midi' diff --git a/libs/surfaces/mackie/gui.cc b/libs/surfaces/mackie/gui.cc index ebb9fd584e..7425b38826 100644 --- a/libs/surfaces/mackie/gui.cc +++ b/libs/surfaces/mackie/gui.cc @@ -453,8 +453,6 @@ MackieControlProtocolGUI::action_changed (const Glib::ustring &sPath, const Glib return; } - cerr << "Changed to " << i->first << " aka " << i->second << endl; - Glib::RefPtr<Gtk::Action> act = ActionManager::get_action (i->second.c_str()); if (act) { @@ -504,8 +502,6 @@ MackieControlProtocolGUI::surface_combo_changed () /* update ipMIDI field */ - cerr << "New device called " << _cp.device_info().name() << " with ipMIDI ? " << _cp.device_info().uses_ipmidi() << endl; - ipmidi_base_port_spinner.set_sensitive (_cp.device_info().uses_ipmidi()); } @@ -522,7 +518,6 @@ MackieControlProtocolGUI::profile_combo_changed () void MackieControlProtocolGUI::ipmidi_spinner_changed () { - cerr << "Set IP MIDI base to " << ipmidi_base_port_spinner.get_value() << endl; _cp.set_ipmidi_base ((int16_t) lrintf (ipmidi_base_port_spinner.get_value())); } diff --git a/libs/surfaces/mackie/interface.cc b/libs/surfaces/mackie/interface.cc index abef84817d..35216da263 100644 --- a/libs/surfaces/mackie/interface.cc +++ b/libs/surfaces/mackie/interface.cc @@ -90,4 +90,4 @@ static ControlProtocolDescriptor mackie_descriptor = { }; -extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &mackie_descriptor; } +extern "C" LIBCONTROLCP_API ControlProtocolDescriptor* protocol_descriptor () { return &mackie_descriptor; } diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index 5b772d9af5..c83ce819d9 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -95,8 +95,6 @@ MackieControlProtocol::MackieControlProtocol (Session& session) , AbstractUI<MackieControlUIRequest> ("mackie") , _current_initial_bank (0) , _timecode_type (ARDOUR::AnyTime::BBT) - , _input_bundle (new ARDOUR::Bundle (_("Mackie Control In"), true)) - , _output_bundle (new ARDOUR::Bundle (_("Mackie Control Out"), false)) , _gui (0) , _zoom_mode (false) , _scrub_mode (false) @@ -108,6 +106,8 @@ MackieControlProtocol::MackieControlProtocol (Session& session) , needs_ipmidi_restart (false) , _metering_active (true) , _initialized (false) + , _surfaces_state (0) + , _surfaces_version (0) { DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::MackieControlProtocol\n"); @@ -131,7 +131,7 @@ MackieControlProtocol::~MackieControlProtocol() DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::~MackieControlProtocol tear_down_gui ()\n"); tear_down_gui (); - _active = false; + delete _surfaces_state; /* stop event loop */ DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::~MackieControlProtocol BaseUI::quit ()\n"); @@ -382,7 +382,7 @@ MackieControlProtocol::set_active (bool yn) { DEBUG_TRACE (DEBUG::MackieControl, string_compose("MackieControlProtocol::set_active init with yn: '%1'\n", yn)); - if (yn == _active) { + if (yn == active()) { return 0; } @@ -396,7 +396,6 @@ MackieControlProtocol::set_active (bool yn) return -1; } connect_session_signals (); - _active = true; update_surfaces (); /* set up periodic task for metering and automation @@ -410,10 +409,11 @@ MackieControlProtocol::set_active (bool yn) BaseUI::quit (); close (); - _active = false; } + ControlProtocol::set_active (yn); + DEBUG_TRACE (DEBUG::MackieControl, string_compose("MackieControlProtocol::set_active done with yn: '%1'\n", yn)); return 0; @@ -422,7 +422,7 @@ MackieControlProtocol::set_active (bool yn) bool MackieControlProtocol::periodic () { - if (!_active) { + if (!active()) { return false; } @@ -525,7 +525,7 @@ void MackieControlProtocol::update_surfaces() { DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::update_surfaces() init\n"); - if (!_active) { + if (!active()) { return; } @@ -608,34 +608,36 @@ MackieControlProtocol::set_profile (const string& profile_name) } int -MackieControlProtocol::set_device (const string& device_name, bool allow_activation) +MackieControlProtocol::set_device_info (const string& device_name) { map<string,DeviceInfo>::iterator d = DeviceInfo::device_info.find (device_name); - DEBUG_TRACE (DEBUG::MackieControl, string_compose ("new device chosen %1, activation allowed ? %2\n", - device_name, allow_activation)); + DEBUG_TRACE (DEBUG::MackieControl, string_compose ("new device chosen %1\n", device_name)); if (d == DeviceInfo::device_info.end()) { return -1; } - if (_active) { - clear_ports (); - clear_surfaces (); + _device_info = d->second; + + return 0; +} + +int +MackieControlProtocol::set_device (const string& device_name) +{ + if (set_device_info (device_name)) { + return -1; } - _device_info = d->second; + clear_surfaces (); - if (allow_activation) { - set_active (true); - } else { - if (_active) { - if (create_surfaces ()) { - return -1; - } - switch_banks (0, true); - } + if (create_surfaces ()) { + return -1; } + + switch_banks (0, true); + return 0; } @@ -664,6 +666,10 @@ MackieControlProtocol::create_surfaces () return -1; } + if (_surfaces_state) { + surface->set_state (*_surfaces_state, _surfaces_version); + } + { Glib::Threads::Mutex::Lock lm (surfaces_lock); surfaces.push_back (surface); @@ -680,6 +686,10 @@ MackieControlProtocol::create_surfaces () stype = ext; if (!_device_info.uses_ipmidi()) { + + _input_bundle.reset (new ARDOUR::Bundle (_("Mackie Control In"), true)); + _output_bundle.reset (new ARDOUR::Bundle (_("Mackie Control Out"), false)); + _input_bundle->add_channel ( surface->port().input_port().name(), ARDOUR::DataType::MIDI, @@ -691,6 +701,16 @@ MackieControlProtocol::create_surfaces () ARDOUR::DataType::MIDI, session->engine().make_port_name_non_relative (surface->port().output_port().name()) ); + + session->BundleAdded (_input_bundle); + session->BundleAdded (_output_bundle); + + } else { + _input_bundle.reset ((ARDOUR::Bundle*) 0); + _output_bundle.reset ((ARDOUR::Bundle*) 0); + + session->BundleRemoved (_input_bundle); + session->BundleRemoved (_output_bundle); } int fd; @@ -715,9 +735,6 @@ MackieControlProtocol::create_surfaces () void MackieControlProtocol::close() { - clear_ports (); - - port_connections.drop_connections (); session_connections.drop_connections (); route_connections.drop_connections (); periodic_connection.disconnect (); @@ -728,38 +745,42 @@ MackieControlProtocol::close() XMLNode& MackieControlProtocol::get_state() { + XMLNode& node (ControlProtocol::get_state()); + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::get_state init\n"); char buf[16]; - // add name of protocol - XMLNode* node = new XMLNode (X_("Protocol")); - node->add_property (X_("name"), ARDOUR::ControlProtocol::_name); - // add current bank snprintf (buf, sizeof (buf), "%d", _current_initial_bank); - node->add_property (X_("bank"), buf); + node.add_property (X_("bank"), buf); // ipMIDI base port (possibly not used) snprintf (buf, sizeof (buf), "%d", _ipmidi_base); - node->add_property (X_("ipmidi-base"), buf); + node.add_property (X_("ipmidi-base"), buf); + + node.add_property (X_("device-profile"), _device_profile.name()); + node.add_property (X_("device-name"), _device_info.name()); + + XMLNode* snode = new XMLNode (X_("Surfaces")); + for (Surfaces::iterator s = surfaces.begin(); s != surfaces.end(); ++s) { + snode->add_child_nocopy ((*s)->get_state()); + } - node->add_property (X_("device-profile"), _device_profile.name()); - node->add_property (X_("device-name"), _device_info.name()); + node.add_child_nocopy (*snode); DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::get_state done\n"); - return *node; + return node; } int -MackieControlProtocol::set_state (const XMLNode & node, int /*version*/) +MackieControlProtocol::set_state (const XMLNode & node, int version) { - DEBUG_TRACE (DEBUG::MackieControl, string_compose ("MackieControlProtocol::set_state: active %1\n", _active)); + DEBUG_TRACE (DEBUG::MackieControl, string_compose ("MackieControlProtocol::set_state: active %1\n", active())); int retval = 0; const XMLProperty* prop; uint32_t bank = 0; - bool active = _active; if ((prop = node.property (X_("ipmidi-base"))) != 0) { set_ipmidi_base (atoi (prop->value())); @@ -770,24 +791,26 @@ MackieControlProtocol::set_state (const XMLNode & node, int /*version*/) bank = atoi (prop->value()); } - if ((prop = node.property (X_("active"))) != 0) { - active = string_is_affirmative (prop->value()); - } - if ((prop = node.property (X_("device-name"))) != 0) { - set_device (prop->value(), false); + set_device_info (prop->value()); } if ((prop = node.property (X_("device-profile"))) != 0) { set_profile (prop->value()); } + + XMLNode* snode = node.child (X_("Surfaces")); + + delete _surfaces_state; + _surfaces_state = 0; - set_active (active); - - if (_active) { - switch_banks (bank, true); + if (snode) { + _surfaces_state = new XMLNode (*snode); + _surfaces_version = version; } + switch_banks (bank, true); + DEBUG_TRACE (DEBUG::MackieControl, "MackieControlProtocol::set_state done\n"); return retval; @@ -1034,8 +1057,12 @@ list<boost::shared_ptr<ARDOUR::Bundle> > MackieControlProtocol::bundles () { list<boost::shared_ptr<ARDOUR::Bundle> > b; - b.push_back (_input_bundle); - b.push_back (_output_bundle); + + if (_input_bundle) { + b.push_back (_input_bundle); + b.push_back (_output_bundle); + } + return b; } @@ -1260,8 +1287,10 @@ MackieControlProtocol::midi_input_handler (IOCondition ioc, MIDI::Port* port) void MackieControlProtocol::clear_ports () { - _input_bundle->remove_channels (); - _output_bundle->remove_channels (); + if (_input_bundle) { + _input_bundle->remove_channels (); + _output_bundle->remove_channels (); + } for (PortSources::iterator i = port_sources.begin(); i != port_sources.end(); ++i) { g_source_destroy (*i); @@ -1582,7 +1611,7 @@ MackieControlProtocol::set_ipmidi_base (int16_t portnum) to restart. */ - if (_active && _device_info.uses_ipmidi()) { + if (active() && _device_info.uses_ipmidi()) { needs_ipmidi_restart = true; } } @@ -1590,7 +1619,6 @@ MackieControlProtocol::set_ipmidi_base (int16_t portnum) int MackieControlProtocol::ipmidi_restart () { - clear_ports (); clear_surfaces (); if (create_surfaces ()) { return -1; @@ -1603,6 +1631,7 @@ MackieControlProtocol::ipmidi_restart () void MackieControlProtocol::clear_surfaces () { + clear_ports (); Glib::Threads::Mutex::Lock lm (surfaces_lock); surfaces.clear (); } diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h index 81e1436938..4ff5d53f25 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.h +++ b/libs/surfaces/mackie/mackie_control_protocol.h @@ -121,7 +121,7 @@ class MackieControlProtocol Mackie::DeviceProfile& device_profile() { return _device_profile; } int set_active (bool yn); - int set_device (const std::string&, bool allow_activation = true); + int set_device (const std::string&); void set_profile (const std::string&); FlipMode flip_mode () const { return _flip_mode; } @@ -263,7 +263,6 @@ class MackieControlProtocol uint32_t _current_initial_bank; PBD::ScopedConnectionList audio_engine_connections; PBD::ScopedConnectionList session_connections; - PBD::ScopedConnectionList port_connections; PBD::ScopedConnectionList route_connections; PBD::ScopedConnectionList gui_connections; // timer for two quick marker left presses @@ -289,8 +288,9 @@ class MackieControlProtocol bool needs_ipmidi_restart; bool _metering_active; bool _initialized; - ARDOUR::RouteNotificationList _last_selected_routes; + XMLNode* _surfaces_state; + int _surfaces_version; int create_surfaces (); bool periodic(); @@ -304,7 +304,8 @@ class MackieControlProtocol void _gui_track_selection_changed (ARDOUR::RouteNotificationList*, bool save_list); int ipmidi_restart (); void initialize (); - + int set_device_info (const std::string& device_name); + /* BUTTON HANDLING */ typedef std::set<uint32_t> DownButtonList; diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc index 507491d84c..694c73b1bc 100644 --- a/libs/surfaces/mackie/surface.cc +++ b/libs/surfaces/mackie/surface.cc @@ -141,6 +141,39 @@ Surface::~Surface () DEBUG_TRACE (DEBUG::MackieControl, "Surface::~Surface done\n"); } +XMLNode& +Surface::get_state() +{ + char buf[64]; + snprintf (buf, sizeof (buf), X_("surface-%u"), _number); + XMLNode* node = new XMLNode (buf); + + node->add_child_nocopy (_port->get_state()); + + return *node; +} + +int +Surface::set_state (const XMLNode& node, int version) +{ + char buf[64]; + snprintf (buf, sizeof (buf), X_("surface-%u"), _number); + XMLNode* mynode = node.child (buf); + + if (!mynode) { + return 0; + } + + XMLNode* portnode = mynode->child (X_("Port")); + if (portnode) { + if (_port->set_state (*portnode, version)) { + return -1; + } + } + + return 0; +} + const MidiByteArray& Surface::sysex_hdr() const { @@ -589,12 +622,6 @@ Surface::turn_it_on () } void -Surface::handle_port_inactive (SurfacePort*) -{ - _active = false; -} - -void Surface::write_sysex (const MidiByteArray & mba) { if (mba.empty()) { diff --git a/libs/surfaces/mackie/surface.h b/libs/surfaces/mackie/surface.h index ecaa4171f7..1ed83aef1d 100644 --- a/libs/surfaces/mackie/surface.h +++ b/libs/surfaces/mackie/surface.h @@ -3,6 +3,7 @@ #include <stdint.h> +#include "pbd/xml++.h" #include "midi++/types.h" #include "control_protocol/types.h" @@ -92,9 +93,6 @@ public: /// unless it's already connected void connect_to_signals (); - /// notification from a MackiePort that it's now inactive - void handle_port_inactive(Mackie::SurfacePort *); - /// write a sysex message void write_sysex (const MidiByteArray& mba); void write_sysex (MIDI::byte msg); @@ -149,6 +147,9 @@ public: void notify_metering_state_changed(); void turn_it_on (); + XMLNode& get_state (); + int set_state (const XMLNode&, int version); + protected: private: diff --git a/libs/surfaces/mackie/surface_port.cc b/libs/surfaces/mackie/surface_port.cc index 508f501f59..013a0019c7 100644 --- a/libs/surfaces/mackie/surface_port.cc +++ b/libs/surfaces/mackie/surface_port.cc @@ -51,11 +51,12 @@ 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; + } else { + _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); @@ -70,21 +71,71 @@ SurfacePort::SurfacePort (Surface& s) SurfacePort::~SurfacePort() { - if (_surface->mcp().device_info().uses_ipmidi()) { + if (dynamic_cast<MIDI::IPMIDIPort*>(_input_port)) { delete _input_port; } else { if (_async_in) { AudioEngine::instance()->unregister_port (_async_in); - _async_in.reset (); + _async_in.reset ((ARDOUR::Port*) 0); } if (_async_out) { _output_port->drain (10000); AudioEngine::instance()->unregister_port (_async_out); - _async_out.reset (); + _async_out.reset ((ARDOUR::Port*) 0); + } + } +} + +XMLNode& +SurfacePort::get_state () +{ + XMLNode* node = new XMLNode (X_("Port")); + + if (dynamic_cast<MIDI::IPMIDIPort*>(_input_port)) { + /* no state required for IPMidi ports */ + return *node; + } + + XMLNode* child; + + child = new XMLNode (X_("Input")); + child->add_child_nocopy (_async_in->get_state()); + node->add_child_nocopy (*child); + + + child = new XMLNode (X_("Output")); + child->add_child_nocopy (_async_out->get_state()); + node->add_child_nocopy (*child); + + return *node; +} + +int +SurfacePort::set_state (const XMLNode& node, int version) +{ + if (dynamic_cast<MIDI::IPMIDIPort*>(_input_port)) { + return 0; + } + + XMLNode* child; + + if ((child = node.child (X_("Input"))) != 0) { + XMLNode* portnode = child->child (Port::state_node_name.c_str()); + if (portnode) { + _async_in->set_state (*portnode, version); } } + + if ((child = node.child (X_("Output"))) != 0) { + XMLNode* portnode = child->child (Port::state_node_name.c_str()); + if (portnode) { + _async_out->set_state (*portnode, version); + } + } + + return 0; } // wrapper for one day when strerror_r is working properly diff --git a/libs/surfaces/mackie/surface_port.h b/libs/surfaces/mackie/surface_port.h index 751ee848d7..b361294fa9 100644 --- a/libs/surfaces/mackie/surface_port.h +++ b/libs/surfaces/mackie/surface_port.h @@ -50,15 +50,18 @@ class Surface; class SurfacePort { public: - SurfacePort (Mackie::Surface&); - virtual ~SurfacePort(); - - /// an easier way to output bytes via midi - int write (const MidiByteArray&); + SurfacePort (Mackie::Surface&); + virtual ~SurfacePort(); + + /// an easier way to output bytes via midi + int write (const MidiByteArray&); MIDI::Port& input_port() const { return *_input_port; } MIDI::Port& output_port() const { return *_output_port; } + XMLNode& get_state (); + int set_state (const XMLNode&, int version); + protected: private: diff --git a/libs/surfaces/mackie/wscript b/libs/surfaces/mackie/wscript index a7177bf0a6..2dc546a5d7 100644 --- a/libs/surfaces/mackie/wscript +++ b/libs/surfaces/mackie/wscript @@ -43,12 +43,11 @@ def build(bld): ''' obj.export_includes = ['./mackie'] obj.defines = [ 'PACKAGE="ardour_mackie"' ] - if bld.is_defined ('INTERNAL_SHARED_LIBS'): - obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBGTKMM2EXT_DLL=1', 'LIBEVORAL_DLL=1' ] # need ../libs because some GTK2 header files require stuff there obj.includes = ['.', '../libs'] obj.name = 'libardour_mcp' - obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ] + obj.defines = [ 'LIBCONTROLCP_EXPORTS' ] + obj.defines += [ 'PACKAGE="libardour_mcp"' ] obj.target = 'ardour_mcp' obj.uselib = 'GTKMM' obj.use = 'libardour libardour_cp libgtkmm2ext' diff --git a/libs/surfaces/osc/interface.cc b/libs/surfaces/osc/interface.cc index f20d898418..7c09828f46 100644 --- a/libs/surfaces/osc/interface.cc +++ b/libs/surfaces/osc/interface.cc @@ -57,5 +57,5 @@ static ControlProtocolDescriptor osc_descriptor = { destroy : delete_osc_protocol }; -extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &osc_descriptor; } +extern "C" LIBCONTROLCP_API ControlProtocolDescriptor* protocol_descriptor () { return &osc_descriptor; } diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc index 8b57dc0c3e..e252d22e3d 100644 --- a/libs/surfaces/osc/osc.cc +++ b/libs/surfaces/osc/osc.cc @@ -31,6 +31,7 @@ #include <glib/gstdio.h> #include <glibmm/miscutils.h> +#include <pbd/convert.h> #include <pbd/pthread_utils.h> #include <pbd/file_utils.h> #include <pbd/failed_constructor.h> @@ -72,22 +73,20 @@ static void error_callback(int, const char *, const char *) #endif OSC::OSC (Session& s, uint32_t port) - : ControlProtocol (s, "OSC") + : ControlProtocol (s, X_("Open Sound Control (OSC)")) , AbstractUI<OSCUIRequest> ("osc") + , local_server (0) + , remote_server (0) , _port(port) + , _ok (true) + , _shutdown (false) + , _osc_server (0) + , _osc_unix_server (0) + , _namespace_root ("/ardour") + , _send_route_changes (true) { _instance = this; - _shutdown = false; - _osc_server = 0; - _osc_unix_server = 0; - _namespace_root = "/ardour"; - _send_route_changes = true; - /* glibmm hack */ - local_server = 0; - remote_server = 0; - - // "Application Hooks" session_loaded (s); session->Exported.connect (*this, MISSING_INVALIDATOR, boost::bind (&OSC::session_exported, this, _1, _2), this); } @@ -114,11 +113,21 @@ OSC::do_request (OSCUIRequest* req) int OSC::set_active (bool yn) { - if (yn) { - return start (); - } else { - return stop (); + if (yn != active()) { + + if (yn) { + if (start ()) { + return -1; + } + } else { + if (stop ()) { + return -1; + } + } + } + + return ControlProtocol::set_active (yn); } bool @@ -1060,16 +1069,26 @@ OSC::route_plugin_parameter_print (int rid, int piid, int par) XMLNode& OSC::get_state () { - XMLNode* node = new XMLNode ("Protocol"); - - node->add_property (X_("name"), "Open Sound Control (OSC)"); - node->add_property (X_("feedback"), _send_route_changes ? "1" : "0"); + XMLNode& node (ControlProtocol::get_state()); - return *node; + node.add_property (X_("feedback"), _send_route_changes ? "1" : "0"); + return node; } int -OSC::set_state (const XMLNode&, int /*version*/) +OSC::set_state (const XMLNode& node, int /*version*/) { + const XMLProperty* prop = node.property (X_("feedback")); + + if (prop) { + if (PBD::string_is_affirmative (prop->value())) { + _send_route_changes = true; + } else { + _send_route_changes = false; + } + } else { + /* leave it alone */ + } + return 0; } diff --git a/libs/surfaces/osc/wscript b/libs/surfaces/osc/wscript index 102b7426bd..a00663e977 100644 --- a/libs/surfaces/osc/wscript +++ b/libs/surfaces/osc/wscript @@ -28,8 +28,6 @@ def build(bld): ''' obj.export_includes = ['.'] obj.defines = [ 'PACKAGE="ardour_osc"' ] - if bld.is_defined ('INTERNAL_SHARED_LIBS'): - obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ] obj.includes = ['.', './osc'] obj.name = 'libardour_osc' obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ] diff --git a/libs/surfaces/tranzport/state.cc b/libs/surfaces/tranzport/state.cc index 7995e1aa02..119e7953d2 100644 --- a/libs/surfaces/tranzport/state.cc +++ b/libs/surfaces/tranzport/state.cc @@ -50,9 +50,7 @@ using namespace PBD; XMLNode& TranzportControlProtocol::get_state () { - XMLNode* node = new XMLNode (X_("Protocol")); - node->add_property (X_("name"), _name); - return *node; + return ControlProtocol::get_state(); } int diff --git a/libs/surfaces/tranzport/wscript b/libs/surfaces/tranzport/wscript index a73cec2832..05fd7cf5d6 100644 --- a/libs/surfaces/tranzport/wscript +++ b/libs/surfaces/tranzport/wscript @@ -40,8 +40,6 @@ def build(bld): ''' obj.export_includes = ['./tranzport'] obj.defines = [ 'PACKAGE="ardour_tranzport"' ] - if bld.is_defined ('INTERNAL_SHARED_LIBS'): - obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBGTKMM2EXT_DLL=1' ] obj.includes = ['.', './tranzport'] obj.name = 'libardour_tranzport' obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ] diff --git a/libs/surfaces/wiimote/interface.cc b/libs/surfaces/wiimote/interface.cc index 9a704e445e..8695facb8d 100644 --- a/libs/surfaces/wiimote/interface.cc +++ b/libs/surfaces/wiimote/interface.cc @@ -61,5 +61,5 @@ static ControlProtocolDescriptor wiimote_descriptor = { destroy : delete_wiimote_protocol }; -extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &wiimote_descriptor; } +extern "C" LIBCONTROLCP_API ControlProtocolDescriptor* protocol_descriptor () { return &wiimote_descriptor; } diff --git a/libs/surfaces/wiimote/wiimote.cc b/libs/surfaces/wiimote/wiimote.cc index 68f2125dcb..963bf90df7 100644 --- a/libs/surfaces/wiimote/wiimote.cc +++ b/libs/surfaces/wiimote/wiimote.cc @@ -65,7 +65,8 @@ WiimoteControlProtocol::set_active (bool yn) DEBUG_TRACE (DEBUG::WiimoteControl, string_compose ("WiimoteControlProtocol::set_active init with yn: '%1'\n", yn)); /* do nothing if the active state is not changing */ - if (yn == _active) { + + if (yn == active()) { return 0; } @@ -77,8 +78,7 @@ WiimoteControlProtocol::set_active (bool yn) result = stop (); } - /* remember new active state */ - _active = yn; + ControlProtocol::set_active (yn); DEBUG_TRACE (DEBUG::WiimoteControl, "WiimoteControlProtocol::set_active done\n"); @@ -88,10 +88,9 @@ WiimoteControlProtocol::set_active (bool yn) XMLNode& WiimoteControlProtocol::get_state () { - XMLNode *node = new XMLNode ("Protocol"); - node->add_property (X_("name"), ARDOUR::ControlProtocol::_name); - node->add_property (X_("feedback"), "0"); - return *node; + XMLNode& node (ControlProtocol::get_state()); + node.add_property (X_("feedback"), "0"); + return node; } int diff --git a/libs/surfaces/wiimote/wscript b/libs/surfaces/wiimote/wscript index 4dca1fcdb0..e63713c855 100644 --- a/libs/surfaces/wiimote/wscript +++ b/libs/surfaces/wiimote/wscript @@ -26,8 +26,6 @@ def build(bld): ''' obj.export_includes = ['./wiimote'] obj.defines = [ 'PACKAGE="ardour_wiimote"' ] - if bld.is_defined ('INTERNAL_SHARED_LIBS'): - obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBGTKMM2EXT_DLL=1', 'LIBEVORAL_DLL=1' ] obj.includes = ['.', '../libs'] obj.name = 'libardour_wiimote' obj.defines = [ 'ARDOURSURFACE_DLL_EXPORTS' ] diff --git a/libs/taglib/wscript b/libs/taglib/wscript index 8e6fbbbe48..8c1f1fdd1e 100644 --- a/libs/taglib/wscript +++ b/libs/taglib/wscript @@ -24,10 +24,16 @@ def options(opt): autowaf.set_options(opt) def configure(conf): - conf.load('compiler_cxx') - autowaf.configure(conf) + if conf.is_defined('USE_EXTERNAL_LIBS'): + autowaf.check_pkg(conf, 'taglib', uselib_store='TAGLIB', atleast_version="1.4", mandatory=True) + else: + conf.load('compiler_cxx') + autowaf.configure(conf) def build(bld): + if bld.is_defined('USE_EXTERNAL_LIBS'): + return + # Library obj = bld(features = 'cxx cxxshlib') sources = bld.path.ant_glob('taglib/*.cpp') diff --git a/libs/timecode/wscript b/libs/timecode/wscript index 034292b1dd..6bbf9493bd 100644 --- a/libs/timecode/wscript +++ b/libs/timecode/wscript @@ -3,21 +3,6 @@ from waflib.extras import autowaf as autowaf from waflib import Options import os -# Version of this package (even if built as a child) -TIMECODE_VERSION = '0.0.0' - -# Library version (UNIX style major, minor, micro) -# major increment <=> incompatible changes -# minor increment <=> compatible changes (additions) -# micro increment <=> no interface changes -# Version history: -# 0.0.0 = 0,0,0 -TIMECODE_LIB_VERSION = '0.0.0' - -# Variables for 'waf dist' -APPNAME = 'timecode' -VERSION = TIMECODE_VERSION - # Mandatory variables top = '.' out = 'build' @@ -30,15 +15,16 @@ def configure(conf): autowaf.configure(conf) def build(bld): - # Library - obj = bld(features = 'cxx cxxshlib') - obj.source = [ 'src/time.cc', 'src/bbt_time.cc' ] - obj.export_includes = ['.'] - obj.includes = ['.', './src'] - obj.name = 'libtimecode' - obj.target = 'timecode' - obj.vnum = TIMECODE_LIB_VERSION - obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3') + bld (export_includes = ['.'], + includes = ['.'], + name = 'libtimecode_includes' + ) + + bld.stlib (cxxflags = [ '-fPIC' ], + source = [ 'src/time.cc', 'src/bbt_time.cc' ], + target = 'libtimecode', + use = 'libtimecode_includes' + ) def shutdown(): autowaf.shutdown() diff --git a/libs/vamp-plugins/AmplitudeFollower.h b/libs/vamp-plugins/AmplitudeFollower.h index 6c3426e324..3aa91f51f7 100644 --- a/libs/vamp-plugins/AmplitudeFollower.h +++ b/libs/vamp-plugins/AmplitudeFollower.h @@ -37,7 +37,7 @@ #ifndef _AMPLITUDE_FOLLOWER_PLUGIN_H_ #define _AMPLITUDE_FOLLOWER_PLUGIN_H_ -#include "vamp-sdk/Plugin.h" +#include <vamp-sdk/Plugin.h> /** * Example plugin implementing the SuperCollider amplitude follower diff --git a/libs/vamp-plugins/Onset.h b/libs/vamp-plugins/Onset.h index c858151b21..314e107308 100644 --- a/libs/vamp-plugins/Onset.h +++ b/libs/vamp-plugins/Onset.h @@ -17,7 +17,7 @@ #ifndef _ONSET_PLUGIN_H_ #define _ONSET_PLUGIN_H_ -#include "vamp-sdk/Plugin.h" +#include <vamp-sdk/Plugin.h> #include <aubio/aubio.h> class Onset : public Vamp::Plugin diff --git a/libs/vamp-plugins/OnsetDetect.h b/libs/vamp-plugins/OnsetDetect.h index 3ef50afbb3..d244f66c2d 100644 --- a/libs/vamp-plugins/OnsetDetect.h +++ b/libs/vamp-plugins/OnsetDetect.h @@ -15,7 +15,7 @@ #ifndef _ONSET_DETECT_PLUGIN_H_ #define _ONSET_DETECT_PLUGIN_H_ -#include "vamp-sdk/Plugin.h" +#include <vamp-sdk/Plugin.h> class OnsetDetectorData; diff --git a/libs/vamp-plugins/PercussionOnsetDetector.h b/libs/vamp-plugins/PercussionOnsetDetector.h index d54c0cfa13..3cb094ebba 100644 --- a/libs/vamp-plugins/PercussionOnsetDetector.h +++ b/libs/vamp-plugins/PercussionOnsetDetector.h @@ -37,7 +37,7 @@ #ifndef _PERCUSSION_ONSET_DETECTOR_PLUGIN_H_ #define _PERCUSSION_ONSET_DETECTOR_PLUGIN_H_ -#include "vamp-sdk/Plugin.h" +#include <vamp-sdk/Plugin.h> /** * Example plugin that detects percussive events. diff --git a/libs/vamp-plugins/SpectralCentroid.h b/libs/vamp-plugins/SpectralCentroid.h index 02cc8d981d..8046338a4d 100644 --- a/libs/vamp-plugins/SpectralCentroid.h +++ b/libs/vamp-plugins/SpectralCentroid.h @@ -37,7 +37,7 @@ #ifndef _SPECTRAL_CENTROID_PLUGIN_H_ #define _SPECTRAL_CENTROID_PLUGIN_H_ -#include "vamp-sdk/Plugin.h" +#include <vamp-sdk/Plugin.h> /** * Example plugin that calculates the centre of gravity of the diff --git a/libs/vamp-plugins/ZeroCrossing.h b/libs/vamp-plugins/ZeroCrossing.h index ede2a74492..e6f81608db 100644 --- a/libs/vamp-plugins/ZeroCrossing.h +++ b/libs/vamp-plugins/ZeroCrossing.h @@ -37,7 +37,7 @@ #ifndef _ZERO_CROSSING_PLUGIN_H_ #define _ZERO_CROSSING_PLUGIN_H_ -#include "vamp-sdk/Plugin.h" +#include <vamp-sdk/Plugin.h> /** * Example plugin that calculates the positions and density of diff --git a/libs/vamp-plugins/plugins.cpp b/libs/vamp-plugins/plugins.cpp index 4a2523bc1d..6a04077882 100644 --- a/libs/vamp-plugins/plugins.cpp +++ b/libs/vamp-plugins/plugins.cpp @@ -38,8 +38,8 @@ #include "libvampplugins-config.h" #endif -#include "vamp/vamp.h" -#include "vamp-sdk/PluginAdapter.h" +#include <vamp/vamp.h> +#include <vamp-sdk/PluginAdapter.h> #include "ZeroCrossing.h" #include "SpectralCentroid.h" diff --git a/libs/vamp-plugins/wscript b/libs/vamp-plugins/wscript index 46198cc18e..9568e96367 100644 --- a/libs/vamp-plugins/wscript +++ b/libs/vamp-plugins/wscript @@ -26,7 +26,8 @@ def configure(conf): conf.load('compiler_cxx') autowaf.configure(conf) autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F', mandatory=True) - autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO', mandatory=False) + autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO', mandatory=False, + exact_version='0.3.2') conf.write_config_header('libvampplugins-config.h', remove=False) def build(bld): diff --git a/libs/vamp-sdk/wscript b/libs/vamp-sdk/wscript index aa4dfdc1da..e919640c40 100644 --- a/libs/vamp-sdk/wscript +++ b/libs/vamp-sdk/wscript @@ -23,13 +23,19 @@ def options(opt): autowaf.set_options(opt) def configure(conf): - conf.load('compiler_cxx') - autowaf.configure(conf) - autowaf.check_pkg(conf, 'fftw3', uselib_store='FFTW3', mandatory=True) - autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F', mandatory=True) - conf.env.append_value('CXXFLAGS', '-DHAVE_FFTW3') + if conf.is_defined('USE_EXTERNAL_LIBS'): + autowaf.check_pkg(conf, 'vamp-sdk', uselib_store='VAMPSDK', mandatory=True) + autowaf.check_pkg(conf, 'vamp-hostsdk', uselib_store='VAMPHOSTSDK', mandatory=True) + else: + conf.load('compiler_cxx') + autowaf.configure(conf) + autowaf.check_pkg(conf, 'fftw3', uselib_store='FFTW3', mandatory=True) + autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F', mandatory=True) + conf.env.append_value('CXXFLAGS', '-DHAVE_FFTW3') def build(bld): + if bld.is_defined('USE_EXTERNAL_LIBS'): + return # Host Library obj = bld(features = 'cxx cxxshlib') obj.source = ''' |