mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-10 00:34:59 +01:00
fix up wscript/build issues in exportvis after merge with master
This commit is contained in:
commit
8648a8a13b
160 changed files with 29589 additions and 65089 deletions
|
|
@ -1,5 +1,5 @@
|
|||
Download waf (http://code.google.com/p/waf/)
|
||||
Download autowaf (http://svn.drobilla.net/autowaf)
|
||||
autowaf.py is present in the tools directory of the Ardour source code.
|
||||
|
||||
From within the waf source tree, run:
|
||||
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ typedef uint64_t microseconds_t;
|
|||
#include "missing_plugin_dialog.h"
|
||||
#include "mixer_ui.h"
|
||||
#include "mouse_cursors.h"
|
||||
#include "nsm.h"
|
||||
#include "opts.h"
|
||||
#include "pingback.h"
|
||||
#include "processor_box.h"
|
||||
|
|
@ -717,7 +718,7 @@ int
|
|||
ARDOUR_UI::starting ()
|
||||
{
|
||||
Application* app = Application::instance ();
|
||||
char *nsm_url;
|
||||
const char *nsm_url;
|
||||
bool brand_new_user = ArdourStartup::required ();
|
||||
|
||||
app->ShouldQuit.connect (sigc::mem_fun (*this, &ARDOUR_UI::queue_finish));
|
||||
|
|
@ -729,9 +730,17 @@ ARDOUR_UI::starting ()
|
|||
|
||||
app->ready ();
|
||||
|
||||
nsm_url = getenv ("NSM_URL");
|
||||
/* we need to create this early because it may need to set the
|
||||
* audio backend end up.
|
||||
*/
|
||||
|
||||
if (nsm_url) {
|
||||
try {
|
||||
audio_midi_setup.get (true);
|
||||
} catch (...) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((nsm_url = g_getenv ("NSM_URL")) != 0) {
|
||||
nsm = new NSM_Client;
|
||||
if (!nsm->init (nsm_url)) {
|
||||
nsm->announce (PROGRAM_NAME, ":dirty:", "ardour3");
|
||||
|
|
@ -741,19 +750,33 @@ ARDOUR_UI::starting ()
|
|||
for ( i = 0; i < 5000; ++i) {
|
||||
nsm->check ();
|
||||
usleep (i);
|
||||
if (nsm->is_active())
|
||||
if (nsm->is_active()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (i == 5000) {
|
||||
error << _("NSM server did not announce itself") << endmsg;
|
||||
return -1;
|
||||
}
|
||||
// wait for open command from nsm server
|
||||
for ( i = 0; i < 5000; ++i) {
|
||||
nsm->check ();
|
||||
usleep (1000);
|
||||
if (nsm->client_id ())
|
||||
if (nsm->client_id ()) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i == 5000) {
|
||||
error << _("NSM: no client ID provided") << endmsg;
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (_session && nsm) {
|
||||
_session->set_nsm_state( nsm->is_active() );
|
||||
} else {
|
||||
error << _("NSM: no session created") << endmsg;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// nsm requires these actions disabled
|
||||
|
|
@ -772,10 +795,11 @@ ARDOUR_UI::starting ()
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
delete nsm;
|
||||
nsm = 0;
|
||||
error << _("NSM: initialization failed") << endmsg;
|
||||
return -1;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
@ -793,16 +817,6 @@ ARDOUR_UI::starting ()
|
|||
}
|
||||
}
|
||||
|
||||
/* we need to create this early because it may need to set the
|
||||
* audio backend end up.
|
||||
*/
|
||||
|
||||
try {
|
||||
audio_midi_setup.get (true);
|
||||
} catch (...) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* go get a session */
|
||||
|
||||
const bool new_session_required = (ARDOUR_COMMAND_LINE::new_session || brand_new_user);
|
||||
|
|
@ -827,13 +841,6 @@ ARDOUR_UI::starting ()
|
|||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::no_memory_warning ()
|
||||
{
|
||||
XMLNode node (X_("no-memory-warning"));
|
||||
Config->add_instant_xml (node);
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::check_memory_locking ()
|
||||
{
|
||||
|
|
@ -890,9 +897,6 @@ ARDOUR_UI::check_memory_locking ()
|
|||
VBox* vbox = msg.get_vbox();
|
||||
HBox hbox;
|
||||
CheckButton cb (_("Do not show this window again"));
|
||||
|
||||
cb.signal_toggled().connect (sigc::mem_fun (*this, &ARDOUR_UI::no_memory_warning));
|
||||
|
||||
hbox.pack_start (cb, true, false);
|
||||
vbox->pack_start (hbox);
|
||||
cb.show();
|
||||
|
|
@ -903,6 +907,11 @@ ARDOUR_UI::check_memory_locking ()
|
|||
|
||||
editor->ensure_float (msg);
|
||||
msg.run ();
|
||||
|
||||
if (cb.get_active()) {
|
||||
XMLNode node (X_("no-memory-warning"));
|
||||
Config->add_instant_xml (node);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2181,8 +2190,13 @@ ARDOUR_UI::snapshot_session (bool switch_to_it)
|
|||
|
||||
prompter.set_name ("Prompter");
|
||||
prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
|
||||
prompter.set_title (_("Take Snapshot"));
|
||||
prompter.set_prompt (_("Name of new snapshot"));
|
||||
if (switch_to_it) {
|
||||
prompter.set_title (_("Save as..."));
|
||||
prompter.set_prompt (_("New session name"));
|
||||
} else {
|
||||
prompter.set_title (_("Take Snapshot"));
|
||||
prompter.set_prompt (_("Name of new snapshot"));
|
||||
}
|
||||
|
||||
if (!switch_to_it) {
|
||||
char timebuf[128];
|
||||
|
|
@ -3226,6 +3240,57 @@ ARDOUR_UI::flush_trash ()
|
|||
display_cleanup_results (rep, _("deleted file"), true);
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::setup_order_hint ()
|
||||
{
|
||||
uint32_t order_hint = 0;
|
||||
|
||||
/*
|
||||
we want the new routes to have their order keys set starting from
|
||||
the highest order key in the selection + 1 (if available).
|
||||
*/
|
||||
if (add_route_dialog->get_transient_for () == mixer->get_toplevel()) {
|
||||
for (RouteUISelection::iterator s = mixer->selection().routes.begin(); s != mixer->selection().routes.end(); ++s) {
|
||||
if ((*s)->route()->order_key() > order_hint) {
|
||||
order_hint = (*s)->route()->order_key();
|
||||
}
|
||||
}
|
||||
|
||||
if (!mixer->selection().routes.empty()) {
|
||||
order_hint++;
|
||||
}
|
||||
|
||||
} else {
|
||||
for (TrackSelection::iterator s = editor->get_selection().tracks.begin(); s != editor->get_selection().tracks.end(); ++s) {
|
||||
RouteTimeAxisView* tav = dynamic_cast<RouteTimeAxisView*> (*s);
|
||||
if (tav->route()->order_key() > order_hint) {
|
||||
order_hint = tav->route()->order_key();
|
||||
}
|
||||
}
|
||||
|
||||
if (!editor->get_selection().tracks.empty()) {
|
||||
order_hint++;
|
||||
}
|
||||
}
|
||||
|
||||
_session->set_order_hint (order_hint);
|
||||
|
||||
/* create a gap in the existing route order keys to accomodate new routes.*/
|
||||
|
||||
boost::shared_ptr <RouteList> rd = _session->get_routes();
|
||||
for (RouteList::iterator ri = rd->begin(); ri != rd->end(); ++ri) {
|
||||
boost::shared_ptr<Route> rt (*ri);
|
||||
|
||||
if (rt->is_monitor()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (rt->order_key () >= order_hint) {
|
||||
rt->set_order_key (rt->order_key () + add_route_dialog->count());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
ARDOUR_UI::add_route (Gtk::Window* float_window)
|
||||
{
|
||||
|
|
@ -3241,6 +3306,7 @@ ARDOUR_UI::add_route (Gtk::Window* float_window)
|
|||
}
|
||||
|
||||
if (float_window) {
|
||||
add_route_dialog->unset_transient_for ();
|
||||
add_route_dialog->set_transient_for (*float_window);
|
||||
}
|
||||
|
||||
|
|
@ -3260,6 +3326,8 @@ ARDOUR_UI::add_route (Gtk::Window* float_window)
|
|||
return;
|
||||
}
|
||||
|
||||
setup_order_hint();
|
||||
|
||||
PBD::ScopedConnection idle_connection;
|
||||
|
||||
if (count > 8) {
|
||||
|
|
@ -3737,8 +3805,8 @@ ARDOUR_UI::session_dialog (std::string msg)
|
|||
int
|
||||
ARDOUR_UI::pending_state_dialog ()
|
||||
{
|
||||
HBox* hbox = new HBox();
|
||||
Image* image = new Image (Stock::DIALOG_QUESTION, ICON_SIZE_DIALOG);
|
||||
HBox* hbox = manage (new HBox());
|
||||
Image* image = manage (new Image (Stock::DIALOG_QUESTION, ICON_SIZE_DIALOG));
|
||||
ArdourDialog dialog (_("Crash Recovery"), true);
|
||||
Label message (string_compose (_("\
|
||||
This session appears to have been in the\n\
|
||||
|
|
|
|||
|
|
@ -72,7 +72,6 @@
|
|||
#include "ardour_window.h"
|
||||
#include "editing.h"
|
||||
#include "meterbridge.h"
|
||||
#include "nsm.h"
|
||||
#include "ui_config.h"
|
||||
#include "enums.h"
|
||||
#include "visibility_group.h"
|
||||
|
|
@ -105,6 +104,7 @@ class SpeakerDialog;
|
|||
class ThemeManager;
|
||||
class TimeInfoBox;
|
||||
class MidiTracer;
|
||||
class NSM_Client;
|
||||
class LevelMeterHBox;
|
||||
class GlobalPortMatrixWindow;
|
||||
class GUIObjectState;
|
||||
|
|
@ -582,6 +582,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
|||
|
||||
void snapshot_session (bool switch_to_it);
|
||||
void rename_session ();
|
||||
void setup_order_hint ();
|
||||
|
||||
Mixer_UI *mixer;
|
||||
int create_mixer ();
|
||||
|
|
@ -692,7 +693,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
|||
|
||||
bool first_idle ();
|
||||
|
||||
void no_memory_warning ();
|
||||
void check_memory_locking ();
|
||||
|
||||
bool check_audioengine();
|
||||
|
|
|
|||
|
|
@ -193,7 +193,9 @@ ARDOUR_UI::set_session (Session *s)
|
|||
editor_meter_peak_display.hide();
|
||||
}
|
||||
|
||||
if (_session && _session->master_out()) {
|
||||
if (_session
|
||||
&& _session->master_out()
|
||||
&& _session->master_out()->n_outputs().n(DataType::AUDIO) > 0) {
|
||||
editor_meter = new LevelMeterHBox(_session);
|
||||
editor_meter->set_meter (_session->master_out()->shared_peak_meter().get());
|
||||
editor_meter->clear_meters();
|
||||
|
|
@ -216,12 +218,17 @@ ARDOUR_UI::set_session (Session *s)
|
|||
editor_meter_peak_display.signal_button_release_event().connect (sigc::mem_fun(*this, &ARDOUR_UI::editor_meter_peak_button_release), false);
|
||||
|
||||
if (Config->get_show_editor_meter()) {
|
||||
transport_tearoff_hbox.pack_start (meter_box, false, false);
|
||||
transport_tearoff_hbox.pack_start (editor_meter_peak_display, false, false);
|
||||
meter_box.show();
|
||||
editor_meter_peak_display.show();
|
||||
} else {
|
||||
meter_box.hide();
|
||||
editor_meter_peak_display.hide();
|
||||
} else if (meter_box.get_parent()) {
|
||||
transport_tearoff_hbox.remove (meter_box);
|
||||
transport_tearoff_hbox.remove (editor_meter_peak_display);
|
||||
}
|
||||
} else if (meter_box.get_parent()) {
|
||||
transport_tearoff_hbox.remove (meter_box);
|
||||
transport_tearoff_hbox.remove (editor_meter_peak_display);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -335,7 +342,7 @@ ARDOUR_UI::goto_mixer_window ()
|
|||
screen = Gdk::Screen::get_default();
|
||||
}
|
||||
|
||||
if (screen && screen->get_height() < 700) {
|
||||
if (g_getenv ("ARDOUR_LOVES_STUPID_TINY_SCREENS") == 0 && screen && screen->get_height() < 700) {
|
||||
Gtk::MessageDialog msg (_("This screen is not tall enough to display the mixer window"));
|
||||
msg.run ();
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -402,11 +402,13 @@ ARDOUR_UI::parameter_changed (std::string p)
|
|||
} else if (p == "show-editor-meter") {
|
||||
bool show = Config->get_show_editor_meter();
|
||||
if (editor_meter && show) {
|
||||
transport_tearoff_hbox.pack_start (meter_box, false, false);
|
||||
transport_tearoff_hbox.pack_start (editor_meter_peak_display, false, false);
|
||||
meter_box.show();
|
||||
editor_meter_peak_display.show();
|
||||
} else if (editor_meter && !show) {
|
||||
meter_box.hide();
|
||||
editor_meter_peak_display.hide();
|
||||
} else if (editor_meter && !show && meter_box.get_parent()) {
|
||||
transport_tearoff_hbox.remove (meter_box);
|
||||
transport_tearoff_hbox.remove (editor_meter_peak_display);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -620,6 +620,9 @@ AudioClock::end_edit (bool modify)
|
|||
break;
|
||||
|
||||
case Frames:
|
||||
if (edit_string.length() < 1) {
|
||||
edit_string = pre_edit_string;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,14 +75,6 @@ set_language_preference ()
|
|||
{
|
||||
gtk_disable_setlocale ();
|
||||
|
||||
if (g_getenv ("LANGUAGE") || g_getenv ("LC_ALL") || g_getenv ("LANG")) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (g_getenv ("ARDOUR_EN")) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* the gettext manual is potentially misleading about the utility of
|
||||
LANGUAGE. It notes that if LANGUAGE is set to include a dialect/region-free
|
||||
language code, like "it", it will assume that you mean the main
|
||||
|
|
@ -126,6 +118,6 @@ set_language_preference ()
|
|||
*/
|
||||
|
||||
cout << "LANG set to " << [nslocale UTF8String] << endl;
|
||||
setenv ("LANG", [nslocale UTF8String], 0);
|
||||
setenv ("LANG", [nslocale UTF8String], 0);
|
||||
CFRelease (cflocale);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1085,6 +1085,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
|||
bool button_press_handler_1 (ArdourCanvas::Item *, GdkEvent *, ItemType);
|
||||
bool button_press_handler_2 (ArdourCanvas::Item *, GdkEvent *, ItemType);
|
||||
bool button_release_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
|
||||
bool button_double_click_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
|
||||
bool button_press_dispatch (GdkEventButton*);
|
||||
bool button_release_dispatch (GdkEventButton*);
|
||||
bool motion_handler (ArdourCanvas::Item*, GdkEvent*, bool from_autoscroll = false);
|
||||
|
|
@ -1523,6 +1524,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
|
|||
void marker_menu_edit ();
|
||||
void marker_menu_remove ();
|
||||
void marker_menu_rename ();
|
||||
void rename_marker (Marker *marker);
|
||||
void toggle_marker_menu_lock ();
|
||||
void toggle_marker_menu_glue ();
|
||||
void marker_menu_hide ();
|
||||
|
|
|
|||
|
|
@ -422,7 +422,7 @@ struct EditorOrderTimeAxisViewSorter {
|
|||
RouteTimeAxisView* ra = dynamic_cast<RouteTimeAxisView*> (a);
|
||||
RouteTimeAxisView* rb = dynamic_cast<RouteTimeAxisView*> (b);
|
||||
assert (ra && rb);
|
||||
return ra->route()->order_key (EditorSort) < rb->route()->order_key (EditorSort);
|
||||
return ra->route()->order_key () < rb->route()->order_key ();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -176,12 +176,6 @@ EditorGroupTabs::default_properties () const
|
|||
return plist;
|
||||
}
|
||||
|
||||
RouteSortOrderKey
|
||||
EditorGroupTabs::order_key () const
|
||||
{
|
||||
return EditorSort;
|
||||
}
|
||||
|
||||
RouteList
|
||||
EditorGroupTabs::selected_routes () const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -37,7 +37,6 @@ private:
|
|||
}
|
||||
void add_menu_items (Gtk::Menu *, ARDOUR::RouteGroup *);
|
||||
PBD::PropertyList default_properties () const;
|
||||
ARDOUR::RouteSortOrderKey order_key () const;
|
||||
ARDOUR::RouteList selected_routes () const;
|
||||
void sync_order_keys ();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1338,12 +1338,23 @@ Editor::marker_menu_rename ()
|
|||
/*NOTREACHED*/
|
||||
}
|
||||
|
||||
|
||||
rename_marker (marker);
|
||||
}
|
||||
|
||||
void
|
||||
Editor::rename_marker(Marker *marker)
|
||||
{
|
||||
Location* loc;
|
||||
bool is_start;
|
||||
|
||||
loc = find_location_from_marker (marker, is_start);
|
||||
|
||||
if (!loc) return;
|
||||
if (!loc)
|
||||
return;
|
||||
|
||||
if (loc == transport_loop_location() || loc == transport_punch_location() || loc->is_session_range())
|
||||
return;
|
||||
|
||||
ArdourPrompter dialog (true);
|
||||
string txt;
|
||||
|
|
@ -1378,6 +1389,7 @@ Editor::marker_menu_rename ()
|
|||
|
||||
dialog.get_result(txt);
|
||||
loc->set_name (txt);
|
||||
_session->set_dirty ();
|
||||
|
||||
XMLNode &after = _session->locations()->get_state();
|
||||
_session->add_command (new MementoCommand<Locations>(*(_session->locations()), &before, &after));
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ Editor::show_editor_mixer (bool yn)
|
|||
screen = Gdk::Screen::get_default();
|
||||
}
|
||||
|
||||
if (screen && screen->get_height() < 700) {
|
||||
if (g_getenv ("ARDOUR_LOVES_STUPID_TINY_SCREENS") == 0 && screen && screen->get_height() < 700) {
|
||||
Gtk::MessageDialog msg (_("This screen is not tall enough to display the editor mixer"));
|
||||
msg.run ();
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -1269,6 +1269,10 @@ bool
|
|||
Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type)
|
||||
{
|
||||
if (event->type != GDK_BUTTON_PRESS) {
|
||||
if (event->type == GDK_2BUTTON_PRESS) {
|
||||
gdk_pointer_ungrab (GDK_CURRENT_TIME);
|
||||
return button_double_click_handler (item, event, item_type);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -1392,6 +1396,52 @@ Editor::button_release_dispatch (GdkEventButton* ev)
|
|||
return button_bindings->activate (b, Gtkmm2ext::Bindings::Release);
|
||||
}
|
||||
|
||||
bool
|
||||
Editor::button_double_click_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type) {
|
||||
|
||||
if (event->button.button != 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (item_type) {
|
||||
case RegionItem:
|
||||
RegionView *rv;
|
||||
rv = clicked_regionview;
|
||||
rv->show_region_editor ();
|
||||
return true;
|
||||
case NoteItem:
|
||||
case PlayheadCursorItem:
|
||||
break;
|
||||
case MarkerItem:
|
||||
case RangeMarkerBarItem:
|
||||
case CdMarkerBarItem:
|
||||
Marker* marker;
|
||||
if ((marker = static_cast<Marker *> (item->get_data ("marker"))) == 0) {
|
||||
break;
|
||||
}
|
||||
rename_marker (marker);
|
||||
return true;
|
||||
case TempoMarkerItem:
|
||||
edit_tempo_marker (item);
|
||||
return true;
|
||||
case MeterMarkerItem:
|
||||
edit_meter_marker (item);
|
||||
return true;
|
||||
case MarkerBarItem:
|
||||
case TempoBarItem:
|
||||
case MeterBarItem:
|
||||
case TransportMarkerBarItem:
|
||||
case StreamItem:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool
|
||||
Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemType item_type)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4712,7 +4712,7 @@ Editor::apply_midi_note_edit_op_to_region (MidiOperator& op, MidiRegionView& mrv
|
|||
vector<Evoral::Sequence<Evoral::MusicalTime>::Notes> v;
|
||||
v.push_back (selected);
|
||||
|
||||
framepos_t pos_frames = mrv.midi_region()->position();
|
||||
framepos_t pos_frames = mrv.midi_region()->position() - mrv.midi_region()->start();
|
||||
double pos_beats = _session->tempo_map().framewalk_to_beats(0, pos_frames);
|
||||
|
||||
return op (mrv.midi_region()->model(), pos_beats, v);
|
||||
|
|
@ -5528,7 +5528,7 @@ Editor::split_region ()
|
|||
|
||||
struct EditorOrderRouteSorter {
|
||||
bool operator() (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) {
|
||||
return a->order_key (EditorSort) < b->order_key (EditorSort);
|
||||
return a->order_key () < b->order_key ();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -284,7 +284,7 @@ EditorRoutes::EditorRoutes (Editor* e)
|
|||
|
||||
_display.set_enable_search (false);
|
||||
|
||||
Route::SyncOrderKeys.connect (*this, MISSING_INVALIDATOR, boost::bind (&EditorRoutes::sync_treeview_from_order_keys, this, _1), gui_context());
|
||||
Route::SyncOrderKeys.connect (*this, MISSING_INVALIDATOR, boost::bind (&EditorRoutes::sync_treeview_from_order_keys, this), gui_context());
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
@ -600,9 +600,24 @@ EditorRoutes::active_changed (std::string const & path)
|
|||
void
|
||||
EditorRoutes::routes_added (list<RouteTimeAxisView*> routes)
|
||||
{
|
||||
TreeModel::Row row;
|
||||
PBD::Unwinder<bool> at (_adding_routes, true);
|
||||
|
||||
bool from_scratch = (_model->children().size() == 0);
|
||||
Gtk::TreeModel::Children::iterator insert_iter = _model->children().end();
|
||||
|
||||
for (Gtk::TreeModel::Children::iterator it = _model->children().begin(); it != _model->children().end(); ++it) {
|
||||
boost::shared_ptr<Route> r = (*it)[_columns.route];
|
||||
|
||||
if (r->order_key() == (routes.front()->route()->order_key() + routes.size())) {
|
||||
insert_iter = it;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!from_scratch) {
|
||||
_editor->selection->tracks.clear();
|
||||
}
|
||||
|
||||
suspend_redisplay ();
|
||||
|
||||
_display.set_model (Glib::RefPtr<ListStore>());
|
||||
|
|
@ -611,7 +626,7 @@ EditorRoutes::routes_added (list<RouteTimeAxisView*> routes)
|
|||
|
||||
boost::shared_ptr<MidiTrack> midi_trk = boost::dynamic_pointer_cast<MidiTrack> ((*x)->route());
|
||||
|
||||
row = *(_model->append ());
|
||||
TreeModel::Row row = *(_model->insert (insert_iter));
|
||||
|
||||
row[_columns.text] = (*x)->route()->name();
|
||||
row[_columns.visible] = (*x)->marked_for_display();
|
||||
|
|
@ -635,6 +650,10 @@ EditorRoutes::routes_added (list<RouteTimeAxisView*> routes)
|
|||
row[_columns.solo_safe_state] = (*x)->route()->solo_safe();
|
||||
row[_columns.name_editable] = true;
|
||||
|
||||
if (!from_scratch) {
|
||||
_editor->selection->add(*x);
|
||||
}
|
||||
|
||||
boost::weak_ptr<Route> wr ((*x)->route());
|
||||
|
||||
(*x)->route()->gui_changed.connect (*this, MISSING_INVALIDATOR, boost::bind (&EditorRoutes::handle_gui_changes, this, _1, _2), gui_context());
|
||||
|
|
@ -812,7 +831,7 @@ EditorRoutes::show_track_in_display (TimeAxisView& tv)
|
|||
void
|
||||
EditorRoutes::reset_remote_control_ids ()
|
||||
{
|
||||
if (Config->get_remote_model() != EditorOrdered || !_session || _session->deletion_in_progress()) {
|
||||
if (Config->get_remote_model() == UserOrdered || !_session || _session->deletion_in_progress()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -841,7 +860,7 @@ EditorRoutes::reset_remote_control_ids ()
|
|||
uint32_t new_rid = (visible ? rid : invisible_key--);
|
||||
|
||||
if (new_rid != route->remote_control_id()) {
|
||||
route->set_remote_control_id_from_order_key (EditorSort, new_rid);
|
||||
route->set_remote_control_id_explicit (new_rid);
|
||||
rid_change = true;
|
||||
}
|
||||
|
||||
|
|
@ -887,20 +906,20 @@ EditorRoutes::sync_order_keys_from_treeview ()
|
|||
boost::shared_ptr<Route> route = (*ri)[_columns.route];
|
||||
bool visible = (*ri)[_columns.visible];
|
||||
|
||||
uint32_t old_key = route->order_key (EditorSort);
|
||||
uint32_t old_key = route->order_key ();
|
||||
|
||||
if (order != old_key) {
|
||||
route->set_order_key (EditorSort, order);
|
||||
route->set_order_key (order);
|
||||
|
||||
changed = true;
|
||||
}
|
||||
|
||||
if ((Config->get_remote_model() == EditorOrdered) && !route->is_master() && !route->is_monitor()) {
|
||||
if ((Config->get_remote_model() == MixerOrdered) && !route->is_master() && !route->is_monitor()) {
|
||||
|
||||
uint32_t new_rid = (visible ? rid : invisible_key--);
|
||||
|
||||
if (new_rid != route->remote_control_id()) {
|
||||
route->set_remote_control_id_from_order_key (EditorSort, new_rid);
|
||||
route->set_remote_control_id_explicit (new_rid);
|
||||
rid_change = true;
|
||||
}
|
||||
|
||||
|
|
@ -915,7 +934,7 @@ EditorRoutes::sync_order_keys_from_treeview ()
|
|||
|
||||
if (changed) {
|
||||
/* tell the world that we changed the editor sort keys */
|
||||
_session->sync_order_keys (EditorSort);
|
||||
_session->sync_order_keys ();
|
||||
}
|
||||
|
||||
if (rid_change) {
|
||||
|
|
@ -925,37 +944,17 @@ EditorRoutes::sync_order_keys_from_treeview ()
|
|||
}
|
||||
|
||||
void
|
||||
EditorRoutes::sync_treeview_from_order_keys (RouteSortOrderKey src)
|
||||
EditorRoutes::sync_treeview_from_order_keys ()
|
||||
{
|
||||
/* Some route order key(s) for `src' has been changed, make sure that
|
||||
/* Some route order key(s) have been changed, make sure that
|
||||
we update out tree/list model and GUI to reflect the change.
|
||||
*/
|
||||
|
||||
if (!_session || _session->deletion_in_progress()) {
|
||||
if (_ignore_reorder || !_session || _session->deletion_in_progress()) {
|
||||
return;
|
||||
}
|
||||
|
||||
DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("editor sync model from order keys, src = %1\n", enum_2_string (src)));
|
||||
|
||||
if (src == MixerSort) {
|
||||
|
||||
if (!Config->get_sync_all_route_ordering()) {
|
||||
/* mixer sort keys changed - we don't care */
|
||||
return;
|
||||
}
|
||||
|
||||
DEBUG_TRACE (DEBUG::OrderKeys, "reset editor order key to match mixer\n");
|
||||
|
||||
/* mixer sort keys were changed, update the editor sort
|
||||
* keys since "sync mixer+editor order" is enabled.
|
||||
*/
|
||||
|
||||
boost::shared_ptr<RouteList> r = _session->get_routes ();
|
||||
|
||||
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
|
||||
(*i)->sync_order_keys (src);
|
||||
}
|
||||
}
|
||||
DEBUG_TRACE (DEBUG::OrderKeys, "editor sync model from order keys.\n");
|
||||
|
||||
/* we could get here after either a change in the Mixer or Editor sort
|
||||
* order, but either way, the mixer order keys reflect the intended
|
||||
|
|
@ -975,7 +974,7 @@ EditorRoutes::sync_treeview_from_order_keys (RouteSortOrderKey src)
|
|||
|
||||
for (TreeModel::Children::iterator ri = rows.begin(); ri != rows.end(); ++ri, ++old_order) {
|
||||
boost::shared_ptr<Route> route = (*ri)[_columns.route];
|
||||
sorted_routes.push_back (RoutePlusOrderKey (route, old_order, route->order_key (EditorSort)));
|
||||
sorted_routes.push_back (RoutePlusOrderKey (route, old_order, route->order_key ()));
|
||||
}
|
||||
|
||||
SortByNewDisplayOrder cmp;
|
||||
|
|
@ -1341,7 +1340,7 @@ struct EditorOrderRouteSorter {
|
|||
/* everything else before master */
|
||||
return false;
|
||||
}
|
||||
return a->order_key (EditorSort) < b->order_key (EditorSort);
|
||||
return a->order_key () < b->order_key ();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -1501,7 +1500,7 @@ EditorRoutes::move_selected_tracks (bool up)
|
|||
}
|
||||
|
||||
for (leading = view_routes.begin(); leading != view_routes.end(); ++leading) {
|
||||
uint32_t order = leading->second->order_key (EditorSort);
|
||||
uint32_t order = leading->second->order_key ();
|
||||
neworder.push_back (order);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ private:
|
|||
void on_tv_solo_safe_toggled (std::string const &);
|
||||
void build_menu ();
|
||||
void show_menu ();
|
||||
void sync_treeview_from_order_keys (ARDOUR::RouteSortOrderKey);
|
||||
void sync_treeview_from_order_keys ();
|
||||
void route_deleted (Gtk::TreeModel::Path const &);
|
||||
void visible_changed (std::string const &);
|
||||
void active_changed (std::string const &);
|
||||
|
|
|
|||
|
|
@ -779,7 +779,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op)
|
|||
|
||||
RouteTimeAxisView* closest = 0;
|
||||
int distance = INT_MAX;
|
||||
int key = rtv->route()->order_key (EditorSort);
|
||||
int key = rtv->route()->order_key ();
|
||||
|
||||
for (RegionSelection::iterator x = selection->regions.begin(); x != selection->regions.end(); ++x) {
|
||||
|
||||
|
|
@ -794,7 +794,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op)
|
|||
if (result.second) {
|
||||
/* newly added to already_in_selection */
|
||||
|
||||
int d = artv->route()->order_key (EditorSort);
|
||||
int d = artv->route()->order_key ();
|
||||
|
||||
d -= key;
|
||||
|
||||
|
|
@ -810,7 +810,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op)
|
|||
|
||||
/* now add all tracks between that one and this one */
|
||||
|
||||
int okey = closest->route()->order_key (EditorSort);
|
||||
int okey = closest->route()->order_key ();
|
||||
|
||||
if (okey > key) {
|
||||
swap (okey, key);
|
||||
|
|
@ -820,7 +820,7 @@ Editor::set_selected_regionview_from_click (bool press, Selection::Operation op)
|
|||
RouteTimeAxisView* artv = dynamic_cast<RouteTimeAxisView*>(*x);
|
||||
if (artv && artv != rtv) {
|
||||
|
||||
int k = artv->route()->order_key (EditorSort);
|
||||
int k = artv->route()->order_key ();
|
||||
|
||||
if (k >= okey && k <= key) {
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@
|
|||
#include "ardour/stretch.h"
|
||||
|
||||
#ifdef USE_RUBBERBAND
|
||||
#include "rubberband/RubberBandStretcher.h"
|
||||
#include <rubberband/RubberBandStretcher.h>
|
||||
using namespace RubberBand;
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -87,7 +87,6 @@ EngineControl::EngineControl ()
|
|||
, midi_refresh_button (_("Refresh list"))
|
||||
, ignore_changes (0)
|
||||
, _desired_sample_rate (0)
|
||||
, no_push (true)
|
||||
, started_at_least_once (false)
|
||||
{
|
||||
using namespace Notebook_Helpers;
|
||||
|
|
@ -290,8 +289,6 @@ EngineControl::EngineControl ()
|
|||
output_channels.signal_changed().connect (sigc::mem_fun (*this, &EngineControl::parameter_changed));
|
||||
|
||||
notebook.signal_switch_page().connect (sigc::mem_fun (*this, &EngineControl::on_switch_page));
|
||||
|
||||
no_push = false;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -822,7 +819,7 @@ EngineControl::EngineControl ()
|
|||
set_popdown_strings (sample_rate_combo, s);
|
||||
|
||||
if (desired.empty()) {
|
||||
sample_rate_combo.set_active_text (s.front());
|
||||
sample_rate_combo.set_active_text (rate_as_string (backend->default_sample_rate()));
|
||||
} else {
|
||||
sample_rate_combo.set_active_text (desired);
|
||||
}
|
||||
|
|
@ -859,7 +856,7 @@ EngineControl::EngineControl ()
|
|||
buffer_size_combo.set_sensitive (true);
|
||||
set_popdown_strings (buffer_size_combo, s);
|
||||
|
||||
buffer_size_combo.set_active_text (s.front());
|
||||
buffer_size_combo.set_active_text (bufsize_as_string (backend->default_buffer_size()));
|
||||
show_buffer_duration ();
|
||||
} else {
|
||||
buffer_size_combo.set_sensitive (false);
|
||||
|
|
@ -874,10 +871,6 @@ EngineControl::EngineControl ()
|
|||
/* pick up any saved state for this device */
|
||||
|
||||
maybe_display_saved_state ();
|
||||
|
||||
/* and push it to the backend */
|
||||
|
||||
push_state_to_backend (false);
|
||||
}
|
||||
|
||||
string
|
||||
|
|
@ -1207,14 +1200,9 @@ EngineControl::EngineControl ()
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
EngineControl::push_state_to_backend (bool start)
|
||||
{
|
||||
if (no_push) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
boost::shared_ptr<ARDOUR::AudioBackend> backend = ARDOUR::AudioEngine::instance()->current_backend();
|
||||
|
||||
if (!backend) {
|
||||
|
|
|
|||
|
|
@ -114,7 +114,6 @@ class EngineControl : public ArdourDialog, public PBD::ScopedConnectionList {
|
|||
|
||||
uint32_t ignore_changes;
|
||||
uint32_t _desired_sample_rate;
|
||||
bool no_push;
|
||||
bool started_at_least_once;
|
||||
|
||||
void driver_changed ();
|
||||
|
|
|
|||
|
|
@ -215,9 +215,9 @@ ExportDialog::init_components ()
|
|||
}
|
||||
|
||||
void
|
||||
ExportDialog::notify_errors ()
|
||||
ExportDialog::notify_errors (bool force)
|
||||
{
|
||||
if (status->errors()) {
|
||||
if (force || status->errors()) {
|
||||
std::string txt = _("Export has been aborted due to an error!\nSee the Log for details.");
|
||||
Gtk::MessageDialog msg (txt, false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true);
|
||||
msg.run();
|
||||
|
|
@ -303,9 +303,14 @@ ExportDialog::show_conflicting_files ()
|
|||
void
|
||||
ExportDialog::do_export ()
|
||||
{
|
||||
profile_manager->prepare_for_export ();
|
||||
handler->do_export ();
|
||||
show_progress ();
|
||||
try {
|
||||
profile_manager->prepare_for_export ();
|
||||
handler->do_export ();
|
||||
show_progress ();
|
||||
} catch(std::exception & e) {
|
||||
error << string_compose (_("Export initialization failed: %1"), e.what()) << endmsg;
|
||||
notify_errors(true);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ class ExportDialog : public ArdourDialog {
|
|||
|
||||
void expanded_changed();
|
||||
|
||||
void notify_errors ();
|
||||
void notify_errors (bool force = false);
|
||||
void close_dialog ();
|
||||
|
||||
void sync_with_manager ();
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr
|
|||
|
||||
friend class MixerStrip;
|
||||
friend class MeterStrip;
|
||||
friend class RouteTimeAxisView;
|
||||
boost::shared_ptr<ARDOUR::Route> _route;
|
||||
boost::shared_ptr<ARDOUR::PeakMeter> _meter;
|
||||
boost::shared_ptr<ARDOUR::Amp> _amp;
|
||||
|
|
|
|||
|
|
@ -490,6 +490,32 @@ GenericPluginUI::integer_printer (char buf[32], Adjustment &adj, ControlUI* cui)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
GenericPluginUI::midinote_printer (char buf[32], Adjustment &adj, ControlUI* cui)
|
||||
{
|
||||
float const v = adj.get_value ();
|
||||
|
||||
if (cui->scale_points) {
|
||||
Plugin::ScalePoints::const_iterator i = cui->scale_points->begin ();
|
||||
while (i != cui->scale_points->end() && i->second != v) {
|
||||
++i;
|
||||
}
|
||||
|
||||
if (i != cui->scale_points->end ()) {
|
||||
snprintf (buf, 32, "%s", i->first.c_str());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (v >= 0 && v <= 127) {
|
||||
int mn = rint(v);
|
||||
const char notename[12][3] = { "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" };
|
||||
snprintf (buf, 32, "%s %d", notename[mn%12], (mn/12)-2);
|
||||
} else {
|
||||
snprintf (buf, 32, "%.0f", v);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
GenericPluginUI::print_parameter (char *buf, uint32_t len, uint32_t param)
|
||||
{
|
||||
|
|
@ -610,7 +636,12 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
|
|||
if (desc.integer_step) {
|
||||
control_ui->clickbox = new ClickBox (adj, "PluginUIClickBox");
|
||||
Gtkmm2ext::set_size_request_to_display_given_text (*control_ui->clickbox, "g9999999", 2, 2);
|
||||
control_ui->clickbox->set_printer (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::integer_printer), control_ui));
|
||||
if (desc.midinote) {
|
||||
printf("MIDI NOTE\n");
|
||||
control_ui->clickbox->set_printer (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::midinote_printer), control_ui));
|
||||
} else {
|
||||
control_ui->clickbox->set_printer (sigc::bind (sigc::mem_fun (*this, &GenericPluginUI::integer_printer), control_ui));
|
||||
}
|
||||
} else {
|
||||
//sigc::slot<void,char*,uint32_t> pslot = sigc::bind (sigc::mem_fun(*this, &GenericPluginUI::print_parameter), (uint32_t) port_index);
|
||||
|
||||
|
|
|
|||
|
|
@ -447,23 +447,15 @@ GroupTabs::un_subgroup (RouteGroup* g)
|
|||
}
|
||||
|
||||
struct CollectSorter {
|
||||
CollectSorter (RouteSortOrderKey key) : _key (key) {}
|
||||
|
||||
bool operator () (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) {
|
||||
return a->order_key (_key) < b->order_key (_key);
|
||||
return a->order_key () < b->order_key ();
|
||||
}
|
||||
|
||||
RouteSortOrderKey _key;
|
||||
};
|
||||
|
||||
struct OrderSorter {
|
||||
OrderSorter (RouteSortOrderKey key) : _key (key) {}
|
||||
|
||||
bool operator() (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) {
|
||||
return a->order_key (_key) < b->order_key (_key);
|
||||
return a->order_key () < b->order_key ();
|
||||
}
|
||||
|
||||
RouteSortOrderKey _key;
|
||||
};
|
||||
|
||||
/** Collect all members of a RouteGroup so that they are together in the Editor or Mixer.
|
||||
|
|
@ -473,19 +465,19 @@ void
|
|||
GroupTabs::collect (RouteGroup* g)
|
||||
{
|
||||
boost::shared_ptr<RouteList> group_routes = g->route_list ();
|
||||
group_routes->sort (CollectSorter (order_key ()));
|
||||
group_routes->sort (CollectSorter ());
|
||||
int const N = group_routes->size ();
|
||||
|
||||
RouteList::iterator i = group_routes->begin ();
|
||||
boost::shared_ptr<RouteList> routes = _session->get_routes ();
|
||||
routes->sort (OrderSorter (order_key ()));
|
||||
routes->sort (OrderSorter ());
|
||||
RouteList::const_iterator j = routes->begin ();
|
||||
|
||||
int diff = 0;
|
||||
int coll = -1;
|
||||
while (i != group_routes->end() && j != routes->end()) {
|
||||
|
||||
int const k = (*j)->order_key (order_key ());
|
||||
int const k = (*j)->order_key ();
|
||||
|
||||
if (*i == *j) {
|
||||
|
||||
|
|
@ -496,14 +488,14 @@ GroupTabs::collect (RouteGroup* g)
|
|||
--diff;
|
||||
}
|
||||
|
||||
(*j)->set_order_key (order_key (), coll);
|
||||
(*j)->set_order_key (coll);
|
||||
|
||||
++coll;
|
||||
++i;
|
||||
|
||||
} else {
|
||||
|
||||
(*j)->set_order_key (order_key (), k + diff);
|
||||
(*j)->set_order_key (k + diff);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -92,7 +92,6 @@ private:
|
|||
|
||||
virtual void add_menu_items (Gtk::Menu *, ARDOUR::RouteGroup *) {}
|
||||
virtual PBD::PropertyList default_properties () const = 0;
|
||||
virtual ARDOUR::RouteSortOrderKey order_key () const = 0;
|
||||
virtual ARDOUR::RouteList selected_routes () const = 0;
|
||||
virtual void sync_order_keys () = 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -478,12 +478,12 @@ void
|
|||
LV2PluginUI::on_window_hide()
|
||||
{
|
||||
//printf("LV2PluginUI::on_window_hide\n");
|
||||
_message_update_connection.disconnect();
|
||||
|
||||
if (_lv2->is_external_ui()) {
|
||||
if (!_external_ui_ptr) { return; }
|
||||
LV2_EXTERNAL_UI_HIDE(_external_ui_ptr);
|
||||
if (!_lv2->is_external_kx()) { return ; }
|
||||
_message_update_connection.disconnect();
|
||||
_screen_update_connection.disconnect();
|
||||
_external_ui_ptr = NULL;
|
||||
suil_instance_free((SuilInstance*)_inst);
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ fixup_bundle_environment (int, char* [])
|
|||
|
||||
vector<string> lpath;
|
||||
lpath.push_back (bundle_dir);
|
||||
lpath.push_back ("share");
|
||||
lpath.push_back ("Resources");
|
||||
lpath.push_back ("locale");
|
||||
localedir = strdup (Glib::build_filename (lpath).c_str());
|
||||
}
|
||||
|
|
@ -172,9 +172,9 @@ fixup_bundle_environment (int, char* [])
|
|||
export_search_path (bundle_dir, "ARDOUR_INSTANT_XML_PATH", "/Resources");
|
||||
export_search_path (bundle_dir, "LADSPA_PATH", "/Plugins");
|
||||
export_search_path (bundle_dir, "VAMP_PATH", "/lib");
|
||||
export_search_path (bundle_dir, "SUIL_MODULE_DIR", "/lib");
|
||||
export_search_path (bundle_dir, "GTK_PATH", "/lib/gtkengines");
|
||||
|
||||
setenv ("SUIL_MODULE_DIR", (bundle_dir + "/lib").c_str(), 1);
|
||||
setenv ("PATH", (bundle_dir + "/MacOS:" + std::string(getenv ("PATH"))).c_str(), 1);
|
||||
|
||||
/* unset GTK_RC_FILES so that we only load the RC files that we define
|
||||
|
|
@ -282,9 +282,9 @@ fixup_bundle_environment (int /*argc*/, char* argv[])
|
|||
export_search_path (dir_path, "ARDOUR_DATA_PATH", "/share");
|
||||
export_search_path (dir_path, "LADSPA_PATH", "/plugins");
|
||||
export_search_path (dir_path, "VAMP_PATH", "/lib");
|
||||
export_search_path (dir_path, "SUIL_MODULE_DIR", "/lib");
|
||||
export_search_path (dir_path, "GTK_PATH", "/lib/gtkengines");
|
||||
|
||||
setenv ("SUIL_MODULE_DIR", (dir_path + "/lib").c_str(), 1);
|
||||
setenv ("PATH", (dir_path + "/bin:" + std::string(getenv ("PATH"))).c_str(), 1);
|
||||
|
||||
/* unset GTK_RC_FILES so that we only load the RC files that we define
|
||||
|
|
|
|||
|
|
@ -177,6 +177,11 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
|
|||
namebx.set_size_request(18, 52);
|
||||
namebx.pack_start(name_label, true, false, 3);
|
||||
|
||||
mon_in_box.pack_start(*monitor_input_button, true, false);
|
||||
btnbox.pack_start(mon_in_box, false, false, 1);
|
||||
mon_disk_box.pack_start(*monitor_disk_button, true, false);
|
||||
btnbox.pack_start(mon_disk_box, false, false, 1);
|
||||
|
||||
recbox.pack_start(*rec_enable_button, true, false);
|
||||
btnbox.pack_start(recbox, false, false, 1);
|
||||
mutebox.pack_start(*mute_button, true, false);
|
||||
|
|
@ -193,9 +198,17 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
|
|||
solo_button->set_corner_radius(2);
|
||||
solo_button->set_size_request(16, 16);
|
||||
|
||||
monitor_input_button->set_corner_radius(2);
|
||||
monitor_input_button->set_size_request(16, 16);
|
||||
|
||||
monitor_disk_button->set_corner_radius(2);
|
||||
monitor_disk_button->set_size_request(16, 16);
|
||||
|
||||
mutebox.set_size_request(16, 16);
|
||||
solobox.set_size_request(16, 16);
|
||||
recbox.set_size_request(16, 16);
|
||||
mon_in_box.set_size_request(16, 16);
|
||||
mon_disk_box.set_size_request(16, 16);
|
||||
spacer.set_size_request(-1,0);
|
||||
|
||||
update_button_box();
|
||||
|
|
@ -232,6 +245,8 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt)
|
|||
mtr_container.show();
|
||||
mtr_hsep.show();
|
||||
nfo_vbox.show();
|
||||
monitor_input_button->show();
|
||||
monitor_disk_button->show();
|
||||
|
||||
_route->shared_peak_meter()->ConfigurationChanged.connect (
|
||||
route_connections, invalidator (*this), boost::bind (&MeterStrip::meter_configuration_changed, this, _1), gui_context()
|
||||
|
|
@ -339,6 +354,8 @@ MeterStrip::set_button_names()
|
|||
}
|
||||
}
|
||||
|
||||
monitor_input_button->set_text (_("I"));
|
||||
monitor_disk_button->set_text (_("D"));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -651,6 +668,14 @@ MeterStrip::update_button_box ()
|
|||
} else {
|
||||
recbox.hide();
|
||||
}
|
||||
if (_session->config.get_show_monitor_on_meterbridge()) {
|
||||
height += 18 + 18;
|
||||
mon_in_box.show();
|
||||
mon_disk_box.show();
|
||||
} else {
|
||||
mon_in_box.hide();
|
||||
mon_disk_box.hide();
|
||||
}
|
||||
btnbox.set_size_request(16, height);
|
||||
check_resize();
|
||||
}
|
||||
|
|
@ -684,6 +709,9 @@ MeterStrip::parameter_changed (std::string const & p)
|
|||
else if (p == "show-name-on-meterbridge") {
|
||||
update_name_box();
|
||||
}
|
||||
else if (p == "show-monitor-on-meterbridge") {
|
||||
update_button_box();
|
||||
}
|
||||
else if (p == "meterbridge-label-height") {
|
||||
queue_resize();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,6 +108,8 @@ class MeterStrip : public Gtk::VBox, public RouteUI
|
|||
Gtk::HBox mutebox;
|
||||
Gtk::HBox solobox;
|
||||
Gtk::HBox recbox;
|
||||
Gtk::HBox mon_in_box;
|
||||
Gtk::HBox mon_disk_box;
|
||||
|
||||
Gtk::Alignment meter_align;
|
||||
Gtk::Alignment peak_align;
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ struct SignalOrderRouteSorter {
|
|||
/* everything comes before b */
|
||||
return true;
|
||||
}
|
||||
return a->order_key (MixerSort) < b->order_key (MixerSort);
|
||||
return a->order_key () < b->order_key ();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -138,7 +138,7 @@ Meterbridge::Meterbridge ()
|
|||
|
||||
signal_delete_event().connect (sigc::mem_fun (*this, &Meterbridge::hide_window));
|
||||
signal_configure_event().connect (sigc::mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler));
|
||||
Route::SyncOrderKeys.connect (*this, invalidator (*this), boost::bind (&Meterbridge::sync_order_keys, this, _1), gui_context());
|
||||
Route::SyncOrderKeys.connect (*this, invalidator (*this), boost::bind (&Meterbridge::sync_order_keys, this), gui_context());
|
||||
MeterStrip::CatchDeletion.connect (*this, invalidator (*this), boost::bind (&Meterbridge::remove_strip, this, _1), gui_context());
|
||||
MeterStrip::MetricChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::resync_order, this), gui_context());
|
||||
MeterStrip::ConfigurationChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::queue_resize, this), gui_context());
|
||||
|
|
@ -637,7 +637,7 @@ Meterbridge::remove_strip (MeterStrip* strip)
|
|||
}
|
||||
|
||||
void
|
||||
Meterbridge::sync_order_keys (RouteSortOrderKey)
|
||||
Meterbridge::sync_order_keys ()
|
||||
{
|
||||
Glib::Threads::Mutex::Lock lm (_resync_mutex);
|
||||
|
||||
|
|
@ -776,7 +776,7 @@ Meterbridge::sync_order_keys (RouteSortOrderKey)
|
|||
void
|
||||
Meterbridge::resync_order()
|
||||
{
|
||||
sync_order_keys(MixerSort);
|
||||
sync_order_keys();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ class Meterbridge :
|
|||
void remove_strip (MeterStrip *);
|
||||
|
||||
void session_going_away ();
|
||||
void sync_order_keys (ARDOUR::RouteSortOrderKey src);
|
||||
void sync_order_keys ();
|
||||
void resync_order ();
|
||||
mutable Glib::Threads::Mutex _resync_mutex;
|
||||
|
||||
|
|
@ -107,7 +107,7 @@ class Meterbridge :
|
|||
/* everything comes before b */
|
||||
return true;
|
||||
}
|
||||
return a->order_key (ARDOUR::MixerSort) < b->order_key (ARDOUR::MixerSort);
|
||||
return a->order_key () < b->order_key ();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -170,12 +170,6 @@ MixerGroupTabs::default_properties () const
|
|||
return plist;
|
||||
}
|
||||
|
||||
RouteSortOrderKey
|
||||
MixerGroupTabs::order_key () const
|
||||
{
|
||||
return MixerSort;
|
||||
}
|
||||
|
||||
RouteList
|
||||
MixerGroupTabs::selected_routes () const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ private:
|
|||
}
|
||||
|
||||
PBD::PropertyList default_properties () const;
|
||||
ARDOUR::RouteSortOrderKey order_key () const;
|
||||
ARDOUR::RouteList selected_routes () const;
|
||||
void sync_order_keys ();
|
||||
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ Mixer_UI::Mixer_UI ()
|
|||
/* allow this window to become the key focus window */
|
||||
set_flags (CAN_FOCUS);
|
||||
|
||||
Route::SyncOrderKeys.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::sync_treeview_from_order_keys, this, _1), gui_context());
|
||||
Route::SyncOrderKeys.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::sync_treeview_from_order_keys, this), gui_context());
|
||||
|
||||
scroller.set_can_default (true);
|
||||
set_default (scroller);
|
||||
|
|
@ -313,6 +313,22 @@ Mixer_UI::hide_window (GdkEventAny *ev)
|
|||
void
|
||||
Mixer_UI::add_strips (RouteList& routes)
|
||||
{
|
||||
bool from_scratch = track_model->children().size() == 0;
|
||||
Gtk::TreeModel::Children::iterator insert_iter = track_model->children().end();
|
||||
|
||||
for (Gtk::TreeModel::Children::iterator it = track_model->children().begin(); it != track_model->children().end(); ++it) {
|
||||
boost::shared_ptr<Route> r = (*it)[track_columns.route];
|
||||
|
||||
if (r->order_key() == (routes.front()->order_key() + routes.size())) {
|
||||
insert_iter = it;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!from_scratch) {
|
||||
_selection.clear_routes ();
|
||||
}
|
||||
|
||||
MixerStrip* strip;
|
||||
|
||||
try {
|
||||
|
|
@ -359,12 +375,16 @@ Mixer_UI::add_strips (RouteList& routes)
|
|||
|
||||
show_strip (strip);
|
||||
|
||||
TreeModel::Row row = *(track_model->append());
|
||||
TreeModel::Row row = *(track_model->insert(insert_iter));
|
||||
row[track_columns.text] = route->name();
|
||||
row[track_columns.visible] = strip->route()->is_master() ? true : strip->marked_for_display();
|
||||
row[track_columns.route] = route;
|
||||
row[track_columns.strip] = strip;
|
||||
|
||||
if (!from_scratch) {
|
||||
_selection.add (strip);
|
||||
}
|
||||
|
||||
route->PropertyChanged.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::strip_property_changed, this, _1, strip), gui_context());
|
||||
|
||||
strip->WidthChanged.connect (sigc::mem_fun(*this, &Mixer_UI::strip_width_changed));
|
||||
|
|
@ -408,7 +428,7 @@ Mixer_UI::remove_strip (MixerStrip* strip)
|
|||
void
|
||||
Mixer_UI::reset_remote_control_ids ()
|
||||
{
|
||||
if (Config->get_remote_model() != MixerOrdered || !_session || _session->deletion_in_progress()) {
|
||||
if (Config->get_remote_model() == UserOrdered || !_session || _session->deletion_in_progress()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -434,7 +454,7 @@ Mixer_UI::reset_remote_control_ids ()
|
|||
uint32_t new_rid = (visible ? rid : invisible_key--);
|
||||
|
||||
if (new_rid != route->remote_control_id()) {
|
||||
route->set_remote_control_id_from_order_key (MixerSort, new_rid);
|
||||
route->set_remote_control_id_explicit (new_rid);
|
||||
rid_change = true;
|
||||
}
|
||||
|
||||
|
|
@ -476,10 +496,10 @@ Mixer_UI::sync_order_keys_from_treeview ()
|
|||
boost::shared_ptr<Route> route = (*ri)[track_columns.route];
|
||||
bool visible = (*ri)[track_columns.visible];
|
||||
|
||||
uint32_t old_key = route->order_key (MixerSort);
|
||||
uint32_t old_key = route->order_key ();
|
||||
|
||||
if (order != old_key) {
|
||||
route->set_order_key (MixerSort, order);
|
||||
route->set_order_key (order);
|
||||
changed = true;
|
||||
}
|
||||
|
||||
|
|
@ -488,7 +508,7 @@ Mixer_UI::sync_order_keys_from_treeview ()
|
|||
uint32_t new_rid = (visible ? rid : invisible_key--);
|
||||
|
||||
if (new_rid != route->remote_control_id()) {
|
||||
route->set_remote_control_id_from_order_key (MixerSort, new_rid);
|
||||
route->set_remote_control_id_explicit (new_rid);
|
||||
rid_change = true;
|
||||
}
|
||||
|
||||
|
|
@ -503,7 +523,7 @@ Mixer_UI::sync_order_keys_from_treeview ()
|
|||
|
||||
if (changed) {
|
||||
/* tell everyone that we changed the mixer sort keys */
|
||||
_session->sync_order_keys (MixerSort);
|
||||
_session->sync_order_keys ();
|
||||
}
|
||||
|
||||
if (rid_change) {
|
||||
|
|
@ -513,33 +533,13 @@ Mixer_UI::sync_order_keys_from_treeview ()
|
|||
}
|
||||
|
||||
void
|
||||
Mixer_UI::sync_treeview_from_order_keys (RouteSortOrderKey src)
|
||||
Mixer_UI::sync_treeview_from_order_keys ()
|
||||
{
|
||||
if (!_session || _session->deletion_in_progress()) {
|
||||
return;
|
||||
}
|
||||
|
||||
DEBUG_TRACE (DEBUG::OrderKeys, string_compose ("mixer sync model from order keys, src = %1\n", enum_2_string (src)));
|
||||
|
||||
if (src == EditorSort) {
|
||||
|
||||
if (!Config->get_sync_all_route_ordering()) {
|
||||
/* editor sort keys changed - we don't care */
|
||||
return;
|
||||
}
|
||||
|
||||
DEBUG_TRACE (DEBUG::OrderKeys, "reset mixer order key to match editor\n");
|
||||
|
||||
/* editor sort keys were changed, update the mixer sort
|
||||
* keys since "sync mixer+editor order" is enabled.
|
||||
*/
|
||||
|
||||
boost::shared_ptr<RouteList> r = _session->get_routes ();
|
||||
|
||||
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
|
||||
(*i)->sync_order_keys (src);
|
||||
}
|
||||
}
|
||||
DEBUG_TRACE (DEBUG::OrderKeys, "mixer sync model from order keys.\n");
|
||||
|
||||
/* we could get here after either a change in the Mixer or Editor sort
|
||||
* order, but either way, the mixer order keys reflect the intended
|
||||
|
|
@ -559,7 +559,7 @@ Mixer_UI::sync_treeview_from_order_keys (RouteSortOrderKey src)
|
|||
|
||||
for (TreeModel::Children::iterator ri = rows.begin(); ri != rows.end(); ++ri, ++old_order) {
|
||||
boost::shared_ptr<Route> route = (*ri)[track_columns.route];
|
||||
sorted_routes.push_back (RoutePlusOrderKey (route, old_order, route->order_key (MixerSort)));
|
||||
sorted_routes.push_back (RoutePlusOrderKey (route, old_order, route->order_key ()));
|
||||
}
|
||||
|
||||
SortByNewDisplayOrder cmp;
|
||||
|
|
@ -1100,7 +1100,7 @@ struct SignalOrderRouteSorter {
|
|||
/* everything comes before b */
|
||||
return true;
|
||||
}
|
||||
return a->order_key (MixerSort) < b->order_key (MixerSort);
|
||||
return a->order_key () < b->order_key ();
|
||||
|
||||
}
|
||||
};
|
||||
|
|
@ -1122,7 +1122,7 @@ Mixer_UI::initial_track_display ()
|
|||
add_strips (copy);
|
||||
}
|
||||
|
||||
_session->sync_order_keys (MixerSort);
|
||||
_session->sync_order_keys ();
|
||||
|
||||
redisplay_track_list ();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -250,9 +250,9 @@ class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public AR
|
|||
Width _strip_width;
|
||||
|
||||
void sync_order_keys_from_treeview ();
|
||||
void sync_treeview_from_order_keys (ARDOUR::RouteSortOrderKey);
|
||||
void sync_treeview_from_order_keys ();
|
||||
void reset_remote_control_ids ();
|
||||
void reset_order_keys (ARDOUR::RouteSortOrderKey);
|
||||
void reset_order_keys ();
|
||||
|
||||
bool ignore_reorder;
|
||||
|
||||
|
|
|
|||
|
|
@ -277,6 +277,7 @@ class GenericPluginUI : public PlugUIBase, public Gtk::VBox
|
|||
/* XXX: remove */
|
||||
void print_parameter (char *buf, uint32_t len, uint32_t param);
|
||||
bool integer_printer (char* buf, Gtk::Adjustment &, ControlUI *);
|
||||
bool midinote_printer(char* buf, Gtk::Adjustment &, ControlUI *);
|
||||
};
|
||||
|
||||
class PluginUIWindow : public ArdourWindow
|
||||
|
|
|
|||
5783
gtk2_ardour/po/cs.po
5783
gtk2_ardour/po/cs.po
File diff suppressed because it is too large
Load diff
1768
gtk2_ardour/po/de.po
1768
gtk2_ardour/po/de.po
File diff suppressed because it is too large
Load diff
8340
gtk2_ardour/po/el.po
8340
gtk2_ardour/po/el.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
3812
gtk2_ardour/po/es.po
3812
gtk2_ardour/po/es.po
File diff suppressed because it is too large
Load diff
6376
gtk2_ardour/po/fr.po
6376
gtk2_ardour/po/fr.po
File diff suppressed because it is too large
Load diff
6267
gtk2_ardour/po/it.po
6267
gtk2_ardour/po/it.po
File diff suppressed because it is too large
Load diff
5428
gtk2_ardour/po/nn.po
5428
gtk2_ardour/po/nn.po
File diff suppressed because it is too large
Load diff
7567
gtk2_ardour/po/pl.po
7567
gtk2_ardour/po/pl.po
File diff suppressed because it is too large
Load diff
8151
gtk2_ardour/po/pt.po
8151
gtk2_ardour/po/pt.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
3241
gtk2_ardour/po/ru.po
3241
gtk2_ardour/po/ru.po
File diff suppressed because it is too large
Load diff
8055
gtk2_ardour/po/sv.po
8055
gtk2_ardour/po/sv.po
File diff suppressed because it is too large
Load diff
4293
gtk2_ardour/po/zh.po
4293
gtk2_ardour/po/zh.po
File diff suppressed because it is too large
Load diff
|
|
@ -315,7 +315,7 @@ struct RouteIOs {
|
|||
class RouteIOsComparator {
|
||||
public:
|
||||
bool operator() (RouteIOs const & a, RouteIOs const & b) {
|
||||
return a.route->order_key (EditorSort) < b.route->order_key (EditorSort);
|
||||
return a.route->order_key () < b.route->order_key ();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ PortMatrix::init ()
|
|||
_session->engine().PortRegisteredOrUnregistered.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports, this), gui_context());
|
||||
|
||||
/* watch for route order keys changing, which changes the order of things in our global ports list(s) */
|
||||
Route::SyncOrderKeys.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports_proxy, this, _1), gui_context());
|
||||
Route::SyncOrderKeys.connect (_session_connections, invalidator (*this), boost::bind (&PortMatrix::setup_global_ports_proxy, this), gui_context());
|
||||
|
||||
/* Part 3: other stuff */
|
||||
|
||||
|
|
@ -619,15 +619,13 @@ PortMatrix::setup_global_ports ()
|
|||
}
|
||||
|
||||
void
|
||||
PortMatrix::setup_global_ports_proxy (RouteSortOrderKey sk)
|
||||
PortMatrix::setup_global_ports_proxy ()
|
||||
{
|
||||
if (sk == EditorSort) {
|
||||
/* Avoid a deadlock by calling this in an idle handler: see IOSelector::io_changed_proxy
|
||||
for a discussion.
|
||||
*/
|
||||
/* Avoid a deadlock by calling this in an idle handler: see IOSelector::io_changed_proxy
|
||||
for a discussion.
|
||||
*/
|
||||
|
||||
Glib::signal_idle().connect_once (sigc::mem_fun (*this, &PortMatrix::setup_global_ports));
|
||||
}
|
||||
Glib::signal_idle().connect_once (sigc::mem_fun (*this, &PortMatrix::setup_global_ports));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ private:
|
|||
void disassociate_all_on_channel (boost::weak_ptr<ARDOUR::Bundle>, uint32_t, int);
|
||||
void disassociate_all_on_bundle (boost::weak_ptr<ARDOUR::Bundle>, int);
|
||||
void setup_global_ports ();
|
||||
void setup_global_ports_proxy (ARDOUR::RouteSortOrderKey);
|
||||
void setup_global_ports_proxy ();
|
||||
void toggle_show_only_bundles ();
|
||||
bool on_scroll_event (GdkEventScroll *);
|
||||
boost::shared_ptr<ARDOUR::IO> io_from_bundle (boost::shared_ptr<ARDOUR::Bundle>) const;
|
||||
|
|
|
|||
|
|
@ -2598,7 +2598,7 @@ ProcessorBox::generate_processor_title (boost::shared_ptr<PluginInsert> pi)
|
|||
if (owner) {
|
||||
return string_compose(_("%1: %2 (by %3)"), owner->name(), pi->name(), maker);
|
||||
} else {
|
||||
return string_compose(_("%2 (by %3)"), pi->name(), maker);
|
||||
return string_compose(_("%1 (by %2)"), pi->name(), maker);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1414,14 +1414,6 @@ RCOptionEditor::RCOptionEditor ()
|
|||
sigc::mem_fun (*_rc_config, &RCConfiguration::set_update_editor_during_summary_drag)
|
||||
));
|
||||
|
||||
add_option (_("Editor"),
|
||||
new BoolOption (
|
||||
"sync-all-route-ordering",
|
||||
_("Synchronise editor and mixer track order"),
|
||||
sigc::mem_fun (*_rc_config, &RCConfiguration::get_sync_all_route_ordering),
|
||||
sigc::mem_fun (*_rc_config, &RCConfiguration::set_sync_all_route_ordering)
|
||||
));
|
||||
|
||||
add_option (_("Editor"),
|
||||
new BoolOption (
|
||||
"link-editor-and-mixer-selection",
|
||||
|
|
@ -1830,7 +1822,6 @@ RCOptionEditor::RCOptionEditor ()
|
|||
|
||||
rm->add (UserOrdered, _("assigned by user"));
|
||||
rm->add (MixerOrdered, _("follows order of mixer"));
|
||||
rm->add (EditorOrdered, _("follows order of editor"));
|
||||
|
||||
add_option (_("Control Surfaces"), rm);
|
||||
|
||||
|
|
|
|||
|
|
@ -2266,6 +2266,8 @@ RouteTimeAxisView::meter_changed ()
|
|||
if (_route && !no_redraw) {
|
||||
request_redraw ();
|
||||
}
|
||||
// reset peak when meter point changes
|
||||
gm.reset_peak_display();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -1815,10 +1815,9 @@ RouteUI::open_remote_control_id_dialog ()
|
|||
_route->remote_control_id(),
|
||||
(_route->is_master() ? _("the master bus") : _("the monitor bus"))));
|
||||
} else {
|
||||
l->set_markup (string_compose (_("The remote control ID of %6 is: %3\n\n\n"
|
||||
"Remote Control IDs are currently determined by track/bus ordering in %1\n\n"
|
||||
"%4Use the User Interaction tab of the Preferences window if you want to change this%5"),
|
||||
(Config->get_remote_model() == MixerOrdered ? _("the mixer") : _("the editor")),
|
||||
l->set_markup (string_compose (_("The remote control ID of %5 is: %2\n\n\n"
|
||||
"Remote Control IDs are currently determined by track/bus ordering in Ardour.\n\n"
|
||||
"%3Use the User Interaction tab of the Preferences window if you want to change this%4"),
|
||||
(is_track() ? _("track") : _("bus")),
|
||||
_route->remote_control_id(),
|
||||
"<span size=\"small\" style=\"italic\">",
|
||||
|
|
|
|||
|
|
@ -318,6 +318,13 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
|
|||
sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_solo_on_meterbridge)
|
||||
));
|
||||
|
||||
add_option (_("Meterbridge"), new BoolOption (
|
||||
"show-monitor-on-meterbridge",
|
||||
_("Monitor Buttons"),
|
||||
sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_monitor_on_meterbridge),
|
||||
sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_monitor_on_meterbridge)
|
||||
));
|
||||
|
||||
add_option (_("Meterbridge"), new OptionEditorHeading (_("Name Labels")));
|
||||
|
||||
add_option (_("Meterbridge"), new BoolOption (
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@
|
|||
#include "region_selection.h"
|
||||
|
||||
#ifdef USE_RUBBERBAND
|
||||
#include "rubberband/RubberBandStretcher.h"
|
||||
#include <rubberband/RubberBandStretcher.h>
|
||||
using namespace RubberBand;
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -274,6 +274,8 @@ def configure(conf):
|
|||
|
||||
# TODO: Insert a sanity check for on OS X to ensure CoreAudio is present
|
||||
|
||||
autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F',
|
||||
mandatory=True)
|
||||
autowaf.check_pkg(conf, 'flac', uselib_store='FLAC',
|
||||
atleast_version='1.2.1')
|
||||
autowaf.check_pkg(conf, 'gthread-2.0', uselib_store='GTHREAD',
|
||||
|
|
@ -377,15 +379,6 @@ def build(bld):
|
|||
../libs/fst/vstwin.c
|
||||
../vst/winmain.c
|
||||
'''
|
||||
obj.uselib = 'ALSA'
|
||||
obj.use = [ 'libpbd',
|
||||
'libmidipp',
|
||||
'libtaglib',
|
||||
'libardour',
|
||||
'libardour_cp',
|
||||
'libgtk2_ardour',
|
||||
'libgtkmm2ext',
|
||||
'libtaglib']
|
||||
obj.target = 'ardour-' + bld.env['VERSION'] + '-vst.exe.so'
|
||||
obj.includes = [ '../libs/fst', '.' ]
|
||||
obj.linkflags = ['-mwindows', '-Wl,--export-dynamic']
|
||||
|
|
@ -410,21 +403,23 @@ def build(bld):
|
|||
# continue with setup of obj, which could be a shared library
|
||||
# or an executable.
|
||||
|
||||
obj.use = [ 'libpbd',
|
||||
'libardour',
|
||||
'libardour_cp',
|
||||
'libtimecode',
|
||||
'libmidipp',
|
||||
'libgtk2_ardour',
|
||||
'libgtkmm2ext',
|
||||
]
|
||||
|
||||
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
|
||||
|
||||
obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG ALSA CURL DL'
|
||||
obj.uselib += ' GTKMM GNOMECANVASMM GNOMECANVAS '
|
||||
obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG CURL DL'
|
||||
obj.uselib += ' GTKMM GNOMECANVASMM GNOMECANVAS FFTW3F'
|
||||
obj.uselib += ' AUDIOUNITS OSX GTKOSX LO '
|
||||
obj.use = [ 'libpbd',
|
||||
'libmidipp',
|
||||
'libtaglib',
|
||||
'ardour',
|
||||
'libardour_cp',
|
||||
'libgtkmm2ext',
|
||||
'libtaglib',
|
||||
'timecode_includes'
|
||||
]
|
||||
|
||||
if bld.is_defined('USE_EXTERNAL_LIBS'):
|
||||
obj.uselib += ' TAGLIB'
|
||||
else:
|
||||
obj.use.append('libtaglib')
|
||||
if sys.platform == 'darwin':
|
||||
obj.use += ' libappleutility'
|
||||
obj.defines += [
|
||||
|
|
|
|||
|
|
@ -118,6 +118,17 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
|
|||
* at any time.
|
||||
*/
|
||||
virtual std::vector<float> available_sample_rates (const std::string& device) const = 0;
|
||||
|
||||
/* Returns the default sample rate that will be shown to the user when
|
||||
* configuration options are first presented. If the derived class
|
||||
* needs or wants to override this, it can. It also MUST override this
|
||||
* if there is any chance that an SR of 44.1kHz is not in the list
|
||||
* returned by available_sample_rates()
|
||||
*/
|
||||
virtual float default_sample_rate () const {
|
||||
return 44100.0;
|
||||
}
|
||||
|
||||
/** Returns a collection of uint32 identifying buffer sizes that are
|
||||
* potentially usable with the hardware identified by @param device.
|
||||
* Any of these values may be supplied in other calls to this backend
|
||||
|
|
@ -127,6 +138,16 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
|
|||
*/
|
||||
virtual std::vector<uint32_t> available_buffer_sizes (const std::string& device) const = 0;
|
||||
|
||||
/* Returns the default buffer size that will be shown to the user when
|
||||
* configuration options are first presented. If the derived class
|
||||
* needs or wants to override this, it can. It also MUST override this
|
||||
* if there is any chance that a buffer size of 1024 is not in the list
|
||||
* returned by available_buffer_sizes()
|
||||
*/
|
||||
virtual uint32_t default_buffer_size () const {
|
||||
return 1024;
|
||||
}
|
||||
|
||||
/** Returns the maximum number of input channels that are potentially
|
||||
* usable with the hardware identified by @param device. Any number from 1
|
||||
* to the value returned may be supplied in other calls to this backend as
|
||||
|
|
@ -263,16 +284,6 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
|
|||
|
||||
/* State Control */
|
||||
|
||||
/* non-virtual method to avoid possible overrides of default
|
||||
* parameters. See Scott Meyers or other books on C++ to
|
||||
* understand this pattern, or possibly just this:
|
||||
*
|
||||
* http://stackoverflow.com/questions/12139786/good-pratice-default-arguments-for-pure-virtual-method
|
||||
*/
|
||||
int start (bool for_latency_measurement=false) {
|
||||
return _start (for_latency_measurement);
|
||||
}
|
||||
|
||||
/** Start using the device named in the most recent call
|
||||
* to set_device(), with the parameters set by various
|
||||
* the most recent calls to set_sample_rate() etc. etc.
|
||||
|
|
@ -288,8 +299,24 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
|
|||
* any existing systemic latency settings.
|
||||
*
|
||||
* Return zero if successful, negative values otherwise.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* Why is this non-virtual but ::_start() is virtual ?
|
||||
* Virtual methods with default parameters create possible ambiguity
|
||||
* because a derived class may implement the same method with a different
|
||||
* type or value of default parameter.
|
||||
*
|
||||
* So we make this non-virtual method to avoid possible overrides of
|
||||
* default parameters. See Scott Meyers or other books on C++ to understand
|
||||
* this pattern, or possibly just this:
|
||||
*
|
||||
* http://stackoverflow.com/questions/12139786/good-pratice-default-arguments-for-pure-virtual-method
|
||||
*/
|
||||
virtual int _start (bool for_latency_measurement) = 0;
|
||||
int start (bool for_latency_measurement=false) {
|
||||
return _start (for_latency_measurement);
|
||||
}
|
||||
|
||||
/** Stop using the device currently in use.
|
||||
*
|
||||
|
|
@ -307,20 +334,6 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
|
|||
*/
|
||||
virtual int stop () = 0;
|
||||
|
||||
/** Temporarily cease using the device named in the most recent call to set_parameters().
|
||||
*
|
||||
* If the function is successfully called, no subsequent calls to the
|
||||
* process_callback() of @param engine will be made after the function
|
||||
* returns, until start() is called again.
|
||||
*
|
||||
* The backend will retain its existing parameter configuration after a successful
|
||||
* return, and does NOT require any calls to set hardware parameters before it can be
|
||||
* start()-ed again.
|
||||
*
|
||||
* Return zero if successful, 1 if the device is not in use, negative values on error
|
||||
*/
|
||||
virtual int pause () = 0;
|
||||
|
||||
/** While remaining connected to the device, and without changing its
|
||||
* configuration, start (or stop) calling the process_callback() of @param engine
|
||||
* without waiting for the device. Once process_callback() has returned, it
|
||||
|
|
@ -458,8 +471,25 @@ class LIBARDOUR_API AudioBackend : public PortEngine {
|
|||
|
||||
virtual void update_latencies () = 0;
|
||||
|
||||
/** Set @param speed and @param position to the current speed and position
|
||||
* indicated by some transport sync signal. Return whether the current
|
||||
* transport state is pending, or finalized.
|
||||
*
|
||||
* Derived classes only need implement this if they provide some way to
|
||||
* sync to a transport sync signal (e.g. Sony 9 Pin) that is not
|
||||
* handled by Ardour itself (LTC and MTC are both handled by Ardour).
|
||||
* The canonical example is JACK Transport.
|
||||
*/
|
||||
virtual bool speed_and_position (double& speed, framepos_t& position) {
|
||||
speed = 0.0;
|
||||
position = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
protected:
|
||||
AudioEngine& engine;
|
||||
|
||||
virtual int _start (bool for_latency_measurement) = 0;
|
||||
};
|
||||
|
||||
struct LIBARDOUR_API AudioBackendInfo {
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@ public:
|
|||
return _data + offset;
|
||||
}
|
||||
|
||||
bool check_silence (pframes_t, pframes_t&) const;
|
||||
bool check_silence (pframes_t, pframes_t&) const;
|
||||
|
||||
void prepare () { _written = false; _silent = false; }
|
||||
bool written() const { return _written; }
|
||||
|
|
|
|||
|
|
@ -86,7 +86,6 @@ public:
|
|||
|
||||
int start (bool for_latency_measurement=false);
|
||||
int stop (bool for_latency_measurement=false);
|
||||
int pause ();
|
||||
int freewheel (bool start_stop);
|
||||
float get_cpu_load() const ;
|
||||
void transport_start ();
|
||||
|
|
|
|||
|
|
@ -23,9 +23,9 @@
|
|||
|
||||
#include <string>
|
||||
|
||||
#include "taglib/tag.h"
|
||||
#include "taglib/taglib.h"
|
||||
#include "taglib/xiphcomment.h"
|
||||
#include <taglib/tag.h>
|
||||
#include <taglib/taglib.h>
|
||||
#include <taglib/xiphcomment.h>
|
||||
|
||||
#include "ardour/libardour_visibility.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -81,8 +81,8 @@ public:
|
|||
virtual void merge_from (const Buffer& src, framecnt_t len, framecnt_t dst_offset = 0, framecnt_t src_offset = 0) = 0;
|
||||
|
||||
protected:
|
||||
Buffer(DataType type, size_t capacity)
|
||||
: _type(type), _capacity(capacity), _size(0), _silent(true)
|
||||
Buffer(DataType type)
|
||||
: _type(type), _capacity(0), _size(0), _silent (true)
|
||||
{}
|
||||
|
||||
DataType _type;
|
||||
|
|
|
|||
|
|
@ -52,8 +52,6 @@ class LIBARDOUR_API MidiControlUI : public AbstractUI<MidiUIRequest>
|
|||
|
||||
static MidiControlUI* instance() { return _instance; }
|
||||
|
||||
static BaseUI::RequestType PortChange;
|
||||
|
||||
void change_midi_ports ();
|
||||
|
||||
protected:
|
||||
|
|
@ -64,7 +62,6 @@ class LIBARDOUR_API MidiControlUI : public AbstractUI<MidiUIRequest>
|
|||
typedef std::list<GSource*> PortSources;
|
||||
PortSources port_sources;
|
||||
ARDOUR::Session& _session;
|
||||
PBD::ScopedConnection rebind_connection;
|
||||
|
||||
bool midi_input_handler (Glib::IOCondition, AsyncMIDIPort*);
|
||||
void reset_ports ();
|
||||
|
|
|
|||
|
|
@ -97,12 +97,23 @@ class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public Latent
|
|||
|
||||
struct ParameterDescriptor {
|
||||
|
||||
/* XXX: it would probably be nice if this initialised everything */
|
||||
ParameterDescriptor ()
|
||||
: enumeration (false)
|
||||
: integer_step(false)
|
||||
, toggled (false)
|
||||
, logarithmic (false)
|
||||
, sr_dependent (false)
|
||||
, lower (0)
|
||||
, upper (0)
|
||||
, step (0)
|
||||
, smallstep (0)
|
||||
, largestep (0)
|
||||
, min_unbound (0)
|
||||
, max_unbound (0)
|
||||
, enumeration (false)
|
||||
, midinote(false)
|
||||
{}
|
||||
|
||||
/* essentially a union of LADSPA and VST info */
|
||||
/* essentially a union of LADSPA, VST and LV2 info */
|
||||
|
||||
bool integer_step;
|
||||
bool toggled;
|
||||
|
|
@ -117,6 +128,7 @@ class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public Latent
|
|||
bool min_unbound;
|
||||
bool max_unbound;
|
||||
bool enumeration;
|
||||
bool midinote; ///< only used if integer_step is also true
|
||||
};
|
||||
|
||||
XMLNode& get_state ();
|
||||
|
|
|
|||
|
|
@ -118,10 +118,11 @@ class LIBARDOUR_API PortEngine {
|
|||
* does not exist, return an empty string.
|
||||
*/
|
||||
virtual std::string get_port_name (PortHandle) const = 0;
|
||||
|
||||
/** Return a reference to a port with the fullname @param name. Return
|
||||
* a null pointer if no such port exists.
|
||||
* an "empty" PortHandle (analogous to a null pointer) if no such port exists.
|
||||
*/
|
||||
virtual PortHandle* get_port_by_name (const std::string&) const = 0;
|
||||
virtual PortHandle get_port_by_name (const std::string&) const = 0;
|
||||
|
||||
/** Find the set of ports whose names, types and flags match
|
||||
* specified values, place the names of each port into @param ports,
|
||||
|
|
|
|||
|
|
@ -173,7 +173,6 @@ CONFIG_VARIABLE (bool, use_overlap_equivalency, "use-overlap-equivalency", false
|
|||
CONFIG_VARIABLE (bool, periodic_safety_backups, "periodic-safety-backups", true)
|
||||
CONFIG_VARIABLE (uint32_t, periodic_safety_backup_interval, "periodic-safety-backup-interval", 120)
|
||||
CONFIG_VARIABLE (float, automation_interval_msecs, "automation-interval-msecs", 30)
|
||||
CONFIG_VARIABLE (bool, sync_all_route_ordering, "sync-all-route-ordering", true)
|
||||
CONFIG_VARIABLE (bool, only_copy_imported_files, "only-copy-imported-files", false)
|
||||
CONFIG_VARIABLE (bool, keep_tearoffs, "keep-tearoffs", false)
|
||||
CONFIG_VARIABLE (bool, new_plugins_active, "new-plugins-active", true)
|
||||
|
|
|
|||
|
|
@ -102,10 +102,9 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
|
|||
bool set_name (const std::string& str);
|
||||
static void set_name_in_state (XMLNode &, const std::string &);
|
||||
|
||||
uint32_t order_key (RouteSortOrderKey) const;
|
||||
bool has_order_key (RouteSortOrderKey) const;
|
||||
void set_order_key (RouteSortOrderKey, uint32_t);
|
||||
void sync_order_keys (RouteSortOrderKey);
|
||||
uint32_t order_key () const;
|
||||
bool has_order_key () const;
|
||||
void set_order_key (uint32_t);
|
||||
|
||||
bool is_auditioner() const { return _flags & Auditioner; }
|
||||
bool is_master() const { return _flags & MasterOut; }
|
||||
|
|
@ -427,7 +426,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
|
|||
|
||||
void set_remote_control_id (uint32_t id, bool notify_class_listeners = true);
|
||||
uint32_t remote_control_id () const;
|
||||
void set_remote_control_id_from_order_key (RouteSortOrderKey, uint32_t order_key);
|
||||
void set_remote_control_id_explicit (uint32_t order_key);
|
||||
|
||||
/* for things concerned about *this* route's RID */
|
||||
|
||||
|
|
@ -436,7 +435,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
|
|||
/* for things concerned about *any* route's RID changes */
|
||||
|
||||
static PBD::Signal0<void> RemoteControlIDChange;
|
||||
static PBD::Signal1<void,RouteSortOrderKey> SyncOrderKeys;
|
||||
static PBD::Signal0<void> SyncOrderKeys;
|
||||
|
||||
bool has_external_redirects() const;
|
||||
|
||||
|
|
@ -547,8 +546,8 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou
|
|||
int set_state_2X (const XMLNode&, int);
|
||||
void set_processor_state_2X (XMLNodeList const &, int);
|
||||
|
||||
typedef std::map<RouteSortOrderKey,uint32_t> OrderKeys;
|
||||
OrderKeys order_keys;
|
||||
uint32_t _order_key;
|
||||
bool _has_order_key;
|
||||
uint32_t _remote_control_id;
|
||||
|
||||
void input_change_handler (IOChange, void *src);
|
||||
|
|
|
|||
|
|
@ -36,6 +36,8 @@
|
|||
|
||||
#include <glibmm/threads.h>
|
||||
|
||||
#include <ltc/ltc.h>
|
||||
|
||||
#include "pbd/error.h"
|
||||
#include "pbd/event_loop.h"
|
||||
#include "pbd/rcu.h"
|
||||
|
|
@ -48,7 +50,6 @@
|
|||
#include "midi++/types.h"
|
||||
|
||||
#include "timecode/time.h"
|
||||
#include "ltc/ltc.h"
|
||||
|
||||
#include "ardour/ardour.h"
|
||||
#include "ardour/chan_count.h"
|
||||
|
|
@ -241,8 +242,9 @@ class LIBARDOUR_API LIBARDOUR_API Session : public PBD::StatefulDestructible, pu
|
|||
bool operator() (boost::shared_ptr<Route>, boost::shared_ptr<Route> b);
|
||||
};
|
||||
|
||||
void set_order_hint (uint32_t order_hint) {_order_hint = order_hint;};
|
||||
void notify_remote_id_change ();
|
||||
void sync_order_keys (RouteSortOrderKey);
|
||||
void sync_order_keys ();
|
||||
|
||||
template<class T> void foreach_route (T *obj, void (T::*func)(Route&));
|
||||
template<class T> void foreach_route (T *obj, void (T::*func)(boost::shared_ptr<Route>));
|
||||
|
|
@ -502,7 +504,7 @@ class LIBARDOUR_API LIBARDOUR_API Session : public PBD::StatefulDestructible, pu
|
|||
void timecode_time_subframes (framepos_t when, Timecode::Time&);
|
||||
|
||||
void timecode_duration (framecnt_t, Timecode::Time&) const;
|
||||
void timecode_duration_string (char *, framecnt_t) const;
|
||||
void timecode_duration_string (char *, size_t len, framecnt_t) const;
|
||||
|
||||
framecnt_t convert_to_frames (AnyTime const & position);
|
||||
framecnt_t any_duration_to_frames (framepos_t position, AnyTime const & duration);
|
||||
|
|
@ -1594,6 +1596,7 @@ class LIBARDOUR_API LIBARDOUR_API Session : public PBD::StatefulDestructible, pu
|
|||
GraphEdges _current_route_graph;
|
||||
|
||||
uint32_t next_control_id () const;
|
||||
uint32_t _order_hint;
|
||||
bool ignore_route_processor_changes;
|
||||
|
||||
MidiClockTicker* midi_clock;
|
||||
|
|
@ -1610,7 +1613,7 @@ class LIBARDOUR_API LIBARDOUR_API Session : public PBD::StatefulDestructible, pu
|
|||
|
||||
void setup_ltc ();
|
||||
void setup_click ();
|
||||
void setup_click_state (const XMLNode&);
|
||||
void setup_click_state (const XMLNode*);
|
||||
void setup_bundles ();
|
||||
|
||||
static int get_session_info_from_path (XMLTree& state_tree, const std::string& xmlpath);
|
||||
|
|
|
|||
|
|
@ -63,5 +63,6 @@ CONFIG_VARIABLE (bool, show_midi_on_meterbridge, "show-midi-on-meterbridge", tru
|
|||
CONFIG_VARIABLE (bool, show_rec_on_meterbridge, "show-rec-on-meterbridge", true)
|
||||
CONFIG_VARIABLE (bool, show_mute_on_meterbridge, "show-mute-on-meterbridge", false)
|
||||
CONFIG_VARIABLE (bool, show_solo_on_meterbridge, "show-solo-on-meterbridge", false)
|
||||
CONFIG_VARIABLE (bool, show_monitor_on_meterbridge, "show-monitor-on-meterbridge", false)
|
||||
CONFIG_VARIABLE (bool, show_name_on_meterbridge, "show-name-on-meterbridge", true)
|
||||
CONFIG_VARIABLE (uint32_t, meterbridge_label_height, "meterbridge-label-height", 0)
|
||||
|
|
|
|||
|
|
@ -25,11 +25,11 @@
|
|||
#include <glibmm/threads.h>
|
||||
|
||||
#include <jack/jack.h>
|
||||
#include <ltc/ltc.h>
|
||||
|
||||
#include "pbd/signals.h"
|
||||
|
||||
#include "timecode/time.h"
|
||||
#include "ltc/ltc.h"
|
||||
|
||||
#include "ardour/libardour_visibility.h"
|
||||
#include "ardour/types.h"
|
||||
|
|
|
|||
|
|
@ -353,11 +353,6 @@ namespace ARDOUR {
|
|||
PostFader
|
||||
};
|
||||
|
||||
enum RouteSortOrderKey {
|
||||
EditorSort,
|
||||
MixerSort
|
||||
};
|
||||
|
||||
enum MonitorModel {
|
||||
HardwareMonitoring, ///< JACK does monitoring
|
||||
SoftwareMonitoring, ///< Ardour does monitoring
|
||||
|
|
@ -419,8 +414,7 @@ namespace ARDOUR {
|
|||
|
||||
enum RemoteModel {
|
||||
UserOrdered,
|
||||
MixerOrdered,
|
||||
EditorOrdered
|
||||
MixerOrdered
|
||||
};
|
||||
|
||||
enum CrossfadeModel {
|
||||
|
|
|
|||
|
|
@ -28,15 +28,15 @@ using namespace PBD;
|
|||
using namespace ARDOUR;
|
||||
|
||||
AudioBuffer::AudioBuffer(size_t capacity)
|
||||
: Buffer(DataType::AUDIO, capacity)
|
||||
: Buffer (DataType::AUDIO)
|
||||
, _owns_data (false)
|
||||
, _data (0)
|
||||
{
|
||||
if (_capacity > 0) {
|
||||
if (capacity) {
|
||||
_owns_data = true; // prevent resize() from gagging
|
||||
resize (_capacity);
|
||||
resize (capacity);
|
||||
_silent = false; // force silence on the intial buffer state
|
||||
silence (_capacity);
|
||||
clear ();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -50,21 +50,29 @@ void
|
|||
AudioBuffer::resize (size_t size)
|
||||
{
|
||||
if (!_owns_data) {
|
||||
/* XXX how the hell is this enforced? */
|
||||
_capacity = size;
|
||||
return;
|
||||
}
|
||||
|
||||
if (size < _capacity) {
|
||||
_size = size;
|
||||
if (_data && size < _capacity) {
|
||||
/* buffer is already large enough */
|
||||
|
||||
if (size < _size) {
|
||||
/* truncate */
|
||||
_size = size;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
free (_data);
|
||||
|
||||
_capacity = size;
|
||||
_size = size;
|
||||
_silent = false;
|
||||
cache_aligned_malloc ((void**) &_data, sizeof (Sample) * size);
|
||||
|
||||
cache_aligned_malloc ((void**) &_data, sizeof (Sample) * _capacity);
|
||||
_capacity = size;
|
||||
_size = 0;
|
||||
_silent = false;
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
|||
|
|
@ -56,14 +56,11 @@ AudioPort::cycle_start (pframes_t nframes)
|
|||
}
|
||||
|
||||
void
|
||||
AudioPort::cycle_end (pframes_t)
|
||||
AudioPort::cycle_end (pframes_t nframes)
|
||||
{
|
||||
if (sends_output() && !_buffer->written()) {
|
||||
/* we can't use nframes here because the current buffer capacity may
|
||||
be shorter than the full buffer size if we split the cycle.
|
||||
*/
|
||||
if (_buffer->capacity () > 0) {
|
||||
_buffer->silence (_buffer->capacity());
|
||||
if (_buffer->capacity() >= nframes) {
|
||||
_buffer->silence (nframes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
#include <cstring>
|
||||
|
||||
#include "vamp-hostsdk/PluginLoader.h"
|
||||
#include <vamp-hostsdk/PluginLoader.h>
|
||||
|
||||
#include <glibmm/miscutils.h>
|
||||
#include <glibmm/fileutils.h>
|
||||
|
|
|
|||
|
|
@ -662,23 +662,6 @@ AudioEngine::stop (bool for_latency)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
AudioEngine::pause ()
|
||||
{
|
||||
if (!_backend) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (_backend->pause ()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
_running = false;
|
||||
|
||||
Stopped(); /* EMIT SIGNAL */
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
AudioEngine::freewheel (bool start_stop)
|
||||
{
|
||||
|
|
@ -1082,8 +1065,8 @@ AudioEngine::start_latency_detection ()
|
|||
|
||||
/* find the ports we will connect to */
|
||||
|
||||
PortEngine::PortHandle* out = pe.get_port_by_name (_latency_output_name);
|
||||
PortEngine::PortHandle* in = pe.get_port_by_name (_latency_input_name);
|
||||
PortEngine::PortHandle out = pe.get_port_by_name (_latency_output_name);
|
||||
PortEngine::PortHandle in = pe.get_port_by_name (_latency_input_name);
|
||||
|
||||
if (!out || !in) {
|
||||
stop (true);
|
||||
|
|
|
|||
|
|
@ -24,12 +24,12 @@
|
|||
|
||||
#include "pbd/convert.h"
|
||||
|
||||
#include "taglib/fileref.h"
|
||||
#include "taglib/flacfile.h"
|
||||
#include "taglib/oggfile.h"
|
||||
#include "taglib/tag.h"
|
||||
#include "taglib/taglib.h"
|
||||
#include "taglib/xiphcomment.h"
|
||||
#include <taglib/fileref.h>
|
||||
#include <taglib/flacfile.h>
|
||||
#include <taglib/oggfile.h>
|
||||
#include <taglib/tag.h>
|
||||
#include <taglib/taglib.h>
|
||||
#include <taglib/xiphcomment.h>
|
||||
|
||||
/* Convert string to TagLib::String */
|
||||
#define TL_STR(string) TagLib::String ((string).c_str(), TagLib::String::UTF8)
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ BufferSet::ensure_buffers(DataType type, size_t num_buffers, size_t buffer_capac
|
|||
// If there's not enough or they're too small, just nuke the whole thing and
|
||||
// rebuild it (so I'm lazy..)
|
||||
if (bufs.size() < num_buffers
|
||||
|| (bufs.size() > 0 && bufs[0]->capacity() < buffer_capacity)) {
|
||||
|| (bufs.size() > 0 && bufs[0]->capacity() < buffer_capacity)) {
|
||||
|
||||
// Nuke it
|
||||
for (BufferVec::iterator i = bufs.begin(); i != bufs.end(); ++i) {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
#include <cerrno>
|
||||
|
||||
#include "ardour/audioengine.h"
|
||||
#include "ardour/audio_backend.h"
|
||||
#include "ardour/slave.h"
|
||||
|
||||
using namespace std;
|
||||
|
|
@ -54,26 +55,13 @@ Engine_Slave::ok() const
|
|||
bool
|
||||
Engine_Slave::speed_and_position (double& sp, framepos_t& position)
|
||||
{
|
||||
switch (engine.transport_state()) {
|
||||
case TransportStopped:
|
||||
speed = 0;
|
||||
boost::shared_ptr<AudioBackend> backend = engine.current_backend();
|
||||
|
||||
if (backend) {
|
||||
_starting = backend->speed_and_position (sp, position);
|
||||
} else {
|
||||
_starting = false;
|
||||
break;
|
||||
case TransportRolling:
|
||||
speed = 1.0;
|
||||
_starting = false;
|
||||
break;
|
||||
case TransportLooping:
|
||||
speed = 1.0;
|
||||
_starting = false;
|
||||
break;
|
||||
case TransportStarting:
|
||||
_starting = true;
|
||||
// don't adjust speed here, just leave it as it was
|
||||
break;
|
||||
}
|
||||
|
||||
sp = speed;
|
||||
position = engine.transport_frame();
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,7 +95,6 @@ setup_enum_writer ()
|
|||
AutoState _AutoState;
|
||||
AutoStyle _AutoStyle;
|
||||
AutoConnectOption _AutoConnectOption;
|
||||
RouteSortOrderKey _RouteSortOrderKey;
|
||||
Session::StateOfTheState _Session_StateOfTheState;
|
||||
Route::Flag _Route_Flag;
|
||||
Source::Flag _Source_Flag;
|
||||
|
|
@ -281,8 +280,13 @@ setup_enum_writer ()
|
|||
|
||||
REGISTER_ENUM (UserOrdered);
|
||||
REGISTER_ENUM (MixerOrdered);
|
||||
REGISTER_ENUM (EditorOrdered);
|
||||
REGISTER (_RemoteModel);
|
||||
/*
|
||||
* EditorOrdered has been deprecated
|
||||
* since the removal of independent
|
||||
* editor / mixer ordering.
|
||||
*/
|
||||
enum_writer.add_to_hack_table ("EditorOrdered", "MixerOrdered");
|
||||
|
||||
REGISTER_ENUM (FullCrossfade);
|
||||
REGISTER_ENUM (ShortCrossfade);
|
||||
|
|
@ -434,10 +438,6 @@ setup_enum_writer ()
|
|||
REGISTER_CLASS_ENUM (Route, MonitorOut);
|
||||
REGISTER_BITS (_Route_Flag);
|
||||
|
||||
REGISTER_ENUM (MixerSort);
|
||||
REGISTER_ENUM (EditorSort);
|
||||
REGISTER (_RouteSortOrderKey);
|
||||
|
||||
REGISTER_CLASS_ENUM (Source, Writable);
|
||||
REGISTER_CLASS_ENUM (Source, CanRename);
|
||||
REGISTER_CLASS_ENUM (Source, Broadcast);
|
||||
|
|
|
|||
|
|
@ -143,6 +143,8 @@ public:
|
|||
LilvNode* ui_GtkUI;
|
||||
LilvNode* ui_external;
|
||||
LilvNode* ui_externalkx;
|
||||
LilvNode* units_unit;
|
||||
LilvNode* units_midiNote;
|
||||
|
||||
private:
|
||||
bool _bundle_checked;
|
||||
|
|
@ -1328,8 +1330,10 @@ LV2Plugin::get_parameter_descriptor(uint32_t which, ParameterDescriptor& desc) c
|
|||
{
|
||||
const LilvPort* port = lilv_plugin_get_port_by_index(_impl->plugin, which);
|
||||
|
||||
LilvNodes* portunits;
|
||||
LilvNode *def, *min, *max;
|
||||
lilv_port_get_range(_impl->plugin, port, &def, &min, &max);
|
||||
portunits = lilv_port_get_value(_impl->plugin, port, _world.units_unit);
|
||||
|
||||
desc.integer_step = lilv_port_has_property(_impl->plugin, port, _world.lv2_integer);
|
||||
desc.toggled = lilv_port_has_property(_impl->plugin, port, _world.lv2_toggled);
|
||||
|
|
@ -1338,6 +1342,8 @@ LV2Plugin::get_parameter_descriptor(uint32_t which, ParameterDescriptor& desc) c
|
|||
desc.label = lilv_node_as_string(lilv_port_get_name(_impl->plugin, port));
|
||||
desc.lower = min ? lilv_node_as_float(min) : 0.0f;
|
||||
desc.upper = max ? lilv_node_as_float(max) : 1.0f;
|
||||
desc.midinote = lilv_nodes_contains(portunits, _world.units_midiNote);
|
||||
|
||||
if (desc.sr_dependent) {
|
||||
desc.lower *= _session.frame_rate ();
|
||||
desc.upper *= _session.frame_rate ();
|
||||
|
|
@ -1362,6 +1368,7 @@ LV2Plugin::get_parameter_descriptor(uint32_t which, ParameterDescriptor& desc) c
|
|||
lilv_node_free(def);
|
||||
lilv_node_free(min);
|
||||
lilv_node_free(max);
|
||||
lilv_nodes_free(portunits);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -1501,7 +1508,7 @@ LV2Plugin::allocate_atom_event_buffers()
|
|||
return;
|
||||
}
|
||||
|
||||
DEBUG_TRACE(DEBUG::LV2, string_compose("allocate %1 atom_ev_buffers\n", total_atom_buffers));
|
||||
DEBUG_TRACE(DEBUG::LV2, string_compose("allocate %1 atom_ev_buffers of %d bytes\n", total_atom_buffers, minimumSize));
|
||||
_atom_ev_buffers = (LV2_Evbuf**) malloc((total_atom_buffers + 1) * sizeof(LV2_Evbuf*));
|
||||
for (int i = 0; i < total_atom_buffers; ++i ) {
|
||||
_atom_ev_buffers[i] = lv2_evbuf_new(minimumSize, LV2_EVBUF_ATOM,
|
||||
|
|
@ -1674,6 +1681,9 @@ LV2Plugin::connect_and_run(BufferSet& bufs,
|
|||
}
|
||||
} else if (!valid) {
|
||||
// Nothing we understand or care about, connect to scratch
|
||||
// see note for midi-buffer size above
|
||||
scratch_bufs.ensure_lv2_bufsize((flags & PORT_INPUT),
|
||||
0, _port_minimumSize[port_index]);
|
||||
_ev_buffers[port_index] = scratch_bufs.get_lv2_midi(
|
||||
(flags & PORT_INPUT), 0, (flags & PORT_EVENT));
|
||||
}
|
||||
|
|
@ -1965,10 +1975,14 @@ LV2World::LV2World()
|
|||
ui_GtkUI = lilv_new_uri(world, LV2_UI__GtkUI);
|
||||
ui_external = lilv_new_uri(world, "http://lv2plug.in/ns/extensions/ui#external");
|
||||
ui_externalkx = lilv_new_uri(world, "http://kxstudio.sf.net/ns/lv2ext/external-ui#Widget");
|
||||
units_unit = lilv_new_uri(world, "http://lv2plug.in/ns/extensions/units#unit");
|
||||
units_midiNote = lilv_new_uri(world, "http://lv2plug.in/ns/extensions/units#midiNote");
|
||||
}
|
||||
|
||||
LV2World::~LV2World()
|
||||
{
|
||||
lilv_node_free(units_midiNote);
|
||||
lilv_node_free(units_unit);
|
||||
lilv_node_free(ui_externalkx);
|
||||
lilv_node_free(ui_external);
|
||||
lilv_node_free(ui_GtkUI);
|
||||
|
|
|
|||
|
|
@ -33,12 +33,12 @@ using namespace PBD;
|
|||
|
||||
// FIXME: mirroring for MIDI buffers?
|
||||
MidiBuffer::MidiBuffer(size_t capacity)
|
||||
: Buffer(DataType::MIDI, capacity)
|
||||
, _data(0)
|
||||
: Buffer (DataType::MIDI)
|
||||
, _data (0)
|
||||
{
|
||||
if (capacity) {
|
||||
resize(_capacity);
|
||||
silence(_capacity);
|
||||
resize (capacity);
|
||||
silence (capacity);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -50,17 +50,22 @@ MidiBuffer::~MidiBuffer()
|
|||
void
|
||||
MidiBuffer::resize(size_t size)
|
||||
{
|
||||
assert(size > 0);
|
||||
if (_data && size < _capacity) {
|
||||
|
||||
if (_size < size) {
|
||||
/* truncate */
|
||||
_size = size;
|
||||
}
|
||||
|
||||
if (size < _capacity) {
|
||||
return;
|
||||
}
|
||||
|
||||
free(_data);
|
||||
free (_data);
|
||||
|
||||
cache_aligned_malloc ((void**) &_data, size);
|
||||
|
||||
_size = 0;
|
||||
_capacity = size;
|
||||
cache_aligned_malloc ((void**) &_data, _capacity);
|
||||
|
||||
assert(_data);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,14 +174,23 @@ MidiPort::flush_buffers (pframes_t nframes)
|
|||
{
|
||||
if (sends_output ()) {
|
||||
|
||||
void* port_buffer = port_engine.get_buffer (_port_handle, nframes);
|
||||
void* port_buffer = 0;
|
||||
|
||||
if (_resolve_required) {
|
||||
port_buffer = port_engine.get_buffer (_port_handle, nframes);
|
||||
/* resolve all notes at the start of the buffer */
|
||||
resolve_notes (port_buffer, 0);
|
||||
_resolve_required = false;
|
||||
}
|
||||
|
||||
if (_buffer->empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!port_buffer) {
|
||||
port_buffer = port_engine.get_buffer (_port_handle, nframes);
|
||||
}
|
||||
|
||||
for (MidiBuffer::iterator i = _buffer->begin(); i != _buffer->end(); ++i) {
|
||||
|
||||
const Evoral::MIDIEvent<MidiBuffer::TimeType> ev (*i, false);
|
||||
|
|
@ -201,6 +210,11 @@ MidiPort::flush_buffers (pframes_t nframes)
|
|||
<< " + " << _port_buffer_offset << endl;
|
||||
}
|
||||
}
|
||||
|
||||
/* done.. the data has moved to the port buffer, mark it so
|
||||
*/
|
||||
|
||||
_buffer->clear ();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ using namespace Glib;
|
|||
|
||||
#include "i18n.h"
|
||||
|
||||
BaseUI::RequestType MidiControlUI::PortChange = BaseUI::new_request_type();
|
||||
MidiControlUI* MidiControlUI::_instance = 0;
|
||||
|
||||
#include "pbd/abstract_ui.cc" /* instantiate the template */
|
||||
|
|
@ -60,24 +59,7 @@ MidiControlUI::~MidiControlUI ()
|
|||
void
|
||||
MidiControlUI::do_request (MidiUIRequest* req)
|
||||
{
|
||||
if (req->type == PortChange) {
|
||||
|
||||
/* restart event loop with new ports */
|
||||
DEBUG_TRACE (DEBUG::MidiIO, "reset ports\n");
|
||||
reset_ports ();
|
||||
|
||||
} else if (req->type == CallSlot) {
|
||||
|
||||
#ifndef NDEBUG
|
||||
if (getenv ("DEBUG_THREADED_SIGNALS")) {
|
||||
cerr << "MIDI UI calls a slot\n";
|
||||
}
|
||||
#endif
|
||||
|
||||
req->the_slot ();
|
||||
|
||||
} else if (req->type == Quit) {
|
||||
|
||||
if (req->type == Quit) {
|
||||
BaseUI::quit ();
|
||||
}
|
||||
}
|
||||
|
|
@ -117,19 +99,33 @@ MidiControlUI::clear_ports ()
|
|||
void
|
||||
MidiControlUI::reset_ports ()
|
||||
{
|
||||
if (port_sources.empty()) {
|
||||
AsyncMIDIPort* async = dynamic_cast<AsyncMIDIPort*> (_session.midi_input_port());
|
||||
if (!port_sources.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!async) {
|
||||
return;
|
||||
}
|
||||
vector<AsyncMIDIPort*> ports;
|
||||
AsyncMIDIPort* p;
|
||||
|
||||
int fd;
|
||||
if ((p = dynamic_cast<AsyncMIDIPort*> (_session.midi_input_port()))) {
|
||||
ports.push_back (p);
|
||||
}
|
||||
|
||||
if ((fd = async->selectable ()) >= 0) {
|
||||
|
||||
if ((p = dynamic_cast<AsyncMIDIPort*> (_session.mmc_input_port()))) {
|
||||
ports.push_back (p);
|
||||
}
|
||||
|
||||
if (ports.empty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
int fd;
|
||||
for (vector<AsyncMIDIPort*>::const_iterator pi = ports.begin(); pi != ports.end(); ++pi) {
|
||||
|
||||
if ((fd = (*pi)->selectable ()) >= 0) {
|
||||
Glib::RefPtr<IOSource> psrc = IOSource::create (fd, IO_IN|IO_HUP|IO_ERR);
|
||||
|
||||
psrc->connect (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), async));
|
||||
psrc->connect (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), *pi));
|
||||
psrc->attach (_main_loop->get_context());
|
||||
|
||||
// glibmm hack: for now, store only the GSource*
|
||||
|
|
|
|||
|
|
@ -68,11 +68,11 @@ MidiPortManager::create_ports ()
|
|||
return;
|
||||
}
|
||||
|
||||
_midi_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MIDI control in"), true);
|
||||
_midi_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MIDI control out"), true);
|
||||
_midi_in = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("MIDI control in"), true);
|
||||
_midi_out = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("MIDI control out"), true);
|
||||
|
||||
_mmc_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MMC in"), true);
|
||||
_mmc_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MMC out"), true);
|
||||
_mmc_in = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("MMC in"), true);
|
||||
_mmc_out = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("MMC out"), true);
|
||||
|
||||
/* XXX nasty type conversion needed because of the mixed inheritance
|
||||
* required to integrate MIDI::IPMidiPort and ARDOUR::AsyncMIDIPort.
|
||||
|
|
@ -93,14 +93,14 @@ MidiPortManager::create_ports ()
|
|||
|
||||
boost::shared_ptr<ARDOUR::Port> p;
|
||||
|
||||
p = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MTC in"));
|
||||
p = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("MTC in"));
|
||||
_mtc_input_port = boost::dynamic_pointer_cast<MidiPort> (p);
|
||||
p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MTC out"));
|
||||
p = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("MTC out"));
|
||||
_mtc_output_port= boost::dynamic_pointer_cast<MidiPort> (p);
|
||||
|
||||
p = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MIDI Clock in"));
|
||||
p = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("MIDI Clock in"));
|
||||
_midi_clock_input_port = boost::dynamic_pointer_cast<MidiPort> (p);
|
||||
p = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MIDI Clock out"));
|
||||
p = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("MIDI Clock out"));
|
||||
_midi_clock_output_port= boost::dynamic_pointer_cast<MidiPort> (p);
|
||||
|
||||
/* These ports all need their incoming data handled in
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -6,7 +6,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-09-26 16:09+0200\n"
|
||||
"POT-Creation-Date: 2013-11-05 11:11-0500\n"
|
||||
"PO-Revision-Date: 2013-09-26 16:32+0200\n"
|
||||
"Last-Translator: Edgar Aichinger <edogawa@aon.at>\n"
|
||||
"Language-Team: German <ardour-dev@lists.ardour.org>\n"
|
||||
|
|
@ -137,7 +137,7 @@ msgstr "Audio-Wiedergabelisten (unbenutzt)"
|
|||
#: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529
|
||||
#: midi_playlist_source.cc:144 midi_playlist_source.cc:152
|
||||
#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643
|
||||
#: rb_effect.cc:332 session.cc:2606 session.cc:2639 session.cc:3784
|
||||
#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797
|
||||
#: session_handle.cc:87 sndfilesource.cc:121
|
||||
msgid "programming error: %1"
|
||||
msgstr "Programmierfehler: %1"
|
||||
|
|
@ -206,19 +206,19 @@ msgstr "kann VAMP-Plugin \"%1\" nicht laden"
|
|||
msgid "VAMP Plugin \"%1\" could not be loaded"
|
||||
msgstr "VAMP-Plugin \"%1\" konnte nicht geladen werden"
|
||||
|
||||
#: audioengine.cc:489
|
||||
#: audioengine.cc:488
|
||||
msgid "looking for backends in %1\n"
|
||||
msgstr "Suche nach Backends in %1\n"
|
||||
|
||||
#: audioengine.cc:512
|
||||
#: audioengine.cc:511
|
||||
msgid "AudioEngine: cannot load module \"%1\" (%2)"
|
||||
msgstr "AudioEngine: kann Modul \"%1\" nicht laden (%2)"
|
||||
|
||||
#: audioengine.cc:518
|
||||
#: audioengine.cc:517
|
||||
msgid "AudioEngine: backend at \"%1\" has no descriptor function."
|
||||
msgstr "AudioEngine: Backend an \"%1\" hat keine Beschreibungsfunktion."
|
||||
|
||||
#: audioengine.cc:580
|
||||
#: audioengine.cc:589
|
||||
msgid "Could not create backend for %1: %2"
|
||||
msgstr "Konnte Backend für %1 nicht erzeugen: %2"
|
||||
|
||||
|
|
@ -272,8 +272,8 @@ msgstr "AudioSource: kann Pfad für Peaks (b) \"%1\" nicht öffnen (%2)"
|
|||
msgid ""
|
||||
"AudioSource[%1]: peak read - cannot read %2 samples at offset %3 of %4 (%5)"
|
||||
msgstr ""
|
||||
"AudioSource[%1]: peak read - kann %2 Samples bei Offset %3 von %4 nicht "
|
||||
"lesen(%5)"
|
||||
"AudioSource[%1]: peak read - kann %2 Samples bei Offset %3 von %4 nicht lesen"
|
||||
"(%5)"
|
||||
|
||||
#: audiosource.cc:667
|
||||
msgid "%1: could not write read raw data for peak computation (%2)"
|
||||
|
|
@ -423,7 +423,7 @@ msgstr "kann CPU-Takt in /proc/cpuinfo nicht finden"
|
|||
msgid "audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: data_type.cc:28 session.cc:1781 session.cc:1784
|
||||
#: data_type.cc:28 session.cc:1791 session.cc:1794
|
||||
msgid "MIDI"
|
||||
msgstr "MIDI"
|
||||
|
||||
|
|
@ -538,7 +538,7 @@ msgstr "Dreieck"
|
|||
msgid "Rectangular"
|
||||
msgstr "Rechteck"
|
||||
|
||||
#: export_formats.cc:52 session.cc:5002 session.cc:5018
|
||||
#: export_formats.cc:52 session.cc:5014 session.cc:5030
|
||||
msgid "None"
|
||||
msgstr "Kein"
|
||||
|
||||
|
|
@ -652,7 +652,7 @@ msgstr ""
|
|||
"% unterstützt nur %2 Kanäle, in Ihrer Kanalkonfiguration befinden sich "
|
||||
"jedoch %3 Kanäle"
|
||||
|
||||
#: file_source.cc:198 session_state.cc:2813
|
||||
#: file_source.cc:198 session_state.cc:2807
|
||||
msgid ""
|
||||
"there are already 1000 files with names like %1; versioning discontinued"
|
||||
msgstr ""
|
||||
|
|
@ -910,15 +910,15 @@ msgstr "%s in"
|
|||
msgid "%s out"
|
||||
msgstr "%s out"
|
||||
|
||||
#: io.cc:1535 session.cc:676 session.cc:705
|
||||
#: io.cc:1535 session.cc:686 session.cc:715
|
||||
msgid "mono"
|
||||
msgstr "Mono"
|
||||
|
||||
#: io.cc:1537 session.cc:689 session.cc:719
|
||||
#: io.cc:1537 session.cc:699 session.cc:729
|
||||
msgid "L"
|
||||
msgstr "L"
|
||||
|
||||
#: io.cc:1537 session.cc:691 session.cc:721
|
||||
#: io.cc:1537 session.cc:701 session.cc:731
|
||||
msgid "R"
|
||||
msgstr "R"
|
||||
|
||||
|
|
@ -1019,7 +1019,7 @@ msgstr ""
|
|||
msgid "incorrect XML mode passed to Locations::set_state"
|
||||
msgstr "unkorrekter XML-Modus an Locations::set_state weitergereicht"
|
||||
|
||||
#: location.cc:842 session.cc:4503 session_state.cc:1031
|
||||
#: location.cc:842 session.cc:4516 session_state.cc:1031
|
||||
msgid "session"
|
||||
msgstr "Projekt"
|
||||
|
||||
|
|
@ -1166,38 +1166,6 @@ msgstr "Fehlende Eigenschaft \"state\" bei AutomationState"
|
|||
msgid "MIDI stretch created non-MIDI source"
|
||||
msgstr "MIDI Streckung erzeugte Nicht-MIDI Quelle"
|
||||
|
||||
#: midiport_manager.cc:71
|
||||
msgid "MIDI control in"
|
||||
msgstr "MIDI control in"
|
||||
|
||||
#: midiport_manager.cc:72
|
||||
msgid "MIDI control out"
|
||||
msgstr "MIDI control out"
|
||||
|
||||
#: midiport_manager.cc:74
|
||||
msgid "MMC in"
|
||||
msgstr "MMC in"
|
||||
|
||||
#: midiport_manager.cc:75
|
||||
msgid "MMC out"
|
||||
msgstr "MMC out"
|
||||
|
||||
#: midiport_manager.cc:96
|
||||
msgid "MTC in"
|
||||
msgstr "MTC in"
|
||||
|
||||
#: midiport_manager.cc:98
|
||||
msgid "MTC out"
|
||||
msgstr "MTC out"
|
||||
|
||||
#: midiport_manager.cc:101
|
||||
msgid "MIDI Clock in"
|
||||
msgstr "MIDI Clock in"
|
||||
|
||||
#: midiport_manager.cc:103
|
||||
msgid "MIDI Clock out"
|
||||
msgstr "MIDI Clock out"
|
||||
|
||||
#: monitor_processor.cc:53
|
||||
msgid "monitor dim"
|
||||
msgstr "Monitor dämpfen"
|
||||
|
|
@ -1582,39 +1550,43 @@ msgstr "Import: Fehler in src_new() : %1"
|
|||
msgid "return %1"
|
||||
msgstr "Rückgabewert: %1"
|
||||
|
||||
#: route.cc:1105 route.cc:2581
|
||||
#: route.cc:1075 route.cc:2528
|
||||
msgid "unknown Processor type \"%1\"; ignored"
|
||||
msgstr "unbekannter Prozessortyp \"%1\"; ignoriert"
|
||||
|
||||
#: route.cc:1117
|
||||
#: route.cc:1087
|
||||
msgid "processor could not be created. Ignored."
|
||||
msgstr "Prozessor konnte nicht erzeugt werden. Ignoriert."
|
||||
|
||||
#: route.cc:2007 route.cc:2234
|
||||
#: route.cc:1962 route.cc:2187
|
||||
msgid "Bad node sent to Route::set_state() [%1]"
|
||||
msgstr "Schlechter Knoten an Route::set_state() gesendet [%1]"
|
||||
|
||||
#: route.cc:2067
|
||||
#: route.cc:2022
|
||||
msgid "Pannable state found for route (%1) without a panner!"
|
||||
msgstr "Pannerziel-Status für Route (%1) ohne Panner gefunden!"
|
||||
|
||||
#: route.cc:2137 route.cc:2141 route.cc:2348 route.cc:2352
|
||||
#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305
|
||||
msgid "badly formed order key string in state file! [%1] ... ignored."
|
||||
msgstr ""
|
||||
"schlecht geformte Zeichenkette für den Schlüssel der Sortierreihenfolge in "
|
||||
"der Projektdatei! [%1] ... ignoriert"
|
||||
|
||||
#: route.cc:2311
|
||||
msgid "Converting deprecated order key for %1 using Editor order %2"
|
||||
msgstr ""
|
||||
|
||||
#: route_group.cc:459
|
||||
msgid "You cannot subgroup MIDI tracks at this time"
|
||||
msgstr "MIDI-Spuren können zur Zeit nicht zu Subgruppen zusammengefasst werden"
|
||||
|
||||
#: rb_effect.cc:233 rb_effect.cc:274
|
||||
#: rb_effect.cc:234 rb_effect.cc:275
|
||||
msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)"
|
||||
msgstr ""
|
||||
"tempoize: Fehler beim Lesen der Daten von %1 an %2 (%3 erwünscht, %4 "
|
||||
"erhalten)"
|
||||
|
||||
#: rb_effect.cc:303 rb_effect.cc:325
|
||||
#: rb_effect.cc:304 rb_effect.cc:326
|
||||
msgid "error writing tempo-adjusted data to %1"
|
||||
msgstr "Fehler beim Schreiben der tempo-angepassten Daten nach %1"
|
||||
|
||||
|
|
@ -1630,98 +1602,82 @@ msgstr "Send %1"
|
|||
msgid "programming error: send created using role %1"
|
||||
msgstr "Programmierfehler: Send erzeugt mittels Rolle %1"
|
||||
|
||||
#: session.cc:343
|
||||
#: session.cc:344
|
||||
msgid "Connect to engine"
|
||||
msgstr "Verbinde zur Engine"
|
||||
|
||||
#: session.cc:348
|
||||
#: session.cc:349
|
||||
msgid "Session loading complete"
|
||||
msgstr "Laden des Projektes abgeschlossen"
|
||||
|
||||
#: session.cc:420
|
||||
#: session.cc:421
|
||||
msgid "Set up LTC"
|
||||
msgstr "LTC einrichten"
|
||||
|
||||
#: session.cc:422
|
||||
#: session.cc:423
|
||||
msgid "Set up Click"
|
||||
msgstr "Klick einrichten"
|
||||
|
||||
#: session.cc:424
|
||||
#: session.cc:425
|
||||
msgid "Set up standard connections"
|
||||
msgstr "Richte Standard-Verbindungen ein"
|
||||
|
||||
#: session.cc:561
|
||||
msgid "LTC In"
|
||||
msgstr "LTC In"
|
||||
|
||||
#: session.cc:562
|
||||
msgid "LTC Out"
|
||||
msgstr "LTC Out"
|
||||
|
||||
#: session.cc:588
|
||||
msgid "LTC-in"
|
||||
msgstr "LTC-in"
|
||||
|
||||
#: session.cc:589
|
||||
msgid "LTC-out"
|
||||
msgstr "LTC-out"
|
||||
|
||||
#: session.cc:625
|
||||
#: session.cc:635
|
||||
msgid "could not setup Click I/O"
|
||||
msgstr "konnte Metronom-E/A nicht einrichten"
|
||||
|
||||
#: session.cc:673
|
||||
#: session.cc:683
|
||||
#, c-format
|
||||
msgid "out %<PRIu32>"
|
||||
msgstr "out %<PRIu32>"
|
||||
|
||||
#: session.cc:687
|
||||
#: session.cc:697
|
||||
#, c-format
|
||||
msgid "out %<PRIu32>+%<PRIu32>"
|
||||
msgstr "out %<PRIu32>+%<PRIu32>"
|
||||
|
||||
#: session.cc:702
|
||||
#: session.cc:712
|
||||
#, c-format
|
||||
msgid "in %<PRIu32>"
|
||||
msgstr "in %<PRIu32>"
|
||||
|
||||
#: session.cc:716
|
||||
#: session.cc:726
|
||||
#, c-format
|
||||
msgid "in %<PRIu32>+%<PRIu32>"
|
||||
msgstr "in %<PRIu32>+%<PRIu32>"
|
||||
|
||||
#: session.cc:780
|
||||
#: session.cc:790
|
||||
msgid "cannot connect master output %1 to %2"
|
||||
msgstr "kann Master-Ausgang %1 nicht mit %2 verbinden"
|
||||
|
||||
#: session.cc:839
|
||||
#: session.cc:849
|
||||
msgid "monitor"
|
||||
msgstr "Monitor"
|
||||
|
||||
#: session.cc:884
|
||||
#: session.cc:894
|
||||
msgid "cannot connect control input %1 to %2"
|
||||
msgstr "kann Kontrolleingang %1 nicht mit %2 verbinden"
|
||||
|
||||
#: session.cc:904
|
||||
#: session.cc:914
|
||||
msgid "The preferred I/O for the monitor bus (%1) cannot be found"
|
||||
msgstr "Bevorzugte E/A für den Monitorbus (%1) kann nicht gefunden werden"
|
||||
|
||||
#: session.cc:935
|
||||
#: session.cc:945
|
||||
msgid "cannot connect control output %1 to %2"
|
||||
msgstr "kann Kontrollausgang %1 nicht mit %2 verbinden"
|
||||
|
||||
#: session.cc:999
|
||||
#: session.cc:1009
|
||||
msgid "cannot create Auditioner: no auditioning of regions possible"
|
||||
msgstr ""
|
||||
"Kann das Vorhör-System nicht einrichten: kein Vorhören von Regionen möglich"
|
||||
|
||||
#: session.cc:1183
|
||||
#: session.cc:1193
|
||||
msgid "Session: you can't use that location for auto punch (start <= end)"
|
||||
msgstr ""
|
||||
"Session: Sie können diese Position nicht für Auto-Punch verwenden (Start <= "
|
||||
"Ende) "
|
||||
|
||||
#: session.cc:1223
|
||||
#: session.cc:1233
|
||||
msgid ""
|
||||
"You cannot use this location for auto-loop because it has zero or negative "
|
||||
"length"
|
||||
|
|
@ -1729,15 +1685,15 @@ msgstr ""
|
|||
"Sie können diese Position nicht für \"automatische Schleife\" verwenden, da "
|
||||
"sie keine oder eine negative Länge hat"
|
||||
|
||||
#: session.cc:1537
|
||||
#: session.cc:1547
|
||||
msgid "feedback loop setup between %1 and %2"
|
||||
msgstr "Feedbackschleife zwischen %1 und %2 erkannt"
|
||||
|
||||
#: session.cc:1833
|
||||
#: session.cc:1843
|
||||
msgid "Session: could not create new midi track."
|
||||
msgstr "Session: konnte keine neue MIDI-Spur erzeugen."
|
||||
|
||||
#: session.cc:1839
|
||||
#: session.cc:1849
|
||||
msgid ""
|
||||
"No more JACK ports are available. You will need to stop %1 and restart JACK "
|
||||
"with more ports if you need this many tracks."
|
||||
|
|
@ -1745,76 +1701,76 @@ msgstr ""
|
|||
"Keine JACK-Ports mehr verfügbar. Wenn Sie so viele Spuren benötigen, müssen "
|
||||
"Sie %1 stoppen und JACK mit mehr Ports neu starten."
|
||||
|
||||
#: session.cc:2016 session.cc:2019
|
||||
#: session.cc:2026 session.cc:2029
|
||||
msgid "Audio"
|
||||
msgstr "Audio"
|
||||
|
||||
#: session.cc:2043 session.cc:2051 session.cc:2128 session.cc:2136
|
||||
#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146
|
||||
msgid "cannot configure %1 in/%2 out configuration for new audio track"
|
||||
msgstr "kann %1 ein/%2 aus für neue Audiospur nicht konfigurieren"
|
||||
|
||||
#: session.cc:2074
|
||||
#: session.cc:2084
|
||||
msgid "Session: could not create new audio track."
|
||||
msgstr "Session: konnte keine neue Audios.pur erzeugen"
|
||||
|
||||
#: session.cc:2106 session.cc:2109
|
||||
#: session.cc:2116 session.cc:2119
|
||||
msgid "Bus"
|
||||
msgstr "Bus"
|
||||
|
||||
#: session.cc:2159
|
||||
#: session.cc:2169
|
||||
msgid "Session: could not create new audio route."
|
||||
msgstr "Session: konnte keine neueAudio-Route erzeugen"
|
||||
|
||||
#: session.cc:2218 session.cc:2228
|
||||
#: session.cc:2228 session.cc:2238
|
||||
msgid "Session: UINT_MAX routes? impossible!"
|
||||
msgstr "Session: UINT_MAX Routen? unmöglich!"
|
||||
|
||||
#: session.cc:2250
|
||||
#: session.cc:2260
|
||||
msgid "Session: cannot create track/bus from template description"
|
||||
msgstr "Session: Kann die Route aus der Vorlagenbeschreibung nicht erzeugen"
|
||||
|
||||
#: session.cc:2276
|
||||
#: session.cc:2286
|
||||
msgid "Session: could not create new route from template"
|
||||
msgstr "Session: konnte keine neue Route aus der Vorlage erzeugen."
|
||||
|
||||
#: session.cc:2305
|
||||
#: session.cc:2315
|
||||
msgid "Adding new tracks/busses failed"
|
||||
msgstr "Fehler beim Hinzufügen neuer Spuren/Busse"
|
||||
|
||||
#: session.cc:3406
|
||||
#: session.cc:3419
|
||||
msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename"
|
||||
msgstr ""
|
||||
"FATALER FEHLER! Konnte keine passende Version von %1 zum Umbenennen finden"
|
||||
|
||||
#: session.cc:3526 session.cc:3584
|
||||
#: session.cc:3539 session.cc:3597
|
||||
msgid "There are already %1 recordings for %2, which I consider too many."
|
||||
msgstr "Es gibt bereits %1 Aufnahmen für %2, was ich als zu viele erachte."
|
||||
|
||||
#: session.cc:3974
|
||||
#: session.cc:3987
|
||||
msgid "send ID %1 appears to be in use already"
|
||||
msgstr "Send ID %1 ist offenbar schon in Gebrauch"
|
||||
|
||||
#: session.cc:3986
|
||||
#: session.cc:3999
|
||||
msgid "aux send ID %1 appears to be in use already"
|
||||
msgstr "Aux-Send ID %1 ist offenbar schon in Gebrauch"
|
||||
|
||||
#: session.cc:3998
|
||||
#: session.cc:4011
|
||||
msgid "return ID %1 appears to be in use already"
|
||||
msgstr "Return ID %1 ist offenbar schon in Gebrauch"
|
||||
|
||||
#: session.cc:4010
|
||||
#: session.cc:4023
|
||||
msgid "insert ID %1 appears to be in use already"
|
||||
msgstr "Insert ID %1 ist offenbar schon in Gebrauch"
|
||||
|
||||
#: session.cc:4137
|
||||
#: session.cc:4150
|
||||
msgid "Cannot write a range where end <= start (e.g. %1 <= %2)"
|
||||
msgstr "Kann einen Bereich mit Ende <= Start nicht schreiben (z.B. %1 <= %2)"
|
||||
|
||||
#: session.cc:4166
|
||||
#: session.cc:4179
|
||||
msgid "too many bounced versions of playlist \"%1\""
|
||||
msgstr "zu viele gebouncete Versionen der Wiedergabeliste \"%1\""
|
||||
|
||||
#: session.cc:4176
|
||||
#: session.cc:4189
|
||||
msgid "cannot create new audio file \"%1\" for %2"
|
||||
msgstr "kann keine neue Audiodatei \"%1\" für %2 erzeugen"
|
||||
|
||||
|
|
@ -2072,55 +2028,55 @@ msgstr "Session: XML hat keinen Abschnitt \"mix groups\""
|
|||
msgid "Session: XML state has no click section"
|
||||
msgstr "Session: XML hat keinen Abschnitt \"click\""
|
||||
|
||||
#: session_state.cc:1366
|
||||
#: session_state.cc:1360
|
||||
msgid "Session: cannot create Route from XML description."
|
||||
msgstr "Session: Kann die Route aus der XML-Beschreibung nicht erzeugen"
|
||||
|
||||
#: session_state.cc:1370
|
||||
#: session_state.cc:1364
|
||||
msgid "Loaded track/bus %1"
|
||||
msgstr "Spur/Bus %1 wurde geladen"
|
||||
|
||||
#: session_state.cc:1468
|
||||
#: session_state.cc:1462
|
||||
msgid "Could not find diskstream for route"
|
||||
msgstr "Konnte Diskstream für Route nicht finden"
|
||||
|
||||
#: session_state.cc:1522
|
||||
#: session_state.cc:1516
|
||||
msgid "Session: cannot create Region from XML description."
|
||||
msgstr "Session: kann Region nicht aus XML-Beschreibung erzeugen"
|
||||
|
||||
#: session_state.cc:1526
|
||||
#: session_state.cc:1520
|
||||
msgid "Can not load state for region '%1'"
|
||||
msgstr "Kann Status für Region '%1' nicht laden"
|
||||
|
||||
#: session_state.cc:1562
|
||||
#: session_state.cc:1556
|
||||
msgid "Regions in compound description not found (ID's %1 and %2): ignored"
|
||||
msgstr ""
|
||||
"Regionen der Verbindungsbeschreibung nicht gefunden (IDs %1 and %2): "
|
||||
"ignoriert"
|
||||
|
||||
#: session_state.cc:1590
|
||||
#: session_state.cc:1584
|
||||
msgid "Nested source has no ID info in session file! (ignored)"
|
||||
msgstr ""
|
||||
"Verschachtelte Quelle hat keine ID-Information in Projektdatei! (ignoriert)"
|
||||
|
||||
#: session_state.cc:1602
|
||||
#: session_state.cc:1596
|
||||
msgid "Cannot reconstruct nested source for region %1"
|
||||
msgstr "Kann verschachtelte Quelle für Region %1 nicht wiederherstellen"
|
||||
|
||||
#: session_state.cc:1664
|
||||
#: session_state.cc:1658
|
||||
msgid "Session: XMLNode describing a AudioRegion is incomplete (no source)"
|
||||
msgstr ""
|
||||
"Session: XML-Knoten zur Beschreibung einer Audioregion ist unvollständig "
|
||||
"(Quelle fehlt)"
|
||||
|
||||
#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713
|
||||
#: session_state.cc:1666 session_state.cc:1687 session_state.cc:1707
|
||||
msgid ""
|
||||
"Session: XMLNode describing a AudioRegion references an unknown source id =%1"
|
||||
msgstr ""
|
||||
"Session: XML-Knoten zur Beschreibung einer Audioregion referenziert eine "
|
||||
"unbekannte Quell-ID =%1"
|
||||
|
||||
#: session_state.cc:1678 session_state.cc:1699 session_state.cc:1719
|
||||
#: session_state.cc:1672 session_state.cc:1693 session_state.cc:1713
|
||||
msgid ""
|
||||
"Session: XMLNode describing a AudioRegion references a non-audio source id ="
|
||||
"%1"
|
||||
|
|
@ -2128,7 +2084,7 @@ msgstr ""
|
|||
"Session: XML-Knoten zur Beschreibung einer Audioregion referenziert eine "
|
||||
"Nicht-Audio Quell-ID =%1"
|
||||
|
||||
#: session_state.cc:1742
|
||||
#: session_state.cc:1736
|
||||
msgid ""
|
||||
"Session: XMLNode describing an AudioRegion is missing some master sources; "
|
||||
"ignored"
|
||||
|
|
@ -2136,27 +2092,27 @@ msgstr ""
|
|||
"Session: dem XML-Knoten zur Beschreibung einer Audioregion fehlen einige "
|
||||
"Hauptquellen; ignoriert"
|
||||
|
||||
#: session_state.cc:1776
|
||||
#: session_state.cc:1770
|
||||
msgid "Session: XMLNode describing a MidiRegion is incomplete (no source)"
|
||||
msgstr ""
|
||||
"Session: XML-Knoten zur Beschreibung einer MIDI-Region ist unvollständig "
|
||||
"(Quelle fehlt)"
|
||||
|
||||
#: session_state.cc:1784
|
||||
#: session_state.cc:1778
|
||||
msgid ""
|
||||
"Session: XMLNode describing a MidiRegion references an unknown source id =%1"
|
||||
msgstr ""
|
||||
"Session: XML-Knoten zur Beschreibung einer MIDI-Region referenziert eine "
|
||||
"unbekannte Quell-ID =%1"
|
||||
|
||||
#: session_state.cc:1790
|
||||
#: session_state.cc:1784
|
||||
msgid ""
|
||||
"Session: XMLNode describing a MidiRegion references a non-midi source id =%1"
|
||||
msgstr ""
|
||||
"Session: XML-Knoten zur Beschreibung einer MIDI-Region referenziert eine "
|
||||
"Nicht-MIDI Quell-ID =%1"
|
||||
|
||||
#: session_state.cc:1858
|
||||
#: session_state.cc:1852
|
||||
msgid ""
|
||||
"cannot create new file from region name \"%1\" with ident = \"%2\": too many "
|
||||
"existing files with similar names"
|
||||
|
|
@ -2164,109 +2120,109 @@ msgstr ""
|
|||
"kann keine neue Datei aus dem Regionennamen \"%1\" mit ident = \"%2\" "
|
||||
"erzeugen: zu viele Dateien mit ähnlichen Namen existieren"
|
||||
|
||||
#: session_state.cc:1881
|
||||
#: session_state.cc:1875
|
||||
msgid "Session: cannot create Source from XML description."
|
||||
msgstr "Session: Kann Quelle aus der XML-Beschreibung nicht erzeugen"
|
||||
|
||||
#: session_state.cc:1915
|
||||
#: session_state.cc:1909
|
||||
msgid "A sound file is missing. It will be replaced by silence."
|
||||
msgstr "Eine Audiodatei fehlt. Sie wird durch Stille ersetzt werden."
|
||||
|
||||
#: session_state.cc:1938
|
||||
#: session_state.cc:1932
|
||||
msgid "Found a sound file that cannot be used by %1. Talk to the progammers."
|
||||
msgstr ""
|
||||
"Eine nicht mit %1 benutzbare Audiodatei wurde gefunden. Sprechen Sie mit den "
|
||||
"Programmierern."
|
||||
|
||||
#: session_state.cc:1955
|
||||
#: session_state.cc:1949
|
||||
msgid "Could not create templates directory \"%1\" (%2)"
|
||||
msgstr "Konnte Vorlagenverzeichnis \"%1\" nicht erzeugen (%2)"
|
||||
|
||||
#: session_state.cc:1968
|
||||
#: session_state.cc:1962
|
||||
msgid "Template \"%1\" already exists - new version not created"
|
||||
msgstr "Vorlage \"%1\" existiert bereits - neue Version wurde nicht erzeugt"
|
||||
|
||||
#: session_state.cc:1974
|
||||
#: session_state.cc:1968
|
||||
msgid "Could not create directory for Session template\"%1\" (%2)"
|
||||
msgstr "Konnte kein Verzeichnis für Projektvorlage \"%1\" erzeugen (%2)"
|
||||
|
||||
#: session_state.cc:1984
|
||||
#: session_state.cc:1978
|
||||
msgid "template not saved"
|
||||
msgstr "Vorlage nicht gesichert"
|
||||
|
||||
#: session_state.cc:1994
|
||||
#: session_state.cc:1988
|
||||
msgid "Could not create directory for Session template plugin state\"%1\" (%2)"
|
||||
msgstr ""
|
||||
"Konnte Verzeichnis für Projektvorlagen-Pluginstatus \"%1\" nicht erzeugen "
|
||||
"(%2)"
|
||||
|
||||
#: session_state.cc:2189
|
||||
#: session_state.cc:2183
|
||||
msgid "Unknown node \"%1\" found in Bundles list from session file"
|
||||
msgstr "Unbekannter Knoten \"%1\" in Bündelliste der Projektdatei gefunden"
|
||||
|
||||
#: session_state.cc:2731 session_state.cc:2737
|
||||
#: session_state.cc:2725 session_state.cc:2731
|
||||
msgid "Cannot expand path %1 (%2)"
|
||||
msgstr "Kann Pfad %1 nicht expandieren (%2)"
|
||||
|
||||
#: session_state.cc:2790
|
||||
#: session_state.cc:2784
|
||||
msgid "Session: cannot create dead file folder \"%1\" (%2)"
|
||||
msgstr "Session: kann den Mülleimer \"%1\" nicht erzeugen (%2)"
|
||||
|
||||
#: session_state.cc:2829
|
||||
#: session_state.cc:2823
|
||||
msgid "cannot rename unused file source from %1 to %2 (%3)"
|
||||
msgstr "kann unbenutzte Dateiquelle nicht von %1 nach %2 umbenennen (%3)"
|
||||
|
||||
#: session_state.cc:2847
|
||||
#: session_state.cc:2841
|
||||
msgid "cannot remove peakfile %1 for %2 (%3)"
|
||||
msgstr "kann Peakdatei %1 für %2 nicht entfernen (%3)"
|
||||
|
||||
#: session_state.cc:3149
|
||||
#: session_state.cc:3143
|
||||
msgid "could not backup old history file, current history not saved"
|
||||
msgstr ""
|
||||
"konnte kein Backup der alten Aktionsliste erstellen, momentane Aktionsliste "
|
||||
"ungesichert"
|
||||
|
||||
#: session_state.cc:3162
|
||||
#: session_state.cc:3156
|
||||
msgid "history could not be saved to %1"
|
||||
msgstr "Aktionsliste konnte nicht nach %1 gesichert werden"
|
||||
|
||||
#: session_state.cc:3165
|
||||
#: session_state.cc:3159
|
||||
msgid "Could not remove history file at path \"%1\" (%2)"
|
||||
msgstr "Konnte Aktionslistendatei im Pfad \"%1\" nicht entfernen (%2)"
|
||||
|
||||
#: session_state.cc:3169
|
||||
#: session_state.cc:3163
|
||||
msgid "could not restore history file from backup %1 (%2)"
|
||||
msgstr "konnte Aktionslistendatei nicht aus dem Backup %1 restaurieren (%2)"
|
||||
|
||||
#: session_state.cc:3194
|
||||
#: session_state.cc:3188
|
||||
msgid "%1: no history file \"%2\" for this session."
|
||||
msgstr "%1: keine Aktionslistendatei \"%2\" für dieses Projekt."
|
||||
|
||||
#: session_state.cc:3200
|
||||
#: session_state.cc:3194
|
||||
msgid "Could not understand session history file \"%1\""
|
||||
msgstr "Konnte Projekt-Aktionslistendatei \"%1\" nicht verstehen"
|
||||
|
||||
#: session_state.cc:3242
|
||||
#: session_state.cc:3236
|
||||
msgid "Failed to downcast MidiSource for NoteDiffCommand"
|
||||
msgstr "MidiSource für NoteDiffCommand nicht auffindbar"
|
||||
|
||||
#: session_state.cc:3253
|
||||
#: session_state.cc:3247
|
||||
msgid "Failed to downcast MidiSource for SysExDiffCommand"
|
||||
msgstr "MidiSource für SysExDiffCommand nicht auffindbar"
|
||||
|
||||
#: session_state.cc:3264
|
||||
#: session_state.cc:3258
|
||||
msgid "Failed to downcast MidiSource for PatchChangeDiffCommand"
|
||||
msgstr "MidiSource für PatchChangeDiffCommand nicht auffindbar"
|
||||
|
||||
#: session_state.cc:3272
|
||||
#: session_state.cc:3266
|
||||
msgid "Couldn't figure out how to make a Command out of a %1 XMLNode."
|
||||
msgstr "Konnte im XML-Knoten \"%1\" keinen Befehl erkennen."
|
||||
|
||||
#: session_state.cc:3524
|
||||
#: session_state.cc:3502
|
||||
msgid "Session: unknown diskstream type in XML"
|
||||
msgstr "Session: Unbekannter Diskstream im XML"
|
||||
|
||||
#: session_state.cc:3529
|
||||
#: session_state.cc:3507
|
||||
msgid "Session: could not load diskstream via XML state"
|
||||
msgstr "Session: konnte Diskstream nicht via XML-Status laden"
|
||||
|
||||
|
|
@ -2710,56 +2666,3 @@ msgstr "Programmierfehler: unbekanntes natives Dateikopfformat: %1"
|
|||
#: utils.cc:617
|
||||
msgid "cannot open directory %1 (%2)"
|
||||
msgstr "kann Verzeichnis %1 nicht öffnen (%2)"
|
||||
|
||||
#~ msgid "Setup signal flow and plugins"
|
||||
#~ msgstr "Richte Signalfluss and Plugins ein"
|
||||
|
||||
#~ msgid "cannot setup Click I/O"
|
||||
#~ msgstr "kann Metronom-E/A nicht einrichten"
|
||||
|
||||
#~ msgid "Compute I/O Latencies"
|
||||
#~ msgstr "Berechne E/A-Latenzen"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This version of JACK is old - you should upgrade to a newer version that "
|
||||
#~ "supports jack_port_type_get_buffer_size()"
|
||||
#~ msgstr ""
|
||||
#~ "Diese JACK-Version ist alt - Sie sollten auf eine Version upgraden, die "
|
||||
#~ "jack_port_type_get_buffer_size() unterstützt"
|
||||
|
||||
#~ msgid "Connect session to engine"
|
||||
#~ msgstr "Verbinde Projekt mit Engine"
|
||||
|
||||
#~ msgid "connect called before engine was started"
|
||||
#~ msgstr "Aufruf von connect vor dem Start der Engine"
|
||||
|
||||
#~ msgid "disconnect called before engine was started"
|
||||
#~ msgstr "Aufruf von disconnect vor dem Start der Engine"
|
||||
|
||||
#~ msgid "get_port_by_name() called before engine was started"
|
||||
#~ msgstr "Aufruf von get_port_by_name() vor dem Start der Engine"
|
||||
|
||||
#~ msgid "get_ports called before engine was started"
|
||||
#~ msgstr "Aufruf von get_ports vor dem Start der Engine"
|
||||
|
||||
#~ msgid "failed to connect to JACK"
|
||||
#~ msgstr "Verbindung zu JACK fehlgeschlagen"
|
||||
|
||||
#~ msgid "get_connected_latency_range() called while disconnected from JACK"
|
||||
#~ msgstr "Aufruf von get_connected_latency_range(), während von JACK getrennt"
|
||||
|
||||
#~ msgid "Session: could not send full MIDI time code"
|
||||
#~ msgstr "Session: konnte vollständigen MIDI-Timecode nicht senden"
|
||||
|
||||
#~ msgid "Session"
|
||||
#~ msgstr "Projekt"
|
||||
|
||||
#~ msgid "MidiDiskstream: XML property channel-mask out of range"
|
||||
#~ msgstr "MidiDiskstream: Wertüberschreitung der XML-Eigenschaft Kanalmaske"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Copying old session file %1 to %2\n"
|
||||
#~ "Use %2 with %3 versions before 2.0 from now on"
|
||||
#~ msgstr ""
|
||||
#~ "Kopiere alte Projektdatei %1 nach %2\n"
|
||||
#~ "Benutzen Sie von jetzt an %2 mit %3-Versionen vor 2.0"
|
||||
|
|
|
|||
1998
libs/ardour/po/el.po
1998
libs/ardour/po/el.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
1514
libs/ardour/po/it.po
1514
libs/ardour/po/it.po
File diff suppressed because it is too large
Load diff
1643
libs/ardour/po/nn.po
1643
libs/ardour/po/nn.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -7,7 +7,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: libardour 3\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-10-15 21:42+0400\n"
|
||||
"POT-Creation-Date: 2013-11-05 11:11-0500\n"
|
||||
"PO-Revision-Date: 2013-10-15 21:40+0300\n"
|
||||
"Last-Translator: Александр Прокудин <alexandre.prokoudine@gmail.com>\n"
|
||||
"Language-Team: русский <>\n"
|
||||
|
|
@ -124,7 +124,7 @@ msgstr ""
|
|||
#: audio_playlist_source.cc:171 audiosource.cc:913 file_source.cc:529
|
||||
#: midi_playlist_source.cc:144 midi_playlist_source.cc:152
|
||||
#: midi_playlist_source.cc:159 midi_source.cc:371 plugin_insert.cc:643
|
||||
#: rb_effect.cc:332 session.cc:2613 session.cc:2646 session.cc:3791
|
||||
#: rb_effect.cc:333 session.cc:2619 session.cc:2652 session.cc:3797
|
||||
#: session_handle.cc:87 sndfilesource.cc:121
|
||||
msgid "programming error: %1"
|
||||
msgstr "programming error: %1"
|
||||
|
|
@ -391,7 +391,7 @@ msgstr ""
|
|||
msgid "audio"
|
||||
msgstr ""
|
||||
|
||||
#: data_type.cc:28 session.cc:1788 session.cc:1791
|
||||
#: data_type.cc:28 session.cc:1791 session.cc:1794
|
||||
msgid "MIDI"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -503,7 +503,7 @@ msgstr "Треугольное"
|
|||
msgid "Rectangular"
|
||||
msgstr "Прямоугольное"
|
||||
|
||||
#: export_formats.cc:52 session.cc:5009 session.cc:5025
|
||||
#: export_formats.cc:52 session.cc:5014 session.cc:5030
|
||||
msgid "None"
|
||||
msgstr "Нет"
|
||||
|
||||
|
|
@ -859,15 +859,15 @@ msgstr ""
|
|||
msgid "%s out"
|
||||
msgstr ""
|
||||
|
||||
#: io.cc:1535 session.cc:683 session.cc:712
|
||||
#: io.cc:1535 session.cc:686 session.cc:715
|
||||
msgid "mono"
|
||||
msgstr ""
|
||||
|
||||
#: io.cc:1537 session.cc:696 session.cc:726
|
||||
#: io.cc:1537 session.cc:699 session.cc:729
|
||||
msgid "L"
|
||||
msgstr ""
|
||||
|
||||
#: io.cc:1537 session.cc:698 session.cc:728
|
||||
#: io.cc:1537 session.cc:701 session.cc:731
|
||||
msgid "R"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -962,7 +962,7 @@ msgstr ""
|
|||
msgid "incorrect XML mode passed to Locations::set_state"
|
||||
msgstr ""
|
||||
|
||||
#: location.cc:842 session.cc:4510 session_state.cc:1031
|
||||
#: location.cc:842 session.cc:4516 session_state.cc:1031
|
||||
msgid "session"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1094,38 +1094,6 @@ msgstr ""
|
|||
msgid "MIDI stretch created non-MIDI source"
|
||||
msgstr ""
|
||||
|
||||
#: midiport_manager.cc:71
|
||||
msgid "MIDI control in"
|
||||
msgstr ""
|
||||
|
||||
#: midiport_manager.cc:72
|
||||
msgid "MIDI control out"
|
||||
msgstr ""
|
||||
|
||||
#: midiport_manager.cc:74
|
||||
msgid "MMC in"
|
||||
msgstr ""
|
||||
|
||||
#: midiport_manager.cc:75
|
||||
msgid "MMC out"
|
||||
msgstr ""
|
||||
|
||||
#: midiport_manager.cc:96
|
||||
msgid "MTC in"
|
||||
msgstr ""
|
||||
|
||||
#: midiport_manager.cc:98
|
||||
msgid "MTC out"
|
||||
msgstr ""
|
||||
|
||||
#: midiport_manager.cc:101
|
||||
msgid "MIDI Clock in"
|
||||
msgstr ""
|
||||
|
||||
#: midiport_manager.cc:103
|
||||
msgid "MIDI Clock out"
|
||||
msgstr ""
|
||||
|
||||
#: monitor_processor.cc:53
|
||||
msgid "monitor dim"
|
||||
msgstr ""
|
||||
|
|
@ -1486,35 +1454,39 @@ msgstr ""
|
|||
msgid "return %1"
|
||||
msgstr ""
|
||||
|
||||
#: route.cc:1107 route.cc:2584
|
||||
#: route.cc:1075 route.cc:2528
|
||||
msgid "unknown Processor type \"%1\"; ignored"
|
||||
msgstr ""
|
||||
|
||||
#: route.cc:1119
|
||||
#: route.cc:1087
|
||||
msgid "processor could not be created. Ignored."
|
||||
msgstr ""
|
||||
|
||||
#: route.cc:2010 route.cc:2237
|
||||
#: route.cc:1962 route.cc:2187
|
||||
msgid "Bad node sent to Route::set_state() [%1]"
|
||||
msgstr ""
|
||||
|
||||
#: route.cc:2070
|
||||
#: route.cc:2022
|
||||
msgid "Pannable state found for route (%1) without a panner!"
|
||||
msgstr ""
|
||||
|
||||
#: route.cc:2140 route.cc:2144 route.cc:2351 route.cc:2355
|
||||
#: route.cc:2096 route.cc:2100 route.cc:2301 route.cc:2305
|
||||
msgid "badly formed order key string in state file! [%1] ... ignored."
|
||||
msgstr ""
|
||||
|
||||
#: route.cc:2311
|
||||
msgid "Converting deprecated order key for %1 using Editor order %2"
|
||||
msgstr ""
|
||||
|
||||
#: route_group.cc:459
|
||||
msgid "You cannot subgroup MIDI tracks at this time"
|
||||
msgstr ""
|
||||
|
||||
#: rb_effect.cc:233 rb_effect.cc:274
|
||||
#: rb_effect.cc:234 rb_effect.cc:275
|
||||
msgid "tempoize: error reading data from %1 at %2 (wanted %3, got %4)"
|
||||
msgstr ""
|
||||
|
||||
#: rb_effect.cc:303 rb_effect.cc:325
|
||||
#: rb_effect.cc:304 rb_effect.cc:326
|
||||
msgid "error writing tempo-adjusted data to %1"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1530,183 +1502,167 @@ msgstr ""
|
|||
msgid "programming error: send created using role %1"
|
||||
msgstr "programming error: send created using role %1"
|
||||
|
||||
#: session.cc:343
|
||||
#: session.cc:344
|
||||
msgid "Connect to engine"
|
||||
msgstr "Соединение со звуковым движком"
|
||||
|
||||
#: session.cc:348
|
||||
#: session.cc:349
|
||||
msgid "Session loading complete"
|
||||
msgstr "Загрузка сеанса завершена"
|
||||
|
||||
#: session.cc:420
|
||||
#: session.cc:421
|
||||
msgid "Set up LTC"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:422
|
||||
#: session.cc:423
|
||||
msgid "Set up Click"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:424
|
||||
#: session.cc:425
|
||||
msgid "Set up standard connections"
|
||||
msgstr "Настройка обычных соединений"
|
||||
|
||||
#: session.cc:561
|
||||
msgid "LTC In"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:562
|
||||
msgid "LTC Out"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:588
|
||||
msgid "LTC-in"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:589
|
||||
msgid "LTC-out"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:632
|
||||
#: session.cc:635
|
||||
msgid "could not setup Click I/O"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:680
|
||||
#: session.cc:683
|
||||
#, c-format
|
||||
msgid "out %<PRIu32>"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:694
|
||||
#: session.cc:697
|
||||
#, c-format
|
||||
msgid "out %<PRIu32>+%<PRIu32>"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:709
|
||||
#: session.cc:712
|
||||
#, c-format
|
||||
msgid "in %<PRIu32>"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:723
|
||||
#: session.cc:726
|
||||
#, c-format
|
||||
msgid "in %<PRIu32>+%<PRIu32>"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:787
|
||||
#: session.cc:790
|
||||
msgid "cannot connect master output %1 to %2"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:846
|
||||
#: session.cc:849
|
||||
msgid "monitor"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:891
|
||||
#: session.cc:894
|
||||
msgid "cannot connect control input %1 to %2"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:911
|
||||
#: session.cc:914
|
||||
msgid "The preferred I/O for the monitor bus (%1) cannot be found"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:942
|
||||
#: session.cc:945
|
||||
msgid "cannot connect control output %1 to %2"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:1006
|
||||
#: session.cc:1009
|
||||
msgid "cannot create Auditioner: no auditioning of regions possible"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:1190
|
||||
#: session.cc:1193
|
||||
msgid "Session: you can't use that location for auto punch (start <= end)"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:1230
|
||||
#: session.cc:1233
|
||||
msgid ""
|
||||
"You cannot use this location for auto-loop because it has zero or negative "
|
||||
"length"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:1544
|
||||
#: session.cc:1547
|
||||
msgid "feedback loop setup between %1 and %2"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:1840
|
||||
#: session.cc:1843
|
||||
msgid "Session: could not create new midi track."
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:1846
|
||||
#: session.cc:1849
|
||||
msgid ""
|
||||
"No more JACK ports are available. You will need to stop %1 and restart JACK "
|
||||
"with more ports if you need this many tracks."
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:2023 session.cc:2026
|
||||
#: session.cc:2026 session.cc:2029
|
||||
msgid "Audio"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:2050 session.cc:2058 session.cc:2135 session.cc:2143
|
||||
#: session.cc:2053 session.cc:2061 session.cc:2138 session.cc:2146
|
||||
msgid "cannot configure %1 in/%2 out configuration for new audio track"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:2081
|
||||
#: session.cc:2084
|
||||
msgid "Session: could not create new audio track."
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:2113 session.cc:2116
|
||||
#: session.cc:2116 session.cc:2119
|
||||
msgid "Bus"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:2166
|
||||
#: session.cc:2169
|
||||
msgid "Session: could not create new audio route."
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:2225 session.cc:2235
|
||||
#: session.cc:2228 session.cc:2238
|
||||
msgid "Session: UINT_MAX routes? impossible!"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:2257
|
||||
#: session.cc:2260
|
||||
msgid "Session: cannot create track/bus from template description"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:2283
|
||||
#: session.cc:2286
|
||||
msgid "Session: could not create new route from template"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:2312
|
||||
#: session.cc:2315
|
||||
msgid "Adding new tracks/busses failed"
|
||||
msgstr "Не удалось добавить новые дорожки/шины"
|
||||
|
||||
#: session.cc:3413
|
||||
#: session.cc:3419
|
||||
msgid "FATAL ERROR! Could not find a suitable version of %1 for a rename"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:3533 session.cc:3591
|
||||
#: session.cc:3539 session.cc:3597
|
||||
msgid "There are already %1 recordings for %2, which I consider too many."
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:3981
|
||||
#: session.cc:3987
|
||||
msgid "send ID %1 appears to be in use already"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:3993
|
||||
#: session.cc:3999
|
||||
msgid "aux send ID %1 appears to be in use already"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:4005
|
||||
#: session.cc:4011
|
||||
msgid "return ID %1 appears to be in use already"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:4017
|
||||
#: session.cc:4023
|
||||
msgid "insert ID %1 appears to be in use already"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:4144
|
||||
#: session.cc:4150
|
||||
msgid "Cannot write a range where end <= start (e.g. %1 <= %2)"
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:4173
|
||||
#: session.cc:4179
|
||||
msgid "too many bounced versions of playlist \"%1\""
|
||||
msgstr ""
|
||||
|
||||
#: session.cc:4183
|
||||
#: session.cc:4189
|
||||
msgid "cannot create new audio file \"%1\" for %2"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2110,11 +2066,11 @@ msgstr ""
|
|||
msgid "Couldn't figure out how to make a Command out of a %1 XMLNode."
|
||||
msgstr ""
|
||||
|
||||
#: session_state.cc:3518
|
||||
#: session_state.cc:3502
|
||||
msgid "Session: unknown diskstream type in XML"
|
||||
msgstr ""
|
||||
|
||||
#: session_state.cc:3523
|
||||
#: session_state.cc:3507
|
||||
msgid "Session: could not load diskstream via XML state"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2528,66 +2484,3 @@ msgstr "programming error: unknown native header format: %1"
|
|||
#: utils.cc:617
|
||||
msgid "cannot open directory %1 (%2)"
|
||||
msgstr "cannot open directory %1 (%2)"
|
||||
|
||||
#~ msgid "Setup signal flow and plugins"
|
||||
#~ msgstr "Настройка модулей и звукового потока"
|
||||
|
||||
#~ msgid "Session"
|
||||
#~ msgstr "Сеанс"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "editor"
|
||||
#~ msgstr "монитор"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "programming error: realpath(%1) failed, errcode %2"
|
||||
#~ msgstr "ошибка программы: "
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "programming error:"
|
||||
#~ msgstr "ошибка программы: "
|
||||
|
||||
#~ msgid "cannot activate JACK client"
|
||||
#~ msgstr "не удалось активировать клиента JACK сервера"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "removed event"
|
||||
#~ msgstr "удалить область"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "removed range"
|
||||
#~ msgstr "удалить область"
|
||||
|
||||
#~ msgid "add"
|
||||
#~ msgstr "добавить"
|
||||
|
||||
#~ msgid "remove"
|
||||
#~ msgstr "удалить"
|
||||
|
||||
#~ msgid "remove region"
|
||||
#~ msgstr "удалить область"
|
||||
|
||||
#~ msgid "separate"
|
||||
#~ msgstr "разделить"
|
||||
|
||||
#~ msgid "split"
|
||||
#~ msgstr "склеить"
|
||||
|
||||
#~ msgid "pre"
|
||||
#~ msgstr "пре"
|
||||
|
||||
#~ msgid "post"
|
||||
#~ msgstr "пост"
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "Master Out"
|
||||
#~ msgstr "мастер"
|
||||
|
||||
#~ msgid "16 bit"
|
||||
#~ msgstr "16 бит"
|
||||
|
||||
#~ msgid "24 bit"
|
||||
#~ msgstr "24 бита"
|
||||
|
||||
#~ msgid "8 bit"
|
||||
#~ msgstr "8 бит"
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -63,6 +63,7 @@ Processor::Processor(Session& session, const string& name)
|
|||
, _display_to_user (true)
|
||||
, _pre_fader (false)
|
||||
, _ui_pointer (0)
|
||||
, _owner (0)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue