summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/audio_backend.h93
-rw-r--r--libs/ardour/ardour/audio_buffer.h15
-rw-r--r--libs/ardour/ardour/audioengine.h3
-rw-r--r--libs/ardour/ardour/audiofile_tagger.h6
-rw-r--r--libs/ardour/ardour/buffer.h5
-rw-r--r--libs/ardour/ardour/buffer_set.h1
-rw-r--r--libs/ardour/ardour/control_protocol_manager.h6
-rw-r--r--libs/ardour/ardour/cycle_timer.h2
-rw-r--r--libs/ardour/ardour/filesystem_paths.h4
-rw-r--r--libs/ardour/ardour/iec1ppmdsp.h4
-rw-r--r--libs/ardour/ardour/iec2ppmdsp.h4
-rw-r--r--libs/ardour/ardour/kmeterdsp.h2
-rw-r--r--libs/ardour/ardour/libardour_visibility.h35
-rw-r--r--libs/ardour/ardour/midi_model.h2
-rw-r--r--libs/ardour/ardour/midi_ui.h3
-rw-r--r--libs/ardour/ardour/panner.h21
-rw-r--r--libs/ardour/ardour/panner_manager.h3
-rw-r--r--libs/ardour/ardour/panner_shell.h13
-rw-r--r--libs/ardour/ardour/plugin.h18
-rw-r--r--libs/ardour/ardour/plugin_insert.h3
-rw-r--r--libs/ardour/ardour/port_engine.h5
-rw-r--r--libs/ardour/ardour/rc_configuration_vars.h2
-rw-r--r--libs/ardour/ardour/route.h16
-rw-r--r--libs/ardour/ardour/session.h13
-rw-r--r--libs/ardour/ardour/session_configuration_vars.h1
-rw-r--r--libs/ardour/ardour/slave.h30
-rw-r--r--libs/ardour/ardour/types.h11
-rw-r--r--libs/ardour/ardour/utils.h1
-rw-r--r--libs/ardour/ardour/visibility.h74
-rw-r--r--libs/ardour/ardour/vumeterdsp.h4
-rw-r--r--libs/ardour/audio_buffer.cc44
-rw-r--r--libs/ardour/audio_port.cc9
-rw-r--r--libs/ardour/audioanalyser.cc2
-rw-r--r--libs/ardour/audioengine.cc25
-rw-r--r--libs/ardour/audiofile_tagger.cc12
-rw-r--r--libs/ardour/audioregion.cc2
-rw-r--r--libs/ardour/buffer_set.cc15
-rw-r--r--libs/ardour/control_protocol_manager.cc87
-rw-r--r--libs/ardour/engine_slave.cc26
-rw-r--r--libs/ardour/enums.cc13
-rw-r--r--libs/ardour/export_channel.cc6
-rw-r--r--libs/ardour/export_handler.cc13
-rw-r--r--libs/ardour/globals.cc4
-rw-r--r--libs/ardour/iec1ppmdsp.cc2
-rw-r--r--libs/ardour/iec2ppmdsp.cc2
-rw-r--r--libs/ardour/kmeterdsp.cc2
-rw-r--r--libs/ardour/linux_vst_support.cc10
-rw-r--r--libs/ardour/lv2_plugin.cc39
-rw-r--r--libs/ardour/meter.cc13
-rw-r--r--libs/ardour/midi_buffer.cc21
-rw-r--r--libs/ardour/midi_clock_slave.cc48
-rw-r--r--libs/ardour/midi_model.cc2
-rw-r--r--libs/ardour/midi_port.cc22
-rw-r--r--libs/ardour/midi_ui.cc58
-rw-r--r--libs/ardour/midiport_manager.cc16
-rw-r--r--libs/ardour/panner_manager.cc91
-rw-r--r--libs/ardour/panner_search_path.cc4
-rw-r--r--libs/ardour/panner_shell.cc50
-rw-r--r--libs/ardour/plugin_insert.cc42
-rw-r--r--libs/ardour/plugin_manager.cc4
-rw-r--r--libs/ardour/po/cs.po568
-rw-r--r--libs/ardour/po/de.po309
-rw-r--r--libs/ardour/po/el.po1974
-rw-r--r--libs/ardour/po/es.po668
-rw-r--r--libs/ardour/po/it.po1494
-rw-r--r--libs/ardour/po/nn.po1639
-rw-r--r--libs/ardour/po/pl.po669
-rw-r--r--libs/ardour/po/ru.po227
-rw-r--r--libs/ardour/po/sv.po568
-rw-r--r--libs/ardour/po/zh.po658
-rw-r--r--libs/ardour/port_insert.cc1
-rw-r--r--libs/ardour/processor.cc1
-rw-r--r--libs/ardour/quantize.cc11
-rw-r--r--libs/ardour/rb_effect.cc3
-rw-r--r--libs/ardour/route.cc164
-rw-r--r--libs/ardour/route_graph.cc4
-rw-r--r--libs/ardour/session.cc55
-rw-r--r--libs/ardour/session_process.cc6
-rw-r--r--libs/ardour/session_state.cc18
-rw-r--r--libs/ardour/session_time.cc4
-rw-r--r--libs/ardour/slave.cc13
-rw-r--r--libs/ardour/test/control_surfaces_test.cc4
-rw-r--r--libs/ardour/test/interpolation_test.cc6
-rw-r--r--libs/ardour/thread_buffers.cc10
-rw-r--r--libs/ardour/ticker.cc170
-rw-r--r--libs/ardour/utils.cc35
-rw-r--r--libs/ardour/vst_plugin.cc4
-rw-r--r--libs/ardour/vumeterdsp.cc4
-rw-r--r--libs/ardour/wscript49
-rw-r--r--libs/audiographer/audiographer/broadcast_info.h2
-rw-r--r--libs/audiographer/audiographer/debuggable.h8
-rw-r--r--libs/audiographer/audiographer/general/silence_trimmer.h6
-rw-r--r--libs/audiographer/audiographer/visibility.h35
-rw-r--r--libs/audiographer/src/general/sample_format_converter.cc27
-rw-r--r--libs/audiographer/tests/general/sample_format_converter_test.cc18
-rw-r--r--libs/audiographer/wscript4
-rw-r--r--libs/backends/jack/jack_audiobackend.cc92
-rw-r--r--libs/backends/jack/jack_audiobackend.h13
-rw-r--r--libs/backends/jack/jack_connection.cc5
-rw-r--r--libs/backends/jack/jack_portengine.cc4
-rw-r--r--libs/backends/jack/jack_session.cc1
-rw-r--r--libs/backends/jack/jack_utils.cc108
-rw-r--r--libs/backends/jack/wscript2
-rw-r--r--libs/canvas/arc.cc16
-rw-r--r--libs/canvas/arrow.cc17
-rw-r--r--libs/canvas/canvas.cc457
-rw-r--r--libs/canvas/canvas/arc.h5
-rw-r--r--libs/canvas/canvas/arrow.h6
-rw-r--r--libs/canvas/canvas/canvas.h47
-rw-r--r--libs/canvas/canvas/circle.h4
-rw-r--r--libs/canvas/canvas/curve.h8
-rw-r--r--libs/canvas/canvas/debug.h24
-rw-r--r--libs/canvas/canvas/drag_handle.h41
-rw-r--r--libs/canvas/canvas/fill.h4
-rw-r--r--libs/canvas/canvas/flag.h5
-rw-r--r--libs/canvas/canvas/group.h6
-rw-r--r--libs/canvas/canvas/image.h5
-rw-r--r--libs/canvas/canvas/item.h24
-rw-r--r--libs/canvas/canvas/line.h4
-rw-r--r--libs/canvas/canvas/line_set.h5
-rw-r--r--libs/canvas/canvas/lookup_table.h73
-rw-r--r--libs/canvas/canvas/outline.h30
-rw-r--r--libs/canvas/canvas/pixbuf.h3
-rw-r--r--libs/canvas/canvas/poly_item.h3
-rw-r--r--libs/canvas/canvas/poly_line.h5
-rw-r--r--libs/canvas/canvas/polygon.h13
-rw-r--r--libs/canvas/canvas/rectangle.h3
-rw-r--r--libs/canvas/canvas/root_group.h5
-rw-r--r--libs/canvas/canvas/text.h7
-rw-r--r--libs/canvas/canvas/types.h26
-rw-r--r--libs/canvas/canvas/utils.h13
-rw-r--r--libs/canvas/canvas/visibility.h45
-rw-r--r--libs/canvas/canvas/wave_view.h8
-rw-r--r--libs/canvas/curve.cc22
-rw-r--r--libs/canvas/drag_handle.cc55
-rw-r--r--libs/canvas/flag.cc10
-rw-r--r--libs/canvas/group.cc83
-rw-r--r--libs/canvas/item.cc136
-rw-r--r--libs/canvas/line.cc50
-rw-r--r--libs/canvas/line_set.cc36
-rw-r--r--libs/canvas/lookup_table.cc80
-rw-r--r--libs/canvas/outline.cc2
-rw-r--r--libs/canvas/poly_item.cc59
-rw-r--r--libs/canvas/poly_line.cc56
-rw-r--r--libs/canvas/polygon.cc78
-rw-r--r--libs/canvas/rectangle.cc99
-rw-r--r--libs/canvas/text.cc56
-rw-r--r--libs/canvas/types.cc37
-rw-r--r--libs/canvas/utils.cc66
-rw-r--r--libs/canvas/wave_view.cc20
-rw-r--r--libs/canvas/wscript7
-rw-r--r--libs/clearlooks-newer/clearlooks_draw_glossy.c2
-rw-r--r--libs/clearlooks-newer/clearlooks_rc_style.c2
-rw-r--r--libs/evoral/evoral/visibility.h35
-rw-r--r--libs/evoral/src/libsmf/smf.c12
-rw-r--r--libs/evoral/src/libsmf/smf_decode.c2
-rw-r--r--libs/evoral/src/libsmf/smf_load.c12
-rw-r--r--libs/evoral/src/libsmf/smf_private.h1
-rw-r--r--libs/evoral/src/libsmf/smf_save.c4
-rw-r--r--libs/evoral/src/libsmf/smf_tempo.c6
-rw-r--r--libs/evoral/wscript4
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/dndvbox.h4
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/utils.h8
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/visibility.h37
-rw-r--r--libs/gtkmm2ext/pixfader.cc60
-rw-r--r--libs/gtkmm2ext/po/cs.po12
-rw-r--r--libs/gtkmm2ext/po/de.po12
-rw-r--r--libs/gtkmm2ext/po/el.po45
-rw-r--r--libs/gtkmm2ext/po/es.po45
-rw-r--r--libs/gtkmm2ext/po/fr.po21
-rw-r--r--libs/gtkmm2ext/po/nn.po2985
-rw-r--r--libs/gtkmm2ext/po/pl.po27
-rw-r--r--libs/gtkmm2ext/po/pt.po45
-rw-r--r--libs/gtkmm2ext/po/ru.po42
-rw-r--r--libs/gtkmm2ext/utils.cc26
-rw-r--r--libs/gtkmm2ext/wscript4
-rw-r--r--libs/libltc/wscript34
-rw-r--r--libs/midi++2/ipmidi_port.cc3
-rw-r--r--libs/midi++2/midi++/ipmidi_port.h2
-rw-r--r--libs/midi++2/midi++/libmidi_visibility.h37
-rw-r--r--libs/midi++2/midi++/mmc.h1
-rw-r--r--libs/midi++2/midi++/port.h4
-rw-r--r--libs/midi++2/midi++/types.h5
-rw-r--r--libs/midi++2/midnam_patch.cc4
-rw-r--r--libs/midi++2/mmc.cc8
-rw-r--r--libs/midi++2/port.cc3
-rw-r--r--libs/midi++2/wscript10
-rw-r--r--libs/panners/1in2out/panner_1in2out.cc6
-rw-r--r--libs/panners/1in2out/wscript6
-rw-r--r--libs/panners/2in2out/panner_2in2out.cc6
-rw-r--r--libs/panners/2in2out/wscript6
-rw-r--r--libs/panners/stereobalance/panner_balance.cc333
-rw-r--r--libs/panners/stereobalance/panner_balance.h83
-rw-r--r--libs/panners/stereobalance/wscript35
-rw-r--r--libs/panners/vbap/vbap.cc7
-rw-r--r--libs/panners/vbap/wscript6
-rw-r--r--libs/panners/wscript2
-rw-r--r--libs/pbd/fpu.cc4
-rw-r--r--libs/pbd/openuri.cc2
-rw-r--r--libs/pbd/pbd/libpbd_visibility.h35
-rw-r--r--libs/pbd/pbd/search_path.h6
-rw-r--r--libs/pbd/pbd/stacktrace.h3
-rw-r--r--libs/pbd/semutils.cc2
-rw-r--r--libs/pbd/stacktrace.cc2
-rw-r--r--libs/pbd/wscript4
-rw-r--r--libs/plugins/reasonablesynth.lv2/lv2.c214
-rw-r--r--libs/plugins/reasonablesynth.lv2/manifest.ttl.in7
-rw-r--r--libs/plugins/reasonablesynth.lv2/reasonablesynth.ttl.in50
-rw-r--r--libs/plugins/reasonablesynth.lv2/rsynth.c545
-rw-r--r--libs/plugins/reasonablesynth.lv2/wscript47
-rw-r--r--libs/rubberband/wscript10
-rw-r--r--libs/surfaces/control_protocol/control_protocol.cc21
-rw-r--r--libs/surfaces/control_protocol/control_protocol/control_protocol.h19
-rw-r--r--libs/surfaces/control_protocol/control_protocol/visibility.h35
-rw-r--r--libs/surfaces/control_protocol/wscript7
-rw-r--r--libs/surfaces/frontier/tranzport/tranzport_control_protocol.cc4
-rw-r--r--libs/surfaces/frontier/wscript2
-rw-r--r--libs/surfaces/generic_midi/generic_midi_control_protocol.cc21
-rw-r--r--libs/surfaces/generic_midi/wscript2
-rw-r--r--libs/surfaces/mackie/gui.cc5
-rw-r--r--libs/surfaces/mackie/interface.cc2
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc137
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.h9
-rw-r--r--libs/surfaces/mackie/surface.cc39
-rw-r--r--libs/surfaces/mackie/surface.h7
-rw-r--r--libs/surfaces/mackie/surface_port.cc59
-rw-r--r--libs/surfaces/mackie/surface_port.h13
-rw-r--r--libs/surfaces/mackie/wscript5
-rw-r--r--libs/surfaces/osc/interface.cc2
-rw-r--r--libs/surfaces/osc/osc.cc61
-rw-r--r--libs/surfaces/osc/wscript2
-rw-r--r--libs/surfaces/tranzport/state.cc4
-rw-r--r--libs/surfaces/tranzport/wscript2
-rw-r--r--libs/surfaces/wiimote/interface.cc2
-rw-r--r--libs/surfaces/wiimote/wiimote.cc13
-rw-r--r--libs/surfaces/wiimote/wscript2
-rw-r--r--libs/taglib/wscript10
-rw-r--r--libs/timecode/wscript34
-rw-r--r--libs/vamp-plugins/AmplitudeFollower.h2
-rw-r--r--libs/vamp-plugins/Onset.h2
-rw-r--r--libs/vamp-plugins/OnsetDetect.h2
-rw-r--r--libs/vamp-plugins/PercussionOnsetDetector.h2
-rw-r--r--libs/vamp-plugins/SpectralCentroid.h2
-rw-r--r--libs/vamp-plugins/ZeroCrossing.h2
-rw-r--r--libs/vamp-plugins/plugins.cpp4
-rw-r--r--libs/vamp-plugins/wscript3
-rw-r--r--libs/vamp-sdk/wscript16
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*) &copy);
+
+ 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*>(&copy));
}
/** 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*) &copy);
+
+ 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*>(&copy));
}
/** 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*) &copy);
+
+ // 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*> (&copy));
+ }
+
+ 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*> (&copy));
+}
+
+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 = '''