summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2006-07-14 03:43:32 +0000
committerDavid Robillard <d@drobilla.net>2006-07-14 03:43:32 +0000
commit50a3102b9b533d7f8786d220f8df67421b9227c8 (patch)
tree669f84631ba1d9a1d312e3f76b226ca938c75c0f /libs/ardour
parentedd841895b873b14c4aa814a80de5dc20ff30618 (diff)
Merge big changes (mostly Controllable) from trunk
git-svn-id: svn://localhost/ardour2/branches/midi@682 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/SConscript1
-rw-r--r--libs/ardour/ardour/ardour.h2
-rw-r--r--libs/ardour/ardour/audio_diskstream.h17
-rw-r--r--libs/ardour/ardour/audio_library.h7
-rw-r--r--libs/ardour/ardour/audio_track.h32
-rw-r--r--libs/ardour/ardour/audiofilesource.h5
-rw-r--r--libs/ardour/ardour/audiosource.h9
-rw-r--r--libs/ardour/ardour/configuration.h3
-rw-r--r--libs/ardour/ardour/connection.h2
-rw-r--r--libs/ardour/ardour/control_protocol_manager.h3
-rw-r--r--libs/ardour/ardour/destructive_filesource.h2
-rw-r--r--libs/ardour/ardour/diskstream.h22
-rw-r--r--libs/ardour/ardour/insert.h3
-rw-r--r--libs/ardour/ardour/io.h51
-rw-r--r--libs/ardour/ardour/ladspa_plugin.h4
-rw-r--r--libs/ardour/ardour/location.h6
-rw-r--r--libs/ardour/ardour/midi_source.h2
-rw-r--r--libs/ardour/ardour/midi_track.h31
-rw-r--r--libs/ardour/ardour/named_selection.h2
-rw-r--r--libs/ardour/ardour/panner.h44
-rw-r--r--libs/ardour/ardour/playlist.h11
-rw-r--r--libs/ardour/ardour/plugin.h29
-rw-r--r--libs/ardour/ardour/region.h4
-rw-r--r--libs/ardour/ardour/route.h48
-rw-r--r--libs/ardour/ardour/route_group.h2
-rw-r--r--libs/ardour/ardour/send.h8
-rw-r--r--libs/ardour/ardour/session.h30
-rw-r--r--libs/ardour/ardour/session_region.h2
-rw-r--r--libs/ardour/ardour/sndfilesource.h2
-rw-r--r--libs/ardour/ardour/source.h7
-rw-r--r--libs/ardour/ardour/stateful.h51
-rw-r--r--libs/ardour/ardour/tempo.h2
-rw-r--r--libs/ardour/ardour/types.h4
-rw-r--r--libs/ardour/ardour/utils.h2
-rw-r--r--libs/ardour/ardour/vst_plugin.h4
-rw-r--r--libs/ardour/audio_diskstream.cc113
-rw-r--r--libs/ardour/audio_library.cc50
-rw-r--r--libs/ardour/audio_track.cc168
-rw-r--r--libs/ardour/audiofilesource.cc8
-rw-r--r--libs/ardour/audioregion.cc4
-rw-r--r--libs/ardour/control_protocol_manager.cc5
-rw-r--r--libs/ardour/crossfade.cc13
-rw-r--r--libs/ardour/destructive_filesource.cc48
-rw-r--r--libs/ardour/diskstream.cc32
-rw-r--r--libs/ardour/globals.cc16
-rw-r--r--libs/ardour/insert.cc14
-rw-r--r--libs/ardour/io.cc226
-rw-r--r--libs/ardour/ladspa_plugin.cc94
-rw-r--r--libs/ardour/location.cc8
-rw-r--r--libs/ardour/midi_diskstream.cc8
-rw-r--r--libs/ardour/midi_track.cc233
-rw-r--r--libs/ardour/panner.cc241
-rw-r--r--libs/ardour/playlist.cc8
-rw-r--r--libs/ardour/plugin.cc168
-rw-r--r--libs/ardour/po/el_GR.po626
-rw-r--r--libs/ardour/po/it_IT.po626
-rw-r--r--libs/ardour/po/ru_RU.po626
-rw-r--r--libs/ardour/redirect.cc2
-rw-r--r--libs/ardour/region.cc8
-rw-r--r--libs/ardour/route.cc259
-rw-r--r--libs/ardour/session.cc44
-rw-r--r--libs/ardour/session_midi.cc7
-rw-r--r--libs/ardour/session_process.cc6
-rw-r--r--libs/ardour/session_state.cc87
-rw-r--r--libs/ardour/session_time.cc5
-rw-r--r--libs/ardour/sndfilesource.cc48
-rw-r--r--libs/ardour/source.cc5
-rw-r--r--libs/ardour/stateful.cc135
-rw-r--r--libs/ardour/utils.cc9
-rw-r--r--libs/ardour/vst_plugin.cc13
70 files changed, 1627 insertions, 2790 deletions
diff --git a/libs/ardour/SConscript b/libs/ardour/SConscript
index c93a7c4593..83849884ff 100644
--- a/libs/ardour/SConscript
+++ b/libs/ardour/SConscript
@@ -94,7 +94,6 @@ sndfile_helpers.cc
sndfilesource.cc
source.cc
state_manager.cc
-stateful.cc
tempo.cc
utils.cc
version.cc
diff --git a/libs/ardour/ardour/ardour.h b/libs/ardour/ardour/ardour.h
index c0dfea9a95..dba588702f 100644
--- a/libs/ardour/ardour/ardour.h
+++ b/libs/ardour/ardour/ardour.h
@@ -58,7 +58,7 @@ namespace ARDOUR {
const layer_t max_layer = UCHAR_MAX;
- id_t new_id();
+ microseconds_t get_microseconds ();
Change new_change ();
diff --git a/libs/ardour/ardour/audio_diskstream.h b/libs/ardour/ardour/audio_diskstream.h
index d1833d01a5..8e0f892e5a 100644
--- a/libs/ardour/ardour/audio_diskstream.h
+++ b/libs/ardour/ardour/audio_diskstream.h
@@ -33,7 +33,7 @@
#include <pbd/fastlog.h>
#include <pbd/ringbufferNPT.h>
-
+#include <pbd/stateful.h>
#include <ardour/ardour.h>
#include <ardour/configuration.h>
@@ -44,6 +44,7 @@
#include <ardour/utils.h>
#include <ardour/diskstream.h>
#include <ardour/audioplaylist.h>
+
struct tm;
namespace ARDOUR {
@@ -160,6 +161,17 @@ class AudioDiskstream : public Diskstream
//static sigc::signal<void,AudioDiskstream*> AudioDiskstreamCreated; // XXX use a ref with sigc2
static sigc::signal<void,list<AudioFileSource*>*> DeleteSources;
+ int set_loop (Location *loc);
+ sigc::signal<void,Location *> LoopSet;
+
+ std::list<Region*>& last_capture_regions () {
+ return _last_capture_regions;
+ }
+
+ void handle_input_change (IOChange, void *src);
+
+ const PBD::ID& id() const { return _id; }
+
protected:
friend class Session;
@@ -284,10 +296,11 @@ class AudioDiskstream : public Diskstream
void set_align_style_from_io();
void setup_destructive_playlist ();
void use_destructive_playlist ();
-
ChannelList channels;
AudioPlaylist* _playlist;
+ void engage_record_enable (void* src);
+ void disengage_record_enable (void* src);
};
}; /* namespace ARDOUR */
diff --git a/libs/ardour/ardour/audio_library.h b/libs/ardour/ardour/audio_library.h
index 2f9e84551b..3d4585fbd8 100644
--- a/libs/ardour/ardour/audio_library.h
+++ b/libs/ardour/ardour/audio_library.h
@@ -28,18 +28,23 @@
#include <sigc++/signal.h>
+#include <pbd/stateful.h>
+
using std::vector;
using std::string;
using std::map;
namespace ARDOUR {
-class AudioLibrary
+class AudioLibrary : public Stateful
{
public:
AudioLibrary ();
~AudioLibrary ();
+ XMLNode& get_state (void);
+ int set_state (const XMLNode&);
+
void set_paths (vector<string> paths);
vector<string> get_paths ();
void scan_paths ();
diff --git a/libs/ardour/ardour/audio_track.h b/libs/ardour/ardour/audio_track.h
index 9d06f9425d..e92c11faff 100644
--- a/libs/ardour/ardour/audio_track.h
+++ b/libs/ardour/ardour/audio_track.h
@@ -55,7 +55,7 @@ class AudioTrack : public Route
AudioDiskstream& disk_stream() const { return *_diskstream; }
int set_diskstream (AudioDiskstream&, void *);
int use_diskstream (string name);
- int use_diskstream (id_t id);
+ int use_diskstream (const PBD::ID& id);
TrackMode mode() const { return _mode; }
void set_mode (TrackMode m);
@@ -88,13 +88,10 @@ class AudioTrack : public Route
XMLNode& get_template();
int set_state(const XMLNode& node);
- MIDI::Controllable& midi_rec_enable_control() {
- return _midi_rec_enable_control;
+ PBD::Controllable& rec_enable_control() {
+ return _rec_enable_control;
}
- void reset_midi_control (MIDI::Port*, bool);
- void send_all_midi_feedback ();
-
bool record_enabled() const;
void set_meter_point (MeterPoint, void* src);
@@ -116,9 +113,9 @@ class AudioTrack : public Route
FreezeRecordInsertInfo(XMLNode& st)
: state (st), insert (0) {}
- XMLNode state;
- Insert* insert;
- id_t id;
+ XMLNode state;
+ Insert* insert;
+ PBD::ID id;
UndoAction memento;
};
@@ -151,17 +148,16 @@ class AudioTrack : public Route
void set_state_part_two ();
void set_state_part_three ();
- struct MIDIRecEnableControl : public MIDI::Controllable {
- MIDIRecEnableControl (AudioTrack&, MIDI::Port *);
- void set_value (float);
- void send_feedback (bool);
- MIDI::byte* write_feedback (MIDI::byte* buf, int32_t& bufsize, bool val, bool force = false);
- AudioTrack& track;
- bool setting;
- bool last_written;
+ struct RecEnableControllable : public PBD::Controllable {
+ RecEnableControllable (AudioTrack&);
+
+ void set_value (float);
+ float get_value (void) const;
+
+ AudioTrack& track;
};
- MIDIRecEnableControl _midi_rec_enable_control;
+ RecEnableControllable _rec_enable_control;
bool _destructive;
};
diff --git a/libs/ardour/ardour/audiofilesource.h b/libs/ardour/ardour/audiofilesource.h
index 36251c07ff..b793ed14f0 100644
--- a/libs/ardour/ardour/audiofilesource.h
+++ b/libs/ardour/ardour/audiofilesource.h
@@ -95,7 +95,7 @@ class AudioFileSource : public AudioSource {
static void set_bwf_serial_number (int);
static void set_search_path (string);
- static void set_header_position_offset (jack_nframes_t offset, bool negative);
+ static void set_header_position_offset (jack_nframes_t offset );
static sigc::signal<void> HeaderPositionOffsetChanged;
@@ -107,7 +107,7 @@ class AudioFileSource : public AudioSource {
to cause issues.
*/
- void handle_header_position_change ();
+ virtual void handle_header_position_change ();
protected:
@@ -141,7 +141,6 @@ class AudioFileSource : public AudioSource {
static char bwf_serial_number[13];
static uint64_t header_position_offset;
- static bool header_position_negative;
virtual void set_timeline_position (jack_nframes_t pos);
virtual void set_header_timeline_position () = 0;
diff --git a/libs/ardour/ardour/audiosource.h b/libs/ardour/ardour/audiosource.h
index 1dcf5b42f3..35158a24e7 100644
--- a/libs/ardour/ardour/audiosource.h
+++ b/libs/ardour/ardour/audiosource.h
@@ -33,7 +33,7 @@
#include <ardour/source.h>
#include <ardour/ardour.h>
-#include <ardour/stateful.h>
+#include <pbd/stateful.h>
#include <pbd/xml++.h>
using std::list;
@@ -51,6 +51,13 @@ class AudioSource : public Source
AudioSource (const XMLNode&);
virtual ~AudioSource ();
+ /* one could argue that this should belong to Source, but other data types
+ generally do not come with a model of "offset along an audio timeline"
+ so its here in AudioSource for now.
+ */
+
+ virtual jack_nframes_t natural_position() const { return 0; }
+
/* returns the number of items in this `audio_source' */
virtual jack_nframes_t length() const {
diff --git a/libs/ardour/ardour/configuration.h b/libs/ardour/ardour/configuration.h
index 60b5e8a2c3..cc4376f781 100644
--- a/libs/ardour/ardour/configuration.h
+++ b/libs/ardour/ardour/configuration.h
@@ -27,8 +27,9 @@
#include <sys/types.h>
#include <string>
+#include <pbd/stateful.h>
+
#include <ardour/types.h>
-#include <ardour/stateful.h>
#include <ardour/utils.h>
#include <ardour/configuration_variable.h>
diff --git a/libs/ardour/ardour/connection.h b/libs/ardour/ardour/connection.h
index 899bffc06a..da4d4e2684 100644
--- a/libs/ardour/ardour/connection.h
+++ b/libs/ardour/ardour/connection.h
@@ -25,7 +25,7 @@
#include <string>
#include <sigc++/signal.h>
#include <glibmm/thread.h>
-#include <ardour/stateful.h>
+#include <pbd/stateful.h>
using std::vector;
using std::string;
diff --git a/libs/ardour/ardour/control_protocol_manager.h b/libs/ardour/ardour/control_protocol_manager.h
index 03b21a299c..8eda7a4555 100644
--- a/libs/ardour/ardour/control_protocol_manager.h
+++ b/libs/ardour/ardour/control_protocol_manager.h
@@ -8,7 +8,7 @@
#include <glibmm/thread.h>
-#include <ardour/stateful.h>
+#include <pbd/stateful.h>
namespace ARDOUR {
@@ -23,6 +23,7 @@ struct ControlProtocolInfo {
std::string path;
bool requested;
bool mandatory;
+ XMLNode* state;
};
class ControlProtocolManager : public sigc::trackable, public Stateful
diff --git a/libs/ardour/ardour/destructive_filesource.h b/libs/ardour/ardour/destructive_filesource.h
index 2d10528ac8..947367f754 100644
--- a/libs/ardour/ardour/destructive_filesource.h
+++ b/libs/ardour/ardour/destructive_filesource.h
@@ -49,6 +49,8 @@ class DestructiveFileSource : public SndFileSource {
protected:
jack_nframes_t write_unlocked (Sample *src, jack_nframes_t cnt, char * workbuf);
+ virtual void handle_header_position_change ();
+
private:
static jack_nframes_t xfade_frames;
static gain_t* out_coefficient;
diff --git a/libs/ardour/ardour/diskstream.h b/libs/ardour/ardour/diskstream.h
index a72289acd1..f9c662203c 100644
--- a/libs/ardour/ardour/diskstream.h
+++ b/libs/ardour/ardour/diskstream.h
@@ -33,7 +33,7 @@
#include <pbd/fastlog.h>
#include <pbd/ringbufferNPT.h>
-
+#include <pbd/stateful.h>
#include <ardour/ardour.h>
#include <ardour/configuration.h>
@@ -42,7 +42,7 @@
#include <ardour/route.h>
#include <ardour/port.h>
#include <ardour/utils.h>
-#include <ardour/stateful.h>
+
struct tm;
@@ -67,9 +67,6 @@ class Diskstream : public Stateful, public sigc::trackable
Destructive = 0x4
};
- Diskstream (Session &, const string& name, Flag f = Recordable);
- Diskstream (Session &, const XMLNode&);
-
string name () const { return _name; }
virtual int set_name (string str, void* src);
@@ -99,11 +96,11 @@ class Diskstream : public Stateful, public sigc::trackable
bool destructive() const { return _flags & Destructive; }
virtual void set_destructive (bool yn);
- id_t id() const { return _id; }
- bool hidden() const { return _flags & Hidden; }
- bool recordable() const { return _flags & Recordable; }
- bool reversed() const { return _actual_speed < 0.0f; }
- double speed() const { return _visible_speed; }
+ const PBD::ID& id() const { return _id; }
+ bool hidden() const { return _flags & Hidden; }
+ bool recordable() const { return _flags & Recordable; }
+ bool reversed() const { return _actual_speed < 0.0f; }
+ double speed() const { return _visible_speed; }
virtual void punch_in() {}
virtual void punch_out() {}
@@ -165,6 +162,9 @@ class Diskstream : public Stateful, public sigc::trackable
protected:
friend class Session;
+ Diskstream (Session &, const string& name, Flag f = Recordable);
+ Diskstream (Session &, const XMLNode&);
+
/* the Session is the only point of access for these
because they require that the Session is "inactive"
while they are called.
@@ -280,7 +280,7 @@ class Diskstream : public Stateful, public sigc::trackable
ARDOUR::Session& _session;
ARDOUR::IO* _io;
uint32_t _n_channels;
- id_t _id;
+ PBD::ID _id;
mutable gint _record_enabled;
double _visible_speed;
diff --git a/libs/ardour/ardour/insert.h b/libs/ardour/ardour/insert.h
index 803e16497d..2d6b672064 100644
--- a/libs/ardour/ardour/insert.h
+++ b/libs/ardour/ardour/insert.h
@@ -133,9 +133,6 @@ class PluginInsert : public Insert
bool is_generator() const;
- void reset_midi_control (MIDI::Port*, bool);
- void send_all_midi_feedback ();
-
void set_parameter (uint32_t port, float val);
AutoState get_port_automation_state (uint32_t port);
diff --git a/libs/ardour/ardour/io.h b/libs/ardour/ardour/io.h
index fa2fe9851d..f696295b58 100644
--- a/libs/ardour/ardour/io.h
+++ b/libs/ardour/ardour/io.h
@@ -31,11 +31,10 @@
#include <pbd/fastlog.h>
#include <pbd/undo.h>
-
-#include <midi++/controllable.h>
+#include <pbd/stateful.h>
+#include <pbd/controllable.h>
#include <ardour/ardour.h>
-#include <ardour/stateful.h>
#include <ardour/utils.h>
#include <ardour/state_manager.h>
#include <ardour/curve.h>
@@ -186,25 +185,10 @@ class IO : public Stateful, public ARDOUR::StateManager
static sigc::signal<void,uint32_t> MoreOutputs;
static sigc::signal<int> PortsCreated;
- /* MIDI control */
-
- void set_midi_to_gain_function (gain_t (*function)(double val)) {
- _midi_gain_control.midi_to_gain = function;
- }
-
- void set_gain_to_midi_function (double (*function)(gain_t gain)) {
- _midi_gain_control.gain_to_midi = function;
- }
-
- MIDI::Controllable& midi_gain_control() {
- return _midi_gain_control;
+ PBD::Controllable& gain_control() {
+ return _gain_control;
}
- virtual void reset_midi_control (MIDI::Port*, bool on);
-
- virtual void send_all_midi_feedback ();
- virtual MIDI::byte* write_midi_feedback (MIDI::byte*, int32_t& bufsize);
-
/* Peak metering */
float peak_input_power (uint32_t n) {
@@ -266,7 +250,7 @@ public:
void start_pan_touch (uint32_t which);
void end_pan_touch (uint32_t which);
- id_t id() const { return _id; }
+ const PBD::ID& id() const { return _id; }
void defer_pan_reset ();
void allow_pan_reset ();
@@ -295,7 +279,7 @@ public:
string _name;
Connection* _input_connection;
Connection* _output_connection;
- id_t _id;
+ PBD::ID _id;
bool no_panner_reset;
XMLNode* deferred_state;
Buffer::Type _default_type;
@@ -310,31 +294,22 @@ public:
static void apply_declick (vector<Sample*>&, uint32_t nbufs, jack_nframes_t nframes,
gain_t initial, gain_t target, bool invert_polarity);
- struct MIDIGainControl : public MIDI::Controllable {
- MIDIGainControl (IO&, MIDI::Port *);
- void set_value (float);
-
- void send_feedback (gain_t);
- MIDI::byte* write_feedback (MIDI::byte* buf, int32_t& bufsize, gain_t val, bool force = false);
-
+ struct GainControllable : public PBD::Controllable {
+ GainControllable (IO& i) : io (i) {}
+
+ void set_value (float val);
+ float get_value (void) const;
+
IO& io;
- bool setting;
- MIDI::byte last_written;
-
- gain_t (*midi_to_gain) (double val);
- double (*gain_to_midi) (gain_t gain);
};
- MIDIGainControl _midi_gain_control;
+ GainControllable _gain_control;
/* state management */
Change restore_state (State&);
StateManager::State* state_factory (std::string why) const;
- bool get_midi_node_info (XMLNode * node, MIDI::eventType & ev, MIDI::channel_t & chan, MIDI::byte & additional);
- bool set_midi_node_info (XMLNode * node, MIDI::eventType ev, MIDI::channel_t chan, MIDI::byte additional);
-
/* automation */
jack_nframes_t last_automation_snapshot;
diff --git a/libs/ardour/ardour/ladspa_plugin.h b/libs/ardour/ardour/ladspa_plugin.h
index 2451953ce5..e4aba93ef6 100644
--- a/libs/ardour/ardour/ladspa_plugin.h
+++ b/libs/ardour/ardour/ladspa_plugin.h
@@ -27,12 +27,12 @@
#include <string>
#include <dlfcn.h>
-#include <midi++/controllable.h>
#include <sigc++/signal.h>
+#include <pbd/stateful.h>
+
#include <jack/types.h>
#include <ardour/ladspa.h>
-#include <ardour/stateful.h>
#include <ardour/plugin_state.h>
#include <ardour/plugin.h>
#include <ardour/ladspa_plugin.h>
diff --git a/libs/ardour/ardour/location.h b/libs/ardour/ardour/location.h
index 75f4c5d12a..2c9f947541 100644
--- a/libs/ardour/ardour/location.h
+++ b/libs/ardour/ardour/location.h
@@ -32,10 +32,10 @@
#include <glibmm/thread.h>
#include <pbd/undo.h>
+#include <pbd/stateful.h>
-#include "ardour.h"
-#include "stateful.h"
-#include "state_manager.h"
+#include <ardour/ardour.h>
+#include <ardour/state_manager.h>
using std::string;
diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h
index 735ebba447..8e4da44082 100644
--- a/libs/ardour/ardour/midi_source.h
+++ b/libs/ardour/ardour/midi_source.h
@@ -30,7 +30,7 @@
#include <ardour/source.h>
#include <ardour/ardour.h>
-#include <ardour/stateful.h>
+#include <pbd/stateful.h>
#include <pbd/xml++.h>
using std::string;
diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h
index 1ef9bedf8d..090ca6b729 100644
--- a/libs/ardour/ardour/midi_track.h
+++ b/libs/ardour/ardour/midi_track.h
@@ -54,11 +54,11 @@ public:
void set_record_enable (bool yn, void *src);
- MidiDiskstream& disk_stream() const { return *diskstream; }
+ MidiDiskstream& disk_stream() const { return *_diskstream; }
int set_diskstream (MidiDiskstream&, void *);
int use_diskstream (string name);
- int use_diskstream (id_t id);
+ int use_diskstream (const PBD::ID& id);
TrackMode mode() const { return _mode; }
@@ -93,16 +93,13 @@ public:
XMLNode& get_template();
int set_state(const XMLNode& node);
- MIDI::Controllable& midi_rec_enable_control() { return _midi_rec_enable_control; }
-
- void reset_midi_control (MIDI::Port*, bool);
- void send_all_midi_feedback ();
+ PBD::Controllable& rec_enable_control() { return _rec_enable_control; }
bool record_enabled() const;
void set_meter_point (MeterPoint, void* src);
protected:
- MidiDiskstream *diskstream;
+ MidiDiskstream *_diskstream;
MeterPoint _saved_meter_point;
TrackMode _mode;
@@ -123,7 +120,7 @@ private:
XMLNode state;
Insert* insert;
- id_t id;
+ PBD::ID id;
UndoAction memento;
};
@@ -158,18 +155,16 @@ private:
void set_state_part_two ();
void set_state_part_three ();
- struct MIDIRecEnableControl : public MIDI::Controllable
- {
- MIDIRecEnableControl (MidiTrack&, MIDI::Port *);
- void set_value (float);
- void send_feedback (bool);
- MIDI::byte* write_feedback (MIDI::byte* buf, int32_t& bufsize, bool val, bool force = false);
- MidiTrack& track;
- bool setting;
- bool last_written;
+ struct MIDIRecEnableControllable : public PBD::Controllable {
+ MIDIRecEnableControllable (MidiTrack&);
+
+ void set_value (float);
+ float get_value (void) const;
+
+ MidiTrack& track;
};
- MIDIRecEnableControl _midi_rec_enable_control;
+ MIDIRecEnableControllable _rec_enable_control;
bool _destructive;
};
diff --git a/libs/ardour/ardour/named_selection.h b/libs/ardour/ardour/named_selection.h
index 91bb816181..87b71e73ff 100644
--- a/libs/ardour/ardour/named_selection.h
+++ b/libs/ardour/ardour/named_selection.h
@@ -24,7 +24,7 @@
#include <string>
#include <list>
-#include <ardour/stateful.h>
+#include <pbd/stateful.h>
class XMLNode;
diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h
index 806f350e03..37c985a2ef 100644
--- a/libs/ardour/ardour/panner.h
+++ b/libs/ardour/ardour/panner.h
@@ -27,10 +27,10 @@
#include <iostream>
#include <sigc++/signal.h>
-#include <midi++/controllable.h>
+#include <pbd/stateful.h>
+#include <pbd/controllable.h>
#include <ardour/types.h>
-#include <ardour/stateful.h>
#include <ardour/curve.h>
using std::istream;
@@ -75,24 +75,7 @@ class StreamPanner : public sigc::trackable, public Stateful
virtual void set_automation_state (AutoState) = 0;
virtual void set_automation_style (AutoStyle) = 0;
- /* MIDI control */
-
- struct MIDIControl : public MIDI::Controllable {
- MIDIControl (StreamPanner&, MIDI::Port *);
- void set_value (float);
- void send_feedback (gain_t);
- MIDI::byte* write_feedback (MIDI::byte* buf, int32_t& bufsize, gain_t val, bool force = false);
-
- pan_t (*midi_to_pan)(double val);
- double (*pan_to_midi)(pan_t p);
-
- StreamPanner& sp;
- bool setting;
- gain_t last_written;
- };
-
- MIDIControl& midi_control() { return _midi_control; }
- void reset_midi_control (MIDI::Port *, bool);
+ PBD::Controllable& control() { return _control; }
/* XXX this is wrong. for multi-dimensional panners, there
must surely be more than 1 automation curve.
@@ -100,7 +83,6 @@ class StreamPanner : public sigc::trackable, public Stateful
virtual Curve& automation() = 0;
-
virtual int load (istream&, string path, uint32_t&) = 0;
virtual int save (ostream&) const = 0;
@@ -130,12 +112,20 @@ class StreamPanner : public sigc::trackable, public Stateful
float effective_z;
bool _muted;
- MIDIControl _midi_control;
- void add_state (XMLNode&);
- bool get_midi_node_info (XMLNode * node, MIDI::eventType & ev, MIDI::channel_t & chan, MIDI::byte & additional);
- bool set_midi_node_info (XMLNode * node, MIDI::eventType ev, MIDI::channel_t chan, MIDI::byte additional);
+ struct PanControllable : public PBD::Controllable {
+ PanControllable (StreamPanner& p) : panner (p) {}
+
+ StreamPanner& panner;
+
+ void set_value (float);
+ float get_value (void) const;
+ bool can_send_feedback() const;
+ };
+ PanControllable _control;
+
+ void add_state (XMLNode&);
virtual void update () = 0;
};
@@ -290,10 +280,6 @@ class Panner : public std::vector<StreamPanner*>, public Stateful, public sigc::
std::vector<Output> outputs;
Session& session() const { return _session; }
- void reset_midi_control (MIDI::Port *, bool);
- void send_all_midi_feedback ();
- MIDI::byte* write_midi_feedback (MIDI::byte*, int32_t& bufsize);
-
enum LinkDirection {
SameDirection,
OppositeDirection
diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h
index 0a988b3c10..69b6a1fbc3 100644
--- a/libs/ardour/ardour/playlist.h
+++ b/libs/ardour/ardour/playlist.h
@@ -31,12 +31,13 @@
#include <glib.h>
#include <sigc++/signal.h>
+
#include <pbd/undo.h>
+#include <pbd/stateful.h>
#include <ardour/ardour.h>
#include <ardour/crossfade_compare.h>
#include <ardour/location.h>
-#include <ardour/stateful.h>
#include <ardour/state_manager.h>
namespace ARDOUR {
@@ -86,7 +87,7 @@ class Playlist : public Stateful, public StateManager {
void duplicate (Region&, jack_nframes_t position, float times);
void nudge_after (jack_nframes_t start, jack_nframes_t distance, bool forwards);
- Region* find_region (id_t) const;
+ Region* find_region (const PBD::ID&) const;
Playlist* cut (list<AudioRange>&, bool result_is_hidden = true);
Playlist* copy (list<AudioRange>&, bool result_is_hidden = true);
@@ -135,8 +136,8 @@ class Playlist : public Stateful, public StateManager {
Session& session() { return _session; }
- id_t get_orig_diskstream_id () const { return _orig_diskstream_id; }
- void set_orig_diskstream_id (id_t did) { _orig_diskstream_id = did; }
+ const PBD::ID& get_orig_diskstream_id () const { return _orig_diskstream_id; }
+ void set_orig_diskstream_id (const PBD::ID& did) { _orig_diskstream_id = did; }
/* destructive editing */
@@ -190,7 +191,7 @@ class Playlist : public Stateful, public StateManager {
bool _frozen;
uint32_t subcnt;
uint32_t _read_data_count;
- id_t _orig_diskstream_id;
+ PBD::ID _orig_diskstream_id;
uint64_t layer_op_counter;
jack_nframes_t freeze_length;
diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h
index 211b00d0bb..e7d05aa352 100644
--- a/libs/ardour/ardour/plugin.h
+++ b/libs/ardour/ardour/plugin.h
@@ -21,12 +21,13 @@
#ifndef __ardour_ladspa_h__
#define __ardour_ladspa_h__
-#include <midi++/controllable.h>
#include <sigc++/signal.h>
+#include <pbd/stateful.h>
+#include <pbd/controllable.h>
+
#include <jack/types.h>
#include <ardour/types.h>
-#include <ardour/stateful.h>
#include <ardour/plugin_state.h>
#include <ardour/cycles.h>
@@ -136,10 +137,7 @@ class Plugin : public Stateful, public sigc::trackable
sigc::signal<void,uint32_t,float> ParameterChanged;
sigc::signal<void,Plugin *> GoingAway;
- void reset_midi_control (MIDI::Port*, bool);
- void send_all_midi_feedback ();
- MIDI::byte* write_midi_feedback (MIDI::byte*, int32_t& bufsize);
- MIDI::Controllable *get_nth_midi_control (uint32_t);
+ PBD::Controllable *get_nth_control (uint32_t);
PluginInfo & get_info() { return _info; }
void set_info (const PluginInfo &inf) { _info = inf; }
@@ -158,16 +156,14 @@ class Plugin : public Stateful, public sigc::trackable
map<string,string> presets;
bool save_preset(string name, string domain /* vst, ladspa etc. */);
- void setup_midi_controls ();
-
+ void setup_controls ();
- struct MIDIPortControl : public MIDI::Controllable {
- MIDIPortControl (Plugin&, uint32_t abs_port_id, MIDI::Port *,
- float lower, float upper, bool toggled, bool logarithmic);
+ struct PortControllable : public PBD::Controllable {
+ PortControllable (Plugin&, uint32_t abs_port_id,
+ float lower, float upper, bool toggled, bool logarithmic);
void set_value (float);
- void send_feedback (float);
- MIDI::byte* write_feedback (MIDI::byte* buf, int32_t& bufsize, float val, bool force = false);
+ float get_value () const;
Plugin& plugin;
uint32_t absolute_port;
@@ -176,14 +172,9 @@ class Plugin : public Stateful, public sigc::trackable
float range;
bool toggled;
bool logarithmic;
-
- bool setting;
- float last_written;
};
- vector<MIDIPortControl*> midi_controls;
-
-
+ vector<PortControllable*> controls;
};
/* this is actually defined in plugin_manager.cc */
diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h
index 67b5b3d9dd..d58f98adca 100644
--- a/libs/ardour/ardour/region.h
+++ b/libs/ardour/ardour/region.h
@@ -97,7 +97,7 @@ class Region : public Stateful, public StateManager
Region (const XMLNode&);
~Region();
- ARDOUR::id_t id() const { return _id; }
+ const PBD::ID& id() const { return _id; }
/* Note: changing the name of a Region does not constitute an edit */
@@ -222,7 +222,7 @@ class Region : public Stateful, public StateManager
mutable RegionEditState _first_edit;
int _frozen;
Glib::Mutex lock;
- ARDOUR::id_t _id;
+ PBD::ID _id;
ARDOUR::Playlist* _playlist;
mutable uint32_t _read_data_count; // modified in read()
Change pending_changed;
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index 747dae939c..d30138640a 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -31,10 +31,10 @@
#include <glibmm/thread.h>
#include <pbd/xml++.h>
#include <pbd/undo.h>
-#include <midi++/controllable.h>
+#include <pbd/stateful.h>
+#include <pbd/controllable.h>
#include <ardour/ardour.h>
-#include <ardour/stateful.h>
#include <ardour/io.h>
#include <ardour/session.h>
#include <ardour/redirect.h>
@@ -215,34 +215,28 @@ class Route : public IO
bool feeds (Route *);
set<Route *> fed_by;
- struct MIDIToggleControl : public MIDI::Controllable {
- enum ToggleType {
- MuteControl = 0,
- SoloControl
- };
-
- MIDIToggleControl (Route&, ToggleType, MIDI::Port *);
- void set_value (float);
- void send_feedback (bool);
- MIDI::byte* write_feedback (MIDI::byte* buf, int32_t& bufsize, bool val, bool force = false);
-
- Route& route;
- ToggleType type;
- bool setting;
- bool last_written;
+ struct ToggleControllable : public PBD::Controllable {
+ enum ToggleType {
+ MuteControl = 0,
+ SoloControl
+ };
+
+ ToggleControllable (Route&, ToggleType);
+ void set_value (float);
+ float get_value (void) const;
+
+ Route& route;
+ ToggleType type;
};
- MIDI::Controllable& midi_solo_control() {
- return _midi_solo_control;
+ PBD::Controllable& solo_control() {
+ return _solo_control;
}
- MIDI::Controllable& midi_mute_control() {
- return _midi_mute_control;
+
+ PBD::Controllable& mute_control() {
+ return _mute_control;
}
- virtual void reset_midi_control (MIDI::Port*, bool);
- virtual void send_all_midi_feedback ();
- virtual MIDI::byte* write_midi_feedback (MIDI::byte*, int32_t& bufsize);
-
void automation_snapshot (jack_nframes_t now);
void protect_automation ();
@@ -302,8 +296,8 @@ class Route : public IO
std::string _comment;
bool _have_internal_generator;
- MIDIToggleControl _midi_solo_control;
- MIDIToggleControl _midi_mute_control;
+ ToggleControllable _solo_control;
+ ToggleControllable _mute_control;
void passthru (jack_nframes_t start_frame, jack_nframes_t end_frame,
jack_nframes_t nframes, jack_nframes_t offset, int declick, bool meter_inputs);
diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h
index c9f966666f..19374b4f65 100644
--- a/libs/ardour/ardour/route_group.h
+++ b/libs/ardour/ardour/route_group.h
@@ -26,7 +26,7 @@
#include <string>
#include <stdint.h>
#include <sigc++/signal.h>
-#include <ardour/stateful.h>
+#include <pbd/stateful.h>
#include <ardour/types.h>
using std::string;
diff --git a/libs/ardour/ardour/send.h b/libs/ardour/ardour/send.h
index a94318f2a5..54d4cbd7a9 100644
--- a/libs/ardour/ardour/send.h
+++ b/libs/ardour/ardour/send.h
@@ -24,12 +24,12 @@
#include <sigc++/signal.h>
#include <string>
+
+#include <pbd/stateful.h>
#include <ardour/ardour.h>
#include <ardour/audioengine.h>
-
-#include "io.h"
-#include "stateful.h"
-#include "redirect.h"
+#include <ardour/io.h>
+#include <ardour/redirect.h>
namespace ARDOUR {
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h
index 0e1b7627be..6192fe4abd 100644
--- a/libs/ardour/ardour/session.h
+++ b/libs/ardour/ardour/session.h
@@ -40,10 +40,11 @@
#include <midi++/types.h>
#include <midi++/mmc.h>
+#include <pbd/stateful.h>
+
#include <ardour/ardour.h>
#include <ardour/configuration.h>
#include <ardour/location.h>
-#include <ardour/stateful.h>
#include <ardour/gain.h>
#include <ardour/io.h>
@@ -57,6 +58,10 @@ namespace MIDI {
class Port;
}
+namespace PBD {
+ class Controllable;
+}
+
namespace ARDOUR {
class Port;
@@ -274,7 +279,7 @@ class Session : public sigc::trackable, public Stateful
vector<Sample*>& get_silent_buffers (uint32_t howmany);
vector<Sample*>& get_send_buffers () { return _send_buffers; }
- Diskstream *diskstream_by_id (id_t id);
+ Diskstream *diskstream_by_id (const PBD::ID& id);
Diskstream *diskstream_by_name (string name);
bool have_captured() const { return _have_captured; }
@@ -706,7 +711,7 @@ class Session : public sigc::trackable, public Stateful
AudioFileSource *create_audio_source_for_session (ARDOUR::AudioDiskstream&, uint32_t which_channel, bool destructive);
- Source *get_source (ARDOUR::id_t);
+ Source *source_by_id (const PBD::ID&);
/* playlist management */
@@ -967,7 +972,13 @@ class Session : public sigc::trackable, public Stateful
static apply_gain_to_buffer_t apply_gain_to_buffer;
static mix_buffers_with_gain_t mix_buffers_with_gain;
static mix_buffers_no_gain_t mix_buffers_no_gain;
-
+
+ static sigc::signal<void> SendFeedback;
+
+ /* Controllables */
+
+ PBD::Controllable* controllable_by_id (const PBD::ID&);
+
protected:
friend class AudioEngine;
void set_block_size (jack_nframes_t nframes);
@@ -1502,7 +1513,7 @@ class Session : public sigc::trackable, public Stateful
/* REGION MANAGEMENT */
mutable Glib::Mutex region_lock;
- typedef map<ARDOUR::id_t,AudioRegion *> AudioRegionList;
+ typedef map<PBD::ID,AudioRegion *> AudioRegionList;
AudioRegionList audio_regions;
void region_renamed (Region *);
@@ -1515,7 +1526,7 @@ class Session : public sigc::trackable, public Stateful
/* SOURCES */
mutable Glib::Mutex audio_source_lock;
- typedef std::map<id_t, AudioSource *> AudioSourceList;
+ typedef std::map<PBD::ID,AudioSource *> AudioSourceList;
AudioSourceList audio_sources;
@@ -1743,6 +1754,13 @@ class Session : public sigc::trackable, public Stateful
LayerModel layer_model;
CrossfadeModel xfade_model;
+
+ typedef std::list<PBD::Controllable*> Controllables;
+ Glib::Mutex controllables_lock;
+ Controllables controllables;
+
+ void add_controllable (PBD::Controllable*);
+ void remove_controllable (PBD::Controllable*);
};
}; /* namespace ARDOUR */
diff --git a/libs/ardour/ardour/session_region.h b/libs/ardour/ardour/session_region.h
index 13d88a9aa4..4f0fb92e3b 100644
--- a/libs/ardour/ardour/session_region.h
+++ b/libs/ardour/ardour/session_region.h
@@ -10,7 +10,7 @@ template<class T> void Session::foreach_audio_region (T *obj, void (T::*func)(Au
{
Glib::Mutex::Lock lm (region_lock);
for (AudioRegionList::iterator i = audio_regions.begin(); i != audio_regions.end(); i++) {
- (obj->*func) ((*i).second);
+ (obj->*func) (i->second);
}
}
diff --git a/libs/ardour/ardour/sndfilesource.h b/libs/ardour/ardour/sndfilesource.h
index 5e3c1f621d..55a0e990a0 100644
--- a/libs/ardour/ardour/sndfilesource.h
+++ b/libs/ardour/ardour/sndfilesource.h
@@ -51,7 +51,7 @@ class SndFileSource : public AudioFileSource {
int update_header (jack_nframes_t when, struct tm&, time_t);
int flush_header ();
- void handle_smpte_offset_change (jack_nframes_t offset, bool negative);
+ jack_nframes_t natural_position () const;
protected:
void set_header_timeline_position ();
diff --git a/libs/ardour/ardour/source.h b/libs/ardour/ardour/source.h
index f3133c71cd..f57ea79854 100644
--- a/libs/ardour/ardour/source.h
+++ b/libs/ardour/ardour/source.h
@@ -25,8 +25,9 @@
#include <sigc++/signal.h>
+#include <pbd/stateful.h>
+
#include <ardour/ardour.h>
-#include <ardour/stateful.h>
namespace ARDOUR {
@@ -40,7 +41,7 @@ class Source : public Stateful, public sigc::trackable
std::string name() const { return _name; }
int set_name (std::string str, bool destructive);
- ARDOUR::id_t id() const { return _id; }
+ const PBD::ID& id() const { return _id; }
uint32_t use_cnt() const { return _use_cnt; }
void use ();
@@ -60,7 +61,7 @@ class Source : public Stateful, public sigc::trackable
time_t _timestamp;
private:
- ARDOUR::id_t _id;
+ PBD::ID _id;
};
}
diff --git a/libs/ardour/ardour/stateful.h b/libs/ardour/ardour/stateful.h
deleted file mode 100644
index 4f4cb20b39..0000000000
--- a/libs/ardour/ardour/stateful.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- Copyright (C) 2000 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.
-
- $Id$
-*/
-
-#ifndef __ardour_stateful_h__
-#define __ardour_stateful_h__
-
-#include <string>
-
-class XMLNode;
-
-class Stateful {
- public:
- Stateful();
- virtual ~Stateful();
-
- virtual XMLNode& get_state (void) = 0;
-
- virtual int set_state (const XMLNode&) = 0;
-
- /* Extra XML nodes */
-
- void add_extra_xml (XMLNode&);
- XMLNode *extra_xml (const std::string& str);
-
- virtual void add_instant_xml (XMLNode&, const std::string& dir);
- XMLNode *instant_xml (const std::string& str, const std::string& dir);
-
- protected:
- XMLNode *_extra_xml;
- XMLNode *_instant_xml;
-};
-
-#endif /* __ardour_stateful_h__ */
-
diff --git a/libs/ardour/ardour/tempo.h b/libs/ardour/ardour/tempo.h
index 13e8eb6348..db06894607 100644
--- a/libs/ardour/ardour/tempo.h
+++ b/libs/ardour/ardour/tempo.h
@@ -27,10 +27,10 @@
#include <cmath>
#include <glibmm/thread.h>
#include <pbd/undo.h>
+#include <pbd/stateful.h>
#include <sigc++/signal.h>
#include <ardour/ardour.h>
-#include <ardour/stateful.h>
#include <ardour/state_manager.h>
class XMLNode;
diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h
index e729bbe956..1ae58039d9 100644
--- a/libs/ardour/ardour/types.h
+++ b/libs/ardour/ardour/types.h
@@ -30,6 +30,8 @@
#include <inttypes.h>
#include <jack/types.h>
#include <control_protocol/smpte.h>
+#include <pbd/id.h>
+
#include <map>
#if __GNUC__ < 3
@@ -45,7 +47,7 @@ namespace ARDOUR {
typedef float pan_t;
typedef float gain_t;
typedef uint32_t layer_t;
- typedef uint64_t id_t;
+ typedef uint64_t microseconds_t;
typedef unsigned char RawMidi;
diff --git a/libs/ardour/ardour/utils.h b/libs/ardour/ardour/utils.h
index 3a9905b3ac..ad471085b5 100644
--- a/libs/ardour/ardour/utils.h
+++ b/libs/ardour/ardour/utils.h
@@ -50,8 +50,6 @@ int tokenize_fullpath (std::string fullpath, std::string& path, std::string& nam
int touch_file(std::string path);
-uint32_t long get_uid();
-
std::string region_name_from_path (std::string path);
std::string path_expand (std::string);
diff --git a/libs/ardour/ardour/vst_plugin.h b/libs/ardour/ardour/vst_plugin.h
index ee8e6e986b..3cb10d1779 100644
--- a/libs/ardour/ardour/vst_plugin.h
+++ b/libs/ardour/ardour/vst_plugin.h
@@ -28,11 +28,9 @@
#include <string>
#include <dlfcn.h>
-#include <midi++/controllable.h>
#include <sigc++/signal.h>
-
+#include <pbd/stateful.h>
#include <jack/types.h>
-#include <ardour/stateful.h>
#include <ardour/plugin_state.h>
#include <ardour/plugin.h>
diff --git a/libs/ardour/audio_diskstream.cc b/libs/ardour/audio_diskstream.cc
index f24993b87b..20dbb915b0 100644
--- a/libs/ardour/audio_diskstream.cc
+++ b/libs/ardour/audio_diskstream.cc
@@ -65,7 +65,7 @@ AudioDiskstream::AudioDiskstream (Session &sess, const string &name, Diskstream:
in_set_state = true;
- init (flag);
+ init(flag);
use_new_playlist ();
in_set_state = false;
@@ -185,7 +185,7 @@ AudioDiskstream::~AudioDiskstream ()
channels.clear();
}
-/*
+
void
AudioDiskstream::handle_input_change (IOChange change, void *src)
{
@@ -196,7 +196,7 @@ AudioDiskstream::handle_input_change (IOChange change, void *src)
_session.request_input_change_handling ();
}
}
-*/
+
void
AudioDiskstream::non_realtime_input_change ()
{
@@ -421,8 +421,10 @@ AudioDiskstream::setup_destructive_playlist ()
/* a single full-sized region */
+ cerr << "setup DS using " << srcs.front()->natural_position () << endl;
+
AudioRegion* region = new AudioRegion (srcs, 0, max_frames, _name);
- _playlist->add_region (*region, 0);
+ _playlist->add_region (*region, srcs.front()->natural_position());
}
void
@@ -1040,6 +1042,12 @@ AudioDiskstream::seek (jack_nframes_t frame, bool complete_refill)
(*chan).capture_buf->reset ();
}
+ /* can't rec-enable in destructive mode if transport is before start */
+
+ if (destructive() && record_enabled() && frame < _session.current_start_frame()) {
+ disengage_record_enable (this);
+ }
+
playback_sample = frame;
file_frame = frame;
@@ -1451,7 +1459,6 @@ AudioDiskstream::do_flush (char * workbuf, bool force_flush)
to_write = min (disk_io_chunk_frames, (jack_nframes_t) vector.len[0]);
-
// check the transition buffer when recording destructive
// important that we get this after the capture buf
@@ -1773,15 +1780,15 @@ AudioDiskstream::finish_capture (bool rec_monitors_input)
void
AudioDiskstream::set_record_enabled (bool yn, void* src)
{
- bool rolling = _session.transport_speed() != 0.0f;
-
if (!recordable() || !_session.record_enabling_legal()) {
return;
}
-
- /* if we're turning on rec-enable, there needs to be an
- input connection.
- */
+
+ /* can't rec-enable in destructive mode if transport is before start */
+
+ if (destructive() && yn && _session.transport_frame() < _session.current_start_frame()) {
+ return;
+ }
if (yn && channels[0].source == 0) {
@@ -1798,36 +1805,51 @@ AudioDiskstream::set_record_enabled (bool yn, void* src)
if (record_enabled() != yn) {
if (yn) {
- g_atomic_int_set (&_record_enabled, 1);
- capturing_sources.clear ();
- if (Config->get_use_hardware_monitoring()) {
- for (ChannelList::iterator chan = channels.begin(); chan != channels.end(); ++chan) {
- if ((*chan).source) {
- (*chan).source->request_monitor_input (!(_session.get_auto_input() && rolling));
- }
- capturing_sources.push_back ((*chan).write_source);
- }
- } else {
- for (ChannelList::iterator chan = channels.begin(); chan != channels.end(); ++chan) {
- capturing_sources.push_back ((*chan).write_source);
- }
- }
-
+ engage_record_enable (src);
} else {
- g_atomic_int_set (&_record_enabled, 0);
- if (Config->get_use_hardware_monitoring()) {
- for (ChannelList::iterator chan = channels.begin(); chan != channels.end(); ++chan) {
- if ((*chan).source) {
- (*chan).source->request_monitor_input (false);
- }
- }
+ disengage_record_enable (src);
+ }
+ }
+}
+
+void
+AudioDiskstream::engage_record_enable (void* src)
+{
+ bool rolling = _session.transport_speed() != 0.0f;
+
+ g_atomic_int_set (&_record_enabled, 1);
+ capturing_sources.clear ();
+ if (Config->get_use_hardware_monitoring()) {
+ for (ChannelList::iterator chan = channels.begin(); chan != channels.end(); ++chan) {
+ if ((*chan).source) {
+ (*chan).source->request_monitor_input (!(_session.get_auto_input() && rolling));
}
- capturing_sources.clear ();
+ capturing_sources.push_back ((*chan).write_source);
+ }
+ } else {
+ for (ChannelList::iterator chan = channels.begin(); chan != channels.end(); ++chan) {
+ capturing_sources.push_back ((*chan).write_source);
}
+ }
+
+ record_enable_changed (src); /* EMIT SIGNAL */
+}
- record_enable_changed (src); /* EMIT SIGNAL */
+void
+AudioDiskstream::disengage_record_enable (void* src)
+{
+ g_atomic_int_set (&_record_enabled, 0);
+ if (Config->get_use_hardware_monitoring()) {
+ for (ChannelList::iterator chan = channels.begin(); chan != channels.end(); ++chan) {
+ if ((*chan).source) {
+ (*chan).source->request_monitor_input (false);
+ }
+ }
}
+ capturing_sources.clear ();
+ record_enable_changed (src); /* EMIT SIGNAL */
}
+
XMLNode&
AudioDiskstream::get_state ()
@@ -1848,7 +1870,7 @@ AudioDiskstream::get_state ()
node->add_property ("speed", buf);
node->add_property("name", _name);
- snprintf (buf, sizeof(buf), "%" PRIu64, id());
+ id().print (buf);
node->add_property("id", buf);
if (!capturing_sources.empty() && _session.get_record_enabled()) {
@@ -1915,11 +1937,11 @@ AudioDiskstream::set_state (const XMLNode& node)
if (deprecated_io_node) {
if ((prop = deprecated_io_node->property ("id")) != 0) {
- sscanf (prop->value().c_str(), "%" PRIu64, &_id);
+ _id = prop->value ();
}
} else {
if ((prop = node.property ("id")) != 0) {
- sscanf (prop->value().c_str(), "%" PRIu64, &_id);
+ _id = prop->value ();
}
}
@@ -2238,6 +2260,21 @@ AudioDiskstream::capture_buffer_load () const
(double) channels.front().capture_buf->bufsize());
}
+int
+AudioDiskstream::set_loop (Location *location)
+{
+ if (location) {
+ if (location->start() >= location->end()) {
+ error << string_compose(_("Location \"%1\" not valid for track loop (start >= end)"), location->name()) << endl;
+ return -1;
+ }
+ }
+
+ loop_location = location;
+
+ LoopSet (location); /* EMIT SIGNAL */
+ return 0;
+}
int
AudioDiskstream::use_pending_capture_data (XMLNode& node)
diff --git a/libs/ardour/audio_library.cc b/libs/ardour/audio_library.cc
index 7f421e86c8..168a1dcf5d 100644
--- a/libs/ardour/audio_library.cc
+++ b/libs/ardour/audio_library.cc
@@ -75,11 +75,16 @@ AudioLibrary::AudioLibrary ()
lrdf_free_statements(matches);
+ XMLNode* state = instant_xml(X_("AudioLibrary"), get_user_ardour_path());
+ if (state) {
+ set_state(*state);
+ }
scan_paths();
}
AudioLibrary::~AudioLibrary ()
{
+ add_instant_xml(get_state(), get_user_ardour_path());
}
void
@@ -429,5 +434,50 @@ AudioLibrary::safe_file_extension(string file)
file.rfind(".maud")== string::npos &&
file.rfind(".vwe") == string::npos &&
file.rfind(".paf") == string::npos &&
+#ifdef HAVE_COREAUDIO
+ file.rfind(".mp3") == string::npos &&
+ file.rfind(".aac") == string::npos &&
+ file.rfind(".mp4") == string::npos &&
+#endif // HAVE_COREAUDIO
file.rfind(".voc") == string::npos);
}
+
+XMLNode&
+AudioLibrary::get_state ()
+{
+ XMLNode* root = new XMLNode(X_("AudioLibrary"));
+
+ for (vector<string>::iterator i = sfdb_paths.begin(); i != sfdb_paths.end(); ++i) {
+ XMLNode* node = new XMLNode(X_("Path"));
+ node->add_property("value", *i);
+ root->add_child_nocopy(*node);
+ }
+
+ return *root;
+}
+
+int
+AudioLibrary::set_state (const XMLNode& node)
+{
+ if (node.name() != X_("AudioLibrary")) {
+ fatal << "programming error: AudioLibrary: incorrect XML node sent to set_state()" << endmsg;
+ return -1;
+ }
+
+ XMLNodeList nodes = node.children(X_("Path"));
+
+ vector<string> paths;
+ XMLProperty* prop;
+ XMLNode* child;
+ for (XMLNodeConstIterator iter = nodes.begin(); iter != nodes.end(); ++iter) {
+ child = *iter;
+
+ if ((prop = child->property(X_("value"))) != 0) {
+ paths.push_back(prop->value());
+ }
+ }
+
+ sfdb_paths = paths;
+
+ return 0;
+}
diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc
index 82a2a38c2c..b3727937e2 100644
--- a/libs/ardour/audio_track.cc
+++ b/libs/ardour/audio_track.cc
@@ -43,7 +43,7 @@ using namespace PBD;
AudioTrack::AudioTrack (Session& sess, string name, Route::Flag flag, TrackMode mode)
: Route (sess, name, 1, -1, -1, -1, flag),
_diskstream (0),
- _midi_rec_enable_control (*this, _session.midi_port())
+ _rec_enable_control (*this)
{
AudioDiskstream::Flag dflags = AudioDiskstream::Flag (0);
@@ -65,26 +65,17 @@ AudioTrack::AudioTrack (Session& sess, string name, Route::Flag flag, TrackMode
_mode = mode;
set_diskstream (*ds, this);
-
- // session.SMPTEOffsetChanged.connect (mem_fun (*this, &AudioTrack::handle_smpte_offset_change));
-
- // we do this even though Route already did it in it's init
- reset_midi_control (_session.midi_port(), _session.get_midi_control());
-
}
AudioTrack::AudioTrack (Session& sess, const XMLNode& node)
: Route (sess, "to be renamed", 0, 0, -1, -1),
_diskstream (0),
- _midi_rec_enable_control (*this, _session.midi_port())
+ _rec_enable_control (*this)
{
_freeze_record.state = NoFreeze;
set_state (node);
_declickable = true;
_saved_meter_point = _meter_point;
-
- // we do this even though Route already did it in it's init
- reset_midi_control (_session.midi_port(), _session.get_midi_control());
}
AudioTrack::~AudioTrack ()
@@ -191,7 +182,7 @@ AudioTrack::use_diskstream (string name)
}
int
-AudioTrack::use_diskstream (id_t id)
+AudioTrack::use_diskstream (const PBD::ID& id)
{
AudioDiskstream *dstream;
@@ -235,10 +226,7 @@ AudioTrack::set_record_enable (bool yn, void *src)
set_meter_point (_saved_meter_point, this);
}
- if (_session.get_midi_feedback()) {
- _midi_rec_enable_control.send_feedback (record_enabled());
- }
-
+ _rec_enable_control.Changed ();
}
void
@@ -252,7 +240,6 @@ AudioTrack::set_state (const XMLNode& node)
{
const XMLProperty *prop;
XMLNodeConstIterator iter;
- XMLNodeList midi_kids;
if (Route::set_state (node)) {
return -1;
@@ -271,36 +258,6 @@ AudioTrack::set_state (const XMLNode& node)
_mode = Normal;
}
- midi_kids = node.children ("MIDI");
-
- for (iter = midi_kids.begin(); iter != midi_kids.end(); ++iter) {
-
- XMLNodeList kids;
- XMLNodeConstIterator miter;
- XMLNode* child;
-
- kids = (*iter)->children ();
-
- for (miter = kids.begin(); miter != kids.end(); ++miter) {
-
- child =* miter;
-
- if (child->name() == "rec_enable") {
-
- MIDI::eventType ev = MIDI::on; /* initialize to keep gcc happy */
- MIDI::byte additional = 0; /* ditto */
- MIDI::channel_t chn = 0; /* ditto */
-
- if (get_midi_node_info (child, ev, chn, additional)) {
- _midi_rec_enable_control.set_control_type (chn, ev, additional);
- } else {
- error << string_compose(_("MIDI rec_enable control specification for %1 is incomplete, so it has been ignored"), _name) << endmsg;
- }
- }
- }
- }
-
-
if ((prop = node.property ("diskstream-id")) == 0) {
/* some old sessions use the diskstream name rather than the ID */
@@ -317,7 +274,7 @@ AudioTrack::set_state (const XMLNode& node)
} else {
- id_t id = strtoull (prop->value().c_str(), 0, 10);
+ PBD::ID id (prop->value());
if (use_diskstream (id)) {
return -1;
@@ -366,7 +323,7 @@ AudioTrack::state(bool full_state)
{
XMLNode& root (Route::state(full_state));
XMLNode* freeze_node;
- char buf[32];
+ char buf[64];
if (_freeze_record.playlist) {
XMLNode* inode;
@@ -378,7 +335,7 @@ AudioTrack::state(bool full_state)
for (vector<FreezeRecordInsertInfo*>::iterator i = _freeze_record.insert_info.begin(); i != _freeze_record.insert_info.end(); ++i) {
inode = new XMLNode (X_("insert"));
- snprintf (buf, sizeof (buf), "%" PRIu64, (*i)->id);
+ (*i)->id.print (buf);
inode->add_property (X_("id"), buf);
inode->add_child_copy ((*i)->state);
@@ -402,29 +359,6 @@ AudioTrack::state(bool full_state)
align_node->add_property (X_("style"), buf);
root.add_child_nocopy (*align_node);
- /* MIDI control */
-
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte additional;
- XMLNode* midi_node = 0;
- XMLNode* child;
- XMLNodeList midikids;
-
- midikids = root.children ("MIDI");
- if (!midikids.empty()) {
- midi_node = midikids.front();
- }
- else {
- midi_node = root.add_child ("MIDI");
- }
-
- if (_midi_rec_enable_control.get_control_info (chn, ev, additional) && midi_node) {
-
- child = midi_node->add_child ("rec_enable");
- set_midi_node_info (child, ev, chn, additional);
- }
-
XMLNode* remote_control_node = new XMLNode (X_("remote_control"));
snprintf (buf, sizeof (buf), "%d", _remote_control_id);
remote_control_node->add_property (X_("id"), buf);
@@ -445,7 +379,7 @@ AudioTrack::state(bool full_state)
diskstream.
*/
- snprintf (buf, sizeof (buf), "%" PRIu64, _diskstream->id());
+ _diskstream->id().print (buf);
root.add_property ("diskstream-id", buf);
return root;
@@ -506,7 +440,7 @@ AudioTrack::set_state_part_two ()
FreezeRecordInsertInfo* frii = new FreezeRecordInsertInfo (*((*citer)->children().front()));
frii->insert = 0;
- sscanf (prop->value().c_str(), "%" PRIu64, &frii->id);
+ frii->id = prop->value ();
_freeze_record.insert_info.push_back (frii);
}
}
@@ -1054,93 +988,23 @@ AudioTrack::freeze_state() const
return _freeze_record.state;
}
-
-void
-AudioTrack::reset_midi_control (MIDI::Port* port, bool on)
+AudioTrack::RecEnableControllable::RecEnableControllable (AudioTrack& s)
+ : track (s)
{
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte extra;
-
- Route::reset_midi_control (port, on);
-
- _midi_rec_enable_control.get_control_info (chn, ev, extra);
- if (!on) {
- chn = -1;
- }
- _midi_rec_enable_control.midi_rebind (port, chn);
}
void
-AudioTrack::send_all_midi_feedback ()
-{
- if (_session.get_midi_feedback()) {
-
- Route::send_all_midi_feedback();
-
- _midi_rec_enable_control.send_feedback (record_enabled());
- }
-}
-
-
-AudioTrack::MIDIRecEnableControl::MIDIRecEnableControl (AudioTrack& s, MIDI::Port* port)
- : MIDI::Controllable (port, 0), track (s), setting(false)
-{
- last_written = false; /* XXX need a good out of bound value */
-}
-
-void
-AudioTrack::MIDIRecEnableControl::set_value (float val)
+AudioTrack::RecEnableControllable::set_value (float val)
{
bool bval = ((val >= 0.5f) ? true: false);
-
- setting = true;
track.set_record_enable (bval, this);
- setting = false;
-}
-
-void
-AudioTrack::MIDIRecEnableControl::send_feedback (bool value)
-{
-
- if (!setting && get_midi_feedback()) {
- MIDI::byte val = (MIDI::byte) (value ? 127: 0);
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
- MIDI::EventTwoBytes data;
-
- if (get_control_info (ch, ev, additional)) {
- data.controller_number = additional;
- data.value = val;
-
- track._session.send_midi_message (get_port(), ev, ch, data);
- }
- }
-
}
-MIDI::byte*
-AudioTrack::MIDIRecEnableControl::write_feedback (MIDI::byte* buf, int32_t& bufsize, bool val, bool force)
+float
+AudioTrack::RecEnableControllable::get_value (void) const
{
- if (get_midi_feedback()) {
-
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
-
- if (get_control_info (ch, ev, additional)) {
- if (val != last_written || force) {
- *buf++ = ev & ch;
- *buf++ = additional; /* controller number */
- *buf++ = (MIDI::byte) (val ? 127: 0);
- last_written = val;
- bufsize -= 3;
- }
- }
- }
-
- return buf;
+ if (track.record_enabled()) { return 1.0f; }
+ return 0.0f;
}
void
diff --git a/libs/ardour/audiofilesource.cc b/libs/ardour/audiofilesource.cc
index 0663f5f9b1..87700cedb3 100644
--- a/libs/ardour/audiofilesource.cc
+++ b/libs/ardour/audiofilesource.cc
@@ -56,8 +56,7 @@ string AudioFileSource::peak_dir = "";
string AudioFileSource::search_path;
sigc::signal<void> AudioFileSource::HeaderPositionOffsetChanged;
-bool AudioFileSource::header_position_negative;
-uint64_t AudioFileSource::header_position_offset;
+uint64_t AudioFileSource::header_position_offset = 0;
char AudioFileSource::bwf_country_code[3] = "US";
char AudioFileSource::bwf_organization_code[4] = "LAS";
@@ -592,11 +591,10 @@ AudioFileSource::set_search_path (string p)
}
void
-AudioFileSource::set_header_position_offset (jack_nframes_t offset, bool negative)
+AudioFileSource::set_header_position_offset (jack_nframes_t offset)
{
header_position_offset = offset;
- header_position_negative = negative;
-
+ cerr << "hpo set to " << offset << endl;
HeaderPositionOffsetChanged ();
}
diff --git a/libs/ardour/audioregion.cc b/libs/ardour/audioregion.cc
index 6b118faa51..4a8593cd63 100644
--- a/libs/ardour/audioregion.cc
+++ b/libs/ardour/audioregion.cc
@@ -267,8 +267,6 @@ AudioRegion::AudioRegion (SourceList& srcs, const XMLNode& node)
_fade_out (0.0, 2.0, 1.0, false),
_envelope (0.0, 2.0, 1.0, false)
{
- /* basic AudioRegion constructor */
-
set<AudioSource*> unique_srcs;
for (SourceList::iterator i=srcs.begin(); i != srcs.end(); ++i) {
@@ -657,7 +655,7 @@ AudioRegion::state (bool full)
for (uint32_t n=0; n < sources.size(); ++n) {
snprintf (buf2, sizeof(buf2), "source-%d", n);
- snprintf (buf, sizeof(buf), "%" PRIu64, sources[n]->id());
+ sources[n]->id().print (buf);
node.add_property (buf2, buf);
}
diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc
index c2fb188953..0370886a35 100644
--- a/libs/ardour/control_protocol_manager.cc
+++ b/libs/ardour/control_protocol_manager.cc
@@ -49,6 +49,10 @@ ControlProtocolManager::set_session (Session& s)
if ((*i)->requested || (*i)->mandatory) {
instantiate (**i);
(*i)->requested = false;
+
+ if ((*i)->state) {
+ (*i)->protocol->set_state (*(*i)->state);
+ }
}
}
}
@@ -181,6 +185,7 @@ ControlProtocolManager::control_protocol_discover (string path)
cpi->protocol = 0;
cpi->requested = false;
cpi->mandatory = descriptor->mandatory;
+ cpi->state = 0;
control_protocol_info.push_back (cpi);
diff --git a/libs/ardour/crossfade.cc b/libs/ardour/crossfade.cc
index 5d36c63f01..bbe0c63b0a 100644
--- a/libs/ardour/crossfade.cc
+++ b/libs/ardour/crossfade.cc
@@ -112,7 +112,6 @@ Crossfade::Crossfade (const Playlist& playlist, XMLNode& node)
{
Region* r;
XMLProperty* prop;
- id_t id;
LocaleGuard lg (X_("POSIX"));
/* we have to find the in/out regions before we can do anything else */
@@ -122,7 +121,7 @@ Crossfade::Crossfade (const Playlist& playlist, XMLNode& node)
throw failed_constructor();
}
- sscanf (prop->value().c_str(), "%" PRIu64, &id);
+ PBD::ID id (prop->value());
if ((r = playlist.find_region (id)) == 0) {
error << string_compose (_("Crossfade: no \"in\" region %1 found in playlist %2"), id, playlist.name())
@@ -139,10 +138,10 @@ Crossfade::Crossfade (const Playlist& playlist, XMLNode& node)
throw failed_constructor();
}
- sscanf (prop->value().c_str(), "%" PRIu64, &id);
+ PBD::ID id2 (prop->value());
- if ((r = playlist.find_region (id)) == 0) {
- error << string_compose (_("Crossfade: no \"out\" region %1 found in playlist %2"), id, playlist.name())
+ if ((r = playlist.find_region (id2)) == 0) {
+ error << string_compose (_("Crossfade: no \"out\" region %1 found in playlist %2"), id2, playlist.name())
<< endmsg;
throw failed_constructor();
}
@@ -680,9 +679,9 @@ Crossfade::get_state ()
char buf[64];
LocaleGuard lg (X_("POSIX"));
- snprintf (buf, sizeof(buf), "%" PRIu64, _out->id());
+ _out->id().print (buf);
node->add_property ("out", buf);
- snprintf (buf, sizeof(buf), "%" PRIu64, _in->id());
+ _in->id().print (buf);
node->add_property ("in", buf);
node->add_property ("active", (_active ? "yes" : "no"));
node->add_property ("follow-overlap", (_follow_overlap ? "yes" : "no"));
diff --git a/libs/ardour/destructive_filesource.cc b/libs/ardour/destructive_filesource.cc
index cce757509a..68eeded9b2 100644
--- a/libs/ardour/destructive_filesource.cc
+++ b/libs/ardour/destructive_filesource.cc
@@ -75,6 +75,9 @@ DestructiveFileSource::DestructiveFileSource (string path, SampleFormat samp_for
_capture_start = false;
_capture_end = false;
file_pos = 0;
+
+ timeline_position = header_position_offset;
+ AudioFileSource::HeaderPositionOffsetChanged.connect (mem_fun (*this, &DestructiveFileSource::handle_header_position_change));
}
DestructiveFileSource::DestructiveFileSource (const XMLNode& node)
@@ -85,6 +88,9 @@ DestructiveFileSource::DestructiveFileSource (const XMLNode& node)
_capture_start = false;
_capture_end = false;
file_pos = 0;
+
+ timeline_position = header_position_offset;
+ AudioFileSource::HeaderPositionOffsetChanged.connect (mem_fun (*this, &DestructiveFileSource::handle_header_position_change));
}
DestructiveFileSource::~DestructiveFileSource()
@@ -124,8 +130,12 @@ DestructiveFileSource::setup_standard_crossfades (jack_nframes_t rate)
void
DestructiveFileSource::mark_capture_start (jack_nframes_t pos)
{
- _capture_start = true;
- capture_start_frame = pos;
+ if (pos < timeline_position) {
+ _capture_start = false;
+ } else {
+ _capture_start = true;
+ capture_start_frame = pos;
+ }
}
void
@@ -265,6 +275,11 @@ DestructiveFileSource::write_unlocked (Sample* data, jack_nframes_t cnt, char *
}
if (_capture_start && _capture_end) {
+
+ /* start and end of capture both occur within the data we are writing,
+ so do both crossfades.
+ */
+
_capture_start = false;
_capture_end = false;
@@ -290,8 +305,12 @@ DestructiveFileSource::write_unlocked (Sample* data, jack_nframes_t cnt, char *
}
file_pos = ofilepos; // adjusted below
- }
- else if (_capture_start) {
+
+ } else if (_capture_start) {
+
+ /* start of capture both occur within the data we are writing,
+ so do the fade in
+ */
_capture_start = false;
_capture_end = false;
@@ -305,6 +324,10 @@ DestructiveFileSource::write_unlocked (Sample* data, jack_nframes_t cnt, char *
} else if (_capture_end) {
+ /* end of capture both occur within the data we are writing,
+ so do the fade out
+ */
+
_capture_start = false;
_capture_end = false;
@@ -314,6 +337,8 @@ DestructiveFileSource::write_unlocked (Sample* data, jack_nframes_t cnt, char *
} else {
+ /* in the middle of recording */
+
if (write_float (data, file_pos, cnt) != cnt) {
return 0;
}
@@ -366,8 +391,19 @@ DestructiveFileSource::get_state ()
}
void
+DestructiveFileSource::handle_header_position_change ()
+{
+ if ( _length != 0 ) {
+ error << string_compose(_("Filesource: start time is already set for existing file (%1): Cannot change start time."), _path ) << endmsg;
+ //in the future, pop up a dialog here that allows user to regenerate file with new start offset
+ } else if (writable()) {
+ timeline_position = header_position_offset;
+ set_header_timeline_position (); //this will get flushed if/when the file is recorded to
+ }
+}
+
+void
DestructiveFileSource::set_timeline_position (jack_nframes_t pos)
{
- /* destructive tracks always start at where our reference frame zero is */
- timeline_position = 0;
+ //destructive track timeline postion does not change except at instantion or when header_position_offset (session start) changes
}
diff --git a/libs/ardour/diskstream.cc b/libs/ardour/diskstream.cc
index 050f23497b..8b7edae6b4 100644
--- a/libs/ardour/diskstream.cc
+++ b/libs/ardour/diskstream.cc
@@ -63,48 +63,24 @@ sigc::signal<void> Diskstream::DiskOverrun;
sigc::signal<void> Diskstream::DiskUnderrun;
Diskstream::Diskstream (Session &sess, const string &name, Flag flag)
- : _name (name)
+ : deprecated_io_node(NULL)
+ , _name (name)
, _session (sess)
{
-#if 0
- /* prevent any write sources from being created */
-
- in_set_state = true;
-
init (flag);
- //use_new_playlist ();
-
- in_set_state = false;
- DiskstreamCreated (this); /* EMIT SIGNAL */
-#endif
}
Diskstream::Diskstream (Session& sess, const XMLNode& node)
- : _session (sess)
+ : deprecated_io_node(NULL)
+ , _session (sess)
{
-#if 0
- in_set_state = true;
init (Recordable);
-
- /*if (set_state (node)) {
- in_set_state = false;
- throw failed_constructor();
- }*/
-
- in_set_state = false;
-
- //if (destructive()) {
- // use_destructive_playlist ();
- //}
- DiskstreamCreated (this); /* EMIT SIGNAL */
-#endif
}
void
Diskstream::init (Flag f)
{
- _id = new_id();
_refcnt = 0;
_flags = f;
_io = 0;
diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc
index f3e6e1b947..951d155d9e 100644
--- a/libs/ardour/globals.cc
+++ b/libs/ardour/globals.cc
@@ -32,6 +32,7 @@
#include <lrdf.h>
#include <pbd/error.h>
+#include <pbd/id.h>
#include <pbd/strsplit.h>
#include <midi++/port.h>
@@ -198,6 +199,8 @@ ARDOUR::init (AudioEngine& engine, bool use_vst, bool try_optimization)
(void) bindtextdomain(PACKAGE, LOCALEDIR);
+ PBD::ID::init ();
+
Config = new Configuration;
if (Config->load_state ()) {
@@ -295,7 +298,7 @@ ARDOUR::init (AudioEngine& engine, bool use_vst, bool try_optimization)
info << "No H/W specific optimizations in use" << endmsg;
}
-
+
lrdf_init();
Library = new AudioLibrary;
@@ -325,10 +328,15 @@ ARDOUR::cleanup ()
return 0;
}
-ARDOUR::id_t
-ARDOUR::new_id ()
+
+microseconds_t
+ARDOUR::get_microseconds ()
{
- return get_uid();
+ /* XXX need JACK to export its functionality */
+
+ struct timeval now;
+ gettimeofday (&now, 0);
+ return now.tv_sec * 1000000ULL + now.tv_usec;
}
ARDOUR::Change
diff --git a/libs/ardour/insert.cc b/libs/ardour/insert.cc
index fc05355d4a..a2b03ad38d 100644
--- a/libs/ardour/insert.cc
+++ b/libs/ardour/insert.cc
@@ -599,7 +599,7 @@ PluginInsert::state (bool full)
node->add_property("id", string(buf));
if (_plugins[0]->state_node_name() == "ladspa") {
char buf[32];
- snprintf (buf, 31, "%ld", _plugins[0]->get_info().unique_id);
+ snprintf (buf, sizeof (buf), "%ld", _plugins[0]->get_info().unique_id);
node->add_property("unique-id", string(buf));
}
node->add_property("count", string_compose("%1", _plugins.size()));
@@ -780,18 +780,6 @@ PluginInsert::describe_parameter (uint32_t what)
return _plugins[0]->describe_parameter (what);
}
-void
-PluginInsert::reset_midi_control (MIDI::Port* port, bool on)
-{
- _plugins[0]->reset_midi_control (port, on);
-}
-
-void
-PluginInsert::send_all_midi_feedback ()
-{
- _plugins[0]->send_all_midi_feedback();
-}
-
jack_nframes_t
PluginInsert::latency()
{
diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc
index 8225396486..1c8de5008a 100644
--- a/libs/ardour/io.cc
+++ b/libs/ardour/io.cc
@@ -74,17 +74,17 @@ sigc::signal<int> IO::PortsCreated;
Glib::StaticMutex IO::m_meter_signal_lock = GLIBMM_STATIC_MUTEX_INIT;
-/* this is a default mapper of MIDI control values to a gain coefficient.
- others can be imagined. see IO::set_midi_to_gain_function().
+/* this is a default mapper of [0 .. 1.0] control values to a gain coefficient.
+ others can be imagined.
*/
-static gain_t direct_midi_to_gain (double fract) {
+static gain_t direct_control_to_gain (double fract) {
/* XXX Marcus writes: this doesn't seem right to me. but i don't have a better answer ... */
/* this maxes at +6dB */
return pow (2.0,(sqrt(sqrt(sqrt(fract)))*198.0-192.0)/6.0);
}
-static double direct_gain_to_midi (gain_t gain) {
+static double direct_gain_to_control (gain_t gain) {
/* XXX Marcus writes: this doesn't seem right to me. but i don't have a better answer ... */
if (gain == 0) return 0.0;
@@ -97,11 +97,8 @@ static bool sort_ports_by_name (Port* a, Port* b)
}
-/** The 'default_type' argument here isn't very good, but port creation is too
- * brufty and all over the place to make anything else feasible without massive
- * changes. The default typed passed is the type of port that will be created
- * by ensure_io and friends. This is a temporary compatibility hack to get
- * multiple data types off the gound and should be removed.
+/** @param default_type The type of port that will be created by ensure_io
+ * and friends if no type is explicitly requested (to avoid breakage).
*/
IO::IO (Session& s, string name,
int input_min, int input_max, int output_min, int output_max,
@@ -109,14 +106,13 @@ IO::IO (Session& s, string name,
: _session (s),
_name (name),
_default_type(default_type),
- _midi_gain_control (*this, _session.midi_port()),
+ _gain_control (*this),
_gain_automation_curve (0.0, 2.0, 1.0),
_input_minimum (input_min),
_input_maximum (input_max),
_output_minimum (output_min),
_output_maximum (output_max)
{
- _id = new_id();
_panner = new Panner (name, _session);
_gain = 1.0;
_desired_gain = 1.0;
@@ -128,9 +124,6 @@ IO::IO (Session& s, string name,
no_panner_reset = false;
deferred_state = 0;
- _midi_gain_control.midi_to_gain = direct_midi_to_gain;
- _midi_gain_control.gain_to_midi = direct_gain_to_midi;
-
apply_gain_automation = false;
last_automation_snapshot = 0;
@@ -1429,7 +1422,7 @@ XMLNode&
IO::state (bool full_state)
{
XMLNode* node = new XMLNode (state_node_name);
- char buf[32];
+ char buf[64];
string str;
bool need_ins = true;
bool need_outs = true;
@@ -1437,7 +1430,7 @@ IO::state (bool full_state)
Glib::Mutex::Lock lm (io_lock);
node->add_property("name", _name);
- snprintf (buf, sizeof(buf), "%" PRIu64, id());
+ id().print (buf);
node->add_property("id", buf);
str = "";
@@ -1531,22 +1524,6 @@ IO::state (bool full_state)
node->add_property ("iolimits", buf);
- /* MIDI control */
-
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte additional;
- XMLNode* midi_node = 0;
- XMLNode* child;
-
- if (_midi_gain_control.get_control_info (chn, ev, additional)) {
-
- midi_node = node->add_child ("MIDI");
-
- child = midi_node->add_child ("gain");
- set_midi_node_info (child, ev, chn, additional);
- }
-
/* automation */
if (full_state) {
@@ -1615,7 +1592,6 @@ IO::set_state (const XMLNode& node)
{
const XMLProperty* prop;
XMLNodeConstIterator iter;
- XMLNodeList midi_kids;
LocaleGuard lg (X_("POSIX"));
/* force use of non-localized representation of decimal point,
@@ -1633,7 +1609,7 @@ IO::set_state (const XMLNode& node)
}
if ((prop = node.property ("id")) != 0) {
- sscanf (prop->value().c_str(), "%" PRIu64, &_id);
+ _id = prop->value ();
}
if ((prop = node.property ("iolimits")) != 0) {
@@ -1655,35 +1631,6 @@ IO::set_state (const XMLNode& node)
}
}
- midi_kids = node.children ("MIDI");
-
- for (iter = midi_kids.begin(); iter != midi_kids.end(); ++iter) {
-
- XMLNodeList kids;
- XMLNodeConstIterator miter;
- XMLNode* child;
-
- kids = (*iter)->children ();
-
- for (miter = kids.begin(); miter != kids.end(); ++miter) {
-
- child =* miter;
-
- if (child->name() == "gain") {
-
- MIDI::eventType ev = MIDI::on; /* initialize to keep gcc happy */
- MIDI::byte additional = 0; /* ditto */
- MIDI::channel_t chn = 0; /* ditto */
-
- if (get_midi_node_info (child, ev, chn, additional)) {
- _midi_gain_control.set_control_type (chn, ev, additional);
- } else {
- error << string_compose(_("MIDI gain control specification for %1 is incomplete, so it has been ignored"), _name) << endmsg;
- }
- }
- }
- }
-
if ((prop = node.property ("automation-state")) != 0) {
long int x;
@@ -1801,50 +1748,6 @@ IO::create_ports (const XMLNode& node)
return 0;
}
-bool
-IO::get_midi_node_info (XMLNode * node, MIDI::eventType & ev, MIDI::channel_t & chan, MIDI::byte & additional)
-{
- bool ok = true;
- const XMLProperty* prop;
- int xx;
-
- if ((prop = node->property ("event")) != 0) {
- sscanf (prop->value().c_str(), "0x%x", &xx);
- ev = (MIDI::eventType) xx;
- } else {
- ok = false;
- }
-
- if (ok && ((prop = node->property ("channel")) != 0)) {
- sscanf (prop->value().c_str(), "%d", &xx);
- chan = (MIDI::channel_t) xx;
- } else {
- ok = false;
- }
-
- if (ok && ((prop = node->property ("additional")) != 0)) {
- sscanf (prop->value().c_str(), "0x%x", &xx);
- additional = (MIDI::byte) xx;
- }
-
- return ok;
-}
-
-bool
-IO::set_midi_node_info (XMLNode * node, MIDI::eventType ev, MIDI::channel_t chan, MIDI::byte additional)
-{
- char buf[32];
-
- snprintf (buf, sizeof(buf), "0x%x", ev);
- node->add_property ("event", buf);
- snprintf (buf, sizeof(buf), "%d", chan);
- node->add_property ("channel", buf);
- snprintf (buf, sizeof(buf), "0x%x", additional);
- node->add_property ("additional", buf);
-
- return true;
-}
-
int
IO::make_connections (const XMLNode& node)
@@ -2371,69 +2274,16 @@ IO::output_connection_configuration_changed ()
use_output_connection (*_output_connection, this);
}
-IO::MIDIGainControl::MIDIGainControl (IO& i, MIDI::Port* port)
- : MIDI::Controllable (port, 0), io (i), setting(false)
-{
- midi_to_gain = 0;
- gain_to_midi = 0;
- setting = false;
- last_written = 0; /* XXX need a good out-of-bound-value */
-}
-
void
-IO::MIDIGainControl::set_value (float val)
+IO::GainControllable::set_value (float val)
{
- if (midi_to_gain == 0) return;
-
- setting = true;
- io.set_gain (midi_to_gain (val), this);
- setting = false;
-}
-
-void
-IO::MIDIGainControl::send_feedback (gain_t gain)
-{
- if (!setting && get_midi_feedback() && gain_to_midi) {
- MIDI::byte val = (MIDI::byte) (gain_to_midi (gain) * 127.0);
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
- MIDI::EventTwoBytes data;
-
- if (get_control_info (ch, ev, additional)) {
- data.controller_number = additional;
- data.value = val;
- last_written = val;
-
- io._session.send_midi_message (get_port(), ev, ch, data);
- }
- //send_midi_feedback (gain_to_midi (gain));
- }
+ io.set_gain (direct_control_to_gain (val), this);
}
-MIDI::byte*
-IO::MIDIGainControl::write_feedback (MIDI::byte* buf, int32_t& bufsize, gain_t val, bool force)
+float
+IO::GainControllable::get_value (void) const
{
- if (get_midi_feedback() && gain_to_midi && bufsize > 2) {
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
- MIDI::byte gm;
-
- if (get_control_info (ch, ev, additional)) {
- gm = (MIDI::byte) (gain_to_midi (val) * 127.0);
-
- if (gm != last_written) {
- *buf++ = (0xF0 & ev) | (0xF & ch);
- *buf++ = additional; /* controller number */
- *buf++ = gm;
- last_written = gm;
- bufsize -= 3;
- }
- }
- }
-
- return buf;
+ return direct_gain_to_control (io.effective_gain());
}
void
@@ -2525,23 +2375,6 @@ IO::meter ()
}
}
-void
-IO::reset_midi_control (MIDI::Port* port, bool on)
-{
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte extra;
-
- _midi_gain_control.get_control_info (chn, ev, extra);
- if (!on) {
- chn = -1;
- }
- _midi_gain_control.midi_rebind (port, chn);
-
- _panner->reset_midi_control (port, on);
-}
-
-
int
IO::save_automation (const string& path)
{
@@ -2731,10 +2564,7 @@ IO::set_gain (gain_t val, void *src)
}
gain_changed (src);
-
- if (_session.get_midi_feedback()) {
- _midi_gain_control.send_feedback (_desired_gain);
- }
+ _gain_control.Changed (); /* EMIT SIGNAL */
if (_session.transport_stopped() && src != 0 && src != this && gain_automation_recording()) {
_gain_automation_curve.add (_session.transport_frame(), val);
@@ -2745,30 +2575,6 @@ IO::set_gain (gain_t val, void *src)
}
void
-IO::send_all_midi_feedback ()
-{
- if (_session.get_midi_feedback()) {
- _midi_gain_control.send_feedback (_effective_gain);
-
- // panners
- _panner->send_all_midi_feedback();
- }
-}
-
-MIDI::byte*
-IO::write_midi_feedback (MIDI::byte* buf, int32_t& bufsize)
-{
- if (_session.get_midi_feedback()) {
- if (gain_automation_playback ()) {
- buf = _midi_gain_control.write_feedback (buf, bufsize, _effective_gain);
- }
- buf = _panner->write_midi_feedback (buf, bufsize);
- }
-
- return buf;
-}
-
-void
IO::start_gain_touch ()
{
_gain_automation_curve.start_touch ();
diff --git a/libs/ardour/ladspa_plugin.cc b/libs/ardour/ladspa_plugin.cc
index 11001655d2..fa19a682e7 100644
--- a/libs/ardour/ladspa_plugin.cc
+++ b/libs/ardour/ladspa_plugin.cc
@@ -133,20 +133,9 @@ LadspaPlugin::init (void *mod, uint32_t index, jack_nframes_t rate)
}
}
- Plugin::setup_midi_controls ();
+ Plugin::setup_controls ();
latency_compute_run ();
-
- MIDI::Controllable *mcontrol;
-
- for (uint32_t i = 0; i < parameter_count(); ++i) {
- if (LADSPA_IS_PORT_INPUT(port_descriptor (i)) &&
- LADSPA_IS_PORT_CONTROL(port_descriptor (i))) {
- if ((mcontrol = get_nth_midi_control (i)) != 0) {
- mcontrol->midi_rebind (_session.midi_port(), 0);
- }
- }
- }
}
LadspaPlugin::~LadspaPlugin ()
@@ -318,17 +307,14 @@ LadspaPlugin::set_parameter (uint32_t which, float val)
shadow_data[which] = (LADSPA_Data) val;
ParameterChanged (which, val); /* EMIT SIGNAL */
- if (session().get_midi_feedback()) {
-
- if (which < parameter_count() && midi_controls[which]) {
- midi_controls[which]->send_feedback (val);
- }
+ if (which < parameter_count() && controls[which]) {
+ controls[which]->Changed ();
}
-
+
} else {
warning << string_compose (_("illegal parameter number used with plugin \"%1\". This may"
- "indicate a change in the plugin design, and presets may be"
- "invalid"), name())
+ "indicate a change in the plugin design, and presets may be"
+ "invalid"), name())
<< endmsg;
}
}
@@ -380,28 +366,6 @@ LadspaPlugin::get_state()
snprintf(buf, sizeof(buf), "%+f", shadow_data[i]);
child->add_property("value", string(buf));
root->add_child_nocopy (*child);
-
- MIDI::Controllable *pcontrol = get_nth_midi_control (i);
-
- if (pcontrol) {
-
- MIDI::eventType ev;
- MIDI::byte additional;
- MIDI::channel_t chn;
- XMLNode* midi_node;
-
- if (pcontrol->get_control_info (chn, ev, additional)) {
-
- midi_node = child->add_child ("midi-control");
-
- snprintf (buf, sizeof(buf), "0x%x", ev);
- midi_node->add_property ("event", buf);
- snprintf (buf, sizeof(buf), "%d", chn);
- midi_node->add_property ("channel", buf);
- snprintf (buf, sizeof(buf), "0x%x", additional);
- midi_node->add_property ("additional", buf);
- }
- }
}
}
@@ -452,52 +416,6 @@ LadspaPlugin::set_state(const XMLNode& node)
sscanf (port, "%" PRIu32, &port_id);
set_parameter (port_id, atof(data));
-
- XMLNodeList midi_kids;
- XMLNodeConstIterator iter;
-
- midi_kids = child->children ("midi-control");
-
- for (iter = midi_kids.begin(); iter != midi_kids.end(); ++iter) {
-
- child = *iter;
-
- MIDI::eventType ev = MIDI::on; /* initialize to keep gcc happy */
- MIDI::byte additional = 0; /* initialize to keep gcc happy */
- MIDI::channel_t chn = 0; /* initialize to keep gcc happy */
- bool ok = true;
- int xx;
-
- if ((prop = child->property ("event")) != 0) {
- sscanf (prop->value().c_str(), "0x%x", &xx);
- ev = (MIDI::eventType) xx;
- } else {
- ok = false;
- }
-
- if (ok && ((prop = child->property ("channel")) != 0)) {
- sscanf (prop->value().c_str(), "%d", &xx);
- chn = (MIDI::channel_t) xx;
- } else {
- ok = false;
- }
-
- if (ok && ((prop = child->property ("additional")) != 0)) {
- sscanf (prop->value().c_str(), "0x%x", &xx);
- additional = (MIDI::byte) xx;
- }
-
- if (ok) {
- MIDI::Controllable* pcontrol = get_nth_midi_control (port_id);
-
- if (pcontrol) {
- pcontrol->set_control_type (chn, ev, additional);
- }
-
- } else {
- error << string_compose(_("LADSPA LadspaPlugin MIDI control specification for port %1 is incomplete, so it has been ignored"), port) << endl;
- }
- }
}
latency_compute_run ();
diff --git a/libs/ardour/location.cc b/libs/ardour/location.cc
index b2af52284e..5b5f733138 100644
--- a/libs/ardour/location.cc
+++ b/libs/ardour/location.cc
@@ -30,6 +30,7 @@
#include <pbd/xml++.h>
#include <ardour/location.h>
+#include <ardour/audiofilesource.h>
#include "i18n.h"
@@ -44,6 +45,10 @@ Location::Location (const Location& other)
_end (other._end),
_flags (other._flags)
{
+ /* start and end flags can never be copied, because there can only ever be one of each */
+
+ _flags = Flags (_flags & ~IsStart);
+ _flags = Flags (_flags & ~IsEnd);
}
Location*
@@ -71,6 +76,9 @@ Location::set_start (jack_nframes_t s)
_start = s;
_end = s;
start_changed(this); /* EMIT SIGNAL */
+ if ( is_start() ) {
+ AudioFileSource::set_header_position_offset ( s );
+ }
}
return 0;
}
diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc
index fdf9092308..05584d0b5e 100644
--- a/libs/ardour/midi_diskstream.cc
+++ b/libs/ardour/midi_diskstream.cc
@@ -65,7 +65,7 @@ MidiDiskstream::MidiDiskstream (Session &sess, const string &name, Diskstream::F
in_set_state = true;
- init (flag);
+ init(flag);
use_new_playlist ();
in_set_state = false;
@@ -432,7 +432,7 @@ MidiDiskstream::get_state ()
node->add_property ("speed", buf);
node->add_property("name", _name);
- snprintf (buf, sizeof(buf), "%" PRIu64, id());
+ id().print(buf);
node->add_property("id", buf);
if (!_capturing_sources.empty() && _session.get_record_enabled()) {
@@ -499,11 +499,11 @@ MidiDiskstream::set_state (const XMLNode& node)
if (deprecated_io_node) {
if ((prop = deprecated_io_node->property ("id")) != 0) {
- sscanf (prop->value().c_str(), "%" PRIu64, &_id);
+ _id = prop->value ();
}
} else {
if ((prop = node.property ("id")) != 0) {
- sscanf (prop->value().c_str(), "%" PRIu64, &_id);
+ _id = prop->value ();
}
}
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc
index 4a9febcdca..af086d7c61 100644
--- a/libs/ardour/midi_track.cc
+++ b/libs/ardour/midi_track.cc
@@ -37,11 +37,12 @@
using namespace std;
using namespace ARDOUR;
+using namespace PBD;
MidiTrack::MidiTrack (Session& sess, string name, Route::Flag flag, TrackMode mode)
: Route (sess, name, 1, -1, -1, -1, flag, Buffer::MIDI),
- diskstream (0),
- _midi_rec_enable_control (*this, _session.midi_port())
+ _diskstream (0),
+ _rec_enable_control (*this)
{
MidiDiskstream::Flag dflags = MidiDiskstream::Flag (0);
@@ -63,32 +64,23 @@ MidiTrack::MidiTrack (Session& sess, string name, Route::Flag flag, TrackMode mo
_mode = mode;
set_diskstream (*ds, this);
-
- // session.SMPTEOffsetChanged.connect (mem_fun (*this, &MidiTrack::handle_smpte_offset_change));
-
- // we do this even though Route already did it in it's init
- reset_midi_control (_session.midi_port(), _session.get_midi_control());
-
}
MidiTrack::MidiTrack (Session& sess, const XMLNode& node)
: Route (sess, "to be renamed", 0, 0, -1, -1),
- diskstream (0),
- _midi_rec_enable_control (*this, _session.midi_port())
+ _diskstream (0),
+ _rec_enable_control (*this)
{
_freeze_record.state = NoFreeze;
set_state (node);
_declickable = true;
_saved_meter_point = _meter_point;
-
- // we do this even though Route already did it in it's init
- reset_midi_control (_session.midi_port(), _session.get_midi_control());
}
MidiTrack::~MidiTrack ()
{
- if (diskstream) {
- diskstream->unref();
+ if (_diskstream) {
+ _diskstream->unref();
}
}
@@ -103,16 +95,16 @@ MidiTrack::handle_smpte_offset_change ()
int
MidiTrack::deprecated_use_diskstream_connections ()
{
- if (diskstream->deprecated_io_node == 0) {
+ if (_diskstream->deprecated_io_node == 0) {
return 0;
}
const XMLProperty* prop;
- XMLNode& node (*diskstream->deprecated_io_node);
+ XMLNode& node (*_diskstream->deprecated_io_node);
/* don't do this more than once. */
- diskstream->deprecated_io_node = 0;
+ _diskstream->deprecated_io_node = 0;
set_input_minimum (-1);
set_input_maximum (-1);
@@ -155,15 +147,15 @@ MidiTrack::deprecated_use_diskstream_connections ()
int
MidiTrack::set_diskstream (MidiDiskstream& ds, void *src)
{
- if (diskstream) {
- diskstream->unref();
+ if (_diskstream) {
+ _diskstream->unref();
}
- diskstream = &ds.ref();
- diskstream->set_io (*this);
- diskstream->set_destructive (_mode == Destructive);
+ _diskstream = &ds.ref();
+ _diskstream->set_io (*this);
+ _diskstream->set_destructive (_mode == Destructive);
- if (diskstream->deprecated_io_node) {
+ if (_diskstream->deprecated_io_node) {
if (!connecting_legal) {
ConnectingLegal.connect (mem_fun (*this, &MidiTrack::deprecated_use_diskstream_connections));
@@ -172,11 +164,11 @@ MidiTrack::set_diskstream (MidiDiskstream& ds, void *src)
}
}
- diskstream->set_record_enabled (false, this);
- //diskstream->monitor_input (false);
+ _diskstream->set_record_enabled (false, this);
+ //_diskstream->monitor_input (false);
ic_connection.disconnect();
- ic_connection = input_changed.connect (mem_fun (*diskstream, &MidiDiskstream::handle_input_change));
+ ic_connection = input_changed.connect (mem_fun (*_diskstream, &MidiDiskstream::handle_input_change));
diskstream_changed (src); /* EMIT SIGNAL */
@@ -189,34 +181,30 @@ MidiTrack::use_diskstream (string name)
MidiDiskstream *dstream;
if ((dstream = dynamic_cast<MidiDiskstream*>(_session.diskstream_by_name (name))) == 0) {
- PBD::error << string_compose(_("MidiTrack: diskstream \"%1\" not known by session"), name) << endmsg;
+ error << string_compose(_("MidiTrack: midi diskstream \"%1\" not known by session"), name) << endmsg;
return -1;
}
-
- return set_diskstream (*dstream, this);
- return 0;
+ return set_diskstream (*dstream, this);
}
int
-MidiTrack::use_diskstream (id_t id)
+MidiTrack::use_diskstream (const PBD::ID& id)
{
MidiDiskstream *dstream;
if ((dstream = dynamic_cast<MidiDiskstream*>(_session.diskstream_by_id (id))) == 0) {
- PBD::error << string_compose(_("MidiTrack: diskstream \"%1\" not known by session"), id) << endmsg;
+ error << string_compose(_("MidiTrack: midi diskstream \"%1\" not known by session"), id) << endmsg;
return -1;
}
return set_diskstream (*dstream, this);
-
- return 0;
}
bool
MidiTrack::record_enabled () const
{
- return diskstream->record_enabled ();
+ return _diskstream->record_enabled ();
}
void
@@ -262,7 +250,6 @@ MidiTrack::set_state (const XMLNode& node)
{
const XMLProperty *prop;
XMLNodeConstIterator iter;
- XMLNodeList midi_kids;
if (Route::set_state (node)) {
return -1;
@@ -274,49 +261,19 @@ MidiTrack::set_state (const XMLNode& node)
} else if (prop->value() == X_("destructive")) {
_mode = Destructive;
} else {
- PBD::warning << string_compose ("unknown midi track mode \"%1\" seen and ignored", prop->value()) << endmsg;
+ warning << string_compose ("unknown midi track mode \"%1\" seen and ignored", prop->value()) << endmsg;
_mode = Normal;
}
} else {
_mode = Normal;
}
- midi_kids = node.children ("MIDI");
-
- for (iter = midi_kids.begin(); iter != midi_kids.end(); ++iter) {
-
- XMLNodeList kids;
- XMLNodeConstIterator miter;
- XMLNode* child;
-
- kids = (*iter)->children ();
-
- for (miter = kids.begin(); miter != kids.end(); ++miter) {
-
- child =* miter;
-
- if (child->name() == "rec_enable") {
-
- MIDI::eventType ev = MIDI::on; /* initialize to keep gcc happy */
- MIDI::byte additional = 0; /* ditto */
- MIDI::channel_t chn = 0; /* ditto */
-
- if (get_midi_node_info (child, ev, chn, additional)) {
- _midi_rec_enable_control.set_control_type (chn, ev, additional);
- } else {
- PBD::error << string_compose(_("MIDI rec_enable control specification for %1 is incomplete, so it has been ignored"), _name) << endmsg;
- }
- }
- }
- }
-
-
if ((prop = node.property ("diskstream-id")) == 0) {
/* some old sessions use the diskstream name rather than the ID */
if ((prop = node.property ("diskstream")) == 0) {
- PBD::fatal << _("programming error: MidiTrack given state without diskstream!") << endmsg;
+ fatal << _("programming error: MidiTrack given state without diskstream!") << endmsg;
/*NOTREACHED*/
return -1;
}
@@ -327,7 +284,7 @@ MidiTrack::set_state (const XMLNode& node)
} else {
- id_t id = strtoull (prop->value().c_str(), 0, 10);
+ PBD::ID id (prop->value());
if (use_diskstream (id)) {
return -1;
@@ -376,7 +333,7 @@ MidiTrack::state(bool full_state)
{
XMLNode& root (Route::state(full_state));
XMLNode* freeze_node;
- char buf[32];
+ char buf[64];
if (_freeze_record.playlist) {
XMLNode* inode;
@@ -388,7 +345,7 @@ MidiTrack::state(bool full_state)
for (vector<FreezeRecordInsertInfo*>::iterator i = _freeze_record.insert_info.begin(); i != _freeze_record.insert_info.end(); ++i) {
inode = new XMLNode (X_("insert"));
- snprintf (buf, sizeof (buf), "%" PRIu64, (*i)->id);
+ (*i)->id.print (buf);
inode->add_property (X_("id"), buf);
inode->add_child_copy ((*i)->state);
@@ -401,7 +358,7 @@ MidiTrack::state(bool full_state)
/* Alignment: act as a proxy for the diskstream */
XMLNode* align_node = new XMLNode (X_("alignment"));
- switch (diskstream->alignment_style()) {
+ switch (_diskstream->alignment_style()) {
case ExistingMaterial:
snprintf (buf, sizeof (buf), X_("existing"));
break;
@@ -412,29 +369,6 @@ MidiTrack::state(bool full_state)
align_node->add_property (X_("style"), buf);
root.add_child_nocopy (*align_node);
- /* MIDI control */
-
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte additional;
- XMLNode* midi_node = 0;
- XMLNode* child;
- XMLNodeList midikids;
-
- midikids = root.children ("MIDI");
- if (!midikids.empty()) {
- midi_node = midikids.front();
- }
- else {
- midi_node = root.add_child ("MIDI");
- }
-
- if (_midi_rec_enable_control.get_control_info (chn, ev, additional) && midi_node) {
-
- child = midi_node->add_child ("rec_enable");
- set_midi_node_info (child, ev, chn, additional);
- }
-
XMLNode* remote_control_node = new XMLNode (X_("remote_control"));
snprintf (buf, sizeof (buf), "%d", _remote_control_id);
remote_control_node->add_property (X_("id"), buf);
@@ -455,7 +389,7 @@ MidiTrack::state(bool full_state)
diskstream.
*/
- snprintf (buf, sizeof (buf), "%" PRIu64, diskstream->id());
+ _diskstream->id().print (buf);
root.add_property ("diskstream-id", buf);
return root;
@@ -516,7 +450,7 @@ MidiTrack::set_state_part_two ()
FreezeRecordInsertInfo* frii = new FreezeRecordInsertInfo (*((*citer)->children().front()));
frii->insert = 0;
- sscanf (prop->value().c_str(), "%" PRIu64, &frii->id);
+ frii->id = prop->value ();
_freeze_record.insert_info.push_back (frii);
}
}
@@ -527,9 +461,9 @@ MidiTrack::set_state_part_two ()
if ((prop = fnode->property (X_("style"))) != 0) {
if (prop->value() == "existing") {
- diskstream->set_persistent_align_style (ExistingMaterial);
+ _diskstream->set_persistent_align_style (ExistingMaterial);
} else if (prop->value() == "capture") {
- diskstream->set_persistent_align_style (CaptureTime);
+ _diskstream->set_persistent_align_style (CaptureTime);
}
}
}
@@ -539,7 +473,7 @@ MidiTrack::set_state_part_two ()
uint32_t
MidiTrack::n_process_buffers ()
{
- return max ((uint32_t) diskstream->n_channels(), redirect_max_outs);
+ return max ((uint32_t) _diskstream->n_channels(), redirect_max_outs);
}
void
@@ -570,7 +504,7 @@ MidiTrack::no_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nfr
return 0;
}
- diskstream->check_record_status (start_frame, nframes, can_record);
+ _diskstream->check_record_status (start_frame, nframes, can_record);
bool send_silence;
@@ -589,7 +523,7 @@ MidiTrack::no_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack_nfr
send_silence = true;
}
} else {
- if (diskstream->record_enabled()) {
+ if (_diskstream->record_enabled()) {
if (Config->get_use_sw_monitoring()) {
send_silence = false;
} else {
@@ -759,7 +693,7 @@ MidiTrack::silent_roll (jack_nframes_t nframes, jack_nframes_t start_frame, jack
silence (nframes, offset);
- return diskstream->process (_session.transport_frame() + offset, nframes, offset, can_record, rec_monitors_input);
+ return _diskstream->process (_session.transport_frame() + offset, nframes, offset, can_record, rec_monitors_input);
}
void
@@ -780,7 +714,7 @@ MidiTrack::set_name (string str, void *src)
return -1;
}
- if (diskstream->set_name (str, src)) {
+ if (_diskstream->set_name (str, src)) {
return -1;
}
@@ -893,7 +827,7 @@ void
MidiTrack::set_latency_delay (jack_nframes_t longest_session_latency)
{
Route::set_latency_delay (longest_session_latency);
- diskstream->set_roll_delay (_roll_delay);
+ _diskstream->set_roll_delay (_roll_delay);
}
jack_nframes_t
@@ -1064,101 +998,32 @@ MidiTrack::freeze_state() const
}
-void
-MidiTrack::reset_midi_control (MIDI::Port* port, bool on)
-{
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte extra;
-
- Route::reset_midi_control (port, on);
-
- _midi_rec_enable_control.get_control_info (chn, ev, extra);
- if (!on) {
- chn = -1;
- }
- _midi_rec_enable_control.midi_rebind (port, chn);
-}
-
-void
-MidiTrack::send_all_midi_feedback ()
-{
- if (_session.get_midi_feedback()) {
-
- Route::send_all_midi_feedback();
-
- _midi_rec_enable_control.send_feedback (record_enabled());
- }
-}
-
-
-MidiTrack::MIDIRecEnableControl::MIDIRecEnableControl (MidiTrack& s, MIDI::Port* port)
- : MIDI::Controllable (port, 0), track (s), setting(false)
+MidiTrack::MIDIRecEnableControllable::MIDIRecEnableControllable (MidiTrack& s)
+ : track(s)
{
- last_written = false; /* XXX need a good out of bound value */
}
void
-MidiTrack::MIDIRecEnableControl::set_value (float val)
+MidiTrack::MIDIRecEnableControllable::set_value (float val)
{
bool bval = ((val >= 0.5f) ? true: false);
-
- setting = true;
track.set_record_enable (bval, this);
- setting = false;
-}
-
-void
-MidiTrack::MIDIRecEnableControl::send_feedback (bool value)
-{
-
- if (!setting && get_midi_feedback()) {
- MIDI::byte val = (MIDI::byte) (value ? 127: 0);
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
- MIDI::EventTwoBytes data;
-
- if (get_control_info (ch, ev, additional)) {
- data.controller_number = additional;
- data.value = val;
-
- track._session.send_midi_message (get_port(), ev, ch, data);
- }
- }
-
}
-MIDI::byte*
-MidiTrack::MIDIRecEnableControl::write_feedback (MIDI::byte* buf, int32_t& bufsize, bool val, bool force)
+float
+MidiTrack::MIDIRecEnableControllable::get_value (void) const
{
- if (get_midi_feedback()) {
-
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
-
- if (get_control_info (ch, ev, additional)) {
- if (val != last_written || force) {
- *buf++ = ev & ch;
- *buf++ = additional; /* controller number */
- *buf++ = (MIDI::byte) (val ? 127: 0);
- last_written = val;
- bufsize -= 3;
- }
- }
- }
-
- return buf;
+ if (track.record_enabled()) { return 1.0f; }
+ return 0.0f;
}
void
MidiTrack::set_mode (TrackMode m)
{
- if (diskstream) {
+ if (_diskstream) {
if (_mode != m) {
_mode = m;
- diskstream->set_destructive (m == Destructive);
+ _diskstream->set_destructive (m == Destructive);
ModeChanged();
}
}
diff --git a/libs/ardour/panner.cc b/libs/ardour/panner.cc
index 83c9e6eb4d..a56424cfea 100644
--- a/libs/ardour/panner.cc
+++ b/libs/ardour/panner.cc
@@ -53,21 +53,21 @@ float Panner::current_automation_version_number = 1.0;
string EqualPowerStereoPanner::name = "Equal Power Stereo";
string Multi2dPanner::name = "Multiple (2D)";
-/* this is a default mapper of MIDI control values to a pan position
- others can be imagined. see Panner::set_midi_to_pan_function().
+/* this is a default mapper of control values to a pan position
+ others can be imagined.
*/
-static pan_t direct_midi_to_pan (double fract) {
+static pan_t direct_control_to_pan (double fract) {
return fract;
}
-static double direct_pan_to_midi (pan_t val) {
+static double direct_pan_to_control (pan_t val) {
return val;
}
StreamPanner::StreamPanner (Panner& p)
: parent (p),
- _midi_control (*this, (MIDI::Port*) 0)
+ _control (*this)
{
_muted = false;
@@ -80,84 +80,30 @@ StreamPanner::~StreamPanner ()
{
}
-StreamPanner::MIDIControl::MIDIControl (StreamPanner& s, MIDI::Port* port)
- : MIDI::Controllable (port, 0), sp (s), setting(false)
-{
- midi_to_pan = direct_midi_to_pan;
- pan_to_midi = direct_pan_to_midi;
- last_written = 0; /* XXX need a good out-of-bound-value */
-}
-
void
-StreamPanner::MIDIControl::set_value (float val)
+StreamPanner::PanControllable::set_value (float val)
{
- setting = true;
- sp.set_position (midi_to_pan (val));
- setting = false;
-}
-
-void
-StreamPanner::MIDIControl::send_feedback (pan_t value)
-{
-
- if (!setting && get_midi_feedback() && pan_to_midi) {
- MIDI::byte val = (MIDI::byte) (pan_to_midi (value) * 127.0f);
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
- MIDI::EventTwoBytes data;
-
- if (get_control_info (ch, ev, additional)) {
- data.controller_number = additional;
- data.value = val;
- last_written = val;
-
- sp.get_parent().session().send_midi_message (get_port(), ev, ch, data);
- }
-
- // send_midi_feedback (pan_to_midi (val));
- }
-
+ panner.set_position (direct_control_to_pan (val));
}
-MIDI::byte*
-StreamPanner::MIDIControl::write_feedback (MIDI::byte* buf, int32_t& bufsize, pan_t val, bool force)
+float
+StreamPanner::PanControllable::get_value (void) const
{
- if (get_midi_feedback() && pan_to_midi && bufsize > 2) {
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
- MIDI::byte pm;
- if (get_control_info (ch, ev, additional)) {
-
- pm = (MIDI::byte) (pan_to_midi (val) * 127.0);
-
- if (pm != last_written || force) {
- *buf++ = (0xF0 & ev) | (0xF & ch);
- *buf++ = additional; /* controller number */
- *buf++ = pm;
- last_written = pm;
- bufsize -= 3;
- }
- }
- }
-
- return buf;
+ float xpos;
+ panner.get_effective_position (xpos);
+ return direct_pan_to_control (xpos);
}
-
-void
-StreamPanner::reset_midi_control (MIDI::Port* port, bool on)
+bool
+StreamPanner::PanControllable::can_send_feedback () const
{
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte extra;
+ AutoState astate = panner.get_parent().automation_state ();
- _midi_control.get_control_info (chn, ev, extra);
- if (!on) {
- chn = -1;
+ if ((astate == Play) || (astate == Touch && !panner.get_parent().touching())) {
+ return true;
}
- _midi_control.midi_rebind (port, chn);
+
+ return false;
}
void
@@ -180,10 +126,7 @@ StreamPanner::set_position (float xpos, bool link_call)
x = xpos;
update ();
Changed ();
-
- if (parent.session().get_midi_feedback()) {
- _midi_control.send_feedback (x);
- }
+ _control.Changed ();
}
}
@@ -224,42 +167,11 @@ StreamPanner::set_state (const XMLNode& node)
{
const XMLProperty* prop;
XMLNodeConstIterator iter;
- XMLNodeList midi_kids;
if ((prop = node.property (X_("muted")))) {
set_muted (prop->value() == "yes");
}
- midi_kids = node.children ("MIDI");
-
- for (iter = midi_kids.begin(); iter != midi_kids.end(); ++iter) {
-
- XMLNodeList kids;
- XMLNodeConstIterator miter;
- XMLNode* child;
-
- kids = (*iter)->children ();
-
- for (miter = kids.begin(); miter != kids.end(); ++miter) {
-
- child =* miter;
-
- if (child->name() == "pan") {
-
- MIDI::eventType ev = MIDI::on; /* initialize to keep gcc happy */
- MIDI::byte additional = 0; /* ditto */
- MIDI::channel_t chn = 0; /* ditto */
-
- if (get_midi_node_info (child, ev, chn, additional)) {
- _midi_control.set_control_type (chn, ev, additional);
- } else {
- error << _("MIDI pan control specification is incomplete, so it has been ignored") << endmsg;
- }
- }
- }
- }
-
-
return 0;
}
@@ -267,68 +179,6 @@ void
StreamPanner::add_state (XMLNode& node)
{
node.add_property (X_("muted"), (muted() ? "yes" : "no"));
-
- /* MIDI control */
-
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte additional;
- XMLNode* midi_node = 0;
- XMLNode* child;
-
- if (_midi_control.get_control_info (chn, ev, additional)) {
-
- midi_node = node.add_child ("MIDI");
-
- child = midi_node->add_child ("pan");
- set_midi_node_info (child, ev, chn, additional);
- }
-
-}
-
-
-bool
-StreamPanner::get_midi_node_info (XMLNode * node, MIDI::eventType & ev, MIDI::channel_t & chan, MIDI::byte & additional)
-{
- bool ok = true;
- const XMLProperty* prop;
- int xx;
-
- if ((prop = node->property ("event")) != 0) {
- sscanf (prop->value().c_str(), "0x%x", &xx);
- ev = (MIDI::eventType) xx;
- } else {
- ok = false;
- }
-
- if (ok && ((prop = node->property ("channel")) != 0)) {
- sscanf (prop->value().c_str(), "%d", &xx);
- chan = (MIDI::channel_t) xx;
- } else {
- ok = false;
- }
-
- if (ok && ((prop = node->property ("additional")) != 0)) {
- sscanf (prop->value().c_str(), "0x%x", &xx);
- additional = (MIDI::byte) xx;
- }
-
- return ok;
-}
-
-bool
-StreamPanner::set_midi_node_info (XMLNode * node, MIDI::eventType ev, MIDI::channel_t chan, MIDI::byte additional)
-{
- char buf[32];
-
- snprintf (buf, sizeof(buf), "0x%x", ev);
- node->add_property ("event", buf);
- snprintf (buf, sizeof(buf), "%d", chan);
- node->add_property ("channel", buf);
- snprintf (buf, sizeof(buf), "0x%x", additional);
- node->add_property ("additional", buf);
-
- return true;
}
/*---------------------------------------------------------------------- */
@@ -959,8 +809,6 @@ Panner::Panner (string name, Session& s)
_linked = false;
_link_direction = SameDirection;
_bypassed = false;
-
- reset_midi_control (_session.mmc_port(), _session.get_mmc_control());
}
Panner::~Panner ()
@@ -1107,8 +955,6 @@ Panner::reset (uint32_t nouts, uint32_t npans)
(*x)->update ();
}
- reset_midi_control (_session.mmc_port(), _session.get_mmc_control());
-
/* force hard left/right panning in a common case: 2in/2out
*/
@@ -1490,14 +1336,6 @@ Panner::touching () const
}
void
-Panner::reset_midi_control (MIDI::Port* port, bool on)
-{
- for (vector<StreamPanner*>::const_iterator i = begin(); i != end(); ++i) {
- (*i)->reset_midi_control (port, on);
- }
-}
-
-void
Panner::set_position (float xpos, StreamPanner& orig)
{
float xnow;
@@ -1639,42 +1477,3 @@ Panner::set_position (float xpos, float ypos, float zpos, StreamPanner& orig)
}
}
}
-
-void
-Panner::send_all_midi_feedback ()
-{
- if (_session.get_midi_feedback()) {
- float xpos;
-
- // do feedback for all panners
- for (vector<StreamPanner*>::iterator i = begin(); i != end(); ++i) {
- (*i)->get_effective_position (xpos);
-
- (*i)->midi_control().send_feedback (xpos);
- }
-
- }
-}
-
-MIDI::byte*
-Panner::write_midi_feedback (MIDI::byte* buf, int32_t& bufsize)
-{
- AutoState astate = automation_state ();
-
- if (_session.get_midi_feedback() &&
- (astate == Play || (astate == Touch && !touching()))) {
-
- float xpos;
-
- // do feedback for all panners
- for (vector<StreamPanner*>::iterator i = begin(); i != end(); ++i) {
- (*i)->get_effective_position (xpos);
-
- buf = (*i)->midi_control().write_feedback (buf, bufsize, xpos);
- }
-
- }
-
- return buf;
-}
-
diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc
index 7dee866767..fc1dd84066 100644
--- a/libs/ardour/playlist.cc
+++ b/libs/ardour/playlist.cc
@@ -77,7 +77,6 @@ Playlist::Playlist (Session& sess, string nom, bool hide)
{
init (hide);
_name = nom;
- _orig_diskstream_id = 0;
}
@@ -86,7 +85,6 @@ Playlist::Playlist (Session& sess, const XMLNode& node, bool hide)
{
init (hide);
_name = "unnamed"; /* reset by set_state */
- _orig_diskstream_id = 0;
if (set_state (node)) {
throw failed_constructor();
@@ -1343,7 +1341,7 @@ Playlist::set_state (const XMLNode& node)
if (prop->name() == X_("name")) {
_name = prop->value();
} else if (prop->name() == X_("orig_diskstream_id")) {
- sscanf (prop->value().c_str(), "%" PRIu64, &_orig_diskstream_id);
+ _orig_diskstream_id = prop->value ();
} else if (prop->name() == X_("frozen")) {
_frozen = (prop->value() == X_("yes"));
}
@@ -1404,7 +1402,7 @@ Playlist::state (bool full_state)
node->add_property (X_("name"), _name);
- snprintf (buf, sizeof(buf), "%" PRIu64, _orig_diskstream_id);
+ _orig_diskstream_id.print (buf);
node->add_property (X_("orig_diskstream_id"), buf);
node->add_property (X_("frozen"), _frozen ? "yes" : "no");
@@ -1725,7 +1723,7 @@ Playlist::nudge_after (jack_nframes_t start, jack_nframes_t distance, bool forwa
}
Region*
-Playlist::find_region (id_t id) const
+Playlist::find_region (const ID& id) const
{
RegionLock rlock (const_cast<Playlist*> (this));
RegionList::const_iterator i;
diff --git a/libs/ardour/plugin.cc b/libs/ardour/plugin.cc
index 9fc6c57909..6763e7f508 100644
--- a/libs/ardour/plugin.cc
+++ b/libs/ardour/plugin.cc
@@ -35,8 +35,6 @@
#include <pbd/pathscanner.h>
#include <pbd/xml++.h>
-#include <midi++/manager.h>
-
#include <ardour/ardour.h>
#include <ardour/session.h>
#include <ardour/audioengine.h>
@@ -61,64 +59,59 @@ Plugin::Plugin (const Plugin& other)
}
void
-Plugin::setup_midi_controls ()
+Plugin::setup_controls ()
{
- uint32_t port_cnt;
-
- port_cnt = parameter_count();
+ uint32_t port_cnt = parameter_count();
- /* set up a vector of null pointers for the MIDI controls.
+ /* set up a vector of null pointers for the controls.
we'll fill this in on an as-needed basis.
*/
for (uint32_t i = 0; i < port_cnt; ++i) {
- midi_controls.push_back (0);
+ controls.push_back (0);
}
}
Plugin::~Plugin ()
{
- for (vector<MIDIPortControl*>::iterator i = midi_controls.begin(); i != midi_controls.end(); ++i) {
+ for (vector<PortControllable*>::iterator i = controls.begin(); i != controls.end(); ++i) {
if (*i) {
delete *i;
}
}
}
-MIDI::Controllable *
-Plugin::get_nth_midi_control (uint32_t n)
+Controllable *
+Plugin::get_nth_control (uint32_t n)
{
if (n >= parameter_count()) {
return 0;
}
- if (midi_controls[n] == 0) {
+ if (controls[n] == 0) {
Plugin::ParameterDescriptor desc;
get_parameter_descriptor (n, desc);
-
- midi_controls[n] = new MIDIPortControl (*this, n, _session.midi_port(), desc.lower, desc.upper, desc.toggled, desc.logarithmic);
+
+ controls[n] = new PortControllable (*this, n, desc.lower, desc.upper, desc.toggled, desc.logarithmic);
}
- return midi_controls[n];
+ return controls[n];
}
-Plugin::MIDIPortControl::MIDIPortControl (Plugin& p, uint32_t port_id, MIDI::Port *port,
- float low, float up, bool t, bool loga)
- : MIDI::Controllable (port, 0), plugin (p), absolute_port (port_id)
+Plugin::PortControllable::PortControllable (Plugin& p, uint32_t port_id, float low, float up, bool t, bool loga)
+ : plugin (p), absolute_port (port_id)
{
toggled = t;
logarithmic = loga;
lower = low;
upper = up;
range = upper - lower;
- last_written = 0; /* XXX need a good out-of-bound-value */
- setting = false;
}
void
-Plugin::MIDIPortControl::set_value (float value)
+Plugin::PortControllable::set_value (float value)
{
if (toggled) {
if (value > 0.5) {
@@ -140,138 +133,27 @@ Plugin::MIDIPortControl::set_value (float value)
}
}
- setting = true;
plugin.set_parameter (absolute_port, value);
- setting = false;
-}
-
-void
-Plugin::MIDIPortControl::send_feedback (float value)
-{
-
- if (!setting && get_midi_feedback()) {
- MIDI::byte val;
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
- MIDI::EventTwoBytes data;
-
- if (toggled) {
- val = (MIDI::byte) (value * 127.0f);
- } else {
- if (logarithmic) {
- value = log(value);
- }
-
- val = (MIDI::byte) (((value - lower) / range) * 127.0f);
- }
-
- if (get_control_info (ch, ev, additional)) {
- data.controller_number = additional;
- data.value = val;
- last_written = val;
-
- plugin.session().send_midi_message (get_port(), ev, ch, data);
- }
- }
-
}
-MIDI::byte*
-Plugin::MIDIPortControl::write_feedback (MIDI::byte* buf, int32_t& bufsize, float value, bool force)
+float
+Plugin::PortControllable::get_value (void) const
{
- if (get_midi_feedback() && bufsize > 2) {
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
-
- if (get_control_info (ch, ev, additional)) {
-
- MIDI::byte val;
-
- if (toggled) {
+ float val = plugin.get_parameter (absolute_port);
- val = (MIDI::byte) (value * 127.0f);
-
- } else {
-
- if (logarithmic) {
- value = log(value);
- }
-
- val = (MIDI::byte) (((value - lower) / range) * 127.0f);
- }
-
- if (val != last_written || force) {
- *buf++ = MIDI::controller & ch;
- *buf++ = additional; /* controller number */
- *buf++ = val;
- last_written = val;
- bufsize -= 3;
- }
- }
- }
-
- return buf;
-}
-
-
-void
-Plugin::reset_midi_control (MIDI::Port* port, bool on)
-{
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte extra;
-
- for (vector<MIDIPortControl*>::iterator i = midi_controls.begin(); i != midi_controls.end(); ++i) {
- if (*i == 0)
- continue;
- (*i)->get_control_info (chn, ev, extra);
- if (!on) {
- chn = -1;
- }
- (*i)->midi_rebind (port, chn);
- }
-}
-
-void
-Plugin::send_all_midi_feedback ()
-{
- if (_session.get_midi_feedback()) {
- float val = 0.0;
- uint32_t n = 0;
+ if (toggled) {
- for (vector<MIDIPortControl*>::iterator i = midi_controls.begin(); i != midi_controls.end(); ++i, ++n) {
- if (*i == 0) {
- continue;
- }
-
- val = (*i)->plugin.get_parameter (n);
- (*i)->send_feedback (val);
- }
+ return val;
- }
-}
-
-MIDI::byte*
-Plugin::write_midi_feedback (MIDI::byte* buf, int32_t& bufsize)
-{
- if (_session.get_midi_feedback()) {
- float val = 0.0;
- uint32_t n = 0;
+ } else {
- for (vector<MIDIPortControl*>::iterator i = midi_controls.begin(); i != midi_controls.end(); ++i, ++n) {
- if (*i == 0) {
- continue;
- }
-
- val = (*i)->plugin.get_parameter (n);
- buf = (*i)->write_feedback (buf, bufsize, val);
+ if (logarithmic) {
+ val = log(val);
}
+
+ return ((val - lower) / range);
}
-
- return buf;
-}
+}
vector<string>
Plugin::get_presets()
diff --git a/libs/ardour/po/el_GR.po b/libs/ardour/po/el_GR.po
index a7aefa2cca..5d8adef7d0 100644
--- a/libs/ardour/po/el_GR.po
+++ b/libs/ardour/po/el_GR.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libardour 0.664.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-06-20 16:23-0400\n"
+"POT-Creation-Date: 2006-06-29 21:03-0400\n"
"PO-Revision-Date: 2003-05-21 12:50+0500\n"
"Last-Translator: Muadibas\n"
"Language-Team: Hellenic(Greek)\n"
@@ -15,23 +15,23 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: libs/ardour/audio_diskstream.cc:336
+#: libs/ardour/audio_diskstream.cc:337
#, fuzzy
msgid "AudioDiskstream: Session doesn't know about a Playlist called \"%1\""
msgstr ""
"DiskStream: Η ΣυνεδÏία δεν γνωÏίζει για την λίστα ΑναπαÏ/γής με όνομα \"%1\""
-#: libs/ardour/audio_diskstream.cc:341
+#: libs/ardour/audio_diskstream.cc:342
#, fuzzy
msgid "AudioDiskstream: Playlist \"%1\" isn't an audio playlist"
msgstr "DiskStream: Η Λίστα \"%1\" δεν είναι ηχητική λίστα αναπαÏ/γής"
-#: libs/ardour/audio_diskstream.cc:432
+#: libs/ardour/audio_diskstream.cc:433
#, fuzzy
msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!"
msgstr "DiskStream %1: δεν υπάÏχει λίστα αναπαÏ/γής για να γίνει αντιγÏαφή!"
-#: libs/ardour/audio_diskstream.cc:1113 libs/ardour/audio_diskstream.cc:1124
+#: libs/ardour/audio_diskstream.cc:1114 libs/ardour/audio_diskstream.cc:1125
#, fuzzy
msgid ""
"AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3"
@@ -39,100 +39,100 @@ msgstr ""
"DiskStream %1: κατα την αναγόμωση, δεν μπόÏεσα να διαβάσω %2 από τη λίστα "
"αναπαÏ/γής στο frame %3"
-#: libs/ardour/audio_diskstream.cc:1253
+#: libs/ardour/audio_diskstream.cc:1254
#, fuzzy
msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3"
msgstr ""
"DiskStream %1: δεν μπόÏεσα να διαβάσω %2 από τη λίστα αναπαÏ/γής στο frame %3"
-#: libs/ardour/audio_diskstream.cc:1620 libs/ardour/audio_diskstream.cc:1637
+#: libs/ardour/audio_diskstream.cc:1621 libs/ardour/audio_diskstream.cc:1638
#, fuzzy
msgid "AudioDiskstream %1: cannot write to disk"
msgstr "DiskStream %1: δεν μποÏÏŽ να γÏάψω στο δίσκο"
-#: libs/ardour/audio_diskstream.cc:1697
+#: libs/ardour/audio_diskstream.cc:1698
#, fuzzy
msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!"
msgstr ""
"DiskStream \"%1\": δεν γίνεται να αποÏÏιφθοÏν δειγματοληψίες στο δίσκο!"
-#: libs/ardour/audio_diskstream.cc:1794
+#: libs/ardour/audio_diskstream.cc:1796
msgid "%1: could not create region for complete audio file"
msgstr "%1: δεν μπόÏεσα να δημιουÏγήσω πεÏιοχή για ολόκληÏο audio file"
-#: libs/ardour/audio_diskstream.cc:1817
+#: libs/ardour/audio_diskstream.cc:1819
#, fuzzy
msgid "AudioDiskstream: could not create region for captured audio!"
msgstr "DiskStream: δεν μπόÏεσα να δημιουÏγήσω πεÏιοχή για δειγματοληψίες!"
-#: libs/ardour/audio_diskstream.cc:1872
+#: libs/ardour/audio_diskstream.cc:1874
#, fuzzy
msgid "programmer error: %1"
msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1"
-#: libs/ardour/audio_diskstream.cc:2144
+#: libs/ardour/audio_diskstream.cc:2146
#, fuzzy
msgid "AudioDiskstream: channel %1 out of range"
msgstr "DiskStream: κανάλι εκτός διαστήματος"
-#: libs/ardour/audio_diskstream.cc:2169
+#: libs/ardour/audio_diskstream.cc:2171
msgid "%1:%2 new capture file not initialized correctly"
msgstr "%1:%2 νέα δειγματοληψία δεν εκκινήθη σωστά"
-#: libs/ardour/audio_diskstream.cc:2402
+#: libs/ardour/audio_diskstream.cc:2404
msgid "Location \"%1\" not valid for track loop (start >= end)"
msgstr "Η Τοποθεσία \"%1\" δεν είναι ικανή για track loop (αÏχή >= τέλος)"
-#: libs/ardour/audio_diskstream.cc:2483
+#: libs/ardour/audio_diskstream.cc:2485
#, fuzzy
msgid "%1: cannot restore pending capture source file %2"
msgstr "Εισαγωγή: δεν μποÏÏŽ να ανοίξω το εισαγμένο αÏχείο ήχου \"%1\""
-#: libs/ardour/audio_diskstream.cc:2505
+#: libs/ardour/audio_diskstream.cc:2507
msgid "%1: incorrect number of pending sources listed - ignoring them all"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:2521
+#: libs/ardour/audio_diskstream.cc:2523
msgid "%1: cannot create whole-file region from pending capture sources"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:2533
+#: libs/ardour/audio_diskstream.cc:2535
#, fuzzy
msgid "%1: cannot create region from pending capture sources"
msgstr "%1: δεν μπόÏεσα να δημιουÏγήσω πεÏιοχή για ολόκληÏο audio file"
-#: libs/ardour/audio_library.cc:91
+#: libs/ardour/audio_library.cc:92
msgid "channels"
msgstr ""
-#: libs/ardour/audio_library.cc:92
+#: libs/ardour/audio_library.cc:93
#, fuzzy
msgid "samplerate"
msgstr "ξεχωÏιστό"
-#: libs/ardour/audio_library.cc:93
+#: libs/ardour/audio_library.cc:94
msgid "resolution"
msgstr ""
-#: libs/ardour/audio_library.cc:94
+#: libs/ardour/audio_library.cc:95
#, fuzzy
msgid "format"
msgstr "float"
-#: libs/ardour/audio_library.cc:101
+#: libs/ardour/audio_library.cc:102
msgid "Could not open %1. Audio Library not saved"
msgstr "Δεν μπόÏεσα να ανοίξω το %1. Η Audio Library δεν αποθηκεÏθηκε"
-#: libs/ardour/audio_playlist.cc:52 libs/ardour/audio_playlist.cc:62
-#: libs/ardour/audio_playlist.cc:73 libs/ardour/audio_playlist.cc:120
+#: libs/ardour/audio_playlist.cc:53 libs/ardour/audio_playlist.cc:63
+#: libs/ardour/audio_playlist.cc:74 libs/ardour/audio_playlist.cc:121
#: libs/ardour/insert.cc:76 libs/ardour/insert.cc:95 libs/ardour/insert.cc:120
-#: libs/ardour/insert.cc:838 libs/ardour/insert.cc:846 libs/ardour/send.cc:38
-#: libs/ardour/send.cc:52 libs/ardour/send.cc:61
-#: libs/ardour/session_state.cc:1620 libs/ardour/session_state.cc:1666
+#: libs/ardour/insert.cc:838 libs/ardour/insert.cc:846 libs/ardour/send.cc:39
+#: libs/ardour/send.cc:53 libs/ardour/send.cc:62
+#: libs/ardour/session_state.cc:1621 libs/ardour/session_state.cc:1667
msgid "initial state"
msgstr "Ï€ÏωταÏχική κατάσταση"
-#: libs/ardour/audio_playlist.cc:274 libs/ardour/audio_playlist.cc:768
+#: libs/ardour/audio_playlist.cc:275 libs/ardour/audio_playlist.cc:769
msgid ""
"programming error: non-audio Region passed to remove_overlap in audio "
"playlist"
@@ -140,51 +140,51 @@ msgstr ""
"σφάλμα Ï€ÏογÏαμματισμοÏ: μη-ηχητική ΠεÏιοχή πέÏασε σε remove_overlap στην "
"audio playlist"
-#: libs/ardour/audio_playlist.cc:401
+#: libs/ardour/audio_playlist.cc:402
msgid ""
"programming error: non-audio Region tested for overlap in audio playlist"
msgstr ""
"σφάλμα Ï€ÏογÏαμματισμοÏ: μη-ηχητική ΠεÏιοχή ελέγχθη για υπεÏπήδηση(overlap) "
"στην λίστα αναπαÏ/γής του ήχου"
-#: libs/ardour/audio_playlist.cc:877
+#: libs/ardour/audio_playlist.cc:878
msgid "xfade change"
msgstr "αλλαγή xfade"
-#: libs/ardour/audio_playlist.cc:932
+#: libs/ardour/audio_playlist.cc:933
msgid "region modified"
msgstr "η πεÏιοχή μετεβλήθη"
-#: libs/ardour/audio_track.cc:132 libs/ardour/io.cc:1715
-#: libs/ardour/io.cc:1825
+#: libs/ardour/audio_track.cc:125 libs/ardour/io.cc:1716
+#: libs/ardour/io.cc:1826
msgid "Unknown connection \"%1\" listed for input of %2"
msgstr "Άγνωστη σÏνδεση \"%1\" στη λίστα εισόδου του %2"
-#: libs/ardour/audio_track.cc:134 libs/ardour/io.cc:1717
-#: libs/ardour/io.cc:1827
+#: libs/ardour/audio_track.cc:127 libs/ardour/io.cc:1718
+#: libs/ardour/io.cc:1828
#, fuzzy
msgid "in 1"
msgstr "in %lu"
-#: libs/ardour/audio_track.cc:135 libs/ardour/io.cc:1718
-#: libs/ardour/io.cc:1828
+#: libs/ardour/audio_track.cc:128 libs/ardour/io.cc:1719
+#: libs/ardour/io.cc:1829
msgid "No input connections available as a replacement"
msgstr ""
-#: libs/ardour/audio_track.cc:139 libs/ardour/io.cc:1722
-#: libs/ardour/io.cc:1832
+#: libs/ardour/audio_track.cc:132 libs/ardour/io.cc:1723
+#: libs/ardour/io.cc:1833
msgid "Connection %1 was not available - \"in 1\" used instead"
msgstr ""
-#: libs/ardour/audio_track.cc:148 libs/ardour/io.cc:1841
+#: libs/ardour/audio_track.cc:141 libs/ardour/io.cc:1842
msgid "improper input channel list in XML node (%1)"
msgstr "ακατάλληλη λίστα καναλιών εισόδου στον κόμβο XML (%1)"
-#: libs/ardour/audio_track.cc:193 libs/ardour/audio_track.cc:206
+#: libs/ardour/audio_track.cc:186 libs/ardour/audio_track.cc:199
msgid "AudioTrack: diskstream \"%1\" not known by session"
msgstr "AudioTrack: το diskstream \"%1\" είναι μή αναγνωÏίσιμο από τη συνεδÏία"
-#: libs/ardour/audio_track.cc:304
+#: libs/ardour/audio_track.cc:297
#, fuzzy
msgid ""
"MIDI rec_enable control specification for %1 is incomplete, so it has been "
@@ -193,95 +193,95 @@ msgstr ""
"Η Ï€ÏοδιαγÏαφή ελέγχου του MIDI gain για το %1 είναι ημιτελής, με αποτέλεσμα "
"να αγνοηθεί"
-#: libs/ardour/audio_track.cc:316
+#: libs/ardour/audio_track.cc:309
msgid "programming error: AudioTrack given state without diskstream!"
msgstr ""
"σφάλμα Ï€ÏογÏαμματισμοÏ: εδόθη κατάσταση στην AudioTrack δίχως diskstream!"
-#: libs/ardour/audioengine.cc:149
+#: libs/ardour/audioengine.cc:144
msgid "cannot activate JACK client"
msgstr "Ο JACK δεν μποÏεί να ενεÏγοποιηθεί"
-#: libs/ardour/audioengine.cc:400
+#: libs/ardour/audioengine.cc:395
msgid "register audio input port called before engine was started"
msgstr "η register audio input port εκλήθη Ï€Ïιν να εκκινηθεί η engine"
-#: libs/ardour/audioengine.cc:431
+#: libs/ardour/audioengine.cc:426
msgid "register audio output port called before engine was started"
msgstr "η register audio output port εκλήθη Ï€Ïίν να εκκινηθεί η engine"
-#: libs/ardour/audioengine.cc:492
+#: libs/ardour/audioengine.cc:487
msgid "connect called before engine was started"
msgstr "η σÏνδεση εκλήθη Ï€Ïιν να εκκινηθεί η engine"
-#: libs/ardour/audioengine.cc:508
+#: libs/ardour/audioengine.cc:503
msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)"
msgstr ""
-#: libs/ardour/audioengine.cc:521 libs/ardour/audioengine.cc:550
+#: libs/ardour/audioengine.cc:516 libs/ardour/audioengine.cc:545
msgid "disconnect called before engine was started"
msgstr "η αποσÏνδεση εκλήθη Ï€Ïιν να εκκινηθεί η engine"
-#: libs/ardour/audioengine.cc:608
+#: libs/ardour/audioengine.cc:603
msgid "get_port_by_name() called before engine was started"
msgstr "η Ïουτίνα get_port_by_name() εκλήθη Ï€Ïιν να εκκινηθεί η engine"
-#: libs/ardour/audioengine.cc:641
+#: libs/ardour/audioengine.cc:636
msgid "get_ports called before engine was started"
msgstr "η Ïουτίνα get_ports εκλήθη Ï€Ïιν να εκκινηθεί η engine"
-#: libs/ardour/audioengine.cc:716
+#: libs/ardour/audioengine.cc:711
msgid "get_nth_physical called before engine was started"
msgstr "η Ïουτίνα get_nth_physical εκλήθη Ï€Ïιν να εκκινηθεί η engine"
-#: libs/ardour/audioengine.cc:744
+#: libs/ardour/audioengine.cc:739
#, fuzzy
msgid "get_port_total_latency() called with no JACK client connection"
msgstr "η Ïουτίνα get_port_total_latency() εκλήθη Ï€Ïιν να εκκινηθεί η engine"
-#: libs/ardour/audioengine.cc:750
+#: libs/ardour/audioengine.cc:745
msgid "get_port_total_latency() called before engine was started"
msgstr "η Ïουτίνα get_port_total_latency() εκλήθη Ï€Ïιν να εκκινηθεί η engine"
-#: libs/ardour/audioengine.cc:874
+#: libs/ardour/audioengine.cc:869
msgid "Unable to connect to JACK server"
msgstr ""
-#: libs/ardour/audioengine.cc:877
+#: libs/ardour/audioengine.cc:872
msgid "Could not connect to JACK server as \"%1\""
msgstr ""
-#: libs/ardour/audioengine.cc:882
+#: libs/ardour/audioengine.cc:877
msgid "JACK server started"
msgstr ""
-#: libs/ardour/audioengine.cc:916
+#: libs/ardour/audioengine.cc:911
msgid "cannot shutdown connection to JACK"
msgstr ""
-#: libs/ardour/audioengine.cc:941
+#: libs/ardour/audioengine.cc:936
msgid "failed to connect to JACK"
msgstr ""
-#: libs/ardour/audioengine.cc:957
+#: libs/ardour/audioengine.cc:952
#, fuzzy
msgid "could not reregister %1"
msgstr "Σφάλμα: δεν μπόÏεσα να γÏάψω %1"
-#: libs/ardour/audioengine.cc:1014
+#: libs/ardour/audioengine.cc:1009
msgid "could not reconnect %1 and %2 (err = %3)"
msgstr ""
-#: libs/ardour/audiofilesource.cc:444 libs/ardour/session_state.cc:3094
+#: libs/ardour/audiofilesource.cc:444 libs/ardour/session_state.cc:3095
msgid ""
"there are already 1000 files with names like %1; versioning discontinued"
msgstr "ΥπάÏχουν ήδη 1000 αÏχεία με ονόματα όπως %1; μη-συνεχές versioning"
-#: libs/ardour/audiofilesource.cc:458 libs/ardour/session_state.cc:3108
+#: libs/ardour/audiofilesource.cc:458 libs/ardour/session_state.cc:3109
msgid "cannot rename audio file source from %1 to %2 (%3)"
msgstr "δεν μποÏÏŽ να μετονομάσω την πηγή του audio file από %1 σε %2 (%3)"
-#: libs/ardour/audiofilesource.cc:465 libs/ardour/session_state.cc:3123
+#: libs/ardour/audiofilesource.cc:465 libs/ardour/session_state.cc:3124
msgid "cannot remove peakfile %1 for %2 (%3)"
msgstr "δεν μποÏÏŽ να απαλοίψω το peakfile %1 για %2 (%3)"
@@ -310,23 +310,23 @@ msgstr "Filesource: δεν ευÏέθη το απαιτοÏμενο αÏχείο
msgid "Filesource: cannot check for existing file (%1): %2"
msgstr "Filesource: δεν μποÏÏŽ να ελέγξω για το υπάÏχον αÏχείο (%1): %2"
-#: libs/ardour/audiofilesource.cc:639 libs/ardour/insert.cc:525
-#: libs/ardour/sndfilesource.cc:111
+#: libs/ardour/audiofilesource.cc:636 libs/ardour/insert.cc:525
+#: libs/ardour/sndfilesource.cc:113
msgid "programming error: %1"
msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1"
-#: libs/ardour/audiofilesource.cc:644
+#: libs/ardour/audiofilesource.cc:641
#, fuzzy
msgid "cannot rename audio file for %1 to %2"
msgstr "δεν μποÏÏŽ να μετονομάσω την πηγή του audio file από %1 σε %2 (%3)"
-#: libs/ardour/audiofilter.cc:44
+#: libs/ardour/audiofilter.cc:45
msgid "audiofilter: error creating name for new audio file based on %1"
msgstr ""
"audiofilter: σφάλμα στη δημιουÏγία ονόματος για νέο audio file βασισμένο σε %"
"1"
-#: libs/ardour/audiofilter.cc:57
+#: libs/ardour/audiofilter.cc:58
msgid "audiofilter: error creating new audio file %1 (%2)"
msgstr "audiofilter: σφάλμα στη δημιουÏγία νέου audio file %1 (%2)"
@@ -412,152 +412,152 @@ msgstr ""
msgid "%1: could not write peak file data (%2)"
msgstr "%1: δεν μπόÏεσα να γÏάψω δεδομένα του αÏχείου peak (%2)"
-#: libs/ardour/automation_event.cc:64 libs/ardour/location.cc:344
-#: libs/ardour/tempo.cc:225
+#: libs/ardour/automation_event.cc:65 libs/ardour/location.cc:345
+#: libs/ardour/tempo.cc:226
msgid "initial"
msgstr "Ï€ÏωταÏχικό"
-#: libs/ardour/automation_event.cc:231
+#: libs/ardour/automation_event.cc:232
msgid "cleared"
msgstr "εκκαθαÏίσθη"
-#: libs/ardour/automation_event.cc:403
+#: libs/ardour/automation_event.cc:404
msgid "added event"
msgstr "συμβάν Ï€Ïοστέθηκε"
-#: libs/ardour/automation_event.cc:420
+#: libs/ardour/automation_event.cc:421
msgid "removed event"
msgstr "συμβάν απαλοίφθηκε"
-#: libs/ardour/automation_event.cc:435
+#: libs/ardour/automation_event.cc:436
msgid "removed multiple events"
msgstr "πολλαπλά συμβάντα απαλοίφθηκαν"
-#: libs/ardour/automation_event.cc:466 libs/ardour/automation_event.cc:497
+#: libs/ardour/automation_event.cc:467 libs/ardour/automation_event.cc:498
msgid "removed range"
msgstr "διάστημα απαλοίφθηκε"
-#: libs/ardour/automation_event.cc:527
+#: libs/ardour/automation_event.cc:528
msgid "event range adjusted"
msgstr "διάστημα συμβάντων Ïυθμίστηκε"
-#: libs/ardour/automation_event.cc:549
+#: libs/ardour/automation_event.cc:550
msgid "event adjusted"
msgstr "συμβάν Ïυθμίστηκε"
-#: libs/ardour/automation_event.cc:664 libs/ardour/automation_event.cc:769
+#: libs/ardour/automation_event.cc:665 libs/ardour/automation_event.cc:770
#: libs/ardour/panner.cc:1041
msgid "programming error:"
msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ:"
-#: libs/ardour/automation_event.cc:1078
+#: libs/ardour/automation_event.cc:1079
msgid "cut/copy/clear"
msgstr "κοπή/αντιγÏαφή/εκκαθάÏιση"
-#: libs/ardour/automation_event.cc:1111
+#: libs/ardour/automation_event.cc:1112
msgid "copy"
msgstr "αντιγÏαφή"
-#: libs/ardour/automation_event.cc:1179 libs/ardour/playlist.cc:939
+#: libs/ardour/automation_event.cc:1180 libs/ardour/playlist.cc:939
msgid "paste"
msgstr "επικόλληση"
-#: libs/ardour/automation_event.cc:1234
+#: libs/ardour/automation_event.cc:1235
msgid ""
"automation list: no x-coordinate stored for control point (point ignored)"
msgstr ""
"λίστα αυτοματισμοÏ: καμία x-συντεταγμένη αποθηκευμένη για σημείο ελέγχου (το "
"σημείο αγνοήθηκε)"
-#: libs/ardour/automation_event.cc:1240
+#: libs/ardour/automation_event.cc:1241
msgid ""
"automation list: no y-coordinate stored for control point (point ignored)"
msgstr ""
"λίστα αυτοματισμοÏ: καμία y-συντεταγμένη αποθηκευμένη για σημείο ελέγχου (το "
"σημείο αγνοήθηκε)"
-#: libs/ardour/configuration.cc:79
+#: libs/ardour/configuration.cc:80
#, fuzzy
msgid "loading system configuration file %1"
msgstr ""
"Ardour: δεν μποÏÏŽ να διαβάσω το αÏχείο διαÏÏυθμίσεως του συστήματος \"%1\""
-#: libs/ardour/configuration.cc:82
+#: libs/ardour/configuration.cc:83
msgid "Ardour: cannot read system configuration file \"%1\""
msgstr ""
"Ardour: δεν μποÏÏŽ να διαβάσω το αÏχείο διαÏÏυθμίσεως του συστήματος \"%1\""
-#: libs/ardour/configuration.cc:87
+#: libs/ardour/configuration.cc:88
msgid "Ardour: system configuration file \"%1\" not loaded successfully."
msgstr ""
"Ardour: το αÏχείο διαÏÏυθμίσεως του συστήματος \"%1\" δεν φοÏτώθηκε επιτυχώς."
-#: libs/ardour/configuration.cc:104
+#: libs/ardour/configuration.cc:105
#, fuzzy
msgid "loading user configuration file %1"
msgstr "Ardour: αÏχείο διαÏÏυθμίσεως μή αναγνώσιμο \"%1\""
-#: libs/ardour/configuration.cc:107
+#: libs/ardour/configuration.cc:108
msgid "Ardour: cannot read configuration file \"%1\""
msgstr "Ardour: αÏχείο διαÏÏυθμίσεως μή αναγνώσιμο \"%1\""
-#: libs/ardour/configuration.cc:112
+#: libs/ardour/configuration.cc:113
#, fuzzy
msgid "Ardour: user configuration file \"%1\" not loaded successfully."
msgstr "Ardour: αÏχείο διαÏÏυθμίσεως \"%1\" δεν φοÏτώθηκε επιτυχώς."
-#: libs/ardour/configuration.cc:136
+#: libs/ardour/configuration.cc:137
#, fuzzy
msgid "Config file %1 not saved"
msgstr "ΑÏχείο διαÏÏυθμίσεως δεν αποθηκεÏθηκε"
-#: libs/ardour/configuration.cc:209
+#: libs/ardour/configuration.cc:210
msgid "ill-formed MIDI port specification in ardour rcfile (ignored)"
msgstr "κακοσχηματισμένος καθοÏισμός MIDI θÏÏας στο ardour rcfile (αγνοήθηκε)"
-#: libs/ardour/connection.cc:182
+#: libs/ardour/connection.cc:183
msgid "Node for Connection has no \"name\" property"
msgstr "Κόμβος Ï€Ïος ΣÏνδεση δεν έχει \"όνομα\" ιδιότητα"
-#: libs/ardour/connection.cc:190
+#: libs/ardour/connection.cc:191
msgid "Node for Connection has no \"connections\" property"
msgstr "Κόμβος Ï€Ïος ΣÏνδεση δεν έχει \"συνδέσεις\" ιδιότητα"
-#: libs/ardour/connection.cc:226 libs/ardour/io.cc:1901
+#: libs/ardour/connection.cc:227 libs/ardour/io.cc:1902
msgid "IO: badly formed string in XML node for inputs \"%1\""
msgstr "IO: κακοφτιαγμένη γÏαμμή στον XML κόμβο για εισόδους \"%1\""
-#: libs/ardour/connection.cc:231 libs/ardour/io.cc:1906
+#: libs/ardour/connection.cc:232 libs/ardour/io.cc:1907
msgid "bad input string in XML node \"%1\""
msgstr "κακή γÏαμμή εισόδου στον XML κόμβο \"%1\""
-#: libs/ardour/control_protocol_manager.cc:82
+#: libs/ardour/control_protocol_manager.cc:80
msgid "control protocol name \"%1\" has no descriptor"
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:87
+#: libs/ardour/control_protocol_manager.cc:85
msgid "control protocol name \"%1\" could not be initialized"
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:143
+#: libs/ardour/control_protocol_manager.cc:141
msgid "Instantiating mandatory control protocol %1"
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:177
+#: libs/ardour/control_protocol_manager.cc:175
#, fuzzy
msgid "Control protocol %1 not usable"
msgstr "ΧωÏίς έλεγχο MMC (θÏÏα MIDI \"%1\" μη διαθέσιμη)"
-#: libs/ardour/control_protocol_manager.cc:189
+#: libs/ardour/control_protocol_manager.cc:187
msgid "Control surface protocol discovered: \"%1\""
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:207
+#: libs/ardour/control_protocol_manager.cc:205
#, fuzzy
msgid "ControlProtocolManager: cannot load module \"%1\" (%2)"
msgstr "LADSPA: δεν μποÏÏŽ να φοÏτώσω το module \"%1\" (%2)"
-#: libs/ardour/control_protocol_manager.cc:215
+#: libs/ardour/control_protocol_manager.cc:213
#, fuzzy
msgid "ControlProtocolManager: module \"%1\" has no descriptor function."
msgstr "LADSPA: το module \"%1\" δεν έχει λειτουÏγία πεÏιγÏαφής."
@@ -591,104 +591,104 @@ msgstr "αλλαγή ενεÏγοÏ"
msgid "old-style crossfade information - no position information"
msgstr "Ο κόμβος XML για την Τοποθεσία δεν έχει πληÏοφοÏίες ενάÏξεως"
-#: libs/ardour/curve.cc:111 libs/ardour/globals.cc:339
+#: libs/ardour/curve.cc:112 libs/ardour/globals.cc:340
#: libs/ardour/insert.cc:454 libs/ardour/session.cc:2466
#: libs/ardour/session.cc:2518
msgid "programming error: "
msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: "
-#: libs/ardour/cycle_timer.cc:35
+#: libs/ardour/cycle_timer.cc:37
msgid "CycleTimer::get_mhz(): can't open /proc/cpuinfo"
msgstr "CycleTimer::get_mhz(): δεν ανοίγει το /proc/cpuinfo"
-#: libs/ardour/cycle_timer.cc:47
+#: libs/ardour/cycle_timer.cc:49
msgid "CycleTimer::get_mhz(): cannot locate cpu MHz in /proc/cpuinfo"
msgstr "CycleTimer::get_mhz(): δεν ευÏέθη το cpu MHz στο /proc/cpuinfo"
-#: libs/ardour/cycle_timer.cc:70
+#: libs/ardour/cycle_timer.cc:72
msgid "cannot locate cpu MHz in /proc/cpuinfo"
msgstr "δεν ευÏέθη το cpu MHz στο /proc/cpuinfo"
-#: libs/ardour/destructive_filesource.cc:187
+#: libs/ardour/destructive_filesource.cc:188
msgid "DestructiveFileSource: \"%1\" bad read retval: %2 of %5 (%3: %4)"
msgstr ""
-#: libs/ardour/destructive_filesource.cc:200
-#: libs/ardour/destructive_filesource.cc:242
-#: libs/ardour/destructive_filesource.cc:249
+#: libs/ardour/destructive_filesource.cc:201
+#: libs/ardour/destructive_filesource.cc:243
+#: libs/ardour/destructive_filesource.cc:250
#, fuzzy
msgid "DestructiveFileSource: \"%1\" bad write (%2)"
msgstr "FileSource: \"%1\" κακή εγγÏαφή (%2)"
-#: libs/ardour/globals.cc:108
+#: libs/ardour/globals.cc:109
msgid "no MIDI ports specified: no MMC or MTC control possible"
msgstr "καμία MIDI θÏÏα δεν επελέχθη: έλεγχος MMC ή MTC αδÏνατος"
-#: libs/ardour/globals.cc:123
+#: libs/ardour/globals.cc:124
msgid "MIDI port specifications for \"%1\" are not understandable."
msgstr "Οι Ï€ÏοδιαγÏαφές της θÏÏας MIDI για το \"%1\" δεν είναι κατανοητές."
-#: libs/ardour/globals.cc:136 libs/ardour/globals.cc:140
-#: libs/ardour/globals.cc:144
+#: libs/ardour/globals.cc:137 libs/ardour/globals.cc:141
+#: libs/ardour/globals.cc:145
msgid "default"
msgstr "Ï€ÏοκαθοÏισμένο"
-#: libs/ardour/globals.cc:172
+#: libs/ardour/globals.cc:173
msgid "No MMC control (MIDI port \"%1\" not available)"
msgstr "ΧωÏίς έλεγχο MMC (θÏÏα MIDI \"%1\" μη διαθέσιμη)"
-#: libs/ardour/globals.cc:178
+#: libs/ardour/globals.cc:179
msgid "No MTC support (MIDI port \"%1\" not available)"
msgstr "ΧωÏίς έλεγχο MTC (θÏÏα MIDI \"%1\" μη διαθέσιμη)"
-#: libs/ardour/globals.cc:183
+#: libs/ardour/globals.cc:184
#, fuzzy
msgid "No MIDI parameter support (MIDI port \"%1\" not available)"
msgstr "ΧωÏίς έλεγχο MTC (θÏÏα MIDI \"%1\" μη διαθέσιμη)"
-#: libs/ardour/import.cc:74
+#: libs/ardour/import.cc:75
msgid "Import: cannot open input sound file \"%1\""
msgstr "Εισαγωγή: δεν μποÏÏŽ να ανοίξω το εισαγμένο αÏχείο ήχου \"%1\""
-#: libs/ardour/import.cc:79
+#: libs/ardour/import.cc:80
msgid "resampling audio"
msgstr "επανά-ληψη(resampling) ήχου"
-#: libs/ardour/import.cc:83
+#: libs/ardour/import.cc:84
msgid "Import: cannot open converted sound file \"%1\""
msgstr "Εισαγωγή: δεν μποÏÏŽ να ανοίξω το Ï„Ïοποποιημένο αÏχείο ήχου \"%1\""
-#: libs/ardour/import.cc:88
+#: libs/ardour/import.cc:89
msgid "Import: error while resampling sound file \"%1\""
msgstr "Εισαγωγή: σφάλμα κατά την Ï„Ïοποποίηση αÏχείου \"%1\""
-#: libs/ardour/import.cc:147
+#: libs/ardour/import.cc:148
msgid "Session::import_audiofile: cannot open new file source for channel %1"
msgstr ""
"ΣυνεδÏία::εισαγωγή_αÏχείου: δεν μποÏÏŽ να ανοίξω νέα πηγή αÏχείου για το "
"κανάλι %1"
-#: libs/ardour/import.cc:166
+#: libs/ardour/import.cc:167
msgid "converting audio"
msgstr "μετατÏοπή ήχου"
-#: libs/ardour/import.cc:198
+#: libs/ardour/import.cc:199
msgid "building region"
msgstr "χτίσιμο πεÏιοχής"
-#: libs/ardour/import.cc:200
+#: libs/ardour/import.cc:201
msgid "building regions"
msgstr "χτίσιμο πεÏιοχών"
-#: libs/ardour/import.cc:324
+#: libs/ardour/import.cc:325
msgid "Import: could not open temp file: %1"
msgstr "Εισαγωγή: δεν μπόÏεσα να ανοίξω το temp αÏχείο: %1"
-#: libs/ardour/import.cc:333
+#: libs/ardour/import.cc:334
msgid "Import: src_new() failed : %1"
msgstr "Εισαγωγή: src_new() απέτυχε : %1"
-#: libs/ardour/import.cc:361
+#: libs/ardour/import.cc:362
msgid "Import: %1"
msgstr "Εισαγωγή: %1"
@@ -747,153 +747,153 @@ msgstr "PortInsert: δεν μποÏεί να Ï€Ïοστεθεί θÏÏα εξόÎ
msgid "non-port insert XML used for port plugin insert"
msgstr "εισαγωγή μη-θÏÏας XML για χÏήση σε εισαγωγή plugin θÏÏας"
-#: libs/ardour/io.cc:597
+#: libs/ardour/io.cc:598
msgid "IO: cannot disconnect input port %1 from %2"
msgstr "IO: δεν μποÏει να αποσυνδεθεί η θÏÏα εισόδου %1 από %2"
-#: libs/ardour/io.cc:665
+#: libs/ardour/io.cc:666
msgid "IO: cannot disconnect output port %1 from %2"
msgstr "IO: δεν μποÏεί να αποσυνδεθεί η θÏÏα εξόδου %1 από %2"
-#: libs/ardour/io.cc:806 libs/ardour/io.cc:1150 libs/ardour/io.cc:1276
+#: libs/ardour/io.cc:807 libs/ardour/io.cc:1151 libs/ardour/io.cc:1277
#, c-format
msgid "%s/out"
msgstr "%s/out"
-#: libs/ardour/io.cc:808 libs/ardour/io.cc:1152 libs/ardour/io.cc:1278
-#: libs/ardour/io.cc:2848
+#: libs/ardour/io.cc:809 libs/ardour/io.cc:1153 libs/ardour/io.cc:1279
+#: libs/ardour/io.cc:2849
#, c-format
msgid "%s/out %u"
msgstr "%s/out %u"
-#: libs/ardour/io.cc:812 libs/ardour/io.cc:1157 libs/ardour/io.cc:1282
+#: libs/ardour/io.cc:813 libs/ardour/io.cc:1158 libs/ardour/io.cc:1283
msgid "IO: cannot register output port %1"
msgstr "IO: δεν μποÏει να καταχώÏηθεί η θÏÏα εξόδου %1"
-#: libs/ardour/io.cc:907 libs/ardour/io.cc:1010 libs/ardour/io.cc:1116
+#: libs/ardour/io.cc:908 libs/ardour/io.cc:1011 libs/ardour/io.cc:1117
#, c-format
msgid "%s/in"
msgstr "%s/in"
-#: libs/ardour/io.cc:909 libs/ardour/io.cc:1013 libs/ardour/io.cc:1119
-#: libs/ardour/io.cc:2818
+#: libs/ardour/io.cc:910 libs/ardour/io.cc:1014 libs/ardour/io.cc:1120
+#: libs/ardour/io.cc:2819
#, c-format
msgid "%s/in %u"
msgstr "%s/in %u"
-#: libs/ardour/io.cc:913 libs/ardour/io.cc:1019 libs/ardour/io.cc:1124
+#: libs/ardour/io.cc:914 libs/ardour/io.cc:1020 libs/ardour/io.cc:1125
msgid "IO: cannot register input port %1"
msgstr "IO: δεν μποÏεί να καταχώÏηθεί η θÏÏα εισόδου %1"
-#: libs/ardour/io.cc:1540
+#: libs/ardour/io.cc:1541
msgid "IO::connecting_became_legal() called without a pending state node"
msgstr ""
"IO::connecting_became_legal() εκλήθη χωÏίς κόμβο καταστάσεως εν αναμονή"
-#: libs/ardour/io.cc:1563
+#: libs/ardour/io.cc:1564
msgid "IO::ports_became_legal() called without a pending state node"
msgstr "IO::ports_became_legal() εκλήθη χωÏίς κόμβο καταστάσεως εν αναμονή"
-#: libs/ardour/io.cc:1593
+#: libs/ardour/io.cc:1594
msgid "incorrect XML node \"%1\" passed to IO object"
msgstr "μη-σωστός κόμβος XML \"%1\" πέÏασε στο IO αντικείμενο"
-#: libs/ardour/io.cc:1648
+#: libs/ardour/io.cc:1649
msgid ""
"MIDI gain control specification for %1 is incomplete, so it has been ignored"
msgstr ""
"Η Ï€ÏοδιαγÏαφή ελέγχου του MIDI gain για το %1 είναι ημιτελής, με αποτέλεσμα "
"να αγνοηθεί"
-#: libs/ardour/io.cc:1738 libs/ardour/io.cc:1850
+#: libs/ardour/io.cc:1739 libs/ardour/io.cc:1851
msgid "Unknown connection \"%1\" listed for output of %2"
msgstr "Άγνωστη σÏνδεση \"%1\" καταχωÏήθη για την έξοδο του %2"
-#: libs/ardour/io.cc:1740 libs/ardour/io.cc:1852
+#: libs/ardour/io.cc:1741 libs/ardour/io.cc:1853
#, fuzzy
msgid "out 1"
msgstr "out %lu"
-#: libs/ardour/io.cc:1741 libs/ardour/io.cc:1853
+#: libs/ardour/io.cc:1742 libs/ardour/io.cc:1854
msgid "No output connections available as a replacement"
msgstr ""
-#: libs/ardour/io.cc:1745 libs/ardour/io.cc:1857
+#: libs/ardour/io.cc:1746 libs/ardour/io.cc:1858
msgid "Connection %1 was not available - \"out 1\" used instead"
msgstr ""
-#: libs/ardour/io.cc:1759
+#: libs/ardour/io.cc:1760
msgid "%1: cannot create I/O ports"
msgstr "%1: θÏÏες I/O δεν μποÏοÏν να δημιουÏγηθοÏν"
-#: libs/ardour/io.cc:1866
+#: libs/ardour/io.cc:1867
msgid "improper output channel list in XML node (%1)"
msgstr "ασαφής λίστα καναλιών εξόδου στον κόμβο XML (%1)"
-#: libs/ardour/io.cc:1951
+#: libs/ardour/io.cc:1952
msgid "IO: badly formed string in XML node for outputs \"%1\""
msgstr "IO: δÏσμοÏφη γÏαμμή στον κόμβο XML για τις εξόδους \"%1\""
-#: libs/ardour/io.cc:1956
+#: libs/ardour/io.cc:1957
msgid "IO: bad output string in XML node \"%1\""
msgstr "IO: κακή γÏαμμή εξόδουστον κόμβο XML \"%1\""
-#: libs/ardour/io.cc:2524
+#: libs/ardour/io.cc:2525
msgid "%1: could not open automation event file \"%2\""
msgstr "%1: δεν μπόÏεσα να ανοίξω το αÏχείο συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï \"%2\""
-#: libs/ardour/io.cc:2563
+#: libs/ardour/io.cc:2564
msgid "%1: cannot open automation event file \"%2\""
msgstr "%1: δεν μποÏÏŽ να ανοίξω το αÏχείο συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï \"%2\""
-#: libs/ardour/io.cc:2578
+#: libs/ardour/io.cc:2579
msgid "badly formed version number in automation event file \"%1\""
msgstr "δÏσμοÏφος αÏιθμός εκδόσεως στο αÏχείο συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï \"%1\""
-#: libs/ardour/io.cc:2582
+#: libs/ardour/io.cc:2583
msgid "no version information in automation event file \"%1\""
msgstr ""
"δεν υπάÏχουν πληÏοφοÏίες πεÏί εκδόσεων στο αÏχείο συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï \"%1"
"\""
-#: libs/ardour/io.cc:2587
+#: libs/ardour/io.cc:2588
msgid "mismatched automation event file version (%1)"
msgstr "αταίÏιαστη έκδοση αÏχείου συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï (%1)"
-#: libs/ardour/io.cc:2595
+#: libs/ardour/io.cc:2596
msgid "badly formatted automation event record at line %1 of %2 (ignored)"
msgstr ""
"κακώς φοÏμαÏισμένη καταγÏαφή συμβάντων Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï ÏƒÏ„Î· γÏαμμή %1 of %2 "
"(αγνοήθηκε)"
-#: libs/ardour/io.cc:2615
+#: libs/ardour/io.cc:2616
msgid "dubious automation event found (and ignored)"
msgstr "αβέβαιο συμβάν Î±Ï…Ï„Î¿Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï ÎµÏ…Ïέθηκε (και αγνοήθηκε)"
-#: libs/ardour/io.cc:2619 libs/ardour/panner.cc:438
+#: libs/ardour/io.cc:2620 libs/ardour/panner.cc:438
#: libs/ardour/redirect.cc:148
msgid "loaded from disk"
msgstr "φοÏτώθηκε από το δίσκο"
-#: libs/ardour/io.cc:2790
+#: libs/ardour/io.cc:2791
msgid "automation write/touch"
msgstr "αυτοματισμός εγγÏαφή/αφή(write/touch)"
-#: libs/ardour/ladspa_plugin.cc:86
+#: libs/ardour/ladspa_plugin.cc:87
msgid "LADSPA: module has no descriptor function."
msgstr "LADSPA: το module δεν έχει ενδεικτική λειτουÏγία."
-#: libs/ardour/ladspa_plugin.cc:91
+#: libs/ardour/ladspa_plugin.cc:92
msgid "LADSPA: plugin has gone away since discovery!"
msgstr "LADSPA: το plugin την 'κοπάνισε' μετά την ανακάλυψη του!"
-#: libs/ardour/ladspa_plugin.cc:98
+#: libs/ardour/ladspa_plugin.cc:99
msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing"
msgstr ""
"LADSPA: \"%1\" δεν μποÏεί να χÏησιμοποιηθεί, εφ'όσον δεν μποÏεί να κάνει επι "
"τόπου επεξεÏγασία"
-#: libs/ardour/ladspa_plugin.cc:328
+#: libs/ardour/ladspa_plugin.cc:329
msgid ""
"illegal parameter number used with plugin \"%1\". This mayindicate a change "
"in the plugin design, and presets may beinvalid"
@@ -902,20 +902,20 @@ msgstr ""
"ενδείκνυται αλλαγή στο σχεδιασμό του plugin, και οι Ïυθμίσεις ίσως να είναι "
"άκυÏες"
-#: libs/ardour/ladspa_plugin.cc:429
+#: libs/ardour/ladspa_plugin.cc:430
#, fuzzy
msgid "Bad node sent to LadspaPlugin::set_state"
msgstr "Κακή αποστολή κόμβου εστάλη στο LadspaPlugin::set_state"
-#: libs/ardour/ladspa_plugin.cc:442
+#: libs/ardour/ladspa_plugin.cc:443
msgid "LADSPA: no ladspa port number"
msgstr "LADSPA: κανείς αÏιθμός θÏÏας ladspa"
-#: libs/ardour/ladspa_plugin.cc:448
+#: libs/ardour/ladspa_plugin.cc:449
msgid "LADSPA: no ladspa port data"
msgstr "LADSPA: κανένα δεδομένο θÏÏας ladspa"
-#: libs/ardour/ladspa_plugin.cc:497
+#: libs/ardour/ladspa_plugin.cc:498
msgid ""
"LADSPA LadspaPlugin MIDI control specification for port %1 is incomplete, so "
"it has been ignored"
@@ -923,66 +923,66 @@ msgstr ""
"Ο καθοÏισμός ελέγχου LADSPA LadspaPlugin για MIDI για την θÏÏα %1 είναι "
"ημιτελής, έτσι αγνοήθηκε."
-#: libs/ardour/location.cc:268
+#: libs/ardour/location.cc:269
msgid "incorrect XML node passed to Location::set_state"
msgstr "λανθασμένος κόμβος XML πέÏασε στην Τοποθεσία::set_state"
-#: libs/ardour/location.cc:275
+#: libs/ardour/location.cc:276
msgid "XML node for Location has no name information"
msgstr "Ο κόμβος XML για την Τοποθεσία δεν έχει πληÏοφοÏίες ονόματος"
-#: libs/ardour/location.cc:282
+#: libs/ardour/location.cc:283
msgid "XML node for Location has no start information"
msgstr "Ο κόμβος XML για την Τοποθεσία δεν έχει πληÏοφοÏίες ενάÏξεως"
-#: libs/ardour/location.cc:293
+#: libs/ardour/location.cc:294
msgid "XML node for Location has no end information"
msgstr "Ο κόμβος XML για την Τοποθεσία δεν έχει πληÏοφοÏίες τέλους"
-#: libs/ardour/location.cc:302
+#: libs/ardour/location.cc:303
msgid "XML node for Location has no flags information"
msgstr "Ο κόμβος XML για την Τοποθεσία δεν έχει πληÏοφοÏίες για σημαίες(flags)"
-#: libs/ardour/location.cc:390
+#: libs/ardour/location.cc:391
msgid "Locations: attempt to use unknown location as selected location"
msgstr ""
"Τοποθεσίες: απόπειÏα να χÏησιμοποιηθεί άγνωστη τοποθεσία σαν επιλεγμένη "
"τοποθεσία"
-#: libs/ardour/location.cc:417 libs/ardour/playlist.cc:1187
+#: libs/ardour/location.cc:418 libs/ardour/playlist.cc:1187
msgid "clear"
msgstr "εκκαθάÏιση"
-#: libs/ardour/location.cc:442
+#: libs/ardour/location.cc:443
msgid "clear markers"
msgstr "εκκαθάÏιση στιγμάτων"
-#: libs/ardour/location.cc:470
+#: libs/ardour/location.cc:471
msgid "clear ranges"
msgstr "εκκαθάÏιση διαστημάτων"
-#: libs/ardour/location.cc:488
+#: libs/ardour/location.cc:489
msgid "add"
msgstr "Ï€Ïόσθεση"
-#: libs/ardour/location.cc:526
+#: libs/ardour/location.cc:527
msgid "remove"
msgstr "απαλοιφή"
-#: libs/ardour/location.cc:566
+#: libs/ardour/location.cc:567
msgid "incorrect XML mode passed to Locations::set_state"
msgstr "λανθασμένο XML mode πέÏασε στις Τοποθεσίες::set_state"
-#: libs/ardour/mtc_slave.cc:195
+#: libs/ardour/mtc_slave.cc:196
msgid "MTC Slave: atomic read of current time failed, sleeping!"
msgstr ""
"MTC Slave: ατομική ανάγνωση του Ï„Ïέχοντος χÏόνου απέτυχε, πίσω για Ïπνο!"
-#: libs/ardour/named_selection.cc:76
+#: libs/ardour/named_selection.cc:77
msgid "Chunk %1 uses an unknown playlist \"%2\""
msgstr "Το κομμάτι %1 χÏησιμοποιεί άγνωστη λίστα αναπαÏ/γής \"%2\""
-#: libs/ardour/named_selection.cc:79
+#: libs/ardour/named_selection.cc:80
msgid "Chunk %1 contains misformed playlist information"
msgstr "Το κομμάτι %1 πεÏιέχει δÏσμοÏφες πληÏοφοÏίες για τη λίστα αναπαÏ/γής"
@@ -1102,63 +1102,63 @@ msgstr "Playlist: δεν μποÏÏŽ να δημιουÏγήσω ΠεÏιοχή Î
msgid "nudged"
msgstr "νυχθέν"
-#: libs/ardour/playlist_factory.cc:26 libs/ardour/playlist_factory.cc:41
+#: libs/ardour/playlist_factory.cc:49 libs/ardour/playlist_factory.cc:64
msgid ""
"programming error: Playlist::createRegion called with unknown Region type"
msgstr ""
"σφάλμα Ï€ÏογÏαμματισμοÏ: Playlist::createRegion εκλήθη με άγνωστο Ï„Ïπο Πε"
-#: libs/ardour/playlist_factory.cc:63
+#: libs/ardour/playlist_factory.cc:86
msgid ""
"programming error: Playlist::copyPlaylist called with unknown Playlist type"
msgstr ""
"σφάλμα Ï€ÏογÏαμματισμοÏ: Playlist::copyPlaylist με άγνωστο Ï„Ïπο Playlist"
-#: libs/ardour/plugin.cc:327
+#: libs/ardour/plugin.cc:328
msgid "Could not locate HOME. Preset not saved."
msgstr "Δεν μπόÏεσα να βÏÏŽ το HOME. ΠÏο-ÏÏθμιση δεν αποθηκεÏθηκε."
-#: libs/ardour/plugin.cc:337 libs/ardour/plugin.cc:343
+#: libs/ardour/plugin.cc:338 libs/ardour/plugin.cc:344
msgid "Could not create %1. Preset not saved. (%2)"
msgstr "Δεν μπόÏεσα να δημιουÏγήσω το %1. ΠÏο-ÏÏθμιση δεν αποθηκεÏθηκε. (%2)"
-#: libs/ardour/plugin.cc:348
+#: libs/ardour/plugin.cc:349
msgid "Error saving presets file %1."
msgstr "Σφάλμα στην αποθήκευση αÏχείου Ï€Ïο-Ïυθμίσεων %1."
-#: libs/ardour/plugin_manager.cc:193
+#: libs/ardour/plugin_manager.cc:194
msgid "Could not parse rdf file: %1"
msgstr "Δεν μπόÏεσα να αναλÏσω το αÏχείο rdf: %1"
-#: libs/ardour/plugin_manager.cc:234
+#: libs/ardour/plugin_manager.cc:235
msgid "LADSPA: cannot load module \"%1\" (%2)"
msgstr "LADSPA: δεν μποÏÏŽ να φοÏτώσω το module \"%1\" (%2)"
-#: libs/ardour/plugin_manager.cc:241
+#: libs/ardour/plugin_manager.cc:242
msgid "LADSPA: module \"%1\" has no descriptor function."
msgstr "LADSPA: το module \"%1\" δεν έχει λειτουÏγία πεÏιγÏαφής."
-#: libs/ardour/plugin_manager.cc:296
+#: libs/ardour/plugin_manager.cc:297
msgid "VST: cannot load module from \"%1\""
msgstr "VST: δεν μποÏÏŽ να φοÏτώσω module από \"%1\""
-#: libs/ardour/plugin_manager.cc:301
+#: libs/ardour/plugin_manager.cc:302
msgid "You asked ardour to not use any VST plugins"
msgstr ""
-#: libs/ardour/plugin_manager.cc:304
+#: libs/ardour/plugin_manager.cc:305
msgid "This version of ardour has no support for VST plugins"
msgstr "Η παÏοÏσα έκδοση του ardour δεν υποστηÏίζει VST plugins"
-#: libs/ardour/plugin_manager.cc:311
+#: libs/ardour/plugin_manager.cc:312
msgid "LADSPA: cannot load module from \"%1\""
msgstr "LADSPA: δεν μποÏÏŽ να φοÏτώσω module από \"%1\""
-#: libs/ardour/plugin_manager.cc:373 libs/ardour/plugin_manager.cc:385
+#: libs/ardour/plugin_manager.cc:374 libs/ardour/plugin_manager.cc:386
msgid "Unknown"
msgstr "Άγνωστο"
-#: libs/ardour/plugin_manager.cc:463
+#: libs/ardour/plugin_manager.cc:464
msgid ""
"VST plugin %1 does not support processReplacing, and so cannot be used in "
"ardour at this time"
@@ -1174,11 +1174,11 @@ msgstr "δεν μποÏÏŽ να ανοίξω το Ï€Ïόσφατο αÏχείο Ï
msgid "programming error: unknown Redirect type in Redirect::Clone!\n"
msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: άγνωστος Ï„Ïπος Redirect στο Redirect::Clone!\n"
-#: libs/ardour/redirect.cc:102 libs/ardour/utils.cc:202
+#: libs/ardour/redirect.cc:102 libs/ardour/utils.cc:203
msgid "pre"
msgstr "pre"
-#: libs/ardour/redirect.cc:104 libs/ardour/utils.cc:205
+#: libs/ardour/redirect.cc:104 libs/ardour/utils.cc:206
msgid "post"
msgstr "post"
@@ -1235,11 +1235,11 @@ msgstr ""
msgid "active_changed"
msgstr "αλλαγή_ενεÏγοÏ"
-#: libs/ardour/region.cc:884
+#: libs/ardour/region.cc:885
msgid "Session: XMLNode describing a Region is incomplete (no id)"
msgstr "ΣυνεδÏία: XMLΚόμβος που πεÏιγÏάφει ΠεÏιοχή είναι ημιτελής (χωÏίς id)"
-#: libs/ardour/region.cc:891
+#: libs/ardour/region.cc:892
msgid "Session: XMLNode describing a Region is incomplete (no name)"
msgstr ""
"ΣυνεδÏία: XMLΚόμβος που πεÏιγÏάφει ΠεÏιοχή είναι ημιτελής (χωÏίς όνομα)"
@@ -1303,7 +1303,7 @@ msgstr ""
"Η Ï€ÏοδιαγÏαφή ελέγχου του MIDI gain για το %1 είναι ημιτελής, με αποτέλεσμα "
"να αγνοηθεί"
-#: libs/ardour/send.cc:98
+#: libs/ardour/send.cc:99
msgid "XML node describing a send is missing a Redirect node"
msgstr "Στον κόμβο XML όπου πεÏιγÏάφεται ένα send λείπει ένας κόμβος Redirect"
@@ -1447,11 +1447,11 @@ msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: άγνωστος Ï„Ïπος
msgid "programming error: unknown type of Redirect deleted!"
msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: άγνωστος Ï„Ïπος of Redirect διεγÏάφη!"
-#: libs/ardour/session.cc:3634
+#: libs/ardour/session.cc:3636
msgid "too many bounced versions of playlist \"%1\""
msgstr "πάÏα πολλές bounced εκδόσεις της Playlist \"%1\""
-#: libs/ardour/session.cc:3647
+#: libs/ardour/session.cc:3649
msgid "cannot create new audio file \"%1\" for %2"
msgstr "δεν μποÏÏŽ να δημιουÏγήσω νέο αÏχείο ήχου \"%1\" για %2"
@@ -1486,19 +1486,19 @@ msgstr "Αποτυχία Ï€Ïοανάγνωσης Butler στο dstream %1"
msgid "Butler write-behind failure on dstream %1"
msgstr "Αποτυχία οπισθεγγÏαφής Butler στο dstream %1"
-#: libs/ardour/session_click.cc:157
+#: libs/ardour/session_click.cc:158
msgid "cannot open click soundfile %1 (%2)"
msgstr "δεν μποÏÏŽ να ανοίξω τοsoundfile μετÏονόμου%1 (%2)"
-#: libs/ardour/session_click.cc:166
+#: libs/ardour/session_click.cc:167
msgid "cannot read data from click soundfile"
msgstr "δεν μποÏÏŽ να διαβάσω δεδομένα από το soundfile μετÏονόμου"
-#: libs/ardour/session_click.cc:191
+#: libs/ardour/session_click.cc:192
msgid "cannot open click emphasis soundfile %1 (%2)"
msgstr "δεν μποÏÏŽ να ανοίξω το soundfile εμφάσεως μετÏονόμου %1 (%2)"
-#: libs/ardour/session_click.cc:199
+#: libs/ardour/session_click.cc:200
msgid "cannot read data from click emphasis soundfile"
msgstr "δεν μποÏÏŽ να διαβάσω δεδομένα από το soundfile εμφάσεως μετÏονόμου"
@@ -1607,168 +1607,168 @@ msgstr "Σφάλμα στην ανάγνωση από transport request pipe"
msgid "Session: error in no roll for %1"
msgstr "ΣυνεδÏία: σφάλμα στο no roll για %1"
-#: libs/ardour/session_state.cc:100
+#: libs/ardour/session_state.cc:101
#, fuzzy
msgid "Could not use path %1 (%s)"
msgstr "Source: δεν μποÏÏŽ να ανοίξω το peakpath \"%1\" (%2)"
-#: libs/ardour/session_state.cc:128
+#: libs/ardour/session_state.cc:129
msgid "end"
msgstr "τέλος"
-#: libs/ardour/session_state.cc:129
+#: libs/ardour/session_state.cc:130
#, fuzzy
msgid "start"
msgstr "ξεχωÏιστό"
-#: libs/ardour/session_state.cc:501
+#: libs/ardour/session_state.cc:502
msgid "Session: cannot create session dir \"%1\" (%2)"
msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\" (%2)"
-#: libs/ardour/session_state.cc:512
+#: libs/ardour/session_state.cc:513
#, fuzzy
msgid "Session: cannot create session peakfile dir \"%1\" (%2)"
msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\" (%2)"
-#: libs/ardour/session_state.cc:521
+#: libs/ardour/session_state.cc:522
msgid "Session: cannot create session sounds dir \"%1\" (%2)"
msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο ήχων συνεδÏίας \"%1\" (%2)"
-#: libs/ardour/session_state.cc:530
+#: libs/ardour/session_state.cc:531
#, fuzzy
msgid "Session: cannot create session tape dir \"%1\" (%2)"
msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\" (%2)"
-#: libs/ardour/session_state.cc:539
+#: libs/ardour/session_state.cc:540
msgid "Session: cannot create session dead sounds dir \"%1\" (%2)"
msgstr ""
"ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο 'νεκÏών' ήχων συνεδÏίας \"%1\" (%2)"
-#: libs/ardour/session_state.cc:548
+#: libs/ardour/session_state.cc:549
msgid "Session: cannot create session automation dir \"%1\" (%2)"
msgstr ""
"ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω φάκελο αυτοματισμών της συνεδÏίας \"%1"
"\" (%2)"
-#: libs/ardour/session_state.cc:579
+#: libs/ardour/session_state.cc:580
msgid "Could not open %1 for writing mix template"
msgstr "Δεν μπόÏεσα να ανοίξω %1 για γÏάψιμο του Ï€Ïοσχεδίου μίξεως"
-#: libs/ardour/session_state.cc:585
+#: libs/ardour/session_state.cc:586
msgid "Could not open mix template %1 for reading"
msgstr "Δεν μπόÏεσα να ανοίξω Ï€Ïοσχέδιο μίξεως %1 για ανάγνωση"
-#: libs/ardour/session_state.cc:592
+#: libs/ardour/session_state.cc:593
msgid "Session already exists. Not overwriting"
msgstr "Η ΣυνεδÏία ήδη υπάÏχει. ΑκÏÏωση overwriting"
-#: libs/ardour/session_state.cc:635
+#: libs/ardour/session_state.cc:636
msgid "Session: could not load diskstream via XML state"
msgstr "ΣυνεδÏία: δεν μπόÏεσα να φοÏτώσω diskstream μέσω καταστάσεως XML"
-#: libs/ardour/session_state.cc:684
+#: libs/ardour/session_state.cc:685
msgid "could not backup old state file, current state not saved."
msgstr ""
"δεν μπόÏεσα να διασώσω το παλαιό αÏχείο καταστάσεως, η Ï„Ïέχουσα κατάσταση "
"δεν αποθηκεÏτηκε."
-#: libs/ardour/session_state.cc:697
+#: libs/ardour/session_state.cc:698
msgid "state could not be saved to %1"
msgstr "η κατάσταση δεν μποÏοÏσε να σωθεί στο %1"
-#: libs/ardour/session_state.cc:704
+#: libs/ardour/session_state.cc:705
#, fuzzy
msgid "could not remove corrupt state file %1"
msgstr "Δεν μπόÏεσα να αναλÏσω το αÏχείο rdf: %1"
-#: libs/ardour/session_state.cc:708
+#: libs/ardour/session_state.cc:709
#, fuzzy
msgid "could not restore state file from backup %1"
msgstr "Σφάλμα: δεν μπόÏεσα να γÏάψω %1"
-#: libs/ardour/session_state.cc:777
+#: libs/ardour/session_state.cc:778
msgid "%1: session state information file \"%2\" doesn't exist!"
msgstr "%1: το αÏχείο πληÏοφοÏιών καταστάσεως συνεδÏίας \"%2\" δεν υπάÏχει!"
-#: libs/ardour/session_state.cc:788
+#: libs/ardour/session_state.cc:789
msgid "Could not understand ardour file %1"
msgstr "Δεν μπόÏεσα να κατανοήσω το ardour αÏχείο %1"
-#: libs/ardour/session_state.cc:1492
+#: libs/ardour/session_state.cc:1493
msgid "programming error: Session: incorrect XML node sent to set_state()"
msgstr ""
"σφάλμα Ï€ÏογÏαμματισμοÏ: ΣυνεδÏία: λανθασμένος κόμβος XML εστάλη στην "
"set_state()"
-#: libs/ardour/session_state.cc:1538
+#: libs/ardour/session_state.cc:1539
msgid "Session: XML state has no options section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα επιλογών(options)"
-#: libs/ardour/session_state.cc:1543
+#: libs/ardour/session_state.cc:1544
msgid "Session: XML state has no sources section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα πηγών"
-#: libs/ardour/session_state.cc:1550
+#: libs/ardour/session_state.cc:1551
msgid "Session: XML state has no Regions section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα ΠεÏιοχών"
-#: libs/ardour/session_state.cc:1557
+#: libs/ardour/session_state.cc:1558
msgid "Session: XML state has no playlists section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα playlists"
-#: libs/ardour/session_state.cc:1576
+#: libs/ardour/session_state.cc:1577
msgid "Session: XML state has no diskstreams section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα diskstreams"
-#: libs/ardour/session_state.cc:1583
+#: libs/ardour/session_state.cc:1584
msgid "Session: XML state has no connections section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα συνδέσεων"
-#: libs/ardour/session_state.cc:1590
+#: libs/ardour/session_state.cc:1591
msgid "Session: XML state has no locations section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα τοποθεσιών"
-#: libs/ardour/session_state.cc:1623
+#: libs/ardour/session_state.cc:1624
msgid "Session: XML state has no edit groups section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα επεξεÏ/σίας ομάδων"
-#: libs/ardour/session_state.cc:1630
+#: libs/ardour/session_state.cc:1631
msgid "Session: XML state has no mix groups section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα μίξεως ομάδων"
-#: libs/ardour/session_state.cc:1637
+#: libs/ardour/session_state.cc:1638
msgid "Session: XML state has no Tempo Map section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα Tempo Map"
-#: libs/ardour/session_state.cc:1644
+#: libs/ardour/session_state.cc:1645
msgid "Session: XML state has no routes section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα διαδÏομών"
-#: libs/ardour/session_state.cc:1651
+#: libs/ardour/session_state.cc:1652
msgid "Session: XML state has no click section"
msgstr "ΣυνεδÏία: η XML κατάσταση δεν έχει τομέα μετÏονόμου"
-#: libs/ardour/session_state.cc:1696
+#: libs/ardour/session_state.cc:1697
msgid "Session: cannot create Route from XML description."
msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω ΔιαδÏομή από XML πεÏιγÏαφή."
-#: libs/ardour/session_state.cc:1734
+#: libs/ardour/session_state.cc:1735
msgid "Session: cannot create Region from XML description."
msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω ΠεÏιοχή από XML πεÏιγÏαφή."
-#: libs/ardour/session_state.cc:1763
+#: libs/ardour/session_state.cc:1764
msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)"
msgstr ""
"ΣυνεδÏία: Ο XMLΚόμβος που πεÏιγÏάφει AudioΠεÏιοχή είναι ημιτελής (δίχως πηγή)"
-#: libs/ardour/session_state.cc:1771 libs/ardour/session_state.cc:1791
+#: libs/ardour/session_state.cc:1772 libs/ardour/session_state.cc:1792
msgid ""
"Session: XMLNode describing a AudioRegion references an unknown source id =%1"
msgstr ""
"ΣυνεδÏία: Ο XMLΚόμβος που πεÏιγÏάφει AudioΠεÏιοχή αναφέÏει άγνωστο id πηγής ="
"%1"
-#: libs/ardour/session_state.cc:1777 libs/ardour/session_state.cc:1797
+#: libs/ardour/session_state.cc:1778 libs/ardour/session_state.cc:1798
#, fuzzy
msgid ""
"Session: XMLNode describing a AudioRegion references a non-audio source id =%"
@@ -1777,11 +1777,11 @@ msgstr ""
"ΣυνεδÏία: Ο XMLΚόμβος που πεÏιγÏάφει AudioΠεÏιοχή αναφέÏει άγνωστο id πηγής ="
"%1"
-#: libs/ardour/session_state.cc:1867
+#: libs/ardour/session_state.cc:1868
msgid "Session: cannot create Source from XML description."
msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω Πηγή από XML πεÏιγÏαφή."
-#: libs/ardour/session_state.cc:1888
+#: libs/ardour/session_state.cc:1889
#, fuzzy
msgid ""
"Found a sound file that cannot be used by Ardour. Talk to the progammers."
@@ -1789,85 +1789,85 @@ msgstr ""
"Î’Ïήκα ένα sound file που δεν μποÏεί να χÏησιμοποιηθεί από τον Ardour. "
"Επικοινωνήστε με τους Ï€ÏογÏαμματιστές."
-#: libs/ardour/session_state.cc:1912
+#: libs/ardour/session_state.cc:1913
msgid "Could not create mix templates directory \"%1\" (%2)"
msgstr "Δεν μπόÏεσα να δημιουÏγήσω φάκελο Ï€Ïοσχεδίων μίξεως \"%1\" (%2)"
-#: libs/ardour/session_state.cc:1926
+#: libs/ardour/session_state.cc:1927
msgid "Template \"%1\" already exists - new version not created"
msgstr "Το Ï€Ïοσχέδιο \"%1\" ήδη υπάÏχει - νέα έκδοση δεν δημιουÏγήθηκε"
-#: libs/ardour/session_state.cc:1933
+#: libs/ardour/session_state.cc:1934
msgid "mix template not saved"
msgstr "Ï€Ïοσχέδιο μίξεως δεν αποθηκεÏτηκε"
-#: libs/ardour/session_state.cc:1993
+#: libs/ardour/session_state.cc:1994
msgid "cannot create session directory \"%1\"; ignored"
msgstr "δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\"; αγνοήθηκε"
-#: libs/ardour/session_state.cc:2006
+#: libs/ardour/session_state.cc:2007
msgid "cannot create sounds directory \"%1\"; ignored"
msgstr "δεν μποÏÏŽ να δημιουÏγήσω τον φάκελο 'sounds' \"%1\"; αγνοήθηκε"
-#: libs/ardour/session_state.cc:2017
+#: libs/ardour/session_state.cc:2018
msgid "cannot create dead sounds directory \"%1\"; ignored"
msgstr "δεν μποÏÏŽ να δημιουÏγήσω τον φάκελο 'dead sounds' \"%1\"; αγνοήθηκε"
-#: libs/ardour/session_state.cc:2028
+#: libs/ardour/session_state.cc:2029
#, fuzzy
msgid "cannot create peak file directory \"%1\"; ignored"
msgstr "δεν μποÏÏŽ να δημιουÏγήσω φάκελο συνεδÏίας \"%1\"; αγνοήθηκε"
-#: libs/ardour/session_state.cc:2167 libs/ardour/session_state.cc:2188
+#: libs/ardour/session_state.cc:2168 libs/ardour/session_state.cc:2189
msgid "Session: cannot create Playlist from XML description."
msgstr "ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω την Playlist από την XML πεÏιγÏαφή."
-#: libs/ardour/session_state.cc:2227
+#: libs/ardour/session_state.cc:2228
msgid "Session: cannot create Named Selection from XML description."
msgstr ""
"ΣυνεδÏία: δεν μποÏÏŽ να δημιουÏγήσω την ονομασμένη επιλογή από την XML "
"πεÏιγÏαφή."
-#: libs/ardour/session_state.cc:2359
+#: libs/ardour/session_state.cc:2360
msgid "Unknown node \"%1\" found in Connections list from state file"
msgstr ""
"Άγνωστος κόμβος \"%1\" ευÏέθη στη λίστα 'Συνδέσεις' από το αÏχείο καταστάσεως"
-#: libs/ardour/session_state.cc:3196
+#: libs/ardour/session_state.cc:3197
msgid "cannot remove dead sound file %1 (%2)"
msgstr "δεν μποÏÏŽ να απαλοίψω το 'νεκÏο' ηχο-αÏχείο %1 (%2)"
-#: libs/ardour/session_time.cc:375
+#: libs/ardour/session_time.cc:374
msgid "Unknown JACK transport state %1 in sync callback"
msgstr "Άγνωστη κατάσταση του JACK transport %1 στην ανάκληση sync"
-#: libs/ardour/session_timefx.cc:76
+#: libs/ardour/session_timefx.cc:77
msgid "tempoize: error creating name for new audio file based on %1"
msgstr ""
"tempoize: σφάλμα στη δημιουÏγία ονόματος για νέο αÏχείο ήχου βασισμένο σε %1"
-#: libs/ardour/session_timefx.cc:87
+#: libs/ardour/session_timefx.cc:88
msgid "tempoize: error creating new audio file %1 (%2)"
msgstr "tempoize: σφάλμα στη δημιουÏγία νέου αÏχείου ήχου %1 (%2)"
-#: libs/ardour/session_timefx.cc:113
+#: libs/ardour/session_timefx.cc:114
msgid "tempoize: error reading data from %1"
msgstr "tempoize: σφάλμα στην ανάγνωση δεδομένων από %1"
-#: libs/ardour/session_timefx.cc:126 libs/ardour/session_timefx.cc:138
+#: libs/ardour/session_timefx.cc:127 libs/ardour/session_timefx.cc:139
msgid "error writing tempo-adjusted data to %1"
msgstr "σφάλμα στην εγγÏαφή χÏονο-Ïυθμισμένων δεδομένων στο %1"
-#: libs/ardour/session_timefx.cc:144
+#: libs/ardour/session_timefx.cc:145
msgid "timefx code failure. please notify ardour-developers."
msgstr ""
"αποτυχία κώδικα timefx. παÏακαλώ ειδοποιήστε τους Ï€ÏογÏαμματιστές του ardour."
-#: libs/ardour/session_transport.cc:116
+#: libs/ardour/session_transport.cc:117
msgid "Cannot loop - no loop range defined"
msgstr "Δεν γίνεται loop - κανένα διάστημα loop δεν Ï€ÏοσδιοÏίστηκε"
-#: libs/ardour/session_transport.cc:478
+#: libs/ardour/session_transport.cc:479
msgid ""
"Seamless looping cannot be supported while Ardour is using JACK transport.\n"
"Recommend changing the configured options"
@@ -1876,7 +1876,7 @@ msgstr ""
"transport.\n"
"ΣυνιστοÏμε την αλλαγή των διαμοÏφωμένων Ïυθμίσεων"
-#: libs/ardour/session_transport.cc:754
+#: libs/ardour/session_transport.cc:755
msgid ""
"Global varispeed cannot be supported while Ardour is connected to JACK "
"transport control"
@@ -1884,12 +1884,12 @@ msgstr ""
"Η Global varispeed δεν μποÏεί να υποστηÏιχθεί ενώ ο Ardour είναι "
"συνδεδεμένος με τον JACK transport control"
-#: libs/ardour/session_transport.cc:954
+#: libs/ardour/session_transport.cc:955
msgid "please stop the transport before adjusting slave settings"
msgstr ""
"παÏακαλώ σταματήστε το transport Ï€Ïιν την ÏÏθμιση των επιλογων εξαÏτήσεως"
-#: libs/ardour/session_transport.cc:990
+#: libs/ardour/session_transport.cc:991
msgid "No MTC port defined: MTC slaving is impossible."
msgstr ""
"Καμμία θÏÏα MTC δεν Ï€ÏοσδιοÏίστηκε: η εξάÏτηση του MTC (slaving) είναι "
@@ -1979,24 +1979,24 @@ msgstr "Little-endian (Intel)"
msgid "Big-endian (Mac)"
msgstr "Big-endian (Mac)"
-#: libs/ardour/sndfilesource.cc:145
+#: libs/ardour/sndfilesource.cc:147
msgid "FileSource: cannot get host information for BWF header (%1)"
msgstr ""
"FileSource: δεν μποÏÏŽ να βÏÏŽ πληÏοφοÏίες οικοδεσπότη(host) για επικεφαλίδα "
"BWF (%1)"
-#: libs/ardour/sndfilesource.cc:167
+#: libs/ardour/sndfilesource.cc:169
msgid ""
"cannot set broadcast info for audio file %1 (%2); dropping broadcast info "
"for this file"
msgstr ""
-#: libs/ardour/sndfilesource.cc:223
+#: libs/ardour/sndfilesource.cc:220
#, fuzzy
msgid "SndFileSource: cannot open file \"%1\" for %2 (%3)"
msgstr "SndFileSource: δεν μποÏÏŽ να ανοίξω το αÏχείο \"%1\" (%2)"
-#: libs/ardour/sndfilesource.cc:229
+#: libs/ardour/sndfilesource.cc:226
msgid ""
"SndFileSource: file only contains %1 channels; %2 is invalid as a channel "
"number"
@@ -2004,32 +2004,32 @@ msgstr ""
"SndFileSource: το αÏχείο πεÏιέχει μόνο %1 κανάλια; %2 δεν έχει αξία σαν "
"κανάλι number"
-#: libs/ardour/sndfilesource.cc:306
+#: libs/ardour/sndfilesource.cc:327
msgid "SndFileSource: could not seek to frame %1 within %2 (%3)"
msgstr "SndFileSource: δεν μποÏοÏσα να αναζητήσω στο frame %1 μέσα στο %2 (%3)"
-#: libs/ardour/sndfilesource.cc:357
+#: libs/ardour/sndfilesource.cc:378
#, fuzzy
msgid "programming error: %1 %2"
msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: %1"
-#: libs/ardour/sndfilesource.cc:457
+#: libs/ardour/sndfilesource.cc:487 libs/ardour/sndfilesource.cc:533
msgid ""
"cannot set broadcast info for audio file %1; Dropping broadcast info for "
"this file"
msgstr ""
-#: libs/ardour/sndfilesource.cc:499
+#: libs/ardour/sndfilesource.cc:544
#, fuzzy
msgid "%1: cannot seek to %2"
msgstr "%1: δεν μποÏÏŽ να αναζητήσω στο %2 για εξαγωγή"
-#: libs/ardour/state_manager.cc:46
+#: libs/ardour/state_manager.cc:47
#, fuzzy
msgid "cleared history"
msgstr "εκκαθαÏίσθη"
-#: libs/ardour/state_manager.cc:59
+#: libs/ardour/state_manager.cc:60
#, fuzzy
msgid ""
"programming error: illegal state ID (%1) passed to StateManager::set_state() "
@@ -2038,135 +2038,135 @@ msgstr ""
"σφάλμα Ï€ÏογÏαμματισμοÏ: αθέμιτη κατάσταση ID (%1) πέÏασε στον StateManager::"
"set_state() (range = 0-%3)"
-#: libs/ardour/stateful.cc:100
+#: libs/ardour/stateful.cc:102
msgid "Error: could not write %1"
msgstr "Σφάλμα: δεν μπόÏεσα να γÏάψω %1"
-#: libs/ardour/stateful.cc:114
+#: libs/ardour/stateful.cc:116
msgid "Could not understand XML file %1"
msgstr "Δεν μπόÏεσα να κατανοήσω το XML αÏχείο %1"
-#: libs/ardour/tempo.cc:66
+#: libs/ardour/tempo.cc:67
msgid "TempoSection XML node has no \"start\" property"
msgstr "Κόμβος του TempoSection XML δεν έχει ιδιότητα \"έναÏξη\""
-#: libs/ardour/tempo.cc:74
+#: libs/ardour/tempo.cc:75
msgid "TempoSection XML node has an illegal \"start\" value"
msgstr "Κόμβος του TempoSection XML έχει αθέμιτη αξία \"έναÏξη\""
-#: libs/ardour/tempo.cc:81
+#: libs/ardour/tempo.cc:82
msgid "TempoSection XML node has no \"beats-per-minute\" property"
msgstr "Κόμβος του TempoSection XML δεν έχει \"κτÏπων-ανά-λεπτό\" ιδιότητα"
-#: libs/ardour/tempo.cc:86
+#: libs/ardour/tempo.cc:87
msgid "TempoSection XML node has an illegal \"beats_per_minute\" value"
msgstr "Κόμβος του TempoSection XML έχει αθέμιτη \"κτÏπων_ανά_λεπτό\" αξία"
-#: libs/ardour/tempo.cc:91
+#: libs/ardour/tempo.cc:92
msgid "TempoSection XML node has no \"movable\" property"
msgstr "Κόμβος του TempoSection XML δεν έχει \"κινητή\" ιδιότητα"
-#: libs/ardour/tempo.cc:130
+#: libs/ardour/tempo.cc:131
msgid "MeterSection XML node has no \"start\" property"
msgstr "Κόμβος του MeterSection XML δεν έχει \"έναÏξη\" ιδιότητα"
-#: libs/ardour/tempo.cc:138
+#: libs/ardour/tempo.cc:139
msgid "MeterSection XML node has an illegal \"start\" value"
msgstr "Κόμβος του MeterSection XML έχει αθέμιτη \"έναÏξη\" αξία"
-#: libs/ardour/tempo.cc:145
+#: libs/ardour/tempo.cc:146
msgid "MeterSection XML node has no \"beats-per-bar\" property"
msgstr "Κόμβος του MeterSection XML δεν έχει \"κτÏπων-ανά-μπάÏα\" ιδιότητα"
-#: libs/ardour/tempo.cc:150
+#: libs/ardour/tempo.cc:151
msgid "MeterSection XML node has an illegal \"beats-per-bar\" value"
msgstr "Κόμβος του MeterSection XML έχει αθέμιτη \"κτÏπων-ανά-μπάÏα\" αξία"
-#: libs/ardour/tempo.cc:155
+#: libs/ardour/tempo.cc:156
msgid "MeterSection XML node has no \"note-type\" property"
msgstr "Κόμβος του MeterSection XML δεν έχει \"Ï„Ïπος-νότας\" ιδιότητα"
-#: libs/ardour/tempo.cc:160
+#: libs/ardour/tempo.cc:161
msgid "MeterSection XML node has an illegal \"note-type\" value"
msgstr "Κόμβος του MeterSection XML έχει αθέμιτη \"Ï„Ïπος-νότας\" αξία"
-#: libs/ardour/tempo.cc:165
+#: libs/ardour/tempo.cc:166
msgid "MeterSection XML node has no \"movable\" property"
msgstr "Κόμβος του MeterSection XML δεν έχει \"κινητή\" ιδιότητα"
-#: libs/ardour/tempo.cc:258
+#: libs/ardour/tempo.cc:259
msgid "move metric"
msgstr "μετακίνηση μετÏικοÏ"
-#: libs/ardour/tempo.cc:329
+#: libs/ardour/tempo.cc:330
msgid "metric removed"
msgstr "μετÏικό απεσÏÏθη"
-#: libs/ardour/tempo.cc:372
+#: libs/ardour/tempo.cc:373
msgid "add tempo"
msgstr "Ï€Ïόσθεση ÏυθμοÏ"
-#: libs/ardour/tempo.cc:401
+#: libs/ardour/tempo.cc:402
msgid "replace tempo"
msgstr "αντικατάσταση ÏυθμοÏ"
-#: libs/ardour/tempo.cc:434
+#: libs/ardour/tempo.cc:435
msgid "add meter"
msgstr "Ï€Ïόσθεση μετÏητή"
-#: libs/ardour/tempo.cc:462
+#: libs/ardour/tempo.cc:463
msgid "replaced meter"
msgstr "αντικατεστημένος μετÏητής"
-#: libs/ardour/tempo.cc:482 libs/ardour/tempo.cc:498
+#: libs/ardour/tempo.cc:483 libs/ardour/tempo.cc:499
msgid "programming error: no tempo section in tempo map!"
msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: κανένας τομέας ÏÏ…Î¸Î¼Î¿Ï ÏƒÏ„Î¿ χάÏτη Ïυθμών!"
-#: libs/ardour/tempo.cc:537
+#: libs/ardour/tempo.cc:538
msgid "programming error: unhandled MetricSection type"
msgstr "σφάλμα Ï€ÏογÏαμματισμοÏ: αχείÏιστος Ï„Ïπος MetricSection"
-#: libs/ardour/tempo.cc:1225 libs/ardour/tempo.cc:1237
+#: libs/ardour/tempo.cc:1226 libs/ardour/tempo.cc:1238
msgid "Tempo map: could not set new state, restoring old one."
msgstr ""
"ΧάÏτης Ïυθμών: δεν μπόÏεσα να θέσω νέα κατάσταση, επιστÏοφή Ï€ÏοηγοÏμενης."
-#: libs/ardour/tempo.cc:1261
+#: libs/ardour/tempo.cc:1262
msgid "load XML data"
msgstr ""
-#: libs/ardour/utils.cc:245
+#: libs/ardour/utils.cc:246
#, fuzzy
msgid "illegal or badly-formed string used for path (%1)"
msgstr "παÏάνομη ή κακοσχηματισμένη γÏαμμή για το μονοπάτι RAID"
-#: libs/ardour/utils.cc:250
+#: libs/ardour/utils.cc:251
#, fuzzy
msgid "path (%1) is ambiguous"
msgstr "Το μονοπάτι αναζήτησης του RAID είναι αμφίβολο"
-#: libs/ardour/vst_plugin.cc:186
+#: libs/ardour/vst_plugin.cc:187
msgid "cannot create VST chunk directory: %1"
msgstr "δεν μποÏÏŽ να δημιουÏγήσω φάκελο κομματιών VST: %1"
-#: libs/ardour/vst_plugin.cc:194
+#: libs/ardour/vst_plugin.cc:195
msgid "cannot check VST chunk directory: %1"
msgstr "δεν μποÏÏŽ να ελέγξω το φάκελο κομματιών VST: %1"
-#: libs/ardour/vst_plugin.cc:201
+#: libs/ardour/vst_plugin.cc:202
msgid "%1 exists but is not a directory"
msgstr "%1 υπάÏχει αλλά δεν είναι φάκελος"
-#: libs/ardour/vst_plugin.cc:239
+#: libs/ardour/vst_plugin.cc:240
msgid "Bad node sent to VSTPlugin::set_state"
msgstr "Κακός κόμβος εστάλη στο VSTPlugin::set_state"
-#: libs/ardour/vst_plugin.cc:342 libs/ardour/vst_plugin.cc:353
+#: libs/ardour/vst_plugin.cc:343 libs/ardour/vst_plugin.cc:354
msgid "no support for presets using chunks at this time"
msgstr ""
"καμμία υποστήÏιξη αυτή τη στιγμή για Ïυθμίσεις που χÏησιμοποιοÏν κομμάτια"
-#: libs/ardour/coreaudio_source.cc:98
+#: libs/ardour/coreaudiosource.cc:97
#, fuzzy
msgid ""
"CoreAudioSource: file only contains %1 channels; %2 is invalid as a channel "
@@ -2175,7 +2175,7 @@ msgstr ""
"SndFileSource: το αÏχείο πεÏιέχει μόνο %1 κανάλια; %2 δεν έχει αξία σαν "
"κανάλι number"
-#: libs/ardour/coreaudio_source.cc:163
+#: libs/ardour/coreaudiosource.cc:162
#, fuzzy
msgid "CoreAudioSource: could not seek to frame %1 within %2 (%3)"
msgstr "SndFileSource: δεν μποÏοÏσα να αναζητήσω στο frame %1 μέσα στο %2 (%3)"
diff --git a/libs/ardour/po/it_IT.po b/libs/ardour/po/it_IT.po
index 708a965a4c..2ce02827bd 100644
--- a/libs/ardour/po/it_IT.po
+++ b/libs/ardour/po/it_IT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libardour 0.664.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-06-20 16:23-0400\n"
+"POT-Creation-Date: 2006-06-29 21:03-0400\n"
"PO-Revision-Date: 2003-05-21 12:50+0500\n"
"Last-Translator: Filippo Pappalardo <filippo@email.it>\n"
"Language-Team: Italian\n"
@@ -15,270 +15,270 @@ msgstr ""
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-#: libs/ardour/audio_diskstream.cc:336
+#: libs/ardour/audio_diskstream.cc:337
#, fuzzy
msgid "AudioDiskstream: Session doesn't know about a Playlist called \"%1\""
msgstr "DiskStream: La sessione non riconosce la Playlist chiamata \"%1\""
-#: libs/ardour/audio_diskstream.cc:341
+#: libs/ardour/audio_diskstream.cc:342
msgid "AudioDiskstream: Playlist \"%1\" isn't an audio playlist"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:432
+#: libs/ardour/audio_diskstream.cc:433
#, 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!"
-#: libs/ardour/audio_diskstream.cc:1113 libs/ardour/audio_diskstream.cc:1124
+#: libs/ardour/audio_diskstream.cc:1114 libs/ardour/audio_diskstream.cc:1125
#, 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"
-#: libs/ardour/audio_diskstream.cc:1253
+#: libs/ardour/audio_diskstream.cc:1254
#, fuzzy
msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3"
msgstr "DiskStream %1: impossibile leggere %2 dalla playlista al frame %3"
-#: libs/ardour/audio_diskstream.cc:1620 libs/ardour/audio_diskstream.cc:1637
+#: libs/ardour/audio_diskstream.cc:1621 libs/ardour/audio_diskstream.cc:1638
#, fuzzy
msgid "AudioDiskstream %1: cannot write to disk"
msgstr "DiskStream %1: impossibile scrivere sul disco"
-#: libs/ardour/audio_diskstream.cc:1697
+#: libs/ardour/audio_diskstream.cc:1698
#, fuzzy
msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!"
msgstr "DiskStream \"%1\": impossibile scaricare i dati acquisiti sul disco!"
-#: libs/ardour/audio_diskstream.cc:1794
+#: libs/ardour/audio_diskstream.cc:1796
msgid "%1: could not create region for complete audio file"
msgstr "%1: impossibile creare una regione per il file audio completo"
-#: libs/ardour/audio_diskstream.cc:1817
+#: libs/ardour/audio_diskstream.cc:1819
#, fuzzy
msgid "AudioDiskstream: could not create region for captured audio!"
msgstr "DiskStream: impossibile creare una regione per l'audio registrato!"
-#: libs/ardour/audio_diskstream.cc:1872
+#: libs/ardour/audio_diskstream.cc:1874
#, fuzzy
msgid "programmer error: %1"
msgstr "errore di programmazione: %1"
-#: libs/ardour/audio_diskstream.cc:2144
+#: libs/ardour/audio_diskstream.cc:2146
#, fuzzy
msgid "AudioDiskstream: channel %1 out of range"
msgstr "DiskStream: canale fuori margine"
-#: libs/ardour/audio_diskstream.cc:2169
+#: libs/ardour/audio_diskstream.cc:2171
msgid "%1:%2 new capture file not initialized correctly"
msgstr "%1:%2 nuovo file di registrazione non è stato avviato correttamente"
-#: libs/ardour/audio_diskstream.cc:2402
+#: libs/ardour/audio_diskstream.cc:2404
msgid "Location \"%1\" not valid for track loop (start >= end)"
msgstr "La Location \"%1\" non valida per il loop (inizio >= fine)"
-#: libs/ardour/audio_diskstream.cc:2483
+#: libs/ardour/audio_diskstream.cc:2485
#, fuzzy
msgid "%1: cannot restore pending capture source file %2"
msgstr "Import: impossibile aprire il file audio di input \"%1\""
-#: libs/ardour/audio_diskstream.cc:2505
+#: libs/ardour/audio_diskstream.cc:2507
msgid "%1: incorrect number of pending sources listed - ignoring them all"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:2521
+#: libs/ardour/audio_diskstream.cc:2523
#, fuzzy
msgid "%1: cannot create whole-file region from pending capture sources"
msgstr "Playlist: impossibile creare la Regione dal file di stato"
-#: libs/ardour/audio_diskstream.cc:2533
+#: libs/ardour/audio_diskstream.cc:2535
#, fuzzy
msgid "%1: cannot create region from pending capture sources"
msgstr "Playlist: impossibile creare la Regione dal file di stato"
-#: libs/ardour/audio_library.cc:91
+#: libs/ardour/audio_library.cc:92
msgid "channels"
msgstr ""
-#: libs/ardour/audio_library.cc:92
+#: libs/ardour/audio_library.cc:93
#, fuzzy
msgid "samplerate"
msgstr "separa"
-#: libs/ardour/audio_library.cc:93
+#: libs/ardour/audio_library.cc:94
msgid "resolution"
msgstr ""
-#: libs/ardour/audio_library.cc:94
+#: libs/ardour/audio_library.cc:95
msgid "format"
msgstr ""
-#: libs/ardour/audio_library.cc:101
+#: libs/ardour/audio_library.cc:102
msgid "Could not open %1. Audio Library not saved"
msgstr "Impossibile accedere a %1. Libreria Audio non salvata"
-#: libs/ardour/audio_playlist.cc:52 libs/ardour/audio_playlist.cc:62
-#: libs/ardour/audio_playlist.cc:73 libs/ardour/audio_playlist.cc:120
+#: libs/ardour/audio_playlist.cc:53 libs/ardour/audio_playlist.cc:63
+#: libs/ardour/audio_playlist.cc:74 libs/ardour/audio_playlist.cc:121
#: libs/ardour/insert.cc:76 libs/ardour/insert.cc:95 libs/ardour/insert.cc:120
-#: libs/ardour/insert.cc:838 libs/ardour/insert.cc:846 libs/ardour/send.cc:38
-#: libs/ardour/send.cc:52 libs/ardour/send.cc:61
-#: libs/ardour/session_state.cc:1620 libs/ardour/session_state.cc:1666
+#: libs/ardour/insert.cc:838 libs/ardour/insert.cc:846 libs/ardour/send.cc:39
+#: libs/ardour/send.cc:53 libs/ardour/send.cc:62
+#: libs/ardour/session_state.cc:1621 libs/ardour/session_state.cc:1667
msgid "initial state"
msgstr "stato iniziale"
-#: libs/ardour/audio_playlist.cc:274 libs/ardour/audio_playlist.cc:768
+#: libs/ardour/audio_playlist.cc:275 libs/ardour/audio_playlist.cc:769
msgid ""
"programming error: non-audio Region passed to remove_overlap in audio "
"playlist"
msgstr ""
-#: libs/ardour/audio_playlist.cc:401
+#: libs/ardour/audio_playlist.cc:402
msgid ""
"programming error: non-audio Region tested for overlap in audio playlist"
msgstr ""
-#: libs/ardour/audio_playlist.cc:877
+#: libs/ardour/audio_playlist.cc:878
msgid "xfade change"
msgstr "cambio dello smorzamento incrociato"
-#: libs/ardour/audio_playlist.cc:932
+#: libs/ardour/audio_playlist.cc:933
msgid "region modified"
msgstr "regione modificata"
-#: libs/ardour/audio_track.cc:132 libs/ardour/io.cc:1715
-#: libs/ardour/io.cc:1825
+#: libs/ardour/audio_track.cc:125 libs/ardour/io.cc:1716
+#: libs/ardour/io.cc:1826
msgid "Unknown connection \"%1\" listed for input of %2"
msgstr "Connessione sconosciuta \"%1\" come input di %2"
-#: libs/ardour/audio_track.cc:134 libs/ardour/io.cc:1717
-#: libs/ardour/io.cc:1827
+#: libs/ardour/audio_track.cc:127 libs/ardour/io.cc:1718
+#: libs/ardour/io.cc:1828
msgid "in 1"
msgstr ""
-#: libs/ardour/audio_track.cc:135 libs/ardour/io.cc:1718
-#: libs/ardour/io.cc:1828
+#: libs/ardour/audio_track.cc:128 libs/ardour/io.cc:1719
+#: libs/ardour/io.cc:1829
msgid "No input connections available as a replacement"
msgstr ""
-#: libs/ardour/audio_track.cc:139 libs/ardour/io.cc:1722
-#: libs/ardour/io.cc:1832
+#: libs/ardour/audio_track.cc:132 libs/ardour/io.cc:1723
+#: libs/ardour/io.cc:1833
msgid "Connection %1 was not available - \"in 1\" used instead"
msgstr ""
-#: libs/ardour/audio_track.cc:148 libs/ardour/io.cc:1841
+#: libs/ardour/audio_track.cc:141 libs/ardour/io.cc:1842
msgid "improper input channel list in XML node (%1)"
msgstr ""
-#: libs/ardour/audio_track.cc:193 libs/ardour/audio_track.cc:206
+#: libs/ardour/audio_track.cc:186 libs/ardour/audio_track.cc:199
msgid "AudioTrack: diskstream \"%1\" not known by session"
msgstr "AudioTrack: diskstream \"%1\" non riconosciuto dalla sessione"
-#: libs/ardour/audio_track.cc:304
+#: libs/ardour/audio_track.cc:297
msgid ""
"MIDI rec_enable control specification for %1 is incomplete, so it has been "
"ignored"
msgstr ""
-#: libs/ardour/audio_track.cc:316
+#: libs/ardour/audio_track.cc:309
msgid "programming error: AudioTrack given state without diskstream!"
msgstr ""
-#: libs/ardour/audioengine.cc:149
+#: libs/ardour/audioengine.cc:144
msgid "cannot activate JACK client"
msgstr "impossibile attivare il client JACK"
-#: libs/ardour/audioengine.cc:400
+#: libs/ardour/audioengine.cc:395
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"
-#: libs/ardour/audioengine.cc:431
+#: libs/ardour/audioengine.cc:426
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"
-#: libs/ardour/audioengine.cc:492
+#: libs/ardour/audioengine.cc:487
msgid "connect called before engine was started"
msgstr "richiesta di connessione avvenuta prima dell'avvio dell'applicazione"
-#: libs/ardour/audioengine.cc:508
+#: libs/ardour/audioengine.cc:503
msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)"
msgstr ""
-#: libs/ardour/audioengine.cc:521 libs/ardour/audioengine.cc:550
+#: libs/ardour/audioengine.cc:516 libs/ardour/audioengine.cc:545
msgid "disconnect called before engine was started"
msgstr ""
"richiesta di disconnessione avvenuta prima dell'avvio dell'applicazione"
-#: libs/ardour/audioengine.cc:608
+#: libs/ardour/audioengine.cc:603
msgid "get_port_by_name() called before engine was started"
msgstr ""
"richiesta get_port_by_name() avvenuta prima dell'avvio dell'applicazione"
-#: libs/ardour/audioengine.cc:641
+#: libs/ardour/audioengine.cc:636
msgid "get_ports called before engine was started"
msgstr "richiesta di get_ports avvenuta prima dell'avvio dell'applicazione"
-#: libs/ardour/audioengine.cc:716
+#: libs/ardour/audioengine.cc:711
msgid "get_nth_physical called before engine was started"
msgstr ""
"richiesta di get_nth_physical avvenuta prima dell'avvio dell'applicazione"
-#: libs/ardour/audioengine.cc:744
+#: libs/ardour/audioengine.cc:739
#, 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"
-#: libs/ardour/audioengine.cc:750
+#: libs/ardour/audioengine.cc:745
msgid "get_port_total_latency() called before engine was started"
msgstr ""
"richiesta di get_port_total_latency() avvenuta prima dell'avvio "
"dell'applicazione"
-#: libs/ardour/audioengine.cc:874
+#: libs/ardour/audioengine.cc:869
msgid "Unable to connect to JACK server"
msgstr ""
-#: libs/ardour/audioengine.cc:877
+#: libs/ardour/audioengine.cc:872
msgid "Could not connect to JACK server as \"%1\""
msgstr ""
-#: libs/ardour/audioengine.cc:882
+#: libs/ardour/audioengine.cc:877
msgid "JACK server started"
msgstr ""
-#: libs/ardour/audioengine.cc:916
+#: libs/ardour/audioengine.cc:911
msgid "cannot shutdown connection to JACK"
msgstr ""
-#: libs/ardour/audioengine.cc:941
+#: libs/ardour/audioengine.cc:936
msgid "failed to connect to JACK"
msgstr ""
-#: libs/ardour/audioengine.cc:957
+#: libs/ardour/audioengine.cc:952
#, fuzzy
msgid "could not reregister %1"
msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)"
-#: libs/ardour/audioengine.cc:1014
+#: libs/ardour/audioengine.cc:1009
msgid "could not reconnect %1 and %2 (err = %3)"
msgstr ""
-#: libs/ardour/audiofilesource.cc:444 libs/ardour/session_state.cc:3094
+#: libs/ardour/audiofilesource.cc:444 libs/ardour/session_state.cc:3095
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"
-#: libs/ardour/audiofilesource.cc:458 libs/ardour/session_state.cc:3108
+#: libs/ardour/audiofilesource.cc:458 libs/ardour/session_state.cc:3109
msgid "cannot rename audio file source from %1 to %2 (%3)"
msgstr "impossibile rinominare file audio sorgente da %1 a %2 (%3)"
-#: libs/ardour/audiofilesource.cc:465 libs/ardour/session_state.cc:3123
+#: libs/ardour/audiofilesource.cc:465 libs/ardour/session_state.cc:3124
msgid "cannot remove peakfile %1 for %2 (%3)"
msgstr "impossibile eliminare il peakfile %1 per %2 (%3)"
@@ -307,22 +307,22 @@ msgstr "FileSource: impossibile trovare il file richiesto (%1): %2"
msgid "Filesource: cannot check for existing file (%1): %2"
msgstr "FileSource: impossibile controllare il file esistente (%1): %2"
-#: libs/ardour/audiofilesource.cc:639 libs/ardour/insert.cc:525
-#: libs/ardour/sndfilesource.cc:111
+#: libs/ardour/audiofilesource.cc:636 libs/ardour/insert.cc:525
+#: libs/ardour/sndfilesource.cc:113
msgid "programming error: %1"
msgstr "errore di programmazione: %1"
-#: libs/ardour/audiofilesource.cc:644
+#: libs/ardour/audiofilesource.cc:641
#, fuzzy
msgid "cannot rename audio file for %1 to %2"
msgstr "impossibile rinominare file audio sorgente da %1 a %2 (%3)"
-#: libs/ardour/audiofilter.cc:44
+#: libs/ardour/audiofilter.cc:45
msgid "audiofilter: error creating name for new audio file based on %1"
msgstr ""
"audiofilter: errore nel creare il nome per il nuovo file audio basato su %1"
-#: libs/ardour/audiofilter.cc:57
+#: libs/ardour/audiofilter.cc:58
msgid "audiofilter: error creating new audio file %1 (%2)"
msgstr "audiofilter: errore nel creare un nuovo file audio %1 (%2)"
@@ -401,155 +401,155 @@ msgstr ""
msgid "%1: could not write peak file data (%2)"
msgstr ""
-#: libs/ardour/automation_event.cc:64 libs/ardour/location.cc:344
-#: libs/ardour/tempo.cc:225
+#: libs/ardour/automation_event.cc:65 libs/ardour/location.cc:345
+#: libs/ardour/tempo.cc:226
msgid "initial"
msgstr "iniziale"
-#: libs/ardour/automation_event.cc:231
+#: libs/ardour/automation_event.cc:232
msgid "cleared"
msgstr "pulito"
-#: libs/ardour/automation_event.cc:403
+#: libs/ardour/automation_event.cc:404
msgid "added event"
msgstr "aggiunto evento"
-#: libs/ardour/automation_event.cc:420
+#: libs/ardour/automation_event.cc:421
msgid "removed event"
msgstr "rimosso evento"
-#: libs/ardour/automation_event.cc:435
+#: libs/ardour/automation_event.cc:436
msgid "removed multiple events"
msgstr "rimossi molteplici eventi"
-#: libs/ardour/automation_event.cc:466 libs/ardour/automation_event.cc:497
+#: libs/ardour/automation_event.cc:467 libs/ardour/automation_event.cc:498
msgid "removed range"
msgstr "rimosso intervallo"
-#: libs/ardour/automation_event.cc:527
+#: libs/ardour/automation_event.cc:528
msgid "event range adjusted"
msgstr ""
-#: libs/ardour/automation_event.cc:549
+#: libs/ardour/automation_event.cc:550
msgid "event adjusted"
msgstr ""
-#: libs/ardour/automation_event.cc:664 libs/ardour/automation_event.cc:769
+#: libs/ardour/automation_event.cc:665 libs/ardour/automation_event.cc:770
#: libs/ardour/panner.cc:1041
msgid "programming error:"
msgstr "errore di programmazione:"
-#: libs/ardour/automation_event.cc:1078
+#: libs/ardour/automation_event.cc:1079
msgid "cut/copy/clear"
msgstr "taglia/copia/pulisci"
-#: libs/ardour/automation_event.cc:1111
+#: libs/ardour/automation_event.cc:1112
msgid "copy"
msgstr "copia"
-#: libs/ardour/automation_event.cc:1179 libs/ardour/playlist.cc:939
+#: libs/ardour/automation_event.cc:1180 libs/ardour/playlist.cc:939
msgid "paste"
msgstr "incolla"
-#: libs/ardour/automation_event.cc:1234
+#: libs/ardour/automation_event.cc:1235
msgid ""
"automation list: no x-coordinate stored for control point (point ignored)"
msgstr ""
"lista automazione: nessuna coordinata X salvata per punto di controllo "
"(ignorato)"
-#: libs/ardour/automation_event.cc:1240
+#: libs/ardour/automation_event.cc:1241
msgid ""
"automation list: no y-coordinate stored for control point (point ignored)"
msgstr ""
"lista automazione: nessuna coordinata Y salvata per punto di controllo "
"(ignorato)"
-#: libs/ardour/configuration.cc:79
+#: libs/ardour/configuration.cc:80
#, fuzzy
msgid "loading system configuration file %1"
msgstr ""
"Ardour: impossibile leggere il file di configurazione di sistema \"%1\""
-#: libs/ardour/configuration.cc:82
+#: libs/ardour/configuration.cc:83
msgid "Ardour: cannot read system configuration file \"%1\""
msgstr ""
"Ardour: impossibile leggere il file di configurazione di sistema \"%1\""
-#: libs/ardour/configuration.cc:87
+#: libs/ardour/configuration.cc:88
msgid "Ardour: system configuration file \"%1\" not loaded successfully."
msgstr ""
"Ardour: il file di configurazione di sistema \"%1\" non stato caricato con "
"successo"
-#: libs/ardour/configuration.cc:104
+#: libs/ardour/configuration.cc:105
#, fuzzy
msgid "loading user configuration file %1"
msgstr "Ardour: impossibile la lettura del file di configurazione \"%1\""
-#: libs/ardour/configuration.cc:107
+#: libs/ardour/configuration.cc:108
msgid "Ardour: cannot read configuration file \"%1\""
msgstr "Ardour: impossibile la lettura del file di configurazione \"%1\""
-#: libs/ardour/configuration.cc:112
+#: libs/ardour/configuration.cc:113
#, fuzzy
msgid "Ardour: user configuration file \"%1\" not loaded successfully."
msgstr ""
"Ardour: il file di configurazione \"%1\" non stato caricato con successo"
-#: libs/ardour/configuration.cc:136
+#: libs/ardour/configuration.cc:137
#, fuzzy
msgid "Config file %1 not saved"
msgstr "File di configurazione non salvato"
-#: libs/ardour/configuration.cc:209
+#: libs/ardour/configuration.cc:210
msgid "ill-formed MIDI port specification in ardour rcfile (ignored)"
msgstr ""
"porta MIDI mal configurata nel file di configurazione di ardour (ignorato)"
-#: libs/ardour/connection.cc:182
+#: libs/ardour/connection.cc:183
msgid "Node for Connection has no \"name\" property"
msgstr "Il nodo per la connessione non possiede l'attributo \"nome\""
-#: libs/ardour/connection.cc:190
+#: libs/ardour/connection.cc:191
msgid "Node for Connection has no \"connections\" property"
msgstr "Il nodo per la connessione non ha l'attributo \"connessioni\""
-#: libs/ardour/connection.cc:226 libs/ardour/io.cc:1901
+#: libs/ardour/connection.cc:227 libs/ardour/io.cc:1902
msgid "IO: badly formed string in XML node for inputs \"%1\""
msgstr "IO: stringa malformata nel nodo XML per le entrate \"%1\""
-#: libs/ardour/connection.cc:231 libs/ardour/io.cc:1906
+#: libs/ardour/connection.cc:232 libs/ardour/io.cc:1907
msgid "bad input string in XML node \"%1\""
msgstr "stringa malformata nel nodo XML \"%1\""
-#: libs/ardour/control_protocol_manager.cc:82
+#: libs/ardour/control_protocol_manager.cc:80
msgid "control protocol name \"%1\" has no descriptor"
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:87
+#: libs/ardour/control_protocol_manager.cc:85
msgid "control protocol name \"%1\" could not be initialized"
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:143
+#: libs/ardour/control_protocol_manager.cc:141
msgid "Instantiating mandatory control protocol %1"
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:177
+#: libs/ardour/control_protocol_manager.cc:175
#, fuzzy
msgid "Control protocol %1 not usable"
msgstr "La porta MIDI \"%1\" non disponibile: nessun controllo MTC possibile"
-#: libs/ardour/control_protocol_manager.cc:189
+#: libs/ardour/control_protocol_manager.cc:187
msgid "Control surface protocol discovered: \"%1\""
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:207
+#: libs/ardour/control_protocol_manager.cc:205
#, fuzzy
msgid "ControlProtocolManager: cannot load module \"%1\" (%2)"
msgstr "LADSPA: impossibile caricare il modulo \"%1\" (%2)"
-#: libs/ardour/control_protocol_manager.cc:215
+#: libs/ardour/control_protocol_manager.cc:213
#, fuzzy
msgid "ControlProtocolManager: module \"%1\" has no descriptor function."
msgstr "LADSPA: il modulo \"%1\" non ha alcuna funzione descriptor."
@@ -580,103 +580,103 @@ msgstr "livello cambiato"
msgid "old-style crossfade information - no position information"
msgstr "il nodo XML per la Location non ha informazioni sull'inizio"
-#: libs/ardour/curve.cc:111 libs/ardour/globals.cc:339
+#: libs/ardour/curve.cc:112 libs/ardour/globals.cc:340
#: libs/ardour/insert.cc:454 libs/ardour/session.cc:2466
#: libs/ardour/session.cc:2518
msgid "programming error: "
msgstr "errore di programmazione: "
-#: libs/ardour/cycle_timer.cc:35
+#: libs/ardour/cycle_timer.cc:37
msgid "CycleTimer::get_mhz(): can't open /proc/cpuinfo"
msgstr "CycleTimer::get_mhz(): impossibile accedere a /proc/cpuinfo"
-#: libs/ardour/cycle_timer.cc:47
+#: libs/ardour/cycle_timer.cc:49
msgid "CycleTimer::get_mhz(): cannot locate cpu MHz in /proc/cpuinfo"
msgstr ""
"CycleTimer::get_mhz(): impossibile localizzare \"cpu MHz\" in /proc/cpuinfo"
-#: libs/ardour/cycle_timer.cc:70
+#: libs/ardour/cycle_timer.cc:72
msgid "cannot locate cpu MHz in /proc/cpuinfo"
msgstr "impossibile localizzare \"cpu MHz\" in /proc/cpuinfo"
-#: libs/ardour/destructive_filesource.cc:187
+#: libs/ardour/destructive_filesource.cc:188
msgid "DestructiveFileSource: \"%1\" bad read retval: %2 of %5 (%3: %4)"
msgstr ""
-#: libs/ardour/destructive_filesource.cc:200
-#: libs/ardour/destructive_filesource.cc:242
-#: libs/ardour/destructive_filesource.cc:249
+#: libs/ardour/destructive_filesource.cc:201
+#: libs/ardour/destructive_filesource.cc:243
+#: libs/ardour/destructive_filesource.cc:250
msgid "DestructiveFileSource: \"%1\" bad write (%2)"
msgstr ""
-#: libs/ardour/globals.cc:108
+#: libs/ardour/globals.cc:109
msgid "no MIDI ports specified: no MMC or MTC control possible"
msgstr "Nessuna porta MIDI specificata: impossibile alcun controllo MMC o MTC"
-#: libs/ardour/globals.cc:123
+#: libs/ardour/globals.cc:124
msgid "MIDI port specifications for \"%1\" are not understandable."
msgstr "Le specifiche per la porta MIDI \"%1\" non sono state capite"
-#: libs/ardour/globals.cc:136 libs/ardour/globals.cc:140
-#: libs/ardour/globals.cc:144
+#: libs/ardour/globals.cc:137 libs/ardour/globals.cc:141
+#: libs/ardour/globals.cc:145
msgid "default"
msgstr ""
-#: libs/ardour/globals.cc:172
+#: libs/ardour/globals.cc:173
msgid "No MMC control (MIDI port \"%1\" not available)"
msgstr "La porta MIDI \"%1\" non disponibile: nessun controllo MTC possibile"
-#: libs/ardour/globals.cc:178
+#: libs/ardour/globals.cc:179
msgid "No MTC support (MIDI port \"%1\" not available)"
msgstr "La porta MIDI \"%1\" non disponibile: nessun controllo MTC possibile"
-#: libs/ardour/globals.cc:183
+#: libs/ardour/globals.cc:184
#, fuzzy
msgid "No MIDI parameter support (MIDI port \"%1\" not available)"
msgstr "La porta MIDI \"%1\" non disponibile: nessun controllo MTC possibile"
-#: libs/ardour/import.cc:74
+#: libs/ardour/import.cc:75
msgid "Import: cannot open input sound file \"%1\""
msgstr "Import: impossibile aprire il file audio di input \"%1\""
-#: libs/ardour/import.cc:79
+#: libs/ardour/import.cc:80
msgid "resampling audio"
msgstr ""
-#: libs/ardour/import.cc:83
+#: libs/ardour/import.cc:84
msgid "Import: cannot open converted sound file \"%1\""
msgstr "Import: impossibile aprire il file audio convertito \"%1\""
-#: libs/ardour/import.cc:88
+#: libs/ardour/import.cc:89
msgid "Import: error while resampling sound file \"%1\""
msgstr "Import: errore nel resampling deil file audio \"%1\""
-#: libs/ardour/import.cc:147
+#: libs/ardour/import.cc:148
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"
-#: libs/ardour/import.cc:166
+#: libs/ardour/import.cc:167
msgid "converting audio"
msgstr "conversione dell'audio"
-#: libs/ardour/import.cc:198
+#: libs/ardour/import.cc:199
msgid "building region"
msgstr "costruzione della regione"
-#: libs/ardour/import.cc:200
+#: libs/ardour/import.cc:201
msgid "building regions"
msgstr "costruzione delle regioni"
-#: libs/ardour/import.cc:324
+#: libs/ardour/import.cc:325
msgid "Import: could not open temp file: %1"
msgstr "Import: impossibile aprire il file audio temporaneo \"%1\""
-#: libs/ardour/import.cc:333
+#: libs/ardour/import.cc:334
msgid "Import: src_new() failed : %1"
msgstr ""
-#: libs/ardour/import.cc:361
+#: libs/ardour/import.cc:362
msgid "Import: %1"
msgstr ""
@@ -733,223 +733,223 @@ msgstr "PortInsert: impossibile aggiungere una porta d'uscita"
msgid "non-port insert XML used for port plugin insert"
msgstr "insert non-port XML usato per insert di plugin di porta"
-#: libs/ardour/io.cc:597
+#: libs/ardour/io.cc:598
msgid "IO: cannot disconnect input port %1 from %2"
msgstr "IO: impossibile disconnettere la porta d'entrata %1 da %2"
-#: libs/ardour/io.cc:665
+#: libs/ardour/io.cc:666
msgid "IO: cannot disconnect output port %1 from %2"
msgstr "IO: impossibile disconnettere la porta d'uscita %1 da %2"
-#: libs/ardour/io.cc:806 libs/ardour/io.cc:1150 libs/ardour/io.cc:1276
+#: libs/ardour/io.cc:807 libs/ardour/io.cc:1151 libs/ardour/io.cc:1277
#, c-format
msgid "%s/out"
msgstr ""
-#: libs/ardour/io.cc:808 libs/ardour/io.cc:1152 libs/ardour/io.cc:1278
-#: libs/ardour/io.cc:2848
+#: libs/ardour/io.cc:809 libs/ardour/io.cc:1153 libs/ardour/io.cc:1279
+#: libs/ardour/io.cc:2849
#, c-format
msgid "%s/out %u"
msgstr ""
-#: libs/ardour/io.cc:812 libs/ardour/io.cc:1157 libs/ardour/io.cc:1282
+#: libs/ardour/io.cc:813 libs/ardour/io.cc:1158 libs/ardour/io.cc:1283
msgid "IO: cannot register output port %1"
msgstr "IO: impossibile registrare la porta %1"
-#: libs/ardour/io.cc:907 libs/ardour/io.cc:1010 libs/ardour/io.cc:1116
+#: libs/ardour/io.cc:908 libs/ardour/io.cc:1011 libs/ardour/io.cc:1117
#, c-format
msgid "%s/in"
msgstr ""
-#: libs/ardour/io.cc:909 libs/ardour/io.cc:1013 libs/ardour/io.cc:1119
-#: libs/ardour/io.cc:2818
+#: libs/ardour/io.cc:910 libs/ardour/io.cc:1014 libs/ardour/io.cc:1120
+#: libs/ardour/io.cc:2819
#, c-format
msgid "%s/in %u"
msgstr ""
-#: libs/ardour/io.cc:913 libs/ardour/io.cc:1019 libs/ardour/io.cc:1124
+#: libs/ardour/io.cc:914 libs/ardour/io.cc:1020 libs/ardour/io.cc:1125
msgid "IO: cannot register input port %1"
msgstr "IO: impossibile registrare la porta %1"
-#: libs/ardour/io.cc:1540
+#: libs/ardour/io.cc:1541
msgid "IO::connecting_became_legal() called without a pending state node"
msgstr ""
-#: libs/ardour/io.cc:1563
+#: libs/ardour/io.cc:1564
msgid "IO::ports_became_legal() called without a pending state node"
msgstr ""
-#: libs/ardour/io.cc:1593
+#: libs/ardour/io.cc:1594
msgid "incorrect XML node \"%1\" passed to IO object"
msgstr ""
-#: libs/ardour/io.cc:1648
+#: libs/ardour/io.cc:1649
msgid ""
"MIDI gain control specification for %1 is incomplete, so it has been ignored"
msgstr ""
-#: libs/ardour/io.cc:1738 libs/ardour/io.cc:1850
+#: libs/ardour/io.cc:1739 libs/ardour/io.cc:1851
msgid "Unknown connection \"%1\" listed for output of %2"
msgstr ""
-#: libs/ardour/io.cc:1740 libs/ardour/io.cc:1852
+#: libs/ardour/io.cc:1741 libs/ardour/io.cc:1853
msgid "out 1"
msgstr ""
-#: libs/ardour/io.cc:1741 libs/ardour/io.cc:1853
+#: libs/ardour/io.cc:1742 libs/ardour/io.cc:1854
msgid "No output connections available as a replacement"
msgstr ""
-#: libs/ardour/io.cc:1745 libs/ardour/io.cc:1857
+#: libs/ardour/io.cc:1746 libs/ardour/io.cc:1858
msgid "Connection %1 was not available - \"out 1\" used instead"
msgstr ""
-#: libs/ardour/io.cc:1759
+#: libs/ardour/io.cc:1760
msgid "%1: cannot create I/O ports"
msgstr ""
-#: libs/ardour/io.cc:1866
+#: libs/ardour/io.cc:1867
msgid "improper output channel list in XML node (%1)"
msgstr ""
-#: libs/ardour/io.cc:1951
+#: libs/ardour/io.cc:1952
msgid "IO: badly formed string in XML node for outputs \"%1\""
msgstr "IO: stringa mal formata nel nodo XML per le uscite \"%1\""
-#: libs/ardour/io.cc:1956
+#: libs/ardour/io.cc:1957
msgid "IO: bad output string in XML node \"%1\""
msgstr "IO: stringa mal formata nel nodo XML \"%1\""
-#: libs/ardour/io.cc:2524
+#: libs/ardour/io.cc:2525
msgid "%1: could not open automation event file \"%2\""
msgstr ""
-#: libs/ardour/io.cc:2563
+#: libs/ardour/io.cc:2564
msgid "%1: cannot open automation event file \"%2\""
msgstr ""
-#: libs/ardour/io.cc:2578
+#: libs/ardour/io.cc:2579
msgid "badly formed version number in automation event file \"%1\""
msgstr ""
-#: libs/ardour/io.cc:2582
+#: libs/ardour/io.cc:2583
msgid "no version information in automation event file \"%1\""
msgstr ""
-#: libs/ardour/io.cc:2587
+#: libs/ardour/io.cc:2588
msgid "mismatched automation event file version (%1)"
msgstr ""
-#: libs/ardour/io.cc:2595
+#: libs/ardour/io.cc:2596
msgid "badly formatted automation event record at line %1 of %2 (ignored)"
msgstr ""
-#: libs/ardour/io.cc:2615
+#: libs/ardour/io.cc:2616
msgid "dubious automation event found (and ignored)"
msgstr ""
-#: libs/ardour/io.cc:2619 libs/ardour/panner.cc:438
+#: libs/ardour/io.cc:2620 libs/ardour/panner.cc:438
#: libs/ardour/redirect.cc:148
msgid "loaded from disk"
msgstr ""
-#: libs/ardour/io.cc:2790
+#: libs/ardour/io.cc:2791
msgid "automation write/touch"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:86
+#: libs/ardour/ladspa_plugin.cc:87
msgid "LADSPA: module has no descriptor function."
msgstr "LADSPA: il modulo non ha alcuna funzione descriptor."
-#: libs/ardour/ladspa_plugin.cc:91
+#: libs/ardour/ladspa_plugin.cc:92
msgid "LADSPA: plugin has gone away since discovery!"
msgstr "LADSPA: il plugin è stato rimosso"
-#: libs/ardour/ladspa_plugin.cc:98
+#: libs/ardour/ladspa_plugin.cc:99
msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:328
+#: libs/ardour/ladspa_plugin.cc:329
msgid ""
"illegal parameter number used with plugin \"%1\". This mayindicate a change "
"in the plugin design, and presets may beinvalid"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:429
+#: libs/ardour/ladspa_plugin.cc:430
msgid "Bad node sent to LadspaPlugin::set_state"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:442
+#: libs/ardour/ladspa_plugin.cc:443
msgid "LADSPA: no ladspa port number"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:448
+#: libs/ardour/ladspa_plugin.cc:449
msgid "LADSPA: no ladspa port data"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:497
+#: libs/ardour/ladspa_plugin.cc:498
msgid ""
"LADSPA LadspaPlugin MIDI control specification for port %1 is incomplete, so "
"it has been ignored"
msgstr ""
-#: libs/ardour/location.cc:268
+#: libs/ardour/location.cc:269
msgid "incorrect XML node passed to Location::set_state"
msgstr ""
-#: libs/ardour/location.cc:275
+#: libs/ardour/location.cc:276
msgid "XML node for Location has no name information"
msgstr "il nodo XML per la Location non ha informazioni sul nome"
-#: libs/ardour/location.cc:282
+#: libs/ardour/location.cc:283
msgid "XML node for Location has no start information"
msgstr "il nodo XML per la Location non ha informazioni sull'inizio"
-#: libs/ardour/location.cc:293
+#: libs/ardour/location.cc:294
msgid "XML node for Location has no end information"
msgstr "il nodo XML per la Location non ha informazioni sulla fine"
-#: libs/ardour/location.cc:302
+#: libs/ardour/location.cc:303
msgid "XML node for Location has no flags information"
msgstr "il nodo XML per la Location non ha informazioni sui flags"
-#: libs/ardour/location.cc:390
+#: libs/ardour/location.cc:391
msgid "Locations: attempt to use unknown location as selected location"
msgstr ""
-#: libs/ardour/location.cc:417 libs/ardour/playlist.cc:1187
+#: libs/ardour/location.cc:418 libs/ardour/playlist.cc:1187
msgid "clear"
msgstr "pulisci"
-#: libs/ardour/location.cc:442
+#: libs/ardour/location.cc:443
msgid "clear markers"
msgstr ""
-#: libs/ardour/location.cc:470
+#: libs/ardour/location.cc:471
msgid "clear ranges"
msgstr ""
-#: libs/ardour/location.cc:488
+#: libs/ardour/location.cc:489
msgid "add"
msgstr ""
-#: libs/ardour/location.cc:526
+#: libs/ardour/location.cc:527
msgid "remove"
msgstr "rimuovi"
-#: libs/ardour/location.cc:566
+#: libs/ardour/location.cc:567
msgid "incorrect XML mode passed to Locations::set_state"
msgstr ""
-#: libs/ardour/mtc_slave.cc:195
+#: libs/ardour/mtc_slave.cc:196
msgid "MTC Slave: atomic read of current time failed, sleeping!"
msgstr ""
-#: libs/ardour/named_selection.cc:76
+#: libs/ardour/named_selection.cc:77
msgid "Chunk %1 uses an unknown playlist \"%2\""
msgstr "Lo spezzone %1 usa una playlist sconosciuta \"%2\""
-#: libs/ardour/named_selection.cc:79
+#: libs/ardour/named_selection.cc:80
msgid "Chunk %1 contains misformed playlist information"
msgstr "Lo spezzone %1 contiene informazioni sulla playlist mal formate"
@@ -1060,63 +1060,63 @@ msgstr "Playlist: impossibile creare la Regione dal file di stato"
msgid "nudged"
msgstr "spostato"
-#: libs/ardour/playlist_factory.cc:26 libs/ardour/playlist_factory.cc:41
+#: libs/ardour/playlist_factory.cc:49 libs/ardour/playlist_factory.cc:64
msgid ""
"programming error: Playlist::createRegion called with unknown Region type"
msgstr ""
-#: libs/ardour/playlist_factory.cc:63
+#: libs/ardour/playlist_factory.cc:86
msgid ""
"programming error: Playlist::copyPlaylist called with unknown Playlist type"
msgstr ""
-#: libs/ardour/plugin.cc:327
+#: libs/ardour/plugin.cc:328
msgid "Could not locate HOME. Preset not saved."
msgstr "impossibile localizzare HOME. Preset non salvato."
-#: libs/ardour/plugin.cc:337 libs/ardour/plugin.cc:343
+#: libs/ardour/plugin.cc:338 libs/ardour/plugin.cc:344
msgid "Could not create %1. Preset not saved. (%2)"
msgstr "Impossibile creare %1 . Preset non salvato. (%2)"
-#: libs/ardour/plugin.cc:348
+#: libs/ardour/plugin.cc:349
msgid "Error saving presets file %1."
msgstr "Errore nel salvare il file di preset %1."
-#: libs/ardour/plugin_manager.cc:193
+#: libs/ardour/plugin_manager.cc:194
#, fuzzy
msgid "Could not parse rdf file: %1"
msgstr "IO: impossibile registrare la porta %1"
-#: libs/ardour/plugin_manager.cc:234
+#: libs/ardour/plugin_manager.cc:235
msgid "LADSPA: cannot load module \"%1\" (%2)"
msgstr "LADSPA: impossibile caricare il modulo \"%1\" (%2)"
-#: libs/ardour/plugin_manager.cc:241
+#: libs/ardour/plugin_manager.cc:242
msgid "LADSPA: module \"%1\" has no descriptor function."
msgstr "LADSPA: il modulo \"%1\" non ha alcuna funzione descriptor."
-#: libs/ardour/plugin_manager.cc:296
+#: libs/ardour/plugin_manager.cc:297
#, fuzzy
msgid "VST: cannot load module from \"%1\""
msgstr "LADPSA: impossibile caricare il modulo da \"%1\""
-#: libs/ardour/plugin_manager.cc:301
+#: libs/ardour/plugin_manager.cc:302
msgid "You asked ardour to not use any VST plugins"
msgstr ""
-#: libs/ardour/plugin_manager.cc:304
+#: libs/ardour/plugin_manager.cc:305
msgid "This version of ardour has no support for VST plugins"
msgstr ""
-#: libs/ardour/plugin_manager.cc:311
+#: libs/ardour/plugin_manager.cc:312
msgid "LADSPA: cannot load module from \"%1\""
msgstr "LADPSA: impossibile caricare il modulo da \"%1\""
-#: libs/ardour/plugin_manager.cc:373 libs/ardour/plugin_manager.cc:385
+#: libs/ardour/plugin_manager.cc:374 libs/ardour/plugin_manager.cc:386
msgid "Unknown"
msgstr ""
-#: libs/ardour/plugin_manager.cc:463
+#: libs/ardour/plugin_manager.cc:464
msgid ""
"VST plugin %1 does not support processReplacing, and so cannot be used in "
"ardour at this time"
@@ -1131,11 +1131,11 @@ msgstr "impossibile accedere al file di sessione recente %1 (%2)"
msgid "programming error: unknown Redirect type in Redirect::Clone!\n"
msgstr ""
-#: libs/ardour/redirect.cc:102 libs/ardour/utils.cc:202
+#: libs/ardour/redirect.cc:102 libs/ardour/utils.cc:203
msgid "pre"
msgstr ""
-#: libs/ardour/redirect.cc:104 libs/ardour/utils.cc:205
+#: libs/ardour/redirect.cc:104 libs/ardour/utils.cc:206
#, fuzzy
msgid "post"
msgstr "incolla"
@@ -1190,11 +1190,11 @@ msgstr ""
msgid "active_changed"
msgstr "livello cambiato"
-#: libs/ardour/region.cc:884
+#: libs/ardour/region.cc:885
msgid "Session: XMLNode describing a Region is incomplete (no id)"
msgstr ""
-#: libs/ardour/region.cc:891
+#: libs/ardour/region.cc:892
msgid "Session: XMLNode describing a Region is incomplete (no name)"
msgstr ""
@@ -1248,7 +1248,7 @@ msgid ""
"MIDI mute control specification for %1 is incomplete, so it has been ignored"
msgstr ""
-#: libs/ardour/send.cc:98
+#: libs/ardour/send.cc:99
msgid "XML node describing a send is missing a Redirect node"
msgstr ""
@@ -1394,11 +1394,11 @@ msgstr ""
msgid "programming error: unknown type of Redirect deleted!"
msgstr ""
-#: libs/ardour/session.cc:3634
+#: libs/ardour/session.cc:3636
msgid "too many bounced versions of playlist \"%1\""
msgstr ""
-#: libs/ardour/session.cc:3647
+#: libs/ardour/session.cc:3649
msgid "cannot create new audio file \"%1\" for %2"
msgstr "impossibile creare un nuovo file audio \"%1\" per %2"
@@ -1431,19 +1431,19 @@ msgstr ""
msgid "Butler write-behind failure on dstream %1"
msgstr ""
-#: libs/ardour/session_click.cc:157
+#: libs/ardour/session_click.cc:158
msgid "cannot open click soundfile %1 (%2)"
msgstr "impossibile accedere al file audio per il click %1 (%2)"
-#: libs/ardour/session_click.cc:166
+#: libs/ardour/session_click.cc:167
msgid "cannot read data from click soundfile"
msgstr "impossibile leggere dati dal file audio per il click"
-#: libs/ardour/session_click.cc:191
+#: libs/ardour/session_click.cc:192
msgid "cannot open click emphasis soundfile %1 (%2)"
msgstr "impossibile accedere al file audio di enfasi per il click %1 (%2)"
-#: libs/ardour/session_click.cc:199
+#: libs/ardour/session_click.cc:200
msgid "cannot read data from click emphasis soundfile"
msgstr "impossibile leggere dati dal file audio di enfasi per il click"
@@ -1547,168 +1547,168 @@ msgstr ""
msgid "Session: error in no roll for %1"
msgstr ""
-#: libs/ardour/session_state.cc:100
+#: libs/ardour/session_state.cc:101
#, fuzzy
msgid "Could not use path %1 (%s)"
msgstr "impossibile controllare il percorso %1 (%2)"
-#: libs/ardour/session_state.cc:128
+#: libs/ardour/session_state.cc:129
msgid "end"
msgstr ""
-#: libs/ardour/session_state.cc:129
+#: libs/ardour/session_state.cc:130
#, fuzzy
msgid "start"
msgstr "separa"
-#: libs/ardour/session_state.cc:501
+#: libs/ardour/session_state.cc:502
msgid "Session: cannot create session dir \"%1\" (%2)"
msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)"
-#: libs/ardour/session_state.cc:512
+#: libs/ardour/session_state.cc:513
#, fuzzy
msgid "Session: cannot create session peakfile dir \"%1\" (%2)"
msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)"
-#: libs/ardour/session_state.cc:521
+#: libs/ardour/session_state.cc:522
msgid "Session: cannot create session sounds dir \"%1\" (%2)"
msgstr ""
"Sessione: impossibile creare la cartella sounds per la sessione \"%1\" (%2)"
-#: libs/ardour/session_state.cc:530
+#: libs/ardour/session_state.cc:531
#, fuzzy
msgid "Session: cannot create session tape dir \"%1\" (%2)"
msgstr "Sessione: impossibile creare la cartella per la sessione \"%1\" (%2)"
-#: libs/ardour/session_state.cc:539
+#: libs/ardour/session_state.cc:540
#, fuzzy
msgid "Session: cannot create session dead sounds dir \"%1\" (%2)"
msgstr ""
"Sessione: impossibile creare la cartella sounds per la sessione \"%1\" (%2)"
-#: libs/ardour/session_state.cc:548
+#: libs/ardour/session_state.cc:549
msgid "Session: cannot create session automation dir \"%1\" (%2)"
msgstr ""
"Sessione: impossibile creare la cartella automation per la sessione \"%1\" (%"
"2)"
-#: libs/ardour/session_state.cc:579
+#: libs/ardour/session_state.cc:580
#, fuzzy
msgid "Could not open %1 for writing mix template"
msgstr "Impossibile accedere a %1 per scrivere il modello di mixaggio"
-#: libs/ardour/session_state.cc:585
+#: libs/ardour/session_state.cc:586
#, fuzzy
msgid "Could not open mix template %1 for reading"
msgstr "Impossibile aprire il modello di mixaggio %1 per leggere"
-#: libs/ardour/session_state.cc:592
+#: libs/ardour/session_state.cc:593
msgid "Session already exists. Not overwriting"
msgstr "La sessione esiste già. Non sovrascrivo"
-#: libs/ardour/session_state.cc:635
+#: libs/ardour/session_state.cc:636
msgid "Session: could not load diskstream via XML state"
msgstr ""
-#: libs/ardour/session_state.cc:684
+#: libs/ardour/session_state.cc:685
msgid "could not backup old state file, current state not saved."
msgstr ""
"impossibile fare copia di sicurezza del file di stato, stato attuale non "
"salvato"
-#: libs/ardour/session_state.cc:697
+#: libs/ardour/session_state.cc:698
#, fuzzy
msgid "state could not be saved to %1"
msgstr "stato non salvato"
-#: libs/ardour/session_state.cc:704
+#: libs/ardour/session_state.cc:705
#, fuzzy
msgid "could not remove corrupt state file %1"
msgstr "IO: impossibile registrare la porta %1"
-#: libs/ardour/session_state.cc:708
+#: libs/ardour/session_state.cc:709
#, fuzzy
msgid "could not restore state file from backup %1"
msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)"
-#: libs/ardour/session_state.cc:777
+#: libs/ardour/session_state.cc:778
msgid "%1: session state information file \"%2\" doesn't exist!"
msgstr ""
"%1: il file di informazioni sullo stato della sessione \"%2\" non esiste!"
-#: libs/ardour/session_state.cc:788
+#: libs/ardour/session_state.cc:789
#, fuzzy
msgid "Could not understand ardour file %1"
msgstr "IO: impossibile registrare la porta %1"
-#: libs/ardour/session_state.cc:1492
+#: libs/ardour/session_state.cc:1493
msgid "programming error: Session: incorrect XML node sent to set_state()"
msgstr ""
-#: libs/ardour/session_state.cc:1538
+#: libs/ardour/session_state.cc:1539
msgid "Session: XML state has no options section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione option"
-#: libs/ardour/session_state.cc:1543
+#: libs/ardour/session_state.cc:1544
msgid "Session: XML state has no sources section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione sources"
-#: libs/ardour/session_state.cc:1550
+#: libs/ardour/session_state.cc:1551
msgid "Session: XML state has no Regions section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione Regions"
-#: libs/ardour/session_state.cc:1557
+#: libs/ardour/session_state.cc:1558
msgid "Session: XML state has no playlists section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione playlist"
-#: libs/ardour/session_state.cc:1576
+#: libs/ardour/session_state.cc:1577
msgid "Session: XML state has no diskstreams section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione diskstream"
-#: libs/ardour/session_state.cc:1583
+#: libs/ardour/session_state.cc:1584
msgid "Session: XML state has no connections section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione connections"
-#: libs/ardour/session_state.cc:1590
+#: libs/ardour/session_state.cc:1591
msgid "Session: XML state has no locations section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione locations"
-#: libs/ardour/session_state.cc:1623
+#: libs/ardour/session_state.cc:1624
msgid "Session: XML state has no edit groups section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione edit groups"
-#: libs/ardour/session_state.cc:1630
+#: libs/ardour/session_state.cc:1631
msgid "Session: XML state has no mix groups section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione mix groups"
-#: libs/ardour/session_state.cc:1637
+#: libs/ardour/session_state.cc:1638
msgid "Session: XML state has no Tempo Map section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione Tempo Map"
-#: libs/ardour/session_state.cc:1644
+#: libs/ardour/session_state.cc:1645
msgid "Session: XML state has no routes section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione routes"
-#: libs/ardour/session_state.cc:1651
+#: libs/ardour/session_state.cc:1652
#, fuzzy
msgid "Session: XML state has no click section"
msgstr "Sessione: il file di stato XML non ha alcuna sezione click"
-#: libs/ardour/session_state.cc:1696
+#: libs/ardour/session_state.cc:1697
msgid "Session: cannot create Route from XML description."
msgstr "Sessione: impossibile creare Route dalla descrizione XML"
-#: libs/ardour/session_state.cc:1734
+#: libs/ardour/session_state.cc:1735
msgid "Session: cannot create Region from XML description."
msgstr "Sessione: impossibile creare regione dalla descrizione XML"
-#: libs/ardour/session_state.cc:1763
+#: libs/ardour/session_state.cc:1764
#, fuzzy
msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)"
msgstr ""
"Sessione: il nodo XML descrivente una Regione è incompleto (nessun source)"
-#: libs/ardour/session_state.cc:1771 libs/ardour/session_state.cc:1791
+#: libs/ardour/session_state.cc:1772 libs/ardour/session_state.cc:1792
#, fuzzy
msgid ""
"Session: XMLNode describing a AudioRegion references an unknown source id =%1"
@@ -1716,7 +1716,7 @@ msgstr ""
"Sessione: il nodo XML descrivente una Regione fa riferimento ad un source "
"con id sconosciuto =%1"
-#: libs/ardour/session_state.cc:1777 libs/ardour/session_state.cc:1797
+#: libs/ardour/session_state.cc:1778 libs/ardour/session_state.cc:1798
#, fuzzy
msgid ""
"Session: XMLNode describing a AudioRegion references a non-audio source id =%"
@@ -1725,109 +1725,109 @@ msgstr ""
"Sessione: il nodo XML descrivente una Regione fa riferimento ad un source "
"con id sconosciuto =%1"
-#: libs/ardour/session_state.cc:1867
+#: libs/ardour/session_state.cc:1868
msgid "Session: cannot create Source from XML description."
msgstr "Sessione: impossibile creare Source dalla descrizione XML"
-#: libs/ardour/session_state.cc:1888
+#: libs/ardour/session_state.cc:1889
#, fuzzy
msgid ""
"Found a sound file that cannot be used by Ardour. Talk to the progammers."
msgstr "E' stato trovato un file audio che non può essere usato da Ardour."
-#: libs/ardour/session_state.cc:1912
+#: libs/ardour/session_state.cc:1913
msgid "Could not create mix templates directory \"%1\" (%2)"
msgstr "Impossibile creare la cartella per i modelli di mixaggio \"%1\" (%2)"
-#: libs/ardour/session_state.cc:1926
+#: libs/ardour/session_state.cc:1927
msgid "Template \"%1\" already exists - new version not created"
msgstr "Il modello \"%1\" esiste già - non è stata creata una nuova versione"
-#: libs/ardour/session_state.cc:1933
+#: libs/ardour/session_state.cc:1934
msgid "mix template not saved"
msgstr "modello di mixaggio non salvato"
-#: libs/ardour/session_state.cc:1993
+#: libs/ardour/session_state.cc:1994
msgid "cannot create session directory \"%1\"; ignored"
msgstr "impossibile creare la cartella per la sessione %1; ignorato"
-#: libs/ardour/session_state.cc:2006
+#: libs/ardour/session_state.cc:2007
msgid "cannot create sounds directory \"%1\"; ignored"
msgstr "impossibile creare la cartella sounds \"%1\"; ignorato"
-#: libs/ardour/session_state.cc:2017
+#: libs/ardour/session_state.cc:2018
#, fuzzy
msgid "cannot create dead sounds directory \"%1\"; ignored"
msgstr "impossibile creare la cartella sounds \"%1\"; ignorato"
-#: libs/ardour/session_state.cc:2028
+#: libs/ardour/session_state.cc:2029
#, fuzzy
msgid "cannot create peak file directory \"%1\"; ignored"
msgstr "impossibile creare la cartella per la sessione %1; ignorato"
-#: libs/ardour/session_state.cc:2167 libs/ardour/session_state.cc:2188
+#: libs/ardour/session_state.cc:2168 libs/ardour/session_state.cc:2189
msgid "Session: cannot create Playlist from XML description."
msgstr "Sessione: impossibile creare Playlist dalla descrizione XML"
-#: libs/ardour/session_state.cc:2227
+#: libs/ardour/session_state.cc:2228
msgid "Session: cannot create Named Selection from XML description."
msgstr "Sessione: impossibile creare Named Selection dalla descizione XML"
-#: libs/ardour/session_state.cc:2359
+#: libs/ardour/session_state.cc:2360
msgid "Unknown node \"%1\" found in Connections list from state file"
msgstr "Nodo sconosciuto \"%1\" trovato in Connections list dal file di stato"
-#: libs/ardour/session_state.cc:3196
+#: libs/ardour/session_state.cc:3197
#, fuzzy
msgid "cannot remove dead sound file %1 (%2)"
msgstr "impossibile accedere al file audio per il click %1 (%2)"
-#: libs/ardour/session_time.cc:375
+#: libs/ardour/session_time.cc:374
msgid "Unknown JACK transport state %1 in sync callback"
msgstr ""
-#: libs/ardour/session_timefx.cc:76
+#: libs/ardour/session_timefx.cc:77
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"
-#: libs/ardour/session_timefx.cc:87
+#: libs/ardour/session_timefx.cc:88
msgid "tempoize: error creating new audio file %1 (%2)"
msgstr "tempoize: errore nel creare un nuovo file audio %1 (%2)"
-#: libs/ardour/session_timefx.cc:113
+#: libs/ardour/session_timefx.cc:114
msgid "tempoize: error reading data from %1"
msgstr "tempoize: errore nel leggere dati da %1"
-#: libs/ardour/session_timefx.cc:126 libs/ardour/session_timefx.cc:138
+#: libs/ardour/session_timefx.cc:127 libs/ardour/session_timefx.cc:139
msgid "error writing tempo-adjusted data to %1"
msgstr ""
-#: libs/ardour/session_timefx.cc:144
+#: libs/ardour/session_timefx.cc:145
msgid "timefx code failure. please notify ardour-developers."
msgstr ""
-#: libs/ardour/session_transport.cc:116
+#: libs/ardour/session_transport.cc:117
msgid "Cannot loop - no loop range defined"
msgstr ""
-#: libs/ardour/session_transport.cc:478
+#: libs/ardour/session_transport.cc:479
msgid ""
"Seamless looping cannot be supported while Ardour is using JACK transport.\n"
"Recommend changing the configured options"
msgstr ""
-#: libs/ardour/session_transport.cc:754
+#: libs/ardour/session_transport.cc:755
msgid ""
"Global varispeed cannot be supported while Ardour is connected to JACK "
"transport control"
msgstr ""
-#: libs/ardour/session_transport.cc:954
+#: libs/ardour/session_transport.cc:955
msgid "please stop the transport before adjusting slave settings"
msgstr ""
-#: libs/ardour/session_transport.cc:990
+#: libs/ardour/session_transport.cc:991
msgid "No MTC port defined: MTC slaving is impossible."
msgstr ""
@@ -1915,22 +1915,22 @@ msgstr ""
msgid "Big-endian (Mac)"
msgstr ""
-#: libs/ardour/sndfilesource.cc:145
+#: libs/ardour/sndfilesource.cc:147
msgid "FileSource: cannot get host information for BWF header (%1)"
msgstr "FileSource: impossibile ottenere info sull'host dall'header BWF (%1)"
-#: libs/ardour/sndfilesource.cc:167
+#: libs/ardour/sndfilesource.cc:169
msgid ""
"cannot set broadcast info for audio file %1 (%2); dropping broadcast info "
"for this file"
msgstr ""
-#: libs/ardour/sndfilesource.cc:223
+#: libs/ardour/sndfilesource.cc:220
#, fuzzy
msgid "SndFileSource: cannot open file \"%1\" for %2 (%3)"
msgstr "SndFileSource: impossibile accedere al file \"%1\" (%2)"
-#: libs/ardour/sndfilesource.cc:229
+#: libs/ardour/sndfilesource.cc:226
msgid ""
"SndFileSource: file only contains %1 channels; %2 is invalid as a channel "
"number"
@@ -1938,169 +1938,169 @@ msgstr ""
"SndFileSource: il file contiene solo %1 canali; %2 non è valido come numero "
"di canale"
-#: libs/ardour/sndfilesource.cc:306
+#: libs/ardour/sndfilesource.cc:327
msgid "SndFileSource: could not seek to frame %1 within %2 (%3)"
msgstr ""
-#: libs/ardour/sndfilesource.cc:357
+#: libs/ardour/sndfilesource.cc:378
#, fuzzy
msgid "programming error: %1 %2"
msgstr "errore di programmazione: %1"
-#: libs/ardour/sndfilesource.cc:457
+#: libs/ardour/sndfilesource.cc:487 libs/ardour/sndfilesource.cc:533
msgid ""
"cannot set broadcast info for audio file %1; Dropping broadcast info for "
"this file"
msgstr ""
-#: libs/ardour/sndfilesource.cc:499
+#: libs/ardour/sndfilesource.cc:544
msgid "%1: cannot seek to %2"
msgstr ""
-#: libs/ardour/state_manager.cc:46
+#: libs/ardour/state_manager.cc:47
#, fuzzy
msgid "cleared history"
msgstr "pulito"
-#: libs/ardour/state_manager.cc:59
+#: libs/ardour/state_manager.cc:60
msgid ""
"programming error: illegal state ID (%1) passed to StateManager::set_state() "
"(range = 0-%2)"
msgstr ""
-#: libs/ardour/stateful.cc:100
+#: libs/ardour/stateful.cc:102
#, fuzzy
msgid "Error: could not write %1"
msgstr "Esportazione: impossibile scrivere dati sul file di output (%1)"
-#: libs/ardour/stateful.cc:114
+#: libs/ardour/stateful.cc:116
msgid "Could not understand XML file %1"
msgstr ""
-#: libs/ardour/tempo.cc:66
+#: libs/ardour/tempo.cc:67
msgid "TempoSection XML node has no \"start\" property"
msgstr ""
-#: libs/ardour/tempo.cc:74
+#: libs/ardour/tempo.cc:75
msgid "TempoSection XML node has an illegal \"start\" value"
msgstr ""
-#: libs/ardour/tempo.cc:81
+#: libs/ardour/tempo.cc:82
msgid "TempoSection XML node has no \"beats-per-minute\" property"
msgstr ""
-#: libs/ardour/tempo.cc:86
+#: libs/ardour/tempo.cc:87
msgid "TempoSection XML node has an illegal \"beats_per_minute\" value"
msgstr ""
-#: libs/ardour/tempo.cc:91
+#: libs/ardour/tempo.cc:92
msgid "TempoSection XML node has no \"movable\" property"
msgstr ""
-#: libs/ardour/tempo.cc:130
+#: libs/ardour/tempo.cc:131
msgid "MeterSection XML node has no \"start\" property"
msgstr ""
-#: libs/ardour/tempo.cc:138
+#: libs/ardour/tempo.cc:139
msgid "MeterSection XML node has an illegal \"start\" value"
msgstr ""
-#: libs/ardour/tempo.cc:145
+#: libs/ardour/tempo.cc:146
msgid "MeterSection XML node has no \"beats-per-bar\" property"
msgstr ""
-#: libs/ardour/tempo.cc:150
+#: libs/ardour/tempo.cc:151
msgid "MeterSection XML node has an illegal \"beats-per-bar\" value"
msgstr ""
-#: libs/ardour/tempo.cc:155
+#: libs/ardour/tempo.cc:156
msgid "MeterSection XML node has no \"note-type\" property"
msgstr ""
-#: libs/ardour/tempo.cc:160
+#: libs/ardour/tempo.cc:161
msgid "MeterSection XML node has an illegal \"note-type\" value"
msgstr ""
-#: libs/ardour/tempo.cc:165
+#: libs/ardour/tempo.cc:166
msgid "MeterSection XML node has no \"movable\" property"
msgstr ""
-#: libs/ardour/tempo.cc:258
+#: libs/ardour/tempo.cc:259
msgid "move metric"
msgstr ""
-#: libs/ardour/tempo.cc:329
+#: libs/ardour/tempo.cc:330
msgid "metric removed"
msgstr ""
-#: libs/ardour/tempo.cc:372
+#: libs/ardour/tempo.cc:373
#, fuzzy
msgid "add tempo"
msgstr "aggiungi regione"
-#: libs/ardour/tempo.cc:401
+#: libs/ardour/tempo.cc:402
#, fuzzy
msgid "replace tempo"
msgstr "sostituisci la regione"
-#: libs/ardour/tempo.cc:434
+#: libs/ardour/tempo.cc:435
msgid "add meter"
msgstr ""
-#: libs/ardour/tempo.cc:462
+#: libs/ardour/tempo.cc:463
#, fuzzy
msgid "replaced meter"
msgstr "sostituisci la regione"
-#: libs/ardour/tempo.cc:482 libs/ardour/tempo.cc:498
+#: libs/ardour/tempo.cc:483 libs/ardour/tempo.cc:499
msgid "programming error: no tempo section in tempo map!"
msgstr ""
-#: libs/ardour/tempo.cc:537
+#: libs/ardour/tempo.cc:538
msgid "programming error: unhandled MetricSection type"
msgstr ""
-#: libs/ardour/tempo.cc:1225 libs/ardour/tempo.cc:1237
+#: libs/ardour/tempo.cc:1226 libs/ardour/tempo.cc:1238
msgid "Tempo map: could not set new state, restoring old one."
msgstr ""
-#: libs/ardour/tempo.cc:1261
+#: libs/ardour/tempo.cc:1262
msgid "load XML data"
msgstr ""
-#: libs/ardour/utils.cc:245
+#: libs/ardour/utils.cc:246
#, fuzzy
msgid "illegal or badly-formed string used for path (%1)"
msgstr "il percorso indicato per il RAID è non valido o malformato"
-#: libs/ardour/utils.cc:250
+#: libs/ardour/utils.cc:251
#, fuzzy
msgid "path (%1) is ambiguous"
msgstr "il percorso indicato per la ricerca RAID è ambiguo"
-#: libs/ardour/vst_plugin.cc:186
+#: libs/ardour/vst_plugin.cc:187
#, fuzzy
msgid "cannot create VST chunk directory: %1"
msgstr "impossibile creare la cartella sounds \"%1\"; ignorato"
-#: libs/ardour/vst_plugin.cc:194
+#: libs/ardour/vst_plugin.cc:195
#, fuzzy
msgid "cannot check VST chunk directory: %1"
msgstr "impossibile determinare la cartella di lavoro corrente (%1)"
-#: libs/ardour/vst_plugin.cc:201
+#: libs/ardour/vst_plugin.cc:202
msgid "%1 exists but is not a directory"
msgstr ""
-#: libs/ardour/vst_plugin.cc:239
+#: libs/ardour/vst_plugin.cc:240
msgid "Bad node sent to VSTPlugin::set_state"
msgstr ""
-#: libs/ardour/vst_plugin.cc:342 libs/ardour/vst_plugin.cc:353
+#: libs/ardour/vst_plugin.cc:343 libs/ardour/vst_plugin.cc:354
msgid "no support for presets using chunks at this time"
msgstr ""
-#: libs/ardour/coreaudio_source.cc:98
+#: libs/ardour/coreaudiosource.cc:97
#, fuzzy
msgid ""
"CoreAudioSource: file only contains %1 channels; %2 is invalid as a channel "
@@ -2109,7 +2109,7 @@ msgstr ""
"SndFileSource: il file contiene solo %1 canali; %2 non è valido come numero "
"di canale"
-#: libs/ardour/coreaudio_source.cc:163
+#: libs/ardour/coreaudiosource.cc:162
msgid "CoreAudioSource: could not seek to frame %1 within %2 (%3)"
msgstr ""
diff --git a/libs/ardour/po/ru_RU.po b/libs/ardour/po/ru_RU.po
index be5221722a..aeeb1bf547 100644
--- a/libs/ardour/po/ru_RU.po
+++ b/libs/ardour/po/ru_RU.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libardour 0.716.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-06-20 16:23-0400\n"
+"POT-Creation-Date: 2006-06-29 21:03-0400\n"
"PO-Revision-Date: 2004-03-31 00:55+0300\n"
"Last-Translator: Igor Blinov pitstop@nm.ru\n"
"Language-Team: Russian\n"
@@ -14,245 +14,245 @@ msgstr ""
"Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8bit\n"
-#: libs/ardour/audio_diskstream.cc:336
+#: libs/ardour/audio_diskstream.cc:337
msgid "AudioDiskstream: Session doesn't know about a Playlist called \"%1\""
msgstr ""
-#: libs/ardour/audio_diskstream.cc:341
+#: libs/ardour/audio_diskstream.cc:342
msgid "AudioDiskstream: Playlist \"%1\" isn't an audio playlist"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:432
+#: libs/ardour/audio_diskstream.cc:433
msgid "AudioDiskstream %1: there is no existing playlist to make a copy of!"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:1113 libs/ardour/audio_diskstream.cc:1124
+#: libs/ardour/audio_diskstream.cc:1114 libs/ardour/audio_diskstream.cc:1125
msgid ""
"AudioDiskstream %1: when refilling, cannot read %2 from playlist at frame %3"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:1253
+#: libs/ardour/audio_diskstream.cc:1254
msgid "AudioDiskstream %1: cannot read %2 from playlist at frame %3"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:1620 libs/ardour/audio_diskstream.cc:1637
+#: libs/ardour/audio_diskstream.cc:1621 libs/ardour/audio_diskstream.cc:1638
msgid "AudioDiskstream %1: cannot write to disk"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:1697
+#: libs/ardour/audio_diskstream.cc:1698
msgid "AudioDiskstream \"%1\": cannot flush captured data to disk!"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:1794
+#: libs/ardour/audio_diskstream.cc:1796
msgid "%1: could not create region for complete audio file"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:1817
+#: libs/ardour/audio_diskstream.cc:1819
msgid "AudioDiskstream: could not create region for captured audio!"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:1872
+#: libs/ardour/audio_diskstream.cc:1874
#, fuzzy
msgid "programmer error: %1"
msgstr "ÏÛÉÂËÁ ÐÒÏÇÒÁÍÍÙ: "
-#: libs/ardour/audio_diskstream.cc:2144
+#: libs/ardour/audio_diskstream.cc:2146
msgid "AudioDiskstream: channel %1 out of range"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:2169
+#: libs/ardour/audio_diskstream.cc:2171
msgid "%1:%2 new capture file not initialized correctly"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:2402
+#: libs/ardour/audio_diskstream.cc:2404
msgid "Location \"%1\" not valid for track loop (start >= end)"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:2483
+#: libs/ardour/audio_diskstream.cc:2485
msgid "%1: cannot restore pending capture source file %2"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:2505
+#: libs/ardour/audio_diskstream.cc:2507
msgid "%1: incorrect number of pending sources listed - ignoring them all"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:2521
+#: libs/ardour/audio_diskstream.cc:2523
msgid "%1: cannot create whole-file region from pending capture sources"
msgstr ""
-#: libs/ardour/audio_diskstream.cc:2533
+#: libs/ardour/audio_diskstream.cc:2535
msgid "%1: cannot create region from pending capture sources"
msgstr ""
-#: libs/ardour/audio_library.cc:91
+#: libs/ardour/audio_library.cc:92
msgid "channels"
msgstr ""
-#: libs/ardour/audio_library.cc:92
+#: libs/ardour/audio_library.cc:93
#, fuzzy
msgid "samplerate"
msgstr "ÒÁÚÄÅÌÉÔØ"
-#: libs/ardour/audio_library.cc:93
+#: libs/ardour/audio_library.cc:94
msgid "resolution"
msgstr ""
-#: libs/ardour/audio_library.cc:94
+#: libs/ardour/audio_library.cc:95
msgid "format"
msgstr ""
-#: libs/ardour/audio_library.cc:101
+#: libs/ardour/audio_library.cc:102
msgid "Could not open %1. Audio Library not saved"
msgstr ""
-#: libs/ardour/audio_playlist.cc:52 libs/ardour/audio_playlist.cc:62
-#: libs/ardour/audio_playlist.cc:73 libs/ardour/audio_playlist.cc:120
+#: libs/ardour/audio_playlist.cc:53 libs/ardour/audio_playlist.cc:63
+#: libs/ardour/audio_playlist.cc:74 libs/ardour/audio_playlist.cc:121
#: libs/ardour/insert.cc:76 libs/ardour/insert.cc:95 libs/ardour/insert.cc:120
-#: libs/ardour/insert.cc:838 libs/ardour/insert.cc:846 libs/ardour/send.cc:38
-#: libs/ardour/send.cc:52 libs/ardour/send.cc:61
-#: libs/ardour/session_state.cc:1620 libs/ardour/session_state.cc:1666
+#: libs/ardour/insert.cc:838 libs/ardour/insert.cc:846 libs/ardour/send.cc:39
+#: libs/ardour/send.cc:53 libs/ardour/send.cc:62
+#: libs/ardour/session_state.cc:1621 libs/ardour/session_state.cc:1667
msgid "initial state"
msgstr ""
-#: libs/ardour/audio_playlist.cc:274 libs/ardour/audio_playlist.cc:768
+#: libs/ardour/audio_playlist.cc:275 libs/ardour/audio_playlist.cc:769
msgid ""
"programming error: non-audio Region passed to remove_overlap in audio "
"playlist"
msgstr ""
-#: libs/ardour/audio_playlist.cc:401
+#: libs/ardour/audio_playlist.cc:402
msgid ""
"programming error: non-audio Region tested for overlap in audio playlist"
msgstr ""
-#: libs/ardour/audio_playlist.cc:877
+#: libs/ardour/audio_playlist.cc:878
msgid "xfade change"
msgstr ""
-#: libs/ardour/audio_playlist.cc:932
+#: libs/ardour/audio_playlist.cc:933
msgid "region modified"
msgstr ""
-#: libs/ardour/audio_track.cc:132 libs/ardour/io.cc:1715
-#: libs/ardour/io.cc:1825
+#: libs/ardour/audio_track.cc:125 libs/ardour/io.cc:1716
+#: libs/ardour/io.cc:1826
msgid "Unknown connection \"%1\" listed for input of %2"
msgstr ""
-#: libs/ardour/audio_track.cc:134 libs/ardour/io.cc:1717
-#: libs/ardour/io.cc:1827
+#: libs/ardour/audio_track.cc:127 libs/ardour/io.cc:1718
+#: libs/ardour/io.cc:1828
msgid "in 1"
msgstr ""
-#: libs/ardour/audio_track.cc:135 libs/ardour/io.cc:1718
-#: libs/ardour/io.cc:1828
+#: libs/ardour/audio_track.cc:128 libs/ardour/io.cc:1719
+#: libs/ardour/io.cc:1829
msgid "No input connections available as a replacement"
msgstr ""
-#: libs/ardour/audio_track.cc:139 libs/ardour/io.cc:1722
-#: libs/ardour/io.cc:1832
+#: libs/ardour/audio_track.cc:132 libs/ardour/io.cc:1723
+#: libs/ardour/io.cc:1833
msgid "Connection %1 was not available - \"in 1\" used instead"
msgstr ""
-#: libs/ardour/audio_track.cc:148 libs/ardour/io.cc:1841
+#: libs/ardour/audio_track.cc:141 libs/ardour/io.cc:1842
msgid "improper input channel list in XML node (%1)"
msgstr ""
-#: libs/ardour/audio_track.cc:193 libs/ardour/audio_track.cc:206
+#: libs/ardour/audio_track.cc:186 libs/ardour/audio_track.cc:199
msgid "AudioTrack: diskstream \"%1\" not known by session"
msgstr ""
-#: libs/ardour/audio_track.cc:304
+#: libs/ardour/audio_track.cc:297
msgid ""
"MIDI rec_enable control specification for %1 is incomplete, so it has been "
"ignored"
msgstr ""
-#: libs/ardour/audio_track.cc:316
+#: libs/ardour/audio_track.cc:309
msgid "programming error: AudioTrack given state without diskstream!"
msgstr ""
-#: libs/ardour/audioengine.cc:149
+#: libs/ardour/audioengine.cc:144
msgid "cannot activate JACK client"
msgstr "ÎÅ ÕÄÁÌÏÓØ ÁËÔÉ×ÉÒÏ×ÁÔØ ËÌÉÅÎÔÁ JACK ÓÅÒ×ÅÒÁ"
-#: libs/ardour/audioengine.cc:400
+#: libs/ardour/audioengine.cc:395
msgid "register audio input port called before engine was started"
msgstr ""
-#: libs/ardour/audioengine.cc:431
+#: libs/ardour/audioengine.cc:426
msgid "register audio output port called before engine was started"
msgstr ""
-#: libs/ardour/audioengine.cc:492
+#: libs/ardour/audioengine.cc:487
msgid "connect called before engine was started"
msgstr ""
-#: libs/ardour/audioengine.cc:508
+#: libs/ardour/audioengine.cc:503
msgid "AudioEngine: cannot connect %1 (%2) to %3 (%4)"
msgstr ""
-#: libs/ardour/audioengine.cc:521 libs/ardour/audioengine.cc:550
+#: libs/ardour/audioengine.cc:516 libs/ardour/audioengine.cc:545
msgid "disconnect called before engine was started"
msgstr ""
-#: libs/ardour/audioengine.cc:608
+#: libs/ardour/audioengine.cc:603
msgid "get_port_by_name() called before engine was started"
msgstr ""
-#: libs/ardour/audioengine.cc:641
+#: libs/ardour/audioengine.cc:636
msgid "get_ports called before engine was started"
msgstr ""
-#: libs/ardour/audioengine.cc:716
+#: libs/ardour/audioengine.cc:711
msgid "get_nth_physical called before engine was started"
msgstr ""
-#: libs/ardour/audioengine.cc:744
+#: libs/ardour/audioengine.cc:739
msgid "get_port_total_latency() called with no JACK client connection"
msgstr ""
-#: libs/ardour/audioengine.cc:750
+#: libs/ardour/audioengine.cc:745
msgid "get_port_total_latency() called before engine was started"
msgstr ""
-#: libs/ardour/audioengine.cc:874
+#: libs/ardour/audioengine.cc:869
msgid "Unable to connect to JACK server"
msgstr ""
-#: libs/ardour/audioengine.cc:877
+#: libs/ardour/audioengine.cc:872
msgid "Could not connect to JACK server as \"%1\""
msgstr ""
-#: libs/ardour/audioengine.cc:882
+#: libs/ardour/audioengine.cc:877
msgid "JACK server started"
msgstr ""
-#: libs/ardour/audioengine.cc:916
+#: libs/ardour/audioengine.cc:911
msgid "cannot shutdown connection to JACK"
msgstr ""
-#: libs/ardour/audioengine.cc:941
+#: libs/ardour/audioengine.cc:936
msgid "failed to connect to JACK"
msgstr ""
-#: libs/ardour/audioengine.cc:957
+#: libs/ardour/audioengine.cc:952
msgid "could not reregister %1"
msgstr ""
-#: libs/ardour/audioengine.cc:1014
+#: libs/ardour/audioengine.cc:1009
msgid "could not reconnect %1 and %2 (err = %3)"
msgstr ""
-#: libs/ardour/audiofilesource.cc:444 libs/ardour/session_state.cc:3094
+#: libs/ardour/audiofilesource.cc:444 libs/ardour/session_state.cc:3095
msgid ""
"there are already 1000 files with names like %1; versioning discontinued"
msgstr ""
-#: libs/ardour/audiofilesource.cc:458 libs/ardour/session_state.cc:3108
+#: libs/ardour/audiofilesource.cc:458 libs/ardour/session_state.cc:3109
msgid "cannot rename audio file source from %1 to %2 (%3)"
msgstr ""
-#: libs/ardour/audiofilesource.cc:465 libs/ardour/session_state.cc:3123
+#: libs/ardour/audiofilesource.cc:465 libs/ardour/session_state.cc:3124
msgid "cannot remove peakfile %1 for %2 (%3)"
msgstr ""
@@ -278,21 +278,21 @@ msgstr ""
msgid "Filesource: cannot check for existing file (%1): %2"
msgstr ""
-#: libs/ardour/audiofilesource.cc:639 libs/ardour/insert.cc:525
-#: libs/ardour/sndfilesource.cc:111
+#: libs/ardour/audiofilesource.cc:636 libs/ardour/insert.cc:525
+#: libs/ardour/sndfilesource.cc:113
#, fuzzy
msgid "programming error: %1"
msgstr "ÏÛÉÂËÁ ÐÒÏÇÒÁÍÍÙ: "
-#: libs/ardour/audiofilesource.cc:644
+#: libs/ardour/audiofilesource.cc:641
msgid "cannot rename audio file for %1 to %2"
msgstr ""
-#: libs/ardour/audiofilter.cc:44
+#: libs/ardour/audiofilter.cc:45
msgid "audiofilter: error creating name for new audio file based on %1"
msgstr ""
-#: libs/ardour/audiofilter.cc:57
+#: libs/ardour/audiofilter.cc:58
msgid "audiofilter: error creating new audio file %1 (%2)"
msgstr ""
@@ -365,147 +365,147 @@ msgstr ""
msgid "%1: could not write peak file data (%2)"
msgstr ""
-#: libs/ardour/automation_event.cc:64 libs/ardour/location.cc:344
-#: libs/ardour/tempo.cc:225
+#: libs/ardour/automation_event.cc:65 libs/ardour/location.cc:345
+#: libs/ardour/tempo.cc:226
msgid "initial"
msgstr ""
-#: libs/ardour/automation_event.cc:231
+#: libs/ardour/automation_event.cc:232
msgid "cleared"
msgstr ""
-#: libs/ardour/automation_event.cc:403
+#: libs/ardour/automation_event.cc:404
msgid "added event"
msgstr ""
-#: libs/ardour/automation_event.cc:420
+#: libs/ardour/automation_event.cc:421
#, fuzzy
msgid "removed event"
msgstr "ÕÄÁÌÉÔØ ÏÂÌÁÓÔØ"
-#: libs/ardour/automation_event.cc:435
+#: libs/ardour/automation_event.cc:436
msgid "removed multiple events"
msgstr ""
-#: libs/ardour/automation_event.cc:466 libs/ardour/automation_event.cc:497
+#: libs/ardour/automation_event.cc:467 libs/ardour/automation_event.cc:498
#, fuzzy
msgid "removed range"
msgstr "ÕÄÁÌÉÔØ ÏÂÌÁÓÔØ"
-#: libs/ardour/automation_event.cc:527
+#: libs/ardour/automation_event.cc:528
msgid "event range adjusted"
msgstr ""
-#: libs/ardour/automation_event.cc:549
+#: libs/ardour/automation_event.cc:550
msgid "event adjusted"
msgstr ""
-#: libs/ardour/automation_event.cc:664 libs/ardour/automation_event.cc:769
+#: libs/ardour/automation_event.cc:665 libs/ardour/automation_event.cc:770
#: libs/ardour/panner.cc:1041
#, fuzzy
msgid "programming error:"
msgstr "ÏÛÉÂËÁ ÐÒÏÇÒÁÍÍÙ: "
-#: libs/ardour/automation_event.cc:1078
+#: libs/ardour/automation_event.cc:1079
msgid "cut/copy/clear"
msgstr ""
-#: libs/ardour/automation_event.cc:1111
+#: libs/ardour/automation_event.cc:1112
msgid "copy"
msgstr ""
-#: libs/ardour/automation_event.cc:1179 libs/ardour/playlist.cc:939
+#: libs/ardour/automation_event.cc:1180 libs/ardour/playlist.cc:939
msgid "paste"
msgstr "×ÓÔÁ×ÉÔØ"
-#: libs/ardour/automation_event.cc:1234
+#: libs/ardour/automation_event.cc:1235
msgid ""
"automation list: no x-coordinate stored for control point (point ignored)"
msgstr ""
-#: libs/ardour/automation_event.cc:1240
+#: libs/ardour/automation_event.cc:1241
msgid ""
"automation list: no y-coordinate stored for control point (point ignored)"
msgstr ""
-#: libs/ardour/configuration.cc:79
+#: libs/ardour/configuration.cc:80
#, fuzzy
msgid "loading system configuration file %1"
msgstr "Ardour: ÎÅ ÕÄÁÌÏÓØ ÐÒÏÞÉÔÁÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÐÒÏÇÒÁÍÍÙ \"%1\""
-#: libs/ardour/configuration.cc:82
+#: libs/ardour/configuration.cc:83
msgid "Ardour: cannot read system configuration file \"%1\""
msgstr "Ardour: ÎÅ ÕÄÁÌÏÓØ ÐÒÏÞÉÔÁÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÐÒÏÇÒÁÍÍÙ \"%1\""
-#: libs/ardour/configuration.cc:87
+#: libs/ardour/configuration.cc:88
msgid "Ardour: system configuration file \"%1\" not loaded successfully."
msgstr "Ardour: ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÐÒÏÇÒÁÍÍÙ \"%1\"."
-#: libs/ardour/configuration.cc:104
+#: libs/ardour/configuration.cc:105
#, fuzzy
msgid "loading user configuration file %1"
msgstr "Ardour: ÎÅ ÕÄÁÌÏÓØ ÐÒÏÞÉÔÁÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÐÏÌØÚÏ×ÁÔÅÌÑ \"%1\""
-#: libs/ardour/configuration.cc:107
+#: libs/ardour/configuration.cc:108
msgid "Ardour: cannot read configuration file \"%1\""
msgstr "Ardour: ÎÅ ÕÄÁÌÏÓØ ÐÒÏÞÉÔÁÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÐÏÌØÚÏ×ÁÔÅÌÑ \"%1\""
-#: libs/ardour/configuration.cc:112
+#: libs/ardour/configuration.cc:113
#, fuzzy
msgid "Ardour: user configuration file \"%1\" not loaded successfully."
msgstr "Ardour: ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÐÏÌØÚÏ×ÁÔÅÌÑ \"%1\"."
-#: libs/ardour/configuration.cc:136
+#: libs/ardour/configuration.cc:137
#, fuzzy
msgid "Config file %1 not saved"
msgstr "æÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ ÎÅ ÓÏÈÒÁΣÎ"
-#: libs/ardour/configuration.cc:209
+#: libs/ardour/configuration.cc:210
msgid "ill-formed MIDI port specification in ardour rcfile (ignored)"
msgstr ""
-#: libs/ardour/connection.cc:182
+#: libs/ardour/connection.cc:183
msgid "Node for Connection has no \"name\" property"
msgstr ""
-#: libs/ardour/connection.cc:190
+#: libs/ardour/connection.cc:191
msgid "Node for Connection has no \"connections\" property"
msgstr ""
-#: libs/ardour/connection.cc:226 libs/ardour/io.cc:1901
+#: libs/ardour/connection.cc:227 libs/ardour/io.cc:1902
msgid "IO: badly formed string in XML node for inputs \"%1\""
msgstr ""
-#: libs/ardour/connection.cc:231 libs/ardour/io.cc:1906
+#: libs/ardour/connection.cc:232 libs/ardour/io.cc:1907
msgid "bad input string in XML node \"%1\""
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:82
+#: libs/ardour/control_protocol_manager.cc:80
msgid "control protocol name \"%1\" has no descriptor"
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:87
+#: libs/ardour/control_protocol_manager.cc:85
msgid "control protocol name \"%1\" could not be initialized"
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:143
+#: libs/ardour/control_protocol_manager.cc:141
msgid "Instantiating mandatory control protocol %1"
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:177
+#: libs/ardour/control_protocol_manager.cc:175
msgid "Control protocol %1 not usable"
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:189
+#: libs/ardour/control_protocol_manager.cc:187
msgid "Control surface protocol discovered: \"%1\""
msgstr ""
-#: libs/ardour/control_protocol_manager.cc:207
+#: libs/ardour/control_protocol_manager.cc:205
#, fuzzy
msgid "ControlProtocolManager: cannot load module \"%1\" (%2)"
msgstr "LADSPA: ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÍÏÄÕÌØ \"%1\" (%2)"
-#: libs/ardour/control_protocol_manager.cc:215
+#: libs/ardour/control_protocol_manager.cc:213
msgid "ControlProtocolManager: module \"%1\" has no descriptor function."
msgstr ""
@@ -533,100 +533,100 @@ msgstr ""
msgid "old-style crossfade information - no position information"
msgstr ""
-#: libs/ardour/curve.cc:111 libs/ardour/globals.cc:339
+#: libs/ardour/curve.cc:112 libs/ardour/globals.cc:340
#: libs/ardour/insert.cc:454 libs/ardour/session.cc:2466
#: libs/ardour/session.cc:2518
msgid "programming error: "
msgstr "ÏÛÉÂËÁ ÐÒÏÇÒÁÍÍÙ: "
-#: libs/ardour/cycle_timer.cc:35
+#: libs/ardour/cycle_timer.cc:37
msgid "CycleTimer::get_mhz(): can't open /proc/cpuinfo"
msgstr ""
-#: libs/ardour/cycle_timer.cc:47
+#: libs/ardour/cycle_timer.cc:49
msgid "CycleTimer::get_mhz(): cannot locate cpu MHz in /proc/cpuinfo"
msgstr ""
-#: libs/ardour/cycle_timer.cc:70
+#: libs/ardour/cycle_timer.cc:72
msgid "cannot locate cpu MHz in /proc/cpuinfo"
msgstr ""
-#: libs/ardour/destructive_filesource.cc:187
+#: libs/ardour/destructive_filesource.cc:188
msgid "DestructiveFileSource: \"%1\" bad read retval: %2 of %5 (%3: %4)"
msgstr ""
-#: libs/ardour/destructive_filesource.cc:200
-#: libs/ardour/destructive_filesource.cc:242
-#: libs/ardour/destructive_filesource.cc:249
+#: libs/ardour/destructive_filesource.cc:201
+#: libs/ardour/destructive_filesource.cc:243
+#: libs/ardour/destructive_filesource.cc:250
msgid "DestructiveFileSource: \"%1\" bad write (%2)"
msgstr ""
-#: libs/ardour/globals.cc:108
+#: libs/ardour/globals.cc:109
msgid "no MIDI ports specified: no MMC or MTC control possible"
msgstr ""
-#: libs/ardour/globals.cc:123
+#: libs/ardour/globals.cc:124
msgid "MIDI port specifications for \"%1\" are not understandable."
msgstr ""
-#: libs/ardour/globals.cc:136 libs/ardour/globals.cc:140
-#: libs/ardour/globals.cc:144
+#: libs/ardour/globals.cc:137 libs/ardour/globals.cc:141
+#: libs/ardour/globals.cc:145
msgid "default"
msgstr ""
-#: libs/ardour/globals.cc:172
+#: libs/ardour/globals.cc:173
msgid "No MMC control (MIDI port \"%1\" not available)"
msgstr ""
-#: libs/ardour/globals.cc:178
+#: libs/ardour/globals.cc:179
msgid "No MTC support (MIDI port \"%1\" not available)"
msgstr ""
-#: libs/ardour/globals.cc:183
+#: libs/ardour/globals.cc:184
msgid "No MIDI parameter support (MIDI port \"%1\" not available)"
msgstr ""
-#: libs/ardour/import.cc:74
+#: libs/ardour/import.cc:75
msgid "Import: cannot open input sound file \"%1\""
msgstr ""
-#: libs/ardour/import.cc:79
+#: libs/ardour/import.cc:80
msgid "resampling audio"
msgstr ""
-#: libs/ardour/import.cc:83
+#: libs/ardour/import.cc:84
msgid "Import: cannot open converted sound file \"%1\""
msgstr ""
-#: libs/ardour/import.cc:88
+#: libs/ardour/import.cc:89
msgid "Import: error while resampling sound file \"%1\""
msgstr ""
-#: libs/ardour/import.cc:147
+#: libs/ardour/import.cc:148
msgid "Session::import_audiofile: cannot open new file source for channel %1"
msgstr ""
-#: libs/ardour/import.cc:166
+#: libs/ardour/import.cc:167
msgid "converting audio"
msgstr ""
-#: libs/ardour/import.cc:198
+#: libs/ardour/import.cc:199
msgid "building region"
msgstr ""
-#: libs/ardour/import.cc:200
+#: libs/ardour/import.cc:201
msgid "building regions"
msgstr ""
-#: libs/ardour/import.cc:324
+#: libs/ardour/import.cc:325
msgid "Import: could not open temp file: %1"
msgstr ""
-#: libs/ardour/import.cc:333
+#: libs/ardour/import.cc:334
msgid "Import: src_new() failed : %1"
msgstr ""
-#: libs/ardour/import.cc:361
+#: libs/ardour/import.cc:362
msgid "Import: %1"
msgstr "éÍÐÏÒÔ: %1"
@@ -680,223 +680,223 @@ msgstr ""
msgid "non-port insert XML used for port plugin insert"
msgstr ""
-#: libs/ardour/io.cc:597
+#: libs/ardour/io.cc:598
msgid "IO: cannot disconnect input port %1 from %2"
msgstr ""
-#: libs/ardour/io.cc:665
+#: libs/ardour/io.cc:666
msgid "IO: cannot disconnect output port %1 from %2"
msgstr ""
-#: libs/ardour/io.cc:806 libs/ardour/io.cc:1150 libs/ardour/io.cc:1276
+#: libs/ardour/io.cc:807 libs/ardour/io.cc:1151 libs/ardour/io.cc:1277
#, c-format
msgid "%s/out"
msgstr ""
-#: libs/ardour/io.cc:808 libs/ardour/io.cc:1152 libs/ardour/io.cc:1278
-#: libs/ardour/io.cc:2848
+#: libs/ardour/io.cc:809 libs/ardour/io.cc:1153 libs/ardour/io.cc:1279
+#: libs/ardour/io.cc:2849
#, c-format
msgid "%s/out %u"
msgstr ""
-#: libs/ardour/io.cc:812 libs/ardour/io.cc:1157 libs/ardour/io.cc:1282
+#: libs/ardour/io.cc:813 libs/ardour/io.cc:1158 libs/ardour/io.cc:1283
msgid "IO: cannot register output port %1"
msgstr ""
-#: libs/ardour/io.cc:907 libs/ardour/io.cc:1010 libs/ardour/io.cc:1116
+#: libs/ardour/io.cc:908 libs/ardour/io.cc:1011 libs/ardour/io.cc:1117
#, c-format
msgid "%s/in"
msgstr ""
-#: libs/ardour/io.cc:909 libs/ardour/io.cc:1013 libs/ardour/io.cc:1119
-#: libs/ardour/io.cc:2818
+#: libs/ardour/io.cc:910 libs/ardour/io.cc:1014 libs/ardour/io.cc:1120
+#: libs/ardour/io.cc:2819
#, c-format
msgid "%s/in %u"
msgstr ""
-#: libs/ardour/io.cc:913 libs/ardour/io.cc:1019 libs/ardour/io.cc:1124
+#: libs/ardour/io.cc:914 libs/ardour/io.cc:1020 libs/ardour/io.cc:1125
msgid "IO: cannot register input port %1"
msgstr ""
-#: libs/ardour/io.cc:1540
+#: libs/ardour/io.cc:1541
msgid "IO::connecting_became_legal() called without a pending state node"
msgstr ""
-#: libs/ardour/io.cc:1563
+#: libs/ardour/io.cc:1564
msgid "IO::ports_became_legal() called without a pending state node"
msgstr ""
-#: libs/ardour/io.cc:1593
+#: libs/ardour/io.cc:1594
msgid "incorrect XML node \"%1\" passed to IO object"
msgstr ""
-#: libs/ardour/io.cc:1648
+#: libs/ardour/io.cc:1649
msgid ""
"MIDI gain control specification for %1 is incomplete, so it has been ignored"
msgstr ""
-#: libs/ardour/io.cc:1738 libs/ardour/io.cc:1850
+#: libs/ardour/io.cc:1739 libs/ardour/io.cc:1851
msgid "Unknown connection \"%1\" listed for output of %2"
msgstr ""
-#: libs/ardour/io.cc:1740 libs/ardour/io.cc:1852
+#: libs/ardour/io.cc:1741 libs/ardour/io.cc:1853
msgid "out 1"
msgstr ""
-#: libs/ardour/io.cc:1741 libs/ardour/io.cc:1853
+#: libs/ardour/io.cc:1742 libs/ardour/io.cc:1854
msgid "No output connections available as a replacement"
msgstr ""
-#: libs/ardour/io.cc:1745 libs/ardour/io.cc:1857
+#: libs/ardour/io.cc:1746 libs/ardour/io.cc:1858
msgid "Connection %1 was not available - \"out 1\" used instead"
msgstr ""
-#: libs/ardour/io.cc:1759
+#: libs/ardour/io.cc:1760
msgid "%1: cannot create I/O ports"
msgstr ""
-#: libs/ardour/io.cc:1866
+#: libs/ardour/io.cc:1867
msgid "improper output channel list in XML node (%1)"
msgstr ""
-#: libs/ardour/io.cc:1951
+#: libs/ardour/io.cc:1952
msgid "IO: badly formed string in XML node for outputs \"%1\""
msgstr ""
-#: libs/ardour/io.cc:1956
+#: libs/ardour/io.cc:1957
msgid "IO: bad output string in XML node \"%1\""
msgstr ""
-#: libs/ardour/io.cc:2524
+#: libs/ardour/io.cc:2525
msgid "%1: could not open automation event file \"%2\""
msgstr ""
-#: libs/ardour/io.cc:2563
+#: libs/ardour/io.cc:2564
msgid "%1: cannot open automation event file \"%2\""
msgstr ""
-#: libs/ardour/io.cc:2578
+#: libs/ardour/io.cc:2579
msgid "badly formed version number in automation event file \"%1\""
msgstr ""
-#: libs/ardour/io.cc:2582
+#: libs/ardour/io.cc:2583
msgid "no version information in automation event file \"%1\""
msgstr ""
-#: libs/ardour/io.cc:2587
+#: libs/ardour/io.cc:2588
msgid "mismatched automation event file version (%1)"
msgstr ""
-#: libs/ardour/io.cc:2595
+#: libs/ardour/io.cc:2596
msgid "badly formatted automation event record at line %1 of %2 (ignored)"
msgstr ""
-#: libs/ardour/io.cc:2615
+#: libs/ardour/io.cc:2616
msgid "dubious automation event found (and ignored)"
msgstr ""
-#: libs/ardour/io.cc:2619 libs/ardour/panner.cc:438
+#: libs/ardour/io.cc:2620 libs/ardour/panner.cc:438
#: libs/ardour/redirect.cc:148
msgid "loaded from disk"
msgstr ""
-#: libs/ardour/io.cc:2790
+#: libs/ardour/io.cc:2791
msgid "automation write/touch"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:86
+#: libs/ardour/ladspa_plugin.cc:87
msgid "LADSPA: module has no descriptor function."
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:91
+#: libs/ardour/ladspa_plugin.cc:92
msgid "LADSPA: plugin has gone away since discovery!"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:98
+#: libs/ardour/ladspa_plugin.cc:99
msgid "LADSPA: \"%1\" cannot be used, since it cannot do inplace processing"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:328
+#: libs/ardour/ladspa_plugin.cc:329
msgid ""
"illegal parameter number used with plugin \"%1\". This mayindicate a change "
"in the plugin design, and presets may beinvalid"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:429
+#: libs/ardour/ladspa_plugin.cc:430
msgid "Bad node sent to LadspaPlugin::set_state"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:442
+#: libs/ardour/ladspa_plugin.cc:443
msgid "LADSPA: no ladspa port number"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:448
+#: libs/ardour/ladspa_plugin.cc:449
msgid "LADSPA: no ladspa port data"
msgstr ""
-#: libs/ardour/ladspa_plugin.cc:497
+#: libs/ardour/ladspa_plugin.cc:498
msgid ""
"LADSPA LadspaPlugin MIDI control specification for port %1 is incomplete, so "
"it has been ignored"
msgstr ""
-#: libs/ardour/location.cc:268
+#: libs/ardour/location.cc:269
msgid "incorrect XML node passed to Location::set_state"
msgstr ""
-#: libs/ardour/location.cc:275
+#: libs/ardour/location.cc:276
msgid "XML node for Location has no name information"
msgstr ""
-#: libs/ardour/location.cc:282
+#: libs/ardour/location.cc:283
msgid "XML node for Location has no start information"
msgstr ""
-#: libs/ardour/location.cc:293
+#: libs/ardour/location.cc:294
msgid "XML node for Location has no end information"
msgstr ""
-#: libs/ardour/location.cc:302
+#: libs/ardour/location.cc:303
msgid "XML node for Location has no flags information"
msgstr ""
-#: libs/ardour/location.cc:390
+#: libs/ardour/location.cc:391
msgid "Locations: attempt to use unknown location as selected location"
msgstr ""
-#: libs/ardour/location.cc:417 libs/ardour/playlist.cc:1187
+#: libs/ardour/location.cc:418 libs/ardour/playlist.cc:1187
msgid "clear"
msgstr ""
-#: libs/ardour/location.cc:442
+#: libs/ardour/location.cc:443
msgid "clear markers"
msgstr ""
-#: libs/ardour/location.cc:470
+#: libs/ardour/location.cc:471
msgid "clear ranges"
msgstr ""
-#: libs/ardour/location.cc:488
+#: libs/ardour/location.cc:489
msgid "add"
msgstr "ÄÏÂÁ×ÉÔØ"
-#: libs/ardour/location.cc:526
+#: libs/ardour/location.cc:527
msgid "remove"
msgstr "ÕÄÁÌÉÔØ"
-#: libs/ardour/location.cc:566
+#: libs/ardour/location.cc:567
msgid "incorrect XML mode passed to Locations::set_state"
msgstr ""
-#: libs/ardour/mtc_slave.cc:195
+#: libs/ardour/mtc_slave.cc:196
msgid "MTC Slave: atomic read of current time failed, sleeping!"
msgstr ""
-#: libs/ardour/named_selection.cc:76
+#: libs/ardour/named_selection.cc:77
msgid "Chunk %1 uses an unknown playlist \"%2\""
msgstr ""
-#: libs/ardour/named_selection.cc:79
+#: libs/ardour/named_selection.cc:80
msgid "Chunk %1 contains misformed playlist information"
msgstr ""
@@ -1003,62 +1003,62 @@ msgstr ""
msgid "nudged"
msgstr ""
-#: libs/ardour/playlist_factory.cc:26 libs/ardour/playlist_factory.cc:41
+#: libs/ardour/playlist_factory.cc:49 libs/ardour/playlist_factory.cc:64
msgid ""
"programming error: Playlist::createRegion called with unknown Region type"
msgstr ""
-#: libs/ardour/playlist_factory.cc:63
+#: libs/ardour/playlist_factory.cc:86
msgid ""
"programming error: Playlist::copyPlaylist called with unknown Playlist type"
msgstr ""
-#: libs/ardour/plugin.cc:327
+#: libs/ardour/plugin.cc:328
msgid "Could not locate HOME. Preset not saved."
msgstr ""
-#: libs/ardour/plugin.cc:337 libs/ardour/plugin.cc:343
+#: libs/ardour/plugin.cc:338 libs/ardour/plugin.cc:344
msgid "Could not create %1. Preset not saved. (%2)"
msgstr ""
-#: libs/ardour/plugin.cc:348
+#: libs/ardour/plugin.cc:349
msgid "Error saving presets file %1."
msgstr ""
-#: libs/ardour/plugin_manager.cc:193
+#: libs/ardour/plugin_manager.cc:194
msgid "Could not parse rdf file: %1"
msgstr ""
-#: libs/ardour/plugin_manager.cc:234
+#: libs/ardour/plugin_manager.cc:235
msgid "LADSPA: cannot load module \"%1\" (%2)"
msgstr "LADSPA: ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÍÏÄÕÌØ \"%1\" (%2)"
-#: libs/ardour/plugin_manager.cc:241
+#: libs/ardour/plugin_manager.cc:242
msgid "LADSPA: module \"%1\" has no descriptor function."
msgstr ""
-#: libs/ardour/plugin_manager.cc:296
+#: libs/ardour/plugin_manager.cc:297
#, fuzzy
msgid "VST: cannot load module from \"%1\""
msgstr "LADSPA: ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÍÏÄÕÌØ \"%1\" (%2)"
-#: libs/ardour/plugin_manager.cc:301
+#: libs/ardour/plugin_manager.cc:302
msgid "You asked ardour to not use any VST plugins"
msgstr ""
-#: libs/ardour/plugin_manager.cc:304
+#: libs/ardour/plugin_manager.cc:305
msgid "This version of ardour has no support for VST plugins"
msgstr ""
-#: libs/ardour/plugin_manager.cc:311
+#: libs/ardour/plugin_manager.cc:312
msgid "LADSPA: cannot load module from \"%1\""
msgstr ""
-#: libs/ardour/plugin_manager.cc:373 libs/ardour/plugin_manager.cc:385
+#: libs/ardour/plugin_manager.cc:374 libs/ardour/plugin_manager.cc:386
msgid "Unknown"
msgstr ""
-#: libs/ardour/plugin_manager.cc:463
+#: libs/ardour/plugin_manager.cc:464
msgid ""
"VST plugin %1 does not support processReplacing, and so cannot be used in "
"ardour at this time"
@@ -1072,11 +1072,11 @@ msgstr ""
msgid "programming error: unknown Redirect type in Redirect::Clone!\n"
msgstr ""
-#: libs/ardour/redirect.cc:102 libs/ardour/utils.cc:202
+#: libs/ardour/redirect.cc:102 libs/ardour/utils.cc:203
msgid "pre"
msgstr "ÐÒÅ"
-#: libs/ardour/redirect.cc:104 libs/ardour/utils.cc:205
+#: libs/ardour/redirect.cc:104 libs/ardour/utils.cc:206
msgid "post"
msgstr "ÐÏÓÔ"
@@ -1128,11 +1128,11 @@ msgstr ""
msgid "active_changed"
msgstr ""
-#: libs/ardour/region.cc:884
+#: libs/ardour/region.cc:885
msgid "Session: XMLNode describing a Region is incomplete (no id)"
msgstr ""
-#: libs/ardour/region.cc:891
+#: libs/ardour/region.cc:892
msgid "Session: XMLNode describing a Region is incomplete (no name)"
msgstr ""
@@ -1186,7 +1186,7 @@ msgid ""
"MIDI mute control specification for %1 is incomplete, so it has been ignored"
msgstr ""
-#: libs/ardour/send.cc:98
+#: libs/ardour/send.cc:99
msgid "XML node describing a send is missing a Redirect node"
msgstr ""
@@ -1327,11 +1327,11 @@ msgstr ""
msgid "programming error: unknown type of Redirect deleted!"
msgstr ""
-#: libs/ardour/session.cc:3634
+#: libs/ardour/session.cc:3636
msgid "too many bounced versions of playlist \"%1\""
msgstr ""
-#: libs/ardour/session.cc:3647
+#: libs/ardour/session.cc:3649
msgid "cannot create new audio file \"%1\" for %2"
msgstr ""
@@ -1363,19 +1363,19 @@ msgstr ""
msgid "Butler write-behind failure on dstream %1"
msgstr ""
-#: libs/ardour/session_click.cc:157
+#: libs/ardour/session_click.cc:158
msgid "cannot open click soundfile %1 (%2)"
msgstr ""
-#: libs/ardour/session_click.cc:166
+#: libs/ardour/session_click.cc:167
msgid "cannot read data from click soundfile"
msgstr ""
-#: libs/ardour/session_click.cc:191
+#: libs/ardour/session_click.cc:192
msgid "cannot open click emphasis soundfile %1 (%2)"
msgstr ""
-#: libs/ardour/session_click.cc:199
+#: libs/ardour/session_click.cc:200
msgid "cannot read data from click emphasis soundfile"
msgstr ""
@@ -1479,256 +1479,256 @@ msgstr ""
msgid "Session: error in no roll for %1"
msgstr ""
-#: libs/ardour/session_state.cc:100
+#: libs/ardour/session_state.cc:101
msgid "Could not use path %1 (%s)"
msgstr ""
-#: libs/ardour/session_state.cc:128
+#: libs/ardour/session_state.cc:129
msgid "end"
msgstr ""
-#: libs/ardour/session_state.cc:129
+#: libs/ardour/session_state.cc:130
#, fuzzy
msgid "start"
msgstr "ÒÁÚÄÅÌÉÔØ"
-#: libs/ardour/session_state.cc:501
+#: libs/ardour/session_state.cc:502
msgid "Session: cannot create session dir \"%1\" (%2)"
msgstr ""
-#: libs/ardour/session_state.cc:512
+#: libs/ardour/session_state.cc:513
msgid "Session: cannot create session peakfile dir \"%1\" (%2)"
msgstr ""
-#: libs/ardour/session_state.cc:521
+#: libs/ardour/session_state.cc:522
msgid "Session: cannot create session sounds dir \"%1\" (%2)"
msgstr ""
-#: libs/ardour/session_state.cc:530
+#: libs/ardour/session_state.cc:531
msgid "Session: cannot create session tape dir \"%1\" (%2)"
msgstr ""
-#: libs/ardour/session_state.cc:539
+#: libs/ardour/session_state.cc:540
msgid "Session: cannot create session dead sounds dir \"%1\" (%2)"
msgstr ""
-#: libs/ardour/session_state.cc:548
+#: libs/ardour/session_state.cc:549
msgid "Session: cannot create session automation dir \"%1\" (%2)"
msgstr ""
-#: libs/ardour/session_state.cc:579
+#: libs/ardour/session_state.cc:580
msgid "Could not open %1 for writing mix template"
msgstr ""
-#: libs/ardour/session_state.cc:585
+#: libs/ardour/session_state.cc:586
msgid "Could not open mix template %1 for reading"
msgstr ""
-#: libs/ardour/session_state.cc:592
+#: libs/ardour/session_state.cc:593
msgid "Session already exists. Not overwriting"
msgstr ""
-#: libs/ardour/session_state.cc:635
+#: libs/ardour/session_state.cc:636
msgid "Session: could not load diskstream via XML state"
msgstr ""
-#: libs/ardour/session_state.cc:684
+#: libs/ardour/session_state.cc:685
msgid "could not backup old state file, current state not saved."
msgstr ""
-#: libs/ardour/session_state.cc:697
+#: libs/ardour/session_state.cc:698
msgid "state could not be saved to %1"
msgstr ""
-#: libs/ardour/session_state.cc:704
+#: libs/ardour/session_state.cc:705
msgid "could not remove corrupt state file %1"
msgstr ""
-#: libs/ardour/session_state.cc:708
+#: libs/ardour/session_state.cc:709
msgid "could not restore state file from backup %1"
msgstr ""
-#: libs/ardour/session_state.cc:777
+#: libs/ardour/session_state.cc:778
msgid "%1: session state information file \"%2\" doesn't exist!"
msgstr ""
-#: libs/ardour/session_state.cc:788
+#: libs/ardour/session_state.cc:789
msgid "Could not understand ardour file %1"
msgstr ""
-#: libs/ardour/session_state.cc:1492
+#: libs/ardour/session_state.cc:1493
msgid "programming error: Session: incorrect XML node sent to set_state()"
msgstr ""
-#: libs/ardour/session_state.cc:1538
+#: libs/ardour/session_state.cc:1539
msgid "Session: XML state has no options section"
msgstr ""
-#: libs/ardour/session_state.cc:1543
+#: libs/ardour/session_state.cc:1544
msgid "Session: XML state has no sources section"
msgstr ""
-#: libs/ardour/session_state.cc:1550
+#: libs/ardour/session_state.cc:1551
msgid "Session: XML state has no Regions section"
msgstr ""
-#: libs/ardour/session_state.cc:1557
+#: libs/ardour/session_state.cc:1558
msgid "Session: XML state has no playlists section"
msgstr ""
-#: libs/ardour/session_state.cc:1576
+#: libs/ardour/session_state.cc:1577
msgid "Session: XML state has no diskstreams section"
msgstr ""
-#: libs/ardour/session_state.cc:1583
+#: libs/ardour/session_state.cc:1584
msgid "Session: XML state has no connections section"
msgstr ""
-#: libs/ardour/session_state.cc:1590
+#: libs/ardour/session_state.cc:1591
msgid "Session: XML state has no locations section"
msgstr ""
-#: libs/ardour/session_state.cc:1623
+#: libs/ardour/session_state.cc:1624
msgid "Session: XML state has no edit groups section"
msgstr ""
-#: libs/ardour/session_state.cc:1630
+#: libs/ardour/session_state.cc:1631
msgid "Session: XML state has no mix groups section"
msgstr ""
-#: libs/ardour/session_state.cc:1637
+#: libs/ardour/session_state.cc:1638
msgid "Session: XML state has no Tempo Map section"
msgstr ""
-#: libs/ardour/session_state.cc:1644
+#: libs/ardour/session_state.cc:1645
msgid "Session: XML state has no routes section"
msgstr ""
-#: libs/ardour/session_state.cc:1651
+#: libs/ardour/session_state.cc:1652
msgid "Session: XML state has no click section"
msgstr ""
-#: libs/ardour/session_state.cc:1696
+#: libs/ardour/session_state.cc:1697
msgid "Session: cannot create Route from XML description."
msgstr ""
-#: libs/ardour/session_state.cc:1734
+#: libs/ardour/session_state.cc:1735
msgid "Session: cannot create Region from XML description."
msgstr ""
-#: libs/ardour/session_state.cc:1763
+#: libs/ardour/session_state.cc:1764
msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)"
msgstr ""
-#: libs/ardour/session_state.cc:1771 libs/ardour/session_state.cc:1791
+#: libs/ardour/session_state.cc:1772 libs/ardour/session_state.cc:1792
msgid ""
"Session: XMLNode describing a AudioRegion references an unknown source id =%1"
msgstr ""
-#: libs/ardour/session_state.cc:1777 libs/ardour/session_state.cc:1797
+#: libs/ardour/session_state.cc:1778 libs/ardour/session_state.cc:1798
msgid ""
"Session: XMLNode describing a AudioRegion references a non-audio source id =%"
"1"
msgstr ""
-#: libs/ardour/session_state.cc:1867
+#: libs/ardour/session_state.cc:1868
msgid "Session: cannot create Source from XML description."
msgstr ""
-#: libs/ardour/session_state.cc:1888
+#: libs/ardour/session_state.cc:1889
msgid ""
"Found a sound file that cannot be used by Ardour. Talk to the progammers."
msgstr ""
-#: libs/ardour/session_state.cc:1912
+#: libs/ardour/session_state.cc:1913
msgid "Could not create mix templates directory \"%1\" (%2)"
msgstr ""
-#: libs/ardour/session_state.cc:1926
+#: libs/ardour/session_state.cc:1927
msgid "Template \"%1\" already exists - new version not created"
msgstr ""
-#: libs/ardour/session_state.cc:1933
+#: libs/ardour/session_state.cc:1934
msgid "mix template not saved"
msgstr ""
-#: libs/ardour/session_state.cc:1993
+#: libs/ardour/session_state.cc:1994
msgid "cannot create session directory \"%1\"; ignored"
msgstr ""
-#: libs/ardour/session_state.cc:2006
+#: libs/ardour/session_state.cc:2007
msgid "cannot create sounds directory \"%1\"; ignored"
msgstr ""
-#: libs/ardour/session_state.cc:2017
+#: libs/ardour/session_state.cc:2018
msgid "cannot create dead sounds directory \"%1\"; ignored"
msgstr ""
-#: libs/ardour/session_state.cc:2028
+#: libs/ardour/session_state.cc:2029
msgid "cannot create peak file directory \"%1\"; ignored"
msgstr ""
-#: libs/ardour/session_state.cc:2167 libs/ardour/session_state.cc:2188
+#: libs/ardour/session_state.cc:2168 libs/ardour/session_state.cc:2189
msgid "Session: cannot create Playlist from XML description."
msgstr ""
-#: libs/ardour/session_state.cc:2227
+#: libs/ardour/session_state.cc:2228
msgid "Session: cannot create Named Selection from XML description."
msgstr ""
-#: libs/ardour/session_state.cc:2359
+#: libs/ardour/session_state.cc:2360
msgid "Unknown node \"%1\" found in Connections list from state file"
msgstr ""
-#: libs/ardour/session_state.cc:3196
+#: libs/ardour/session_state.cc:3197
msgid "cannot remove dead sound file %1 (%2)"
msgstr ""
-#: libs/ardour/session_time.cc:375
+#: libs/ardour/session_time.cc:374
msgid "Unknown JACK transport state %1 in sync callback"
msgstr ""
-#: libs/ardour/session_timefx.cc:76
+#: libs/ardour/session_timefx.cc:77
msgid "tempoize: error creating name for new audio file based on %1"
msgstr ""
-#: libs/ardour/session_timefx.cc:87
+#: libs/ardour/session_timefx.cc:88
msgid "tempoize: error creating new audio file %1 (%2)"
msgstr ""
-#: libs/ardour/session_timefx.cc:113
+#: libs/ardour/session_timefx.cc:114
msgid "tempoize: error reading data from %1"
msgstr ""
-#: libs/ardour/session_timefx.cc:126 libs/ardour/session_timefx.cc:138
+#: libs/ardour/session_timefx.cc:127 libs/ardour/session_timefx.cc:139
msgid "error writing tempo-adjusted data to %1"
msgstr ""
-#: libs/ardour/session_timefx.cc:144
+#: libs/ardour/session_timefx.cc:145
msgid "timefx code failure. please notify ardour-developers."
msgstr ""
-#: libs/ardour/session_transport.cc:116
+#: libs/ardour/session_transport.cc:117
msgid "Cannot loop - no loop range defined"
msgstr ""
-#: libs/ardour/session_transport.cc:478
+#: libs/ardour/session_transport.cc:479
msgid ""
"Seamless looping cannot be supported while Ardour is using JACK transport.\n"
"Recommend changing the configured options"
msgstr ""
-#: libs/ardour/session_transport.cc:754
+#: libs/ardour/session_transport.cc:755
msgid ""
"Global varispeed cannot be supported while Ardour is connected to JACK "
"transport control"
msgstr ""
-#: libs/ardour/session_transport.cc:954
+#: libs/ardour/session_transport.cc:955
msgid "please stop the transport before adjusting slave settings"
msgstr ""
-#: libs/ardour/session_transport.cc:990
+#: libs/ardour/session_transport.cc:991
msgid "No MTC port defined: MTC slaving is impossible."
msgstr ""
@@ -1816,185 +1816,185 @@ msgstr ""
msgid "Big-endian (Mac)"
msgstr ""
-#: libs/ardour/sndfilesource.cc:145
+#: libs/ardour/sndfilesource.cc:147
msgid "FileSource: cannot get host information for BWF header (%1)"
msgstr ""
-#: libs/ardour/sndfilesource.cc:167
+#: libs/ardour/sndfilesource.cc:169
msgid ""
"cannot set broadcast info for audio file %1 (%2); dropping broadcast info "
"for this file"
msgstr ""
-#: libs/ardour/sndfilesource.cc:223
+#: libs/ardour/sndfilesource.cc:220
msgid "SndFileSource: cannot open file \"%1\" for %2 (%3)"
msgstr ""
-#: libs/ardour/sndfilesource.cc:229
+#: libs/ardour/sndfilesource.cc:226
msgid ""
"SndFileSource: file only contains %1 channels; %2 is invalid as a channel "
"number"
msgstr ""
-#: libs/ardour/sndfilesource.cc:306
+#: libs/ardour/sndfilesource.cc:327
msgid "SndFileSource: could not seek to frame %1 within %2 (%3)"
msgstr ""
-#: libs/ardour/sndfilesource.cc:357
+#: libs/ardour/sndfilesource.cc:378
#, fuzzy
msgid "programming error: %1 %2"
msgstr "ÏÛÉÂËÁ ÐÒÏÇÒÁÍÍÙ: "
-#: libs/ardour/sndfilesource.cc:457
+#: libs/ardour/sndfilesource.cc:487 libs/ardour/sndfilesource.cc:533
msgid ""
"cannot set broadcast info for audio file %1; Dropping broadcast info for "
"this file"
msgstr ""
-#: libs/ardour/sndfilesource.cc:499
+#: libs/ardour/sndfilesource.cc:544
msgid "%1: cannot seek to %2"
msgstr ""
-#: libs/ardour/state_manager.cc:46
+#: libs/ardour/state_manager.cc:47
msgid "cleared history"
msgstr ""
-#: libs/ardour/state_manager.cc:59
+#: libs/ardour/state_manager.cc:60
msgid ""
"programming error: illegal state ID (%1) passed to StateManager::set_state() "
"(range = 0-%2)"
msgstr ""
-#: libs/ardour/stateful.cc:100
+#: libs/ardour/stateful.cc:102
msgid "Error: could not write %1"
msgstr ""
-#: libs/ardour/stateful.cc:114
+#: libs/ardour/stateful.cc:116
msgid "Could not understand XML file %1"
msgstr ""
-#: libs/ardour/tempo.cc:66
+#: libs/ardour/tempo.cc:67
msgid "TempoSection XML node has no \"start\" property"
msgstr ""
-#: libs/ardour/tempo.cc:74
+#: libs/ardour/tempo.cc:75
msgid "TempoSection XML node has an illegal \"start\" value"
msgstr ""
-#: libs/ardour/tempo.cc:81
+#: libs/ardour/tempo.cc:82
msgid "TempoSection XML node has no \"beats-per-minute\" property"
msgstr ""
-#: libs/ardour/tempo.cc:86
+#: libs/ardour/tempo.cc:87
msgid "TempoSection XML node has an illegal \"beats_per_minute\" value"
msgstr ""
-#: libs/ardour/tempo.cc:91
+#: libs/ardour/tempo.cc:92
msgid "TempoSection XML node has no \"movable\" property"
msgstr ""
-#: libs/ardour/tempo.cc:130
+#: libs/ardour/tempo.cc:131
msgid "MeterSection XML node has no \"start\" property"
msgstr ""
-#: libs/ardour/tempo.cc:138
+#: libs/ardour/tempo.cc:139
msgid "MeterSection XML node has an illegal \"start\" value"
msgstr ""
-#: libs/ardour/tempo.cc:145
+#: libs/ardour/tempo.cc:146
msgid "MeterSection XML node has no \"beats-per-bar\" property"
msgstr ""
-#: libs/ardour/tempo.cc:150
+#: libs/ardour/tempo.cc:151
msgid "MeterSection XML node has an illegal \"beats-per-bar\" value"
msgstr ""
-#: libs/ardour/tempo.cc:155
+#: libs/ardour/tempo.cc:156
msgid "MeterSection XML node has no \"note-type\" property"
msgstr ""
-#: libs/ardour/tempo.cc:160
+#: libs/ardour/tempo.cc:161
msgid "MeterSection XML node has an illegal \"note-type\" value"
msgstr ""
-#: libs/ardour/tempo.cc:165
+#: libs/ardour/tempo.cc:166
msgid "MeterSection XML node has no \"movable\" property"
msgstr ""
-#: libs/ardour/tempo.cc:258
+#: libs/ardour/tempo.cc:259
msgid "move metric"
msgstr ""
-#: libs/ardour/tempo.cc:329
+#: libs/ardour/tempo.cc:330
msgid "metric removed"
msgstr ""
-#: libs/ardour/tempo.cc:372
+#: libs/ardour/tempo.cc:373
msgid "add tempo"
msgstr ""
-#: libs/ardour/tempo.cc:401
+#: libs/ardour/tempo.cc:402
msgid "replace tempo"
msgstr ""
-#: libs/ardour/tempo.cc:434
+#: libs/ardour/tempo.cc:435
msgid "add meter"
msgstr ""
-#: libs/ardour/tempo.cc:462
+#: libs/ardour/tempo.cc:463
msgid "replaced meter"
msgstr ""
-#: libs/ardour/tempo.cc:482 libs/ardour/tempo.cc:498
+#: libs/ardour/tempo.cc:483 libs/ardour/tempo.cc:499
msgid "programming error: no tempo section in tempo map!"
msgstr ""
-#: libs/ardour/tempo.cc:537
+#: libs/ardour/tempo.cc:538
msgid "programming error: unhandled MetricSection type"
msgstr ""
-#: libs/ardour/tempo.cc:1225 libs/ardour/tempo.cc:1237
+#: libs/ardour/tempo.cc:1226 libs/ardour/tempo.cc:1238
msgid "Tempo map: could not set new state, restoring old one."
msgstr ""
-#: libs/ardour/tempo.cc:1261
+#: libs/ardour/tempo.cc:1262
msgid "load XML data"
msgstr ""
-#: libs/ardour/utils.cc:245
+#: libs/ardour/utils.cc:246
msgid "illegal or badly-formed string used for path (%1)"
msgstr ""
-#: libs/ardour/utils.cc:250
+#: libs/ardour/utils.cc:251
msgid "path (%1) is ambiguous"
msgstr ""
-#: libs/ardour/vst_plugin.cc:186
+#: libs/ardour/vst_plugin.cc:187
msgid "cannot create VST chunk directory: %1"
msgstr ""
-#: libs/ardour/vst_plugin.cc:194
+#: libs/ardour/vst_plugin.cc:195
msgid "cannot check VST chunk directory: %1"
msgstr ""
-#: libs/ardour/vst_plugin.cc:201
+#: libs/ardour/vst_plugin.cc:202
msgid "%1 exists but is not a directory"
msgstr ""
-#: libs/ardour/vst_plugin.cc:239
+#: libs/ardour/vst_plugin.cc:240
msgid "Bad node sent to VSTPlugin::set_state"
msgstr ""
-#: libs/ardour/vst_plugin.cc:342 libs/ardour/vst_plugin.cc:353
+#: libs/ardour/vst_plugin.cc:343 libs/ardour/vst_plugin.cc:354
msgid "no support for presets using chunks at this time"
msgstr ""
-#: libs/ardour/coreaudio_source.cc:98
+#: libs/ardour/coreaudiosource.cc:97
msgid ""
"CoreAudioSource: file only contains %1 channels; %2 is invalid as a channel "
"number"
msgstr ""
-#: libs/ardour/coreaudio_source.cc:163
+#: libs/ardour/coreaudiosource.cc:162
msgid "CoreAudioSource: could not seek to frame %1 within %2 (%3)"
msgstr ""
diff --git a/libs/ardour/redirect.cc b/libs/ardour/redirect.cc
index 33fec5088f..9800c5b1a2 100644
--- a/libs/ardour/redirect.cc
+++ b/libs/ardour/redirect.cc
@@ -231,9 +231,9 @@ Redirect::state (bool full_state)
string path;
string legal_name;
- snprintf (buf, sizeof(buf), "%" PRIu64, id());
path = _session.snap_name();
path += "-redirect-";
+ id().print (buf);
path += buf;
path += ".automation";
diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc
index 8c27a3bebc..f195e42148 100644
--- a/libs/ardour/region.cc
+++ b/libs/ardour/region.cc
@@ -53,7 +53,6 @@ Region::Region (jack_nframes_t start, jack_nframes_t length, const string& name,
{
/* basic Region constructor */
- _id = ARDOUR::new_id();
_flags = flags;
_playlist = 0;
_read_data_count = 0;
@@ -76,7 +75,6 @@ Region::Region (const Region& other, jack_nframes_t offset, jack_nframes_t lengt
{
/* create a new Region from part of an existing one */
- _id = ARDOUR::new_id();
_frozen = 0;
pending_changed = Change (0);
_playlist = 0;
@@ -102,7 +100,6 @@ Region::Region (const Region &other)
{
/* Pure copy constructor */
- _id = ARDOUR::new_id();
_frozen = 0;
pending_changed = Change (0);
_playlist = 0;
@@ -130,7 +127,6 @@ Region::Region (const Region &other)
Region::Region (const XMLNode& node)
{
- _id = 0;
_frozen = 0;
pending_changed = Change (0);
_playlist = 0;
@@ -844,7 +840,7 @@ Region::state (bool full_state)
XMLNode *node = new XMLNode ("Region");
char buf[64];
- snprintf (buf, sizeof (buf), "%" PRIu64, _id);
+ _id.print (buf);
node->add_property ("id", buf);
node->add_property ("name", _name);
snprintf (buf, sizeof (buf), "%u", _start);
@@ -886,7 +882,7 @@ Region::set_state (const XMLNode& node)
return -1;
}
- sscanf (prop->value().c_str(), "%" PRIu64, &_id);
+ _id = prop->value();
if ((prop = node.property ("name")) == 0) {
error << _("Session: XMLNode describing a Region is incomplete (no name)") << endmsg;
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 8ad402c66a..fb5c175bba 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -54,16 +54,16 @@ uint32_t Route::order_key_cnt = 0;
Route::Route (Session& sess, string name, int input_min, int input_max, int output_min, int output_max, Flag flg, Buffer::Type default_type)
: IO (sess, name, input_min, input_max, output_min, output_max, default_type),
_flags (flg),
- _midi_solo_control (*this, MIDIToggleControl::SoloControl, _session.midi_port()),
- _midi_mute_control (*this, MIDIToggleControl::MuteControl, _session.midi_port())
+ _solo_control (*this, ToggleControllable::SoloControl),
+ _mute_control (*this, ToggleControllable::MuteControl)
{
init ();
}
Route::Route (Session& sess, const XMLNode& node)
: IO (sess, "route"),
- _midi_solo_control (*this, MIDIToggleControl::SoloControl, _session.midi_port()),
- _midi_mute_control (*this, MIDIToggleControl::MuteControl, _session.midi_port())
+ _solo_control (*this, ToggleControllable::SoloControl),
+ _mute_control (*this, ToggleControllable::MuteControl)
{
init ();
set_state (node);
@@ -106,8 +106,6 @@ Route::init ()
input_changed.connect (mem_fun (this, &Route::input_change_handler));
output_changed.connect (mem_fun (this, &Route::output_change_handler));
-
- reset_midi_control (_session.midi_port(), _session.get_midi_control());
}
Route::~Route ()
@@ -713,11 +711,8 @@ Route::set_solo (bool yn, void *src)
if (_soloed != yn) {
_soloed = yn;
- solo_changed (src); /* EMIT SIGNAL */
-
- if (_session.get_midi_feedback()) {
- _midi_solo_control.send_feedback (_soloed);
- }
+ solo_changed (src); /* EMIT SIGNAL */
+ _solo_control.Changed (); /* EMIT SIGNAL */
}
}
@@ -754,9 +749,7 @@ Route::set_mute (bool yn, void *src)
_muted = yn;
mute_changed (src); /* EMIT SIGNAL */
- if (_session.get_midi_feedback()) {
- _midi_mute_control.send_feedback (_muted);
- }
+ _mute_control.Changed (); /* EMIT SIGNAL */
Glib::Mutex::Lock lm (declick_lock);
desired_mute_gain = (yn?0.0f:1.0f);
@@ -1367,26 +1360,6 @@ Route::state(bool full_state)
node->add_property("mix-group", _mix_group->name());
}
- /* MIDI control */
-
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte additional;
- XMLNode* midi_node = 0;
- XMLNode* child;
-
- midi_node = node->add_child ("MIDI");
-
- if (_midi_mute_control.get_control_info (chn, ev, additional)) {
- child = midi_node->add_child ("mute");
- set_midi_node_info (child, ev, chn, additional);
- }
- if (_midi_solo_control.get_control_info (chn, ev, additional)) {
- child = midi_node->add_child ("solo");
- set_midi_node_info (child, ev, chn, additional);
- }
-
-
string order_string;
OrderKeys::iterator x = order_keys.begin();
@@ -1531,8 +1504,6 @@ Route::set_state (const XMLNode& node)
XMLNode *child;
XMLPropertyList plist;
const XMLProperty *prop;
- XMLNodeList midi_kids;
-
if (node.name() != "Route"){
error << string_compose(_("Bad node sent to Route::set_state() [%1]"), node.name()) << endmsg;
@@ -1726,45 +1697,6 @@ Route::set_state (const XMLNode& node)
}
}
- midi_kids = node.children ("MIDI");
-
- for (niter = midi_kids.begin(); niter != midi_kids.end(); ++niter) {
-
- XMLNodeList kids;
- XMLNodeConstIterator miter;
- XMLNode* child;
-
- kids = (*niter)->children ();
-
- for (miter = kids.begin(); miter != kids.end(); ++miter) {
-
- child =* miter;
-
- MIDI::eventType ev = MIDI::on; /* initialize to keep gcc happy */
- MIDI::byte additional = 0; /* ditto */
- MIDI::channel_t chn = 0; /* ditto */
-
- if (child->name() == "mute") {
-
- if (get_midi_node_info (child, ev, chn, additional)) {
- _midi_mute_control.set_control_type (chn, ev, additional);
- } else {
- error << string_compose(_("MIDI mute control specification for %1 is incomplete, so it has been ignored"), _name) << endmsg;
- }
- }
- else if (child->name() == "solo") {
-
- if (get_midi_node_info (child, ev, chn, additional)) {
- _midi_solo_control.set_control_type (chn, ev, additional);
- } else {
- error << string_compose(_("MIDI mute control specification for %1 is incomplete, so it has been ignored"), _name) << endmsg;
- }
- }
-
- }
- }
-
-
return 0;
}
@@ -2221,67 +2153,6 @@ Route::has_external_redirects () const
}
void
-Route::reset_midi_control (MIDI::Port* port, bool on)
-{
- MIDI::channel_t chn;
- MIDI::eventType ev;
- MIDI::byte extra;
-
- for (RedirectList::iterator i = _redirects.begin(); i != _redirects.end(); ++i) {
- (*i)->reset_midi_control (port, on);
- }
-
- IO::reset_midi_control (port, on);
-
- _midi_solo_control.get_control_info (chn, ev, extra);
- if (!on) {
- chn = -1;
- }
- _midi_solo_control.midi_rebind (port, chn);
-
- _midi_mute_control.get_control_info (chn, ev, extra);
- if (!on) {
- chn = -1;
- }
- _midi_mute_control.midi_rebind (port, chn);
-}
-
-void
-Route::send_all_midi_feedback ()
-{
- if (_session.get_midi_feedback()) {
-
- {
- Glib::RWLock::ReaderLock lm (redirect_lock);
- for (RedirectList::iterator i = _redirects.begin(); i != _redirects.end(); ++i) {
- (*i)->send_all_midi_feedback ();
- }
- }
-
- IO::send_all_midi_feedback();
-
- _midi_solo_control.send_feedback (_soloed);
- _midi_mute_control.send_feedback (_muted);
- }
-}
-
-MIDI::byte*
-Route::write_midi_feedback (MIDI::byte* buf, int32_t& bufsize)
-{
- buf = _midi_solo_control.write_feedback (buf, bufsize, _soloed);
- buf = _midi_mute_control.write_feedback (buf, bufsize, _muted);
-
- {
- Glib::RWLock::ReaderLock lm (redirect_lock);
- for (RedirectList::iterator i = _redirects.begin(); i != _redirects.end(); ++i) {
- buf = (*i)->write_midi_feedback (buf, bufsize);
- }
- }
-
- return IO::write_midi_feedback (buf, bufsize);
-}
-
-void
Route::flush_redirects ()
{
/* XXX shouldn't really try to take this lock, since
@@ -2351,106 +2222,46 @@ Route::automation_snapshot (jack_nframes_t now)
}
}
-Route::MIDIToggleControl::MIDIToggleControl (Route& s, ToggleType tp, MIDI::Port* port)
- : MIDI::Controllable (port, true), route (s), type(tp), setting(false)
+Route::ToggleControllable::ToggleControllable (Route& s, ToggleType tp)
+ : route (s), type(tp)
{
- last_written = false; /* XXX need a good out-of-bound-value */
+
}
void
-Route::MIDIToggleControl::set_value (float val)
+Route::ToggleControllable::set_value (float val)
{
- MIDI::eventType et;
- MIDI::channel_t chn;
- MIDI::byte additional;
-
- get_control_info (chn, et, additional);
-
- setting = true;
-
-#ifdef HOLD_TOGGLE_VALUES
- if (et == MIDI::off || et == MIDI::on) {
-
- /* literal toggle */
-
- switch (type) {
- case MuteControl:
- route.set_mute (!route.muted(), this);
- break;
- case SoloControl:
- route.set_solo (!route.soloed(), this);
- break;
- default:
- break;
- }
-
- } else {
-#endif
-
- /* map full control range to a boolean */
-
- bool bval = ((val >= 0.5f) ? true: false);
-
- switch (type) {
- case MuteControl:
- route.set_mute (bval, this);
- break;
- case SoloControl:
- route.set_solo (bval, this);
- break;
- default:
- break;
- }
-
-#ifdef HOLD_TOGGLE_VALUES
+ bool bval = ((val >= 0.5f) ? true: false);
+
+ switch (type) {
+ case MuteControl:
+ route.set_mute (bval, this);
+ break;
+ case SoloControl:
+ route.set_solo (bval, this);
+ break;
+ default:
+ break;
}
-#endif
-
- setting = false;
}
-void
-Route::MIDIToggleControl::send_feedback (bool value)
+float
+Route::ToggleControllable::get_value (void) const
{
-
- if (!setting && get_midi_feedback()) {
- MIDI::byte val = (MIDI::byte) (value ? 127: 0);
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
- MIDI::EventTwoBytes data;
-
- if (get_control_info (ch, ev, additional)) {
- data.controller_number = additional;
- data.value = val;
- last_written = value;
-
- route._session.send_midi_message (get_port(), ev, ch, data);
- }
- }
+ float val = 0.0f;
-}
-
-MIDI::byte*
-Route::MIDIToggleControl::write_feedback (MIDI::byte* buf, int32_t& bufsize, bool val, bool force)
-{
- if (get_midi_feedback() && bufsize > 2) {
- MIDI::channel_t ch = 0;
- MIDI::eventType ev = MIDI::none;
- MIDI::byte additional = 0;
-
- if (get_control_info (ch, ev, additional)) {
- if (val != last_written || force) {
- *buf++ = (0xF0 & ev) | (0xF & ch);
- *buf++ = additional; /* controller number */
- *buf++ = (MIDI::byte) (val ? 127 : 0);
- bufsize -= 3;
- last_written = val;
- }
- }
+ switch (type) {
+ case MuteControl:
+ val = route.muted() ? 1.0f : 0.0f;
+ break;
+ case SoloControl:
+ val = route.soloed() ? 1.0f : 0.0f;
+ break;
+ default:
+ break;
}
- return buf;
+ return val;
}
void
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 2fcd09a31c..c115870db0 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -95,6 +95,8 @@ Session::mix_buffers_no_gain_t Session::mix_buffers_no_gain = 0;
sigc::signal<int> Session::AskAboutPendingState;
sigc::signal<void> Session::SMPTEOffsetChanged;
+sigc::signal<void> Session::SendFeedback;
+
int
Session::find_session (string str, string& path, string& snapshot, bool& isnew)
@@ -445,7 +447,7 @@ Session::~Session ()
tmp =i;
++tmp;
- delete (*i).second;
+ delete i->second;
i = tmp;
}
@@ -484,7 +486,7 @@ Session::~Session ()
tmp = i;
++tmp;
- delete (*i).second;
+ delete i->second;
i = tmp;
}
@@ -2502,7 +2504,7 @@ Session::diskstream_by_name (string name)
}
Diskstream *
-Session::diskstream_by_id (id_t id)
+Session::diskstream_by_id (const PBD::ID& id)
{
Glib::RWLock::ReaderLock lm (diskstream_lock);
@@ -2551,7 +2553,7 @@ Session::new_region_name (string old)
sbuf = buf;
for (i = audio_regions.begin(); i != audio_regions.end(); ++i) {
- if ((*i).second->name() == sbuf) {
+ if (i->second->name() == sbuf) {
break;
}
}
@@ -2616,7 +2618,7 @@ Session::region_name (string& result, string base, bool newlevel) const
name_taken = false;
for (AudioRegionList::const_iterator i = audio_regions.begin(); i != audio_regions.end(); ++i) {
- if ((*i).second->name() == result) {
+ if (i->second->name() == result) {
name_taken = true;
break;
}
@@ -2661,8 +2663,8 @@ Session::add_region (Region* region)
if (x == audio_regions.end()) {
- pair<AudioRegionList::key_type, AudioRegionList::mapped_type> entry;
-
+ pair<AudioRegionList::key_type,AudioRegionList::mapped_type> entry;
+
entry.first = region->id();
entry.second = ar;
@@ -2719,16 +2721,18 @@ Session::remove_region (Region* region)
AudioRegionList::iterator i;
AudioRegion* ar = 0;
bool removed = false;
-
+
{
Glib::Mutex::Lock lm (region_lock);
- if ((ar = dynamic_cast<AudioRegion*> (region)) != 0) {
+ if ((ar = dynamic_cast<AudioRegion*> (region)) != 0) {
if ((i = audio_regions.find (region->id())) != audio_regions.end()) {
audio_regions.erase (i);
removed = true;
- }
+ }
+
} else {
+
fatal << _("programming error: ")
<< X_("unknown region type passed to Session::remove_region()")
<< endmsg;
@@ -2756,7 +2760,7 @@ Session::find_whole_file_parent (AudioRegion& child)
for (i = audio_regions.begin(); i != audio_regions.end(); ++i) {
- region = (*i).second;
+ region = i->second;
if (region->whole_file()) {
@@ -2860,12 +2864,12 @@ Session::add_audio_source (AudioSource* source)
{
pair<AudioSourceList::key_type, AudioSourceList::mapped_type> entry;
- {
- Glib::Mutex::Lock lm (audio_source_lock);
+ {
+ Glib::Mutex::Lock lm (audio_source_lock);
entry.first = source->id();
entry.second = source;
audio_sources.insert (entry);
- }
+ }
source->GoingAway.connect (mem_fun (this, &Session::remove_source));
set_dirty();
@@ -2883,7 +2887,7 @@ Session::remove_source (Source* source)
if ((i = audio_sources.find (source->id())) != audio_sources.end()) {
audio_sources.erase (i);
- }
+ }
}
if (!_state_of_the_state & InCleanup) {
@@ -2899,23 +2903,19 @@ Session::remove_source (Source* source)
}
Source *
-Session::get_source (ARDOUR::id_t id)
+Session::source_by_id (const PBD::ID& id)
{
Glib::Mutex::Lock lm (audio_source_lock);
AudioSourceList::iterator i;
Source* source = 0;
if ((i = audio_sources.find (id)) != audio_sources.end()) {
- source = (*i).second;
- }
-
- if (source) {
- return source;
+ source = i->second;
}
/* XXX search MIDI or other searches here */
- return 0;
+ return source;
}
string
diff --git a/libs/ardour/session_midi.cc b/libs/ardour/session_midi.cc
index bd68d24517..f7f1d79bbe 100644
--- a/libs/ardour/session_midi.cc
+++ b/libs/ardour/session_midi.cc
@@ -112,13 +112,6 @@ Session::set_midi_control (bool yn)
midi_control = yn;
set_dirty();
poke_midi_thread ();
-
- if (_midi_port) {
- Glib::RWLock::ReaderLock guard (route_lock);
- for (RouteList::iterator i = routes.begin(); i != routes.end(); ++i) {
- (*i)->reset_midi_control (_midi_port, midi_control);
- }
- }
#endif
ControlChanged (MidiControl); /* EMIT SIGNAL */
}
diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc
index 9e3809f6b8..b8929d3eca 100644
--- a/libs/ardour/session_process.cc
+++ b/libs/ardour/session_process.cc
@@ -48,8 +48,6 @@ using namespace std;
void
Session::process (jack_nframes_t nframes)
{
- //cerr << "CYCLE START " << _transport_frame << "-------------------" << endl;
-
MIDI::Manager::instance()->cycle_start(nframes);
if (synced_to_jack() && waiting_to_start) {
@@ -67,8 +65,8 @@ Session::process (jack_nframes_t nframes)
(this->*process_function) (nframes);
MIDI::Manager::instance()->cycle_end();
-
- //cerr << "CYCLE END " << _transport_frame << "-----------------------" << endl;
+
+ SendFeedback (); /* EMIT SIGNAL */
}
void
diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc
index a8cbd7bd78..78d8aa6ac7 100644
--- a/libs/ardour/session_state.cc
+++ b/libs/ardour/session_state.cc
@@ -275,6 +275,9 @@ Session::first_stage_init (string fullpath, string snapshot_name)
Diskstream::DiskstreamCreated.connect (mem_fun (*this, &Session::add_diskstream));
NamedSelection::NamedSelectionCreated.connect (mem_fun (*this, &Session::add_named_selection));
+ Controllable::Created.connect (mem_fun (*this, &Session::add_controllable));
+ Controllable::GoingAway.connect (mem_fun (*this, &Session::remove_controllable));
+
IO::MoreOutputs.connect (mem_fun (*this, &Session::ensure_passthru_buffers));
/* stop IO objects from doing stuff until we're ready for them */
@@ -639,7 +642,7 @@ Session::load_diskstreams (const XMLNode& node)
}
catch (failed_constructor& err) {
- error << _("Session: could not load diskstream via XML state") << endmsg;
+ error << _("Session: could not load diskstream via XML state") << endmsg;
return -1;
}
}
@@ -1336,6 +1339,13 @@ Session::state(bool full_state)
}
}
+ /* save the ID counter */
+
+ snprintf (buf, sizeof (buf), "%" PRIu64, ID::counter());
+ node->add_property ("id-counter", buf);
+
+ /* various options */
+
node->add_child_nocopy (get_options());
child = node->add_child ("Sources");
@@ -1349,7 +1359,7 @@ Session::state(bool full_state)
AudioFileSource* fs;
- if ((fs = dynamic_cast<AudioFileSource*> ((*siter).second)) != 0) {
+ if ((fs = dynamic_cast<AudioFileSource*> (siter->second)) != 0) {
DestructiveFileSource* dfs = dynamic_cast<DestructiveFileSource*> (fs);
/* destructive file sources are OK if they are empty, because
@@ -1363,7 +1373,7 @@ Session::state(bool full_state)
}
}
- child->add_child_nocopy ((*siter).second->get_state());
+ child->add_child_nocopy (siter->second->get_state());
}
}
@@ -1376,7 +1386,7 @@ Session::state(bool full_state)
/* only store regions not attached to playlists */
- if ((*i).second->playlist() == 0) {
+ if (i->second->playlist() == 0) {
child->add_child_nocopy (i->second->state (true));
}
}
@@ -1495,7 +1505,7 @@ Session::set_state (const XMLNode& node)
_state_of_the_state = StateOfTheState (_state_of_the_state|CannotSave);
- if (node.name() != "Session"){
+ if (node.name() != X_("Session")){
fatal << _("programming error: Session: incorrect XML node sent to set_state()") << endmsg;
return -1;
}
@@ -1505,6 +1515,21 @@ Session::set_state (const XMLNode& node)
if ((prop = node.property ("name")) != 0) {
_name = prop->value ();
}
+
+ if ((prop = node.property (X_("id-counter"))) != 0) {
+ uint64_t x;
+ sscanf (prop->value().c_str(), "%" PRIu64, &x);
+ ID::init_counter (x);
+ } else {
+ /* old sessions used a timebased counter, so fake
+ the startup ID counter based on a standard
+ timestamp.
+ */
+ time_t now;
+ time (&now);
+ ID::init_counter (now);
+ }
+
IO::disable_ports ();
IO::disable_connecting ();
@@ -1748,12 +1773,10 @@ Session::load_regions (const XMLNode& node)
set_dirty();
for (niter = nlist.begin(); niter != nlist.end(); ++niter) {
-
if ((region = XMLRegionFactory (**niter, false)) == 0) {
error << _("Session: cannot create Region from XML description.") << endmsg;
}
}
-
return 0;
}
@@ -1761,7 +1784,6 @@ AudioRegion *
Session::XMLRegionFactory (const XMLNode& node, bool full)
{
const XMLProperty* prop;
- id_t s_id;
Source* source;
AudioSource* as;
AudioRegion::SourceList sources;
@@ -1784,9 +1806,9 @@ Session::XMLRegionFactory (const XMLNode& node, bool full)
}
}
- sscanf (prop->value().c_str(), "%" PRIu64, &s_id);
+ PBD::ID s_id (prop->value());
- if ((source = get_source (s_id)) == 0) {
+ if ((source = source_by_id (s_id)) == 0) {
error << string_compose(_("Session: XMLNode describing a AudioRegion references an unknown source id =%1"), s_id) << endmsg;
return 0;
}
@@ -1804,23 +1826,23 @@ Session::XMLRegionFactory (const XMLNode& node, bool full)
for (uint32_t n=1; n < nchans; ++n) {
snprintf (buf, sizeof(buf), X_("source-%d"), n);
if ((prop = node.property (buf)) != 0) {
- sscanf (prop->value().c_str(), "%" PRIu64, &s_id);
- if ((source = get_source (s_id)) == 0) {
- error << string_compose(_("Session: XMLNode describing a AudioRegion references an unknown source id =%1"), s_id) << endmsg;
+ PBD::ID id2 (prop->value());
+
+ if ((source = source_by_id (id2)) == 0) {
+ error << string_compose(_("Session: XMLNode describing a AudioRegion references an unknown source id =%1"), id2) << endmsg;
return 0;
}
as = dynamic_cast<AudioSource*>(source);
if (!as) {
- error << string_compose(_("Session: XMLNode describing a AudioRegion references a non-audio source id =%1"), s_id) << endmsg;
+ error << string_compose(_("Session: XMLNode describing a AudioRegion references a non-audio source id =%1"), id2) << endmsg;
return 0;
}
sources.push_back (as);
}
}
-
try {
return new AudioRegion (sources, node);
}
@@ -1838,7 +1860,7 @@ Session::get_sources_as_xml ()
Glib::Mutex::Lock lm (audio_source_lock);
for (AudioSourceList::iterator i = audio_sources.begin(); i != audio_sources.end(); ++i) {
- node->add_child_nocopy ((*i).second->get_state());
+ node->add_child_nocopy (i->second->get_state());
}
/* XXX get MIDI and other sources here */
@@ -2964,7 +2986,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
capture files.
*/
- if ((*i).second->use_cnt() == 0 && (*i).second->length() > 0) {
+ if (i->second->use_cnt() == 0 && i->second->length() > 0) {
dead_sources.push_back (i->second);
/* remove this source from our own list to avoid us
@@ -2991,7 +3013,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
tmp = r;
++tmp;
- ar = (*r).second;
+ ar = r->second;
for (uint32_t n = 0; n < ar->n_channels(); ++n) {
if (&ar->source (n) == (*i)) {
@@ -3044,7 +3066,7 @@ Session::cleanup_sources (Session::cleanup_report& rep)
for (AudioSourceList::iterator i = audio_sources.begin(); i != audio_sources.end(); ++i) {
AudioFileSource* fs;
- if ((fs = dynamic_cast<AudioFileSource*> ((*i).second)) != 0) {
+ if ((fs = dynamic_cast<AudioFileSource*> (i->second)) != 0) {
all_sources.insert (fs->path());
}
}
@@ -3253,3 +3275,30 @@ Session::set_clean ()
}
}
+void
+Session::add_controllable (Controllable* c)
+{
+ Glib::Mutex::Lock lm (controllables_lock);
+ controllables.push_back (c);
+}
+
+void
+Session::remove_controllable (Controllable* c)
+{
+ Glib::Mutex::Lock lm (controllables_lock);
+ controllables.remove (c);
+}
+
+Controllable*
+Session::controllable_by_id (const PBD::ID& id)
+{
+ Glib::Mutex::Lock lm (controllables_lock);
+
+ for (Controllables::iterator i = controllables.begin(); i != controllables.end(); ++i) {
+ if ((*i)->id() == id) {
+ return *i;
+ }
+ }
+
+ return 0;
+}
diff --git a/libs/ardour/session_time.cc b/libs/ardour/session_time.cc
index 494a78ae88..945dfbe48b 100644
--- a/libs/ardour/session_time.cc
+++ b/libs/ardour/session_time.cc
@@ -32,7 +32,6 @@
#include <ardour/audioengine.h>
#include <ardour/session.h>
#include <ardour/tempo.h>
-#include <ardour/audiofilesource.h>
#include "i18n.h"
@@ -97,8 +96,6 @@ Session::set_smpte_offset (jack_nframes_t off)
_smpte_offset = off;
last_smpte_valid = false;
- AudioFileSource::set_header_position_offset (_smpte_offset, _smpte_offset_negative);
-
SMPTEOffsetChanged (); /* EMIT SIGNAL */
}
@@ -108,8 +105,6 @@ Session::set_smpte_offset_negative (bool neg)
_smpte_offset_negative = neg;
last_smpte_valid = false;
- AudioFileSource::set_header_position_offset (_smpte_offset, _smpte_offset_negative);
-
SMPTEOffsetChanged (); /* EMIT SIGNAL */
}
diff --git a/libs/ardour/sndfilesource.cc b/libs/ardour/sndfilesource.cc
index 443a24e3c2..5936f62570 100644
--- a/libs/ardour/sndfilesource.cc
+++ b/libs/ardour/sndfilesource.cc
@@ -156,6 +156,8 @@ SndFileSource::SndFileSource (string idstr, SampleFormat sfmt, HeaderFormat hf,
utsinfo.version);
_broadcast_info->version = 1;
+ _broadcast_info->time_reference_low = 0;
+ _broadcast_info->time_reference_high = 0;
/* XXX do something about this field */
@@ -183,6 +185,7 @@ SndFileSource::SndFileSource (string idstr, SampleFormat sfmt, HeaderFormat hf,
}
AudioSourceCreated (this); /* EMIT SIGNAL */
+
}
void
@@ -246,21 +249,19 @@ SndFileSource::open ()
_flags = Flag (_flags & ~Broadcast);
}
+ set_timeline_position (header_position_offset);
+
} else {
/* XXX 64 bit alert: when JACK switches to a 64 bit frame count, this needs to use the high bits
of the time reference.
*/
-
- set_timeline_position (_broadcast_info->time_reference_low);
+
+ set_timeline_position ( _broadcast_info->time_reference_low );
}
if (writable()) {
sf_command (sf, SFC_SET_UPDATE_HEADER_AUTO, 0, SF_FALSE);
-
- /* update header if header offset info changes */
-
- AudioFileSource::HeaderPositionOffsetChanged.connect (mem_fun (*this, &AudioFileSource::handle_header_position_change));
}
return 0;
@@ -280,7 +281,7 @@ SndFileSource::~SndFileSource ()
}
if (_broadcast_info) {
- free (_broadcast_info);
+ delete _broadcast_info;
}
}
@@ -472,7 +473,7 @@ SndFileSource::setup_broadcast_info (jack_nframes_t when, struct tm& now, time_t
now.tm_mon,
now.tm_mday);
- snprintf (_broadcast_info->origination_time, sizeof (_broadcast_info->origination_time), "%02d-%02d-%02d",
+ snprintf (_broadcast_info->origination_time, sizeof (_broadcast_info->origination_time), "%02d:%02d:%02d",
now.tm_hour,
now.tm_min,
now.tm_sec);
@@ -495,33 +496,12 @@ SndFileSource::setup_broadcast_info (jack_nframes_t when, struct tm& now, time_t
void
SndFileSource::set_header_timeline_position ()
{
- uint64_t pos;
-
if (!(_flags & Broadcast)) {
return;
}
- _broadcast_info->time_reference_high = 0;
-
- if (header_position_negative) {
-
- if (ULONG_LONG_MAX - header_position_offset < timeline_position) {
- pos = ULONG_LONG_MAX; // impossible
- } else {
- pos = timeline_position + header_position_offset;
- }
-
- } else {
-
- if (timeline_position < header_position_offset) {
- pos = 0;
- } else {
- pos = timeline_position - header_position_offset;
- }
- }
-
- _broadcast_info->time_reference_high = (pos >> 32);
- _broadcast_info->time_reference_low = (pos & 0xffffffff);
+ _broadcast_info->time_reference_high = (timeline_position >> 32);
+ _broadcast_info->time_reference_low = (timeline_position & 0xffffffff);
if (sf_command (sf, SFC_SET_BROADCAST_INFO, _broadcast_info, sizeof (*_broadcast_info)) != SF_TRUE) {
error << string_compose (_("cannot set broadcast info for audio file %1; Dropping broadcast info for this file"), _path) << endmsg;
@@ -545,3 +525,9 @@ SndFileSource::write_float (Sample* data, jack_nframes_t frame_pos, jack_nframes
return cnt;
}
+
+jack_nframes_t
+SndFileSource::natural_position() const
+{
+ return timeline_position;
+}
diff --git a/libs/ardour/source.cc b/libs/ardour/source.cc
index 0d32ea4a21..eebc64d463 100644
--- a/libs/ardour/source.cc
+++ b/libs/ardour/source.cc
@@ -45,7 +45,6 @@ using namespace ARDOUR;
Source::Source (string name)
{
_name = name;
- _id = ARDOUR::new_id();
_use_cnt = 0;
_timestamp = 0;
}
@@ -71,7 +70,7 @@ Source::get_state ()
char buf[64];
node->add_property ("name", _name);
- snprintf (buf, sizeof(buf)-1, "%" PRIu64, _id);
+ _id.print (buf);
node->add_property ("id", buf);
if (_timestamp != 0) {
@@ -94,7 +93,7 @@ Source::set_state (const XMLNode& node)
}
if ((prop = node.property ("id")) != 0) {
- sscanf (prop->value().c_str(), "%" PRIu64, &_id);
+ _id = prop->value ();
} else {
return -1;
}
diff --git a/libs/ardour/stateful.cc b/libs/ardour/stateful.cc
deleted file mode 100644
index b8e301b273..0000000000
--- a/libs/ardour/stateful.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- Copyright (C) 2000-2001 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.
-
- $Id$
-*/
-
-#include <cstdio>
-#include <unistd.h>
-
-#include <ardour/stateful.h>
-#include <ardour/utils.h>
-#include <pbd/xml++.h>
-
-#include "i18n.h"
-
-using namespace PBD;
-
-Stateful::Stateful ()
-{
- _extra_xml = 0;
- _instant_xml = 0;
-}
-
-Stateful::~Stateful ()
-{
- // Do not delete _extra_xml. The use of add_child_nocopy()
- // means it needs to live on indefinately.
- delete _instant_xml;
-}
-
-void
-Stateful::add_extra_xml (XMLNode& node)
-{
- if (_extra_xml == 0) {
- _extra_xml = new XMLNode ("extra");
- }
-
- _extra_xml->remove_nodes (node.name());
- _extra_xml->add_child_nocopy (node);
-}
-
-XMLNode *
-Stateful::extra_xml (const string& str)
-{
- if (_extra_xml == 0) {
- return 0;
- }
-
- const XMLNodeList& nlist = _extra_xml->children();
- XMLNodeConstIterator i;
-
- for (i = nlist.begin(); i != nlist.end(); ++i) {
- if ((*i)->name() == str) {
- return (*i);
- }
- }
-
- return 0;
-}
-
-void
-Stateful::add_instant_xml (XMLNode& node, const string& dir)
-{
- if (_instant_xml == 0) {
- _instant_xml = new XMLNode ("instant");
- }
-
- _instant_xml->remove_nodes_and_delete (node.name());
- _instant_xml->add_child_copy (node);
-
- XMLTree tree;
- tree.set_filename(dir+"/instant.xml");
-
- /* Important: the destructor for an XMLTree deletes
- all of its nodes, starting at _root. We therefore
- cannot simply hand it our persistent _instant_xml
- node as its _root, because we will lose it whenever
- the Tree goes out of scope.
-
- So instead, copy the _instant_xml node (which does
- a deep copy), and hand that to the tree.
- */
-
- XMLNode* copy = new XMLNode (*_instant_xml);
- tree.set_root (copy);
-
- if (!tree.write()) {
- error << string_compose(_("Error: could not write %1"), dir+"/instant.xml") << endmsg;
- }
-}
-
-XMLNode *
-Stateful::instant_xml (const string& str, const string& dir)
-{
- if (_instant_xml == 0) {
- string instant_file = dir + "/instant.xml";
- if (access(instant_file.c_str(), F_OK) == 0) {
- XMLTree tree;
- if (tree.read(dir+"/instant.xml")) {
- _instant_xml = new XMLNode(*(tree.root()));
- } else {
- warning << string_compose(_("Could not understand XML file %1"), instant_file) << endmsg;
- return 0;
- }
- } else {
- return 0;
- }
- }
-
- const XMLNodeList& nlist = _instant_xml->children();
- XMLNodeConstIterator i;
-
- for (i = nlist.begin(); i != nlist.end(); ++i) {
- if ((*i)->name() == str) {
- return (*i);
- }
- }
-
- return 0;
-}
-
diff --git a/libs/ardour/utils.cc b/libs/ardour/utils.cc
index 9adc7c72cd..f021639028 100644
--- a/libs/ardour/utils.cc
+++ b/libs/ardour/utils.cc
@@ -186,15 +186,6 @@ touch_file (string path)
return 1;
}
-uint32_t long
-get_uid()
-{
- struct timeval tv;
- gettimeofday(&tv, 0);
-
- return (uint32_t long) tv.tv_sec * 1000000 + tv.tv_usec;
-}
-
string
placement_as_string (Placement p)
{
diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc
index 80c36dab95..352b887e13 100644
--- a/libs/ardour/vst_plugin.cc
+++ b/libs/ardour/vst_plugin.cc
@@ -41,8 +41,6 @@
#include <vst/aeffectx.h>
-#include <midi++/manager.h>
-
#include <ardour/ardour.h>
#include <ardour/session.h>
#include <ardour/audioengine.h>
@@ -81,7 +79,7 @@ VSTPlugin::VSTPlugin (AudioEngine& e, Session& session, FSTHandle* h)
_plugin->dispatcher (_plugin, effSetProgram, 0, 0, NULL, 0.0f);
- Plugin::setup_midi_controls ();
+ Plugin::setup_controls ();
}
VSTPlugin::VSTPlugin (const VSTPlugin &other)
@@ -94,7 +92,7 @@ VSTPlugin::VSTPlugin (const VSTPlugin &other)
}
_plugin = _fst->plugin;
- Plugin::setup_midi_controls ();
+ Plugin::setup_controls ();
}
VSTPlugin::~VSTPlugin ()
@@ -133,13 +131,6 @@ VSTPlugin::set_parameter (uint32_t which, float val)
{
_plugin->setParameter (_plugin, which, val);
ParameterChanged (which, val); /* EMIT SIGNAL */
-
- if (session().get_midi_feedback()) {
-
- if (which < parameter_count() && midi_controls[which]) {
- midi_controls[which]->send_feedback (val);
- }
- }
}
float