fix merge with master

This commit is contained in:
Paul Davis 2013-10-31 13:16:51 -04:00
commit ea1ccb869a
80 changed files with 2603 additions and 73339 deletions

View File

@ -722,7 +722,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));
@ -734,9 +734,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.
*/
try {
audio_midi_setup.get (true);
} catch (...) {
return -1;
}
if (nsm_url) {
if ((nsm_url = g_getenv ("NSM_URL")) != 0) {
nsm = new NSM_Client;
if (!nsm->init (nsm_url)) {
nsm->announce (PROGRAM_NAME, ":dirty:", "ardour3");
@ -746,19 +754,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
@ -777,10 +799,11 @@ ARDOUR_UI::starting ()
}
}
}
else {
} else {
delete nsm;
nsm = 0;
error << _("NSM: initialization failed") << endmsg;
return -1;
}
} else {
@ -798,16 +821,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);
@ -3226,6 +3239,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 +3305,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 +3325,8 @@ ARDOUR_UI::add_route (Gtk::Window* float_window)
return;
}
setup_order_hint();
PBD::ScopedConnection idle_connection;
if (count > 8) {

View File

@ -581,6 +581,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 ();

View File

@ -335,7 +335,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;

View File

@ -1051,6 +1051,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);
@ -1488,6 +1489,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 ();

View File

@ -1340,12 +1340,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;
@ -1380,6 +1391,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));

View File

@ -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;

View File

@ -1299,6 +1299,10 @@ Editor::button_press_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemTyp
}
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;
}
@ -1422,6 +1426,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)
{

View File

@ -4704,7 +4704,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);

View File

@ -599,9 +599,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>());
@ -610,7 +625,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();
@ -634,6 +649,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());

View File

@ -45,7 +45,7 @@
#include "ardour/stretch.h"
#ifdef USE_RUBBERBAND
#include "rubberband/RubberBandStretcher.h"
#include <rubberband/RubberBandStretcher.h>
using namespace RubberBand;
#endif

View File

@ -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,11 +375,15 @@ 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());

File diff suppressed because it is too large Load Diff

View File

@ -5736,8 +5736,7 @@ msgid ""
"level.</span>"
msgstr ""
"<span weight=\"bold\">Stellen Sie Ihre Hardwarelautstärke auf einen sehr "
"niedrigen "
"Pegel ein.</span>"
"niedrigen Pegel ein.</span>"
#: engine_dialog.cc:142
msgid ""
@ -12801,367 +12800,3 @@ msgstr ""
"#export nach.\n"
"\n"
"Handbuch im Browser öffnen? "
#~ msgid "Click the Refresh button to try again."
#~ msgstr "Klicken Sie auf Aktualisieren, um es erneut zu versuchen."
#~ msgid "JACK"
#~ msgstr "JACK"
#~ msgid "Reconnect"
#~ msgstr "Verbinde neu"
#~ msgid "Window|Audio/MIDI Setup"
#~ msgstr "Audio/MIDI Einstellungen"
#~ msgid "JACK Sampling Rate and Latency"
#~ msgstr "JACK Samplerate und Latenz"
#~ msgid "Launch Control App"
#~ msgstr "Starte Steuerungsprogramm"
#~ msgid ""
#~ "1. <span weight=\"bold\">Turn down the volume on your hardware to a very "
#~ "low level.</span>\n"
#~ "\n"
#~ "2. Connect the two channels that you select below using either a cable or "
#~ "(less ideally) a speaker and microphone.\n"
#~ "\n"
#~ "3. Once the channels are connected, click the \"Measure latency\" "
#~ "button.\n"
#~ "\n"
#~ "4. When satisfied with the results, click the \"Use results\" button."
#~ msgstr ""
#~ "1. <span weight=\"bold\">Stellen Sie die Lautstärke ihrer Hardware auf "
#~ "einen sehr leisen Pegel.</span>\n"
#~ "\n"
#~ "2. Verbinden Sie die zwei Kanäle, die Sie unten auswählen, entweder per "
#~ "Kabel oder (weniger ideal) per Lautsprecher und Mikrophon.\n"
#~ "\n"
#~ "3. Klicken Sie den Knopf \"Latenz messen\".\n"
#~ "\n"
#~ "4. Wenn Sie mit den Ergebnissen zufrieden sind, klicken Sie den Knopf "
#~ "\"Benutze Egebnisse\"."
#~ msgid ""
#~ "There are several possible reasons:\n"
#~ "\n"
#~ "1) JACK is not running.\n"
#~ "2) JACK is running as another user, perhaps root.\n"
#~ "3) There is already another client called \"%1\".\n"
#~ "\n"
#~ "Please consider the possibilities, and perhaps (re)start JACK."
#~ msgstr ""
#~ "Dafür kann es verschiedene Gründe geben:\n"
#~ "\n"
#~ "1) JACK läuft nicht.\n"
#~ "2) JACK wurde unter einem anderen Benutzer gestartet, möglicherweise als "
#~ "root.\n"
#~ "3) Es gibt bereits einen anderen Client mit der Bezeichnung \"%1\".\n"
#~ "\n"
#~ "Betrachten Sie bitte diese Möglichkeiten und starten Sie ggf. JACK neu."
#~ msgid "Create a new session"
#~ msgstr "Neues Projekt erzeugen"
#~ msgid "Open an existing session"
#~ msgstr "Vorhandenes Projekt öffnen"
#~ msgid "I'd like more options for this session"
#~ msgstr "Erweiterte Optionen für dieses Projekt"
#~ msgid "Use an existing session as a template:"
#~ msgstr "Ein vorhandenes Projekt als Vorlage verwenden:"
#~ msgid "Select template"
#~ msgstr "Vorlage auswählen"
#~ msgid "Browse:"
#~ msgstr "Durchsuchen:"
#~ msgid "Select a session"
#~ msgstr "Projekt auswählen"
#~ msgid "Playback/recording on 1 device"
#~ msgstr "Wiedergabe/Aufnahme mit einem Gerät"
#~ msgid "Playback/recording on 2 devices"
#~ msgstr "Wiedergabe/Aufnahme mit zwei Geräten"
#~ msgid "Playback only"
#~ msgstr "Nur Wiedergabe"
#~ msgid "Recording only"
#~ msgstr "Nur Aufnahme"
#~ msgid "Realtime"
#~ msgstr "Realtime"
#~ msgid "Starting audio engine"
#~ msgstr "Starte Audio-Engine"
#~ msgid "disconnected"
#~ msgstr "getrennt"
#~ msgid "Unable to start the session running"
#~ msgstr "Konnte das aktuelle Projekt nicht starten"
#~ msgid "Do not lock memory"
#~ msgstr "Speicherzugriff nicht sperren"
#~ msgid "Unlock memory"
#~ msgstr "Speicherzugriff öffnen"
#~ msgid "No zombies"
#~ msgstr "Keine Zombies (Soft Mode)"
#~ msgid "Provide monitor ports"
#~ msgstr "Monitor-Ports erstellen"
#~ msgid "H/W monitoring"
#~ msgstr "Hardware Monitoring"
#~ msgid "H/W metering"
#~ msgstr "Hardware-Pegelanzeige"
#~ msgid "Verbose output"
#~ msgstr "Ausführliche Statusmeldungen"
#~ msgid "8000Hz"
#~ msgstr "8000 Hz"
#~ msgid "22050Hz"
#~ msgstr "22050 Hz"
#~ msgid "44100Hz"
#~ msgstr "44100 Hz"
#~ msgid "48000Hz"
#~ msgstr "48000 Hz"
#~ msgid "88200Hz"
#~ msgstr "88200 Hz"
#~ msgid "96000Hz"
#~ msgstr "96000 Hz"
#~ msgid "192000Hz"
#~ msgstr "192000 Hz"
#~ msgid "Triangular"
#~ msgstr "dreieckig"
#~ msgid "Rectangular"
#~ msgstr "rechteckig"
#~ msgid "Shaped"
#~ msgstr "shaped"
#~ msgid "coremidi"
#~ msgstr "coremidi"
#~ msgid "seq"
#~ msgstr "seq"
#~ msgid "raw"
#~ msgstr "raw"
#~ msgid "Audio Interface:"
#~ msgstr "Audio-Schnittstelle:"
#~ msgid "Number of buffers:"
#~ msgstr "Pufferanzahl:"
#~ msgid "Approximate latency:"
#~ msgstr "Latenz (ca.)"
#~ msgid "Audio mode:"
#~ msgstr "Audio-Modus:"
#~ msgid "Ignore"
#~ msgstr "ignorieren"
#~ msgid "Client timeout"
#~ msgstr "Client Timeout"
#~ msgid "Number of ports:"
#~ msgstr "Portanzahl"
#~ msgid "MIDI driver:"
#~ msgstr "MIDI-Treiber:"
#~ msgid "Dither:"
#~ msgstr "Dithering:"
#~ msgid ""
#~ "No JACK server found anywhere on this system. Please install JACK and "
#~ "restart"
#~ msgstr ""
#~ "Es wurde kein JACK Server auf diesem System gefunden. Bitte installieren "
#~ "Sie JACK vor einem Neuversuch."
#~ msgid "Server:"
#~ msgstr "Server:"
#~ msgid "Input device:"
#~ msgstr "Eingangsgerät:"
#~ msgid "Output device:"
#~ msgstr "Ausgabegerät:"
#~ msgid "Advanced"
#~ msgstr "Erweitert"
#~ msgid "cannot open JACK rc file %1 to store parameters"
#~ msgstr "kann die JACK rc-Datei %1 nicht öffnen, um die Parameter zu sichern"
#~ msgid ""
#~ "You do not have any audio devices capable of\n"
#~ "simultaneous playback and recording.\n"
#~ "\n"
#~ "Please use Applications -> Utilities -> Audio MIDI Setup\n"
#~ "to create an \"aggregrate\" device, or install a suitable\n"
#~ "audio interface.\n"
#~ "\n"
#~ "Please send email to Apple and ask them why new Macs\n"
#~ "have no duplex audio device.\n"
#~ "\n"
#~ "Alternatively, if you really want just playback\n"
#~ "or recording but not both, start JACK before running\n"
#~ "%1 and choose the relevant device then."
#~ msgstr ""
#~ "Sie haben keine Soundkarte, die gleichzeitiges\n"
#~ "Abspielen und Aufnehmen unterstützt.\n"
#~ "\n"
#~ "Benützen Sie Programme>Dienstprogramme>Audio-Midi-Setup\n"
#~ " um ein kombiniertes Gerät zu erzeugen, oder installieren Sie ein\n"
#~ "geeignetes Audiointerface.\n"
#~ "\n"
#~ "Bitte senden Sie eine E-Mail an Apple und fragen Sie, warum Sie\n"
#~ "keine Duplex Soundkarte in Ihrem Mac haben.\n"
#~ "\n"
#~ "Wenn Sie Audiomaterial wirklich nicht gleichzeitig aufnehmen und "
#~ "wiedergeben wollen,\n"
#~ "können Sie JACK vor dem Starten von %1 aufrufen und das entsprechende "
#~ "Gerät auswählen."
#~ msgid "No suitable audio devices"
#~ msgstr "Keine passenden Audiogeräte."
#~ msgid "JACK appears to be missing from the %1 bundle"
#~ msgstr "JACK scheint im %1-Paket zu fehlen."
#~ msgid "You need to choose an audio device first."
#~ msgstr "Sie müssen zuerst ein Audiogerät auswählen."
#~ msgid "Audio device \"%1\" not known on this computer."
#~ msgstr "Audiogerät %1 scheint auf diesem Computer nicht vorhanden zu sein."
#~ msgid "AudioSetup value for %1 is missing data"
#~ msgstr "Es fehlen Daten zum AudioSetup-Wert von %1"
#~ msgid ""
#~ "configuration files contain a JACK server path that doesn't exist (%1)"
#~ msgstr ""
#~ "die Konfiguration enthält einen JACK-Serverpfad, der nicht existiert (%1)"
#~ msgid "JACK exited"
#~ msgstr "JACK wurde beendet"
#~ msgid ""
#~ "JACK exited unexpectedly, and without notifying %1.\n"
#~ "\n"
#~ "This is probably due to an error inside JACK. You should restart JACK\n"
#~ "and reconnect %1 to it, or exit %1 now. You cannot save your\n"
#~ "session at this time, because we would lose your connection information.\n"
#~ msgstr ""
#~ "JACK wurde unerwartet und ohne Benachrichtigung beendet %1.\n"
#~ "\n"
#~ "Dies liegt wahrscheinlich an einem Fehler in JACK. Sie sollten\n"
#~ "JACK neu starten und %1 erneut mit ihm verbinden, oder %1 jetzt beenden.\n"
#~ "Momentan läßt sich das Projekt nicht speichern, da alle Informationen\n"
#~ "über Verbindungen verloren gehen würden.\n"
#~ msgid "Failed to set session-framerate: "
#~ msgstr "Konnte Projekt-Framerate nicht einstellen: "
#~ msgid " vs "
#~ msgstr " vs. "
#~ msgid "-24dB"
#~ msgstr "-24dB"
#~ msgid "-15dB"
#~ msgstr "-15dB"
#~ msgid "Configure meter-ticks and color-knee point."
#~ msgstr "Maßstriche und Farbbereiche der Pegelanzeige konfigurieren"
#~ msgid "Enable Debug Mode: Print ffmpeg Command & Output to stdout."
#~ msgstr ""
#~ "Debug-Modus einschalten: gibt die ffmpeg-Befehlszeile und -Ausgabe an "
#~ "stdout aus."
#~ msgid "-Inf"
#~ msgstr "-Inf"
#~ msgid "slowest"
#~ msgstr "Am langsamstem"
#~ msgid "slow"
#~ msgstr "Langsam"
#~ msgid "fast"
#~ msgstr "Schnell"
#~ msgid "faster"
#~ msgstr "Schneller"
#~ msgid "fastest"
#~ msgstr "Schnellstmöglich"
#~ msgid "found %1 match"
#~ msgid_plural "found %1 matches"
#~ msgstr[0] "%1 Treffer gefunden"
#~ msgstr[1] "%1 Treffer gefunden"
#~ msgid "Search returned no results."
#~ msgstr "Die Suche erbrachte keine Ergebnisse"
#~ msgid "Found %1 match"
#~ msgid_plural "Found %1 matches"
#~ msgstr[0] "%1 Treffer gefunden"
#~ msgstr[1] "%1 Treffer gefunden"
#~ msgid "What would you like to do ?"
#~ msgstr "Was möchten Sie tun?"
#~ msgid "Mixer on Top"
#~ msgstr "Mixer über Editor"
#~ msgid "Add Audio Track"
#~ msgstr "Audiospur hinzufügen"
#~ msgid "Add Audio Bus"
#~ msgstr "Audio-Bus hinzufügen"
#~ msgid "Add MIDI Track"
#~ msgstr "Midispur hinzufügen"
#~ msgid "Control surfaces"
#~ msgstr "Eingabegeräte / Controller"
#~ msgid "Use plugins' own interfaces instead of %1's"
#~ msgstr "Statt der von %1 bereitgestellten GUIs die der Plugins verwenden"
#~ msgid "Hid"
#~ msgstr "Hid"
#~ msgid "Searching Page %1 of %2, click Stop to cancel"
#~ msgstr "Suche Seite %1 von %2, klicken Sie Stop, um abzubrechen"
#~ msgid "Searching, click Stop to cancel"
#~ msgstr "Suche, klicken Sie Stop, um abzubrechen"
#~ msgid "Use a monitor bus (allows AFL/PFL and more control)"
#~ msgstr "Benutze einen Monitor-Bus (ermöglicht AFL/PFL und mehr)"

File diff suppressed because it is too large Load Diff

View File

@ -656,11 +656,6 @@ msgstr ""
msgid "Audio Connections"
msgstr ""
#: ardour_ui.cc:200
#, fuzzy
msgid "MIDI Connections"
msgstr "Channel Colours"
#: ardour_ui.cc:202
msgid "Errors"
msgstr ""
@ -3635,16 +3630,6 @@ msgstr ""
msgid "Snap to Minutes"
msgstr ""
#: editor_actions.cc:505
#, fuzzy
msgid "Snap to One Twenty Eighths"
msgstr "Snap to quavers"
#: editor_actions.cc:506
#, fuzzy
msgid "Snap to Sixty Fourths"
msgstr "Snap to semiquavers"
#: editor_actions.cc:507
msgid "Snap to Thirty Seconds"
msgstr "Snap to demisemiquavers"
@ -4611,36 +4596,6 @@ msgstr ""
msgid "insert region"
msgstr ""
#: editor_ops.cc:2261
#, fuzzy
msgid "raise regions"
msgstr "Normalise regions"
#: editor_ops.cc:2263
#, fuzzy
msgid "raise region"
msgstr "Normalise region"
#: editor_ops.cc:2269
#, fuzzy
msgid "raise regions to top"
msgstr "Normalise regions"
#: editor_ops.cc:2271
#, fuzzy
msgid "raise region to top"
msgstr "Normalise region"
#: editor_ops.cc:2277
#, fuzzy
msgid "lower regions"
msgstr "Normalise regions"
#: editor_ops.cc:2279 editor_ops.cc:2287
#, fuzzy
msgid "lower region"
msgstr "Normalise region"
#: editor_ops.cc:2285
msgid "lower regions to bottom"
msgstr ""
@ -6505,11 +6460,6 @@ msgstr "could not initialise %1."
msgid "Cannot xinstall SIGPIPE error handler"
msgstr ""
#: main.cc:528
#, fuzzy
msgid "could not create %1 GUI"
msgstr "could not initialise %1."
#: main_clock.cc:51
msgid "Display delta to edit cursor"
msgstr ""
@ -6532,11 +6482,6 @@ msgstr ""
msgid "Force"
msgstr ""
#: midi_channel_selector.cc:330 midi_channel_selector.cc:372
#, fuzzy
msgid "MIDI Channel Control"
msgstr "Channel Colours"
#: midi_channel_selector.cc:332
msgid "Playback all channels"
msgstr ""
@ -6625,26 +6570,6 @@ msgstr ""
msgid "Triplet"
msgstr ""
#: midi_list_editor.cc:58
#, fuzzy
msgid "Quarter"
msgstr "crotchet (4)"
#: midi_list_editor.cc:59
#, fuzzy
msgid "Eighth"
msgstr "quaver (8)"
#: midi_list_editor.cc:60
#, fuzzy
msgid "Sixteenth"
msgstr "semiquaver (16)"
#: midi_list_editor.cc:61
#, fuzzy
msgid "Thirty-second"
msgstr "demisemiquaver (32)"
#: midi_list_editor.cc:62
msgid "Sixty-fourth"
msgstr ""
@ -6673,11 +6598,6 @@ msgstr ""
msgid "edit note velocity"
msgstr ""
#: midi_list_editor.cc:258
#, fuzzy
msgid "edit note length"
msgstr "Set note length to a minim"
#: midi_list_editor.cc:460
msgid "insert new note"
msgstr ""
@ -6794,11 +6714,6 @@ msgstr ""
msgid "Program "
msgstr ""
#: midi_region_view.cc:3132
#, fuzzy
msgid "Channel "
msgstr "Channel Colours"
#: midi_region_view.cc:3301 midi_region_view.cc:3303
msgid "paste"
msgstr ""
@ -6843,11 +6758,6 @@ msgstr ""
msgid "Note Mode"
msgstr ""
#: midi_time_axis.cc:497
#, fuzzy
msgid "Channel Selector"
msgstr "Channel Colours"
#: midi_time_axis.cc:502
msgid "Color Mode"
msgstr "Colour Mode"
@ -11473,47 +11383,11 @@ msgstr ""
msgid "Edit Tempo"
msgstr ""
#: tempo_dialog.cc:76 tempo_dialog.cc:77 tempo_dialog.cc:282
#: tempo_dialog.cc:283
#, fuzzy
msgid "whole"
msgstr "semibreve (1)"
#: tempo_dialog.cc:78 tempo_dialog.cc:79 tempo_dialog.cc:284
#: tempo_dialog.cc:285
#, fuzzy
msgid "second"
msgstr "minim (2)"
#: tempo_dialog.cc:80 tempo_dialog.cc:81 tempo_dialog.cc:286
#: tempo_dialog.cc:287
msgid "third"
msgstr ""
#: tempo_dialog.cc:82 tempo_dialog.cc:83 tempo_dialog.cc:288
#: tempo_dialog.cc:289
#, fuzzy
msgid "quarter"
msgstr "crotchet (4)"
#: tempo_dialog.cc:84 tempo_dialog.cc:85 tempo_dialog.cc:290
#: tempo_dialog.cc:291
#, fuzzy
msgid "eighth"
msgstr "quaver (8)"
#: tempo_dialog.cc:86 tempo_dialog.cc:87 tempo_dialog.cc:292
#: tempo_dialog.cc:293
#, fuzzy
msgid "sixteenth"
msgstr "semiquaver (16)"
#: tempo_dialog.cc:88 tempo_dialog.cc:89 tempo_dialog.cc:294
#: tempo_dialog.cc:295
#, fuzzy
msgid "thirty-second"
msgstr "demisemiquaver (32)"
#: tempo_dialog.cc:90 tempo_dialog.cc:91 tempo_dialog.cc:296
#: tempo_dialog.cc:297
msgid "sixty-fourth"
@ -11855,11 +11729,6 @@ msgstr ""
msgid "Abort"
msgstr ""
#: transcode_video_dialog.cc:63
#, fuzzy
msgid "Height = "
msgstr "quaver (8)"
#: transcode_video_dialog.cc:66
msgid "Manual Override"
msgstr ""
@ -12049,11 +11918,6 @@ msgstr ""
msgid "Set Aspect Ratio:"
msgstr ""
#: export_video_dialog.cc:80
#, fuzzy
msgid "Normalize Audio"
msgstr "Normalise to:"
#: export_video_dialog.cc:81
msgid "2 Pass Encoding"
msgstr ""
@ -12145,11 +12009,6 @@ msgstr ""
msgid "Audio Samplerate:"
msgstr ""
#: export_video_dialog.cc:387
#, fuzzy
msgid "Normalizing audio"
msgstr "Normalise values"
#: export_video_dialog.cc:391
msgid "Exporting audio"
msgstr ""
@ -12212,9 +12071,3 @@ msgid ""
"\n"
"Open Manual in Browser? "
msgstr ""
#~ msgid "Quantize Type"
#~ msgstr "Quantise Type"
#~ msgid "unknown style attribute %1 requested for color; using \"red\""
#~ msgstr "unknown style attribute %1 requested for colour; using \"red\""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -37,7 +37,7 @@
#include "region_selection.h"
#ifdef USE_RUBBERBAND
#include "rubberband/RubberBandStretcher.h"
#include <rubberband/RubberBandStretcher.h>
using namespace RubberBand;
#endif

View File

@ -264,6 +264,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',
@ -399,16 +401,20 @@ def build(bld):
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG ALSA CURL DL GTKMM LO'
obj.uselib = 'UUID FLAC FONTCONFIG GLIBMM GTHREAD GTK OGG ALSA CURL DL'
obj.uselib += ' GTKMM GNOMECANVASMM GNOMECANVAS FFTW3F'
obj.uselib += ' AUDIOUNITS OSX GTKOSX LO '
obj.use = [ 'libpbd',
'libmidipp',
'libtaglib',
'libardour',
'ardour',
'libardour_cp',
'libgtkmm2ext',
'libtaglib',
'libcanvas'
]
if bld.is_defined('USE_EXTERNAL_LIBS'):
obj.uselib += ' TAGLIB'
else:
obj.use.append('libtaglib')
if sys.platform == 'darwin':
obj.uselib += ' AUDIOUNITS OSX GTKOSX'
obj.use += ' libappleutility'

View File

@ -25,7 +25,7 @@
#include <ostream>
#include <fstream>
#include <boost/utility.hpp>
#include "vamp-sdk/Plugin.h"
#include <vamp-sdk/Plugin.h>
#include "ardour/types.h"
namespace ARDOUR {

View File

@ -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>
namespace ARDOUR
{

View File

@ -51,8 +51,6 @@ class MidiControlUI : public AbstractUI<MidiUIRequest>
static MidiControlUI* instance() { return _instance; }
static BaseUI::RequestType PortChange;
void change_midi_ports ();
protected:
@ -63,7 +61,6 @@ class 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 ();

View File

@ -96,12 +96,23 @@ class 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;
@ -116,7 +127,7 @@ class Plugin : public PBD::StatefulDestructible, public Latent
bool min_unbound;
bool max_unbound;
bool enumeration;
bool midinote;
bool midinote; ///< only used if integer_step is also true
};
XMLNode& get_state ();

View File

@ -117,10 +117,11 @@ class 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,

View File

@ -36,6 +36,8 @@
#include <glibmm/threads.h>
#include <ltc.h>
#include "pbd/error.h"
#include "pbd/event_loop.h"
#include "pbd/rcu.h"
@ -48,7 +50,6 @@
#include "midi++/types.h"
#include "timecode/time.h"
#include "ltc/ltc.h"
#include "ardour/ardour.h"
#include "ardour/chan_count.h"
@ -241,6 +242,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
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 ();
@ -1594,6 +1596,7 @@ class Session : public PBD::StatefulDestructible, public PBD::ScopedConnectionLi
GraphEdges _current_route_graph;
uint32_t next_control_id () const;
uint32_t _order_hint;
bool ignore_route_processor_changes;
MidiClockTicker* midi_clock;

View File

@ -25,11 +25,11 @@
#include <glibmm/threads.h>
#include <jack/jack.h>
#include <ltc.h>
#include "pbd/signals.h"
#include "timecode/time.h"
#include "ltc/ltc.h"
#include "ardour/types.h"
#include "midi++/parser.h"

View File

@ -19,7 +19,7 @@
#include <cstring>
#include "vamp-hostsdk/PluginLoader.h"
#include <vamp-hostsdk/PluginLoader.h>
#include <glibmm/miscutils.h>
#include <glibmm/fileutils.h>

View File

@ -1065,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);

View File

@ -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)

View File

@ -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,23 +99,37 @@ 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;
}
vector<AsyncMIDIPort*> ports;
AsyncMIDIPort* p;
if ((p = dynamic_cast<AsyncMIDIPort*> (_session.midi_input_port()))) {
ports.push_back (p);
}
if ((p = dynamic_cast<AsyncMIDIPort*> (_session.mmc_input_port()))) {
ports.push_back (p);
}
if (ports.empty()) {
return;
}
int fd;
for (vector<AsyncMIDIPort*>::const_iterator pi = ports.begin(); pi != ports.end(); ++pi) {
if (!async) {
return;
}
int fd;
if ((fd = async->selectable ()) >= 0) {
if ((fd = (*pi)->selectable ()) >= 0) {
Glib::RefPtr<IOSource> psrc = IOSource::create (fd, IO_IN|IO_HUP|IO_ERR);
psrc->connect (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), async));
psrc->connect (sigc::bind (sigc::mem_fun (this, &MidiControlUI::midi_input_handler), *pi));
psrc->attach (_main_loop->get_context());
// glibmm hack: for now, store only the GSource*
port_sources.push_back (psrc->gobj());
g_source_ref (psrc->gobj());
}

View File

@ -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

View File

@ -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-10-23 19:07+0200\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:332 session.cc:2613 session.cc:2646 session.cc:3791
#: 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:1790 session.cc:1793
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:5008 session.cc:5024
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:685 session.cc:714
msgid "mono"
msgstr "Mono"
#: io.cc:1537 session.cc:689 session.cc:719
#: io.cc:1537 session.cc:698 session.cc:728
msgid "L"
msgstr "L"
#: io.cc:1537 session.cc:691 session.cc:721
#: io.cc:1537 session.cc:700 session.cc:730
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:4510 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,28 +1550,32 @@ 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"
@ -1650,78 +1622,62 @@ msgstr "Klick einrichten"
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:634
msgid "could not setup Click I/O"
msgstr "konnte Metronom-E/A nicht einrichten"
#: session.cc:673
#: session.cc:682
#, c-format
msgid "out %<PRIu32>"
msgstr "out %<PRIu32>"
#: session.cc:687
#: session.cc:696
#, c-format
msgid "out %<PRIu32>+%<PRIu32>"
msgstr "out %<PRIu32>+%<PRIu32>"
#: session.cc:702
#: session.cc:711
#, c-format
msgid "in %<PRIu32>"
msgstr "in %<PRIu32>"
#: session.cc:716
#: session.cc:725
#, c-format
msgid "in %<PRIu32>+%<PRIu32>"
msgstr "in %<PRIu32>+%<PRIu32>"
#: session.cc:780
#: session.cc:789
msgid "cannot connect master output %1 to %2"
msgstr "kann Master-Ausgang %1 nicht mit %2 verbinden"
#: session.cc:839
#: session.cc:848
msgid "monitor"
msgstr "Monitor"
#: session.cc:884
#: session.cc:893
msgid "cannot connect control input %1 to %2"
msgstr "kann Kontrolleingang %1 nicht mit %2 verbinden"
#: session.cc:904
#: session.cc:913
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:944
msgid "cannot connect control output %1 to %2"
msgstr "kann Kontrollausgang %1 nicht mit %2 verbinden"
#: session.cc:999
#: session.cc:1008
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:1192
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:1232
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:1546
msgid "feedback loop setup between %1 and %2"
msgstr "Feedbackschleife zwischen %1 und %2 erkannt"
#: session.cc:1833
#: session.cc:1842
msgid "Session: could not create new midi track."
msgstr "Session: konnte keine neue MIDI-Spur erzeugen."
#: session.cc:1839
#: session.cc:1848
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:2025 session.cc:2028
msgid "Audio"
msgstr "Audio"
#: session.cc:2043 session.cc:2051 session.cc:2128 session.cc:2136
#: session.cc:2052 session.cc:2060 session.cc:2137 session.cc:2145
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:2083
msgid "Session: could not create new audio track."
msgstr "Session: konnte keine neue Audios.pur erzeugen"
#: session.cc:2106 session.cc:2109
#: session.cc:2115 session.cc:2118
msgid "Bus"
msgstr "Bus"
#: session.cc:2159
#: session.cc:2168
msgid "Session: could not create new audio route."
msgstr "Session: konnte keine neueAudio-Route erzeugen"
#: session.cc:2218 session.cc:2228
#: session.cc:2227 session.cc:2237
msgid "Session: UINT_MAX routes? impossible!"
msgstr "Session: UINT_MAX Routen? unmöglich!"
#: session.cc:2250
#: session.cc:2259
msgid "Session: cannot create track/bus from template description"
msgstr "Session: Kann die Route aus der Vorlagenbeschreibung nicht erzeugen"
#: session.cc:2276
#: session.cc:2285
msgid "Session: could not create new route from template"
msgstr "Session: konnte keine neue Route aus der Vorlage erzeugen."
#: session.cc:2305
#: session.cc:2314
msgid "Adding new tracks/busses failed"
msgstr "Fehler beim Hinzufügen neuer Spuren/Busse"
#: session.cc:3406
#: session.cc:3413
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:3533 session.cc:3591
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:3981
msgid "send ID %1 appears to be in use already"
msgstr "Send ID %1 ist offenbar schon in Gebrauch"
#: session.cc:3986
#: session.cc:3993
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:4005
msgid "return ID %1 appears to be in use already"
msgstr "Return ID %1 ist offenbar schon in Gebrauch"
#: session.cc:4010
#: session.cc:4017
msgid "insert ID %1 appears to be in use already"
msgstr "Insert ID %1 ist offenbar schon in Gebrauch"
#: session.cc:4137
#: session.cc:4144
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:4173
msgid "too many bounced versions of playlist \"%1\""
msgstr "zu viele gebouncete Versionen der Wiedergabeliste \"%1\""
#: session.cc:4176
#: session.cc:4183
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"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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-10-23 19:07+0200\n"
"PO-Revision-Date: 2013-10-15 21:40+0300\n"
"Last-Translator: Александр Прокудин <alexandre.prokoudine@gmail.com>\n"
"Language-Team: русский <>\n"
@ -391,7 +391,7 @@ msgstr ""
msgid "audio"
msgstr ""
#: data_type.cc:28 session.cc:1788 session.cc:1791
#: data_type.cc:28 session.cc:1790 session.cc:1793
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:5008 session.cc:5024
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:685 session.cc:714
msgid "mono"
msgstr ""
#: io.cc:1537 session.cc:696 session.cc:726
#: io.cc:1537 session.cc:698 session.cc:728
msgid "L"
msgstr ""
#: io.cc:1537 session.cc:698 session.cc:728
#: io.cc:1537 session.cc:700 session.cc:730
msgid "R"
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,26 +1454,30 @@ 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 ""
@ -1550,127 +1522,111 @@ msgstr ""
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:634
msgid "could not setup Click I/O"
msgstr ""
#: session.cc:680
#: session.cc:682
#, c-format
msgid "out %<PRIu32>"
msgstr ""
#: session.cc:694
#: session.cc:696
#, c-format
msgid "out %<PRIu32>+%<PRIu32>"
msgstr ""
#: session.cc:709
#: session.cc:711
#, c-format
msgid "in %<PRIu32>"
msgstr ""
#: session.cc:723
#: session.cc:725
#, c-format
msgid "in %<PRIu32>+%<PRIu32>"
msgstr ""
#: session.cc:787
#: session.cc:789
msgid "cannot connect master output %1 to %2"
msgstr ""
#: session.cc:846
#: session.cc:848
msgid "monitor"
msgstr ""
#: session.cc:891
#: session.cc:893
msgid "cannot connect control input %1 to %2"
msgstr ""
#: session.cc:911
#: session.cc:913
msgid "The preferred I/O for the monitor bus (%1) cannot be found"
msgstr ""
#: session.cc:942
#: session.cc:944
msgid "cannot connect control output %1 to %2"
msgstr ""
#: session.cc:1006
#: session.cc:1008
msgid "cannot create Auditioner: no auditioning of regions possible"
msgstr ""
#: session.cc:1190
#: session.cc:1192
msgid "Session: you can't use that location for auto punch (start <= end)"
msgstr ""
#: session.cc:1230
#: session.cc:1232
msgid ""
"You cannot use this location for auto-loop because it has zero or negative "
"length"
msgstr ""
#: session.cc:1544
#: session.cc:1546
msgid "feedback loop setup between %1 and %2"
msgstr ""
#: session.cc:1840
#: session.cc:1842
msgid "Session: could not create new midi track."
msgstr ""
#: session.cc:1846
#: session.cc:1848
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:2025 session.cc:2028
msgid "Audio"
msgstr ""
#: session.cc:2050 session.cc:2058 session.cc:2135 session.cc:2143
#: session.cc:2052 session.cc:2060 session.cc:2137 session.cc:2145
msgid "cannot configure %1 in/%2 out configuration for new audio track"
msgstr ""
#: session.cc:2081
#: session.cc:2083
msgid "Session: could not create new audio track."
msgstr ""
#: session.cc:2113 session.cc:2116
#: session.cc:2115 session.cc:2118
msgid "Bus"
msgstr ""
#: session.cc:2166
#: session.cc:2168
msgid "Session: could not create new audio route."
msgstr ""
#: session.cc:2225 session.cc:2235
#: session.cc:2227 session.cc:2237
msgid "Session: UINT_MAX routes? impossible!"
msgstr ""
#: session.cc:2257
#: session.cc:2259
msgid "Session: cannot create track/bus from template description"
msgstr ""
#: session.cc:2283
#: session.cc:2285
msgid "Session: could not create new route from template"
msgstr ""
#: session.cc:2312
#: session.cc:2314
msgid "Adding new tracks/busses failed"
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

View File

@ -62,7 +62,7 @@ Quantize::operator () (boost::shared_ptr<MidiModel> model,
to quantize relative to actual session beats (etc.) rather than from the
start of the model.
*/
const double round_pos = ceil(position / _start_grid) * _start_grid;
const double round_pos = round(position / _start_grid) * _start_grid;
const double offset = round_pos - position;
bool even;
@ -72,10 +72,13 @@ Quantize::operator () (boost::shared_ptr<MidiModel> model,
even = false;
/* TODO 'swing' probably requires a 2nd iteration:
* first quantize notes to the grid, then apply beat shift
*/
for (Evoral::Sequence<MidiModel::TimeType>::Notes::iterator i = (*s).begin(); i != (*s).end(); ++i) {
double new_start = round ((*i)->time() / _start_grid) * _start_grid + offset;
double new_end = round ((*i)->end_time() / _end_grid) * _end_grid + offset;
double new_start = round (((*i)->time() - offset) / _start_grid) * _start_grid + offset;
double new_end = round (((*i)->end_time() - offset) / _end_grid) * _end_grid + offset;
if (_swing > 0.0 && !even) {
@ -86,6 +89,7 @@ Quantize::operator () (boost::shared_ptr<MidiModel> model,
*/
new_start = new_start + (2.0/3.0 * _swing * (next_grid - new_start));
new_end = new_end + (2.0/3.0 * _swing * (next_grid - new_start));
} else if (_swing < 0.0 && !even) {
@ -96,6 +100,7 @@ Quantize::operator () (boost::shared_ptr<MidiModel> model,
*/
new_start = new_start - (2.0/3.0 * _swing * (new_start - prev_grid));
new_end = new_end - (2.0/3.0 * _swing * (new_start - prev_grid));
}

View File

@ -20,8 +20,9 @@
#include <algorithm>
#include <cmath>
#include <rubberband/RubberBandStretcher.h>
#include "pbd/error.h"
#include "rubberband/RubberBandStretcher.h"
#include "ardour/audioregion.h"
#include "ardour/audiosource.h"

View File

@ -257,6 +257,7 @@ Session::Session (AudioEngine &eng,
, _step_editors (0)
, _suspend_timecode_transmission (0)
, _speakers (new Speakers)
, _order_hint (0)
, ignore_route_processor_changes (false)
, _midi_ports (0)
, _mmc (0)
@ -558,10 +559,10 @@ Session::setup_ltc ()
{
XMLNode* child = 0;
_ltc_input.reset (new IO (*this, _("LTC In"), IO::Input));
_ltc_output.reset (new IO (*this, _("LTC Out"), IO::Output));
_ltc_input.reset (new IO (*this, X_("LTC In"), IO::Input));
_ltc_output.reset (new IO (*this, X_("LTC Out"), IO::Output));
if (state_tree && (child = find_named_node (*state_tree->root(), "LTC-In")) != 0) {
if (state_tree && (child = find_named_node (*state_tree->root(), X_("LTC In"))) != 0) {
_ltc_input->set_state (*(child->children().front()), Stateful::loading_state_version);
} else {
{
@ -571,7 +572,7 @@ Session::setup_ltc ()
reconnect_ltc_input ();
}
if (state_tree && (child = find_named_node (*state_tree->root(), "LTC-Out")) != 0) {
if (state_tree && (child = find_named_node (*state_tree->root(), X_("LTC Out"))) != 0) {
_ltc_output->set_state (*(child->children().front()), Stateful::loading_state_version);
} else {
{
@ -585,15 +586,15 @@ Session::setup_ltc ()
* IO style of NAME/TYPE-{in,out}N
*/
_ltc_input->nth (0)->set_name (_("LTC-in"));
_ltc_output->nth (0)->set_name (_("LTC-out"));
_ltc_input->nth (0)->set_name (X_("LTC-in"));
_ltc_output->nth (0)->set_name (X_("LTC-out"));
}
void
Session::setup_click ()
{
_clicking = false;
_click_io.reset (new ClickIO (*this, "click"));
_click_io.reset (new ClickIO (*this, X_("Click")));
_click_gain.reset (new Amp (*this));
_click_gain->activate ();
if (state_tree) {
@ -2335,6 +2336,11 @@ Session::add_routes_inner (RouteList& new_routes, bool input_auto_connect, bool
ChanCount existing_outputs;
uint32_t order = next_control_id();
if (_order_hint != 0) {
order = _order_hint;
_order_hint = 0;
}
count_existing_track_channels (existing_inputs, existing_outputs);
{

View File

@ -333,9 +333,14 @@ def build(bld):
obj.uselib = ['GLIBMM','GTHREAD','AUBIO','SIGCPP','XML','UUID',
'SNDFILE','SAMPLERATE','LRDF','AUDIOUNITS',
'OSX','BOOST','CURL','DL']
obj.use = ['libpbd','libmidipp','libevoral','libvamphost',
'libvampplugin','libtaglib','librubberband',
obj.use = ['libpbd','libmidipp','libevoral','libvampplugin',
'libaudiographer','libltc','libtimecode']
if bld.is_defined('USE_EXTERNAL_LIBS'):
obj.uselib.extend(['RUBBERBAND', 'TAGLIB', 'LIBLTC', 'VAMPSDK',
'VAMPHOSTSDK'])
else:
obj.use.extend(['libltc', 'librubberband', 'libtaglib', 'libvamphost'])
obj.vnum = LIBARDOUR_LIB_VERSION
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
obj.defines = [
@ -400,9 +405,13 @@ def build(bld):
'test/test_common.cc', 'test/dummy_lxvst.cc', 'test/audio_region_test.cc', 'test/test_util.cc']
testcommon.uselib = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD',
'SAMPLERATE','XML','LRDF','COREAUDIO']
testcommon.use = ['libpbd','libmidipp','libevoral','libvamphost',
'libvampplugin','libtaglib','librubberband',
'libaudiographer','libltc','ardour']
testcommon.use = ['libpbd','libmidipp','libevoral',
'libvampplugin','libaudiographer','ardour']
if bld.is_defined('USE_EXTERNAL_LIBS'):
testcommon.uselib.extend(['RUBBERBAND', 'TAGLIB', 'LIBLTC', 'VAMPSDK',
'VAMPHOSTSDK'])
else:
testcommon.use.extend(['libltc', 'librubberband', 'libtaglib', 'libvamphost'])
testcommon.defines = [
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
@ -538,9 +547,15 @@ def create_ardour_test_program(bld, includes, name, target, sources):
testobj.source = sources
testobj.uselib = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD',
'SAMPLERATE','XML','LRDF','COREAUDIO']
testobj.use = ['libpbd','libmidipp','libevoral','libvamphost',
'libvampplugin','libtaglib','librubberband',
'libaudiographer','libltc','ardour','testcommon']
testobj.use = ['libpbd','libmidipp','libevoral','libvampplugin',
'libaudiographer','ardour','testcommon']
if bld.is_defined('USE_EXTERNAL_LIBS'):
testcommon.uselib.extend(['RUBBERBAND', 'TAGLIB', 'LIBLTC', 'VAMPSDK',
'VAMPHOSTSDK'])
else:
testcommon.use.extend(['libltc', 'librubberband', 'libtaglib',
'libvamphost'])
testobj.name = name
testobj.target = target
# not sure about install path

View File

@ -509,6 +509,7 @@ JACKAudioBackend::setup_jack_startup_command (bool for_latency_measurement)
/* error, somehow - we will still try to start JACK
* automatically but it will be without our preferred options
*/
std::cerr << "get_jack_command_line_string () failed: using default settings." << std::endl;
return;
}

View File

@ -126,7 +126,7 @@ class JACKAudioBackend : public AudioBackend {
int set_port_name (PortHandle, const std::string&);
std::string get_port_name (PortHandle) const;
PortHandle* get_port_by_name (const std::string&) const;
PortHandle get_port_by_name (const std::string&) const;
int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector<std::string>&) const;

View File

@ -116,11 +116,11 @@ JACKAudioBackend::get_port_name (PortHandle port) const
return jack_port_name ((jack_port_t*) port);
}
PortEngine::PortHandle*
PortEngine::PortHandle
JACKAudioBackend:: get_port_by_name (const std::string& name) const
{
GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0);
return (PortHandle*) jack_port_by_name (_priv_jack, name.c_str());
return (PortHandle) jack_port_by_name (_priv_jack, name.c_str());
}
void

View File

@ -756,6 +756,9 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c
string command_line_driver_name;
string command_line_input_device_name;
string command_line_output_device_name;
if (!get_jack_command_line_audio_driver_name (options.driver, command_line_driver_name)) {
return false;
}
@ -763,60 +766,71 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c
args.push_back ("-d");
args.push_back (command_line_driver_name);
if (options.output_device.empty() && options.input_device.empty()) {
return false;
}
string command_line_input_device_name;
string command_line_output_device_name;
if (!get_jack_command_line_audio_device_name (options.driver,
options.input_device, command_line_input_device_name)) {
return false;
}
if (!get_jack_command_line_audio_device_name (options.driver,
options.output_device, command_line_output_device_name)) {
return false;
}
if (options.input_device.empty()) {
// playback only
if (options.output_device.empty()) {
if (options.driver != dummy_driver_name) {
if (options.output_device.empty() && options.input_device.empty()) {
return false;
}
args.push_back ("-P");
} else if (options.output_device.empty()) {
// capture only
if (!get_jack_command_line_audio_device_name (options.driver,
options.input_device, command_line_input_device_name)) {
return false;
}
if (!get_jack_command_line_audio_device_name (options.driver,
options.output_device, command_line_output_device_name)) {
return false;
}
if (options.input_device.empty()) {
return false;
}
args.push_back ("-C");
} else if (options.input_device != options.output_device) {
// capture and playback on two devices if supported
if (get_jack_audio_driver_supports_two_devices (options.driver)) {
args.push_back ("-C");
args.push_back (command_line_input_device_name);
// playback only
if (options.output_device.empty()) {
return false;
}
args.push_back ("-P");
args.push_back (command_line_output_device_name);
} else {
return false;
} else if (options.output_device.empty()) {
// capture only
if (options.input_device.empty()) {
return false;
}
args.push_back ("-C");
} else if (options.input_device != options.output_device) {
// capture and playback on two devices if supported
if (get_jack_audio_driver_supports_two_devices (options.driver)) {
args.push_back ("-C");
args.push_back (command_line_input_device_name);
args.push_back ("-P");
args.push_back (command_line_output_device_name);
} else {
return false;
}
}
}
if (options.input_channels) {
args.push_back ("-i");
args.push_back (to_string (options.input_channels, std::dec));
}
if (options.input_channels) {
args.push_back ("-i");
args.push_back (to_string (options.input_channels, std::dec));
}
if (options.output_channels) {
args.push_back ("-o");
args.push_back (to_string (options.output_channels, std::dec));
}
if (options.output_channels) {
args.push_back ("-o");
args.push_back (to_string (options.output_channels, std::dec));
}
if (get_jack_audio_driver_supports_setting_period_count (options.driver)) {
args.push_back ("-n");
args.push_back (to_string (options.num_periods, std::dec));
if (get_jack_audio_driver_supports_setting_period_count (options.driver)) {
args.push_back ("-n");
args.push_back (to_string (options.num_periods, std::dec));
}
} else {
// jackd dummy backend
if (options.input_channels) {
args.push_back ("-C");
args.push_back (to_string (options.input_channels, std::dec));
}
if (options.output_channels) {
args.push_back ("-P");
args.push_back (to_string (options.output_channels, std::dec));
}
}
args.push_back ("-r");
@ -836,9 +850,11 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c
}
}
if (options.input_device == options.output_device && options.input_device != default_device_name) {
args.push_back ("-d");
args.push_back (command_line_input_device_name);
if (options.driver != dummy_driver_name) {
if (options.input_device == options.output_device && options.input_device != default_device_name) {
args.push_back ("-d");
args.push_back (command_line_input_device_name);
}
}
if (options.driver == alsa_driver_name) {

View File

@ -20,11 +20,6 @@ msgstr ""
msgid "Unknown action name: %1"
msgstr ""
#: binding_proxy.cc:84
#, fuzzy
msgid "operate controller now"
msgstr "λειτουργία ελεγκτή MIDI τώρα"
#: bindable_button.cc:48
msgid "button cannot watch state of non-existing Controllable\n"
msgstr ""
@ -91,33 +86,3 @@ msgstr ""
#: textviewer.cc:34
msgid "Close"
msgstr "Κλείσιμο"
#~ msgid "OK"
#~ msgstr "OK"
#~ msgid "Location:"
#~ msgstr "Τοποθεσία:"
#~ msgid "Browse ..."
#~ msgstr "Αναζήτηση ..."
#~ msgid "Cancel"
#~ msgstr "Ακύρωση"
#~ msgid "New folder"
#~ msgstr "Νέος φάκελος"
#~ msgid "Add to favorites"
#~ msgstr "Πρόσθεση στα 'Αγαπημένα'"
#~ msgid "Remove from favorites"
#~ msgstr "Απαλοιφή από τα 'Αγαπημένα'"
#~ msgid "Show Hidden"
#~ msgstr "Ανάδειξη κρυμμένων"
#~ msgid "Hide browser"
#~ msgstr "Απόκρυψη browser"
#~ msgid "Rescan"
#~ msgstr "Ανανέωση"

View File

@ -94,36 +94,3 @@ msgstr "Pulsa para llevarlo a la ventana principal"
#: textviewer.cc:34
msgid "Close"
msgstr "Cerrar"
#~ msgid "Error"
#~ msgstr "Error"
#~ msgid "OK"
#~ msgstr "ACEPTAR"
#~ msgid "Location:"
#~ msgstr "Localización:"
#~ msgid "Browse ..."
#~ msgstr "Seleccionar ..."
#~ msgid "Cancel"
#~ msgstr "Cancelar"
#~ msgid "New folder"
#~ msgstr "Nueva carpeta"
#~ msgid "Add to favorites"
#~ msgstr "Agregar a favoritos"
#~ msgid "Remove from favorites"
#~ msgstr "Quitar de favoritos"
#~ msgid "Show Hidden"
#~ msgstr "Mostrar ocultos"
#~ msgid "Hide browser"
#~ msgstr "Ocultar explorador"
#~ msgid "Rescan"
#~ msgstr "Buscar de nuevo"

View File

@ -54,11 +54,6 @@ msgstr "Commande"
msgid "Control"
msgstr "Ctrl"
#: keyboard.cc:70 keyboard.cc:73 keyboard.cc:87 keyboard.cc:90
#, fuzzy
msgid "Key|Shift"
msgstr "Maj"
#: keyboard.cc:71
msgid "Option"
msgstr "Option"
@ -75,11 +70,6 @@ msgstr "Meta"
msgid "Unknown"
msgstr "Inconnu"
#: keyboard.cc:542
#, fuzzy
msgid "key bindings file not found at \"%2\" or contains errors."
msgstr "Raccourcis clavier pour %1 introuvable dans \"%1\" ou corrompu."
#: tearoff.cc:57
msgid "Click to tear this into its own window"
msgstr "Cliquez pour afficher dans une fenêtre séparée"
@ -91,6 +81,3 @@ msgstr "Cliquez pour remettre dans la fenêtre principale"
#: textviewer.cc:34
msgid "Close"
msgstr "Fermer"
#~ msgid "Mod1"
#~ msgstr "Mod1"

File diff suppressed because it is too large Load Diff

View File

@ -90,18 +90,3 @@ msgstr ""
#: textviewer.cc:34
msgid "Close"
msgstr "Zamknij"
#~ msgid "Error"
#~ msgstr "Błąd"
#~ msgid "+"
#~ msgstr "+"
#~ msgid "-"
#~ msgstr "-"
#~ msgid "Paths"
#~ msgstr "Położenia"
#~ msgid "Path Chooser"
#~ msgstr "Wybór położenia"

View File

@ -20,11 +20,6 @@ msgstr ""
msgid "Unknown action name: %1"
msgstr ""
#: binding_proxy.cc:84
#, fuzzy
msgid "operate controller now"
msgstr "Operar controladora de MIDI agora"
#: bindable_button.cc:48
msgid "button cannot watch state of non-existing Controllable\n"
msgstr ""
@ -91,33 +86,3 @@ msgstr ""
#: textviewer.cc:34
msgid "Close"
msgstr "Fechar"
#~ msgid "OK"
#~ msgstr "OK"
#~ msgid "Location:"
#~ msgstr "localização:"
#~ msgid "Browse ..."
#~ msgstr "Localizar ..."
#~ msgid "Cancel"
#~ msgstr "Cancelar"
#~ msgid "New folder"
#~ msgstr "Novo diretório"
#~ msgid "Add to favorites"
#~ msgstr "Adicionar a favoritos"
#~ msgid "Remove from favorites"
#~ msgstr "Remover de favoritos"
#~ msgid "Show Hidden"
#~ msgstr "Mostrar ocultos"
#~ msgid "Hide browser"
#~ msgstr "Ocultar explorador"
#~ msgid "Rescan"
#~ msgstr "Buscar de novo"

View File

@ -96,42 +96,3 @@ msgstr "Щелкните, чтобы превратить это плавающ
#: textviewer.cc:34
msgid "Close"
msgstr "Закрыть"
#~ msgid ""
#~ "\n"
#~ "\n"
#~ "Key: "
#~ msgstr ""
#~ "\n"
#~ "\n"
#~ "Клавиша: "
#~ msgid "OK"
#~ msgstr "ОК"
#~ msgid "Location:"
#~ msgstr "Путь:"
#~ msgid "Browse ..."
#~ msgstr "Обзор ..."
#~ msgid "Cancel"
#~ msgstr "Отмена"
#~ msgid "New folder"
#~ msgstr "Новая папка"
#~ msgid "Add to favorites"
#~ msgstr "Добавить в избранное"
#~ msgid "Remove from favorites"
#~ msgstr "Исключить из избранного"
#~ msgid "Show Hidden"
#~ msgstr "Показывать скрытые файлы"
#~ msgid "Hide browser"
#~ msgstr "Скрыть область обзора"
#~ msgid "Rescan"
#~ msgstr "Обновить"

View File

@ -29,10 +29,15 @@ def options(opt):
autowaf.set_options(opt)
def configure(conf):
conf.load('compiler_c')
autowaf.configure(conf)
if conf.is_defined('USE_EXTERNAL_LIBS'):
autowaf.check_pkg(conf, 'ltc', uselib_store='LIBLTC', atleast_version=LIBLTC_LIB_VERSION, mandatory=True)
else:
conf.load('compiler_c')
autowaf.configure(conf)
def build(bld):
if bld.is_defined('USE_EXTERNAL_LIBS'):
return
obj = bld(features = 'c cshlib')
obj.source = '''
ltc.c
@ -41,7 +46,7 @@ def build(bld):
decoder.c
'''
obj.export_includes = ['.']
obj.export_includes = ['./ltc']
obj.includes = ['.']
obj.name = 'libltc'
obj.target = 'ltc'

View File

@ -25,7 +25,7 @@
/* LV2 */
#include "lv2/lv2plug.in/ns/lv2core/lv2.h"
#include "lv2/lv2plug.in/ns/ext/atom/util.h"
#include "lv2/lv2plug.in/ns/ext/atom/atom.h"
#include "lv2/lv2plug.in/ns/ext/urid/urid.h"
#include "lv2/lv2plug.in/ns/ext/midi/midi.h"
@ -35,7 +35,7 @@
static void * synth_alloc (void);
static void synth_init (void *, double rate);
static void synth_free (void *);
static void synth_parse_midi (void *, uint8_t *data, size_t size);
static void synth_parse_midi (void *, const uint8_t *data, const size_t size);
static uint32_t synth_sound (void *, uint32_t written, uint32_t nframes, float **out);
#include "rsynth.c"
@ -66,6 +66,9 @@ instantiate(const LV2_Descriptor* descriptor,
const char* bundle_path,
const LV2_Feature* const* features)
{
(void) descriptor; /* unused variable */
(void) bundle_path; /* unused variable */
if (rate < 8000) {
fprintf(stderr, "RSynth.lv2 error: unsupported sample-rate (must be > 8k)\n");
return NULL;
@ -131,18 +134,22 @@ run(LV2_Handle handle, uint32_t n_samples)
/* Process incoming MIDI events */
if (self->midiin) {
LV2_Atom_Event* ev = lv2_atom_sequence_begin(&(self->midiin)->body);
while(!lv2_atom_sequence_is_end(&(self->midiin)->body, (self->midiin)->atom.size, ev)) {
LV2_Atom_Event const* ev = (LV2_Atom_Event const*)((&(self->midiin)->body) + 1); // lv2_atom_sequence_begin
while( // !lv2_atom_sequence_is_end
(const uint8_t*)ev < ((const uint8_t*) &(self->midiin)->body + (self->midiin)->atom.size)
)
{
if (ev->body.type == self->midi_MidiEvent) {
if (written + BUFFER_SIZE_SAMPLES < ev->time.frames
&& ev->time.frames < n_samples) {
/* first synthesize sound up until the message timestamp */
written = synth_sound(self->synth, written, ev->time.frames, audio);
}
/* send midi message to synth */
synth_parse_midi(self->synth, (uint8_t*)(ev+1), ev->body.size);
if (written + BUFFER_SIZE_SAMPLES < ev->time.frames
&& ev->time.frames < n_samples) {
/* first synthesize sound up until the message timestamp */
written = synth_sound(self->synth, written, ev->time.frames, audio);
}
/* send midi message to synth */
synth_parse_midi(self->synth, (const uint8_t*)(ev+1), ev->body.size);
}
ev = lv2_atom_sequence_next(ev);
ev = (LV2_Atom_Event const*) // lv2_atom_sequence_next()
((const uint8_t*)ev + sizeof(LV2_Atom_Event) + ((ev->body.size + 7) & ~7));
}
}
@ -161,6 +168,7 @@ cleanup(LV2_Handle handle)
static const void*
extension_data(const char* uri)
{
(void) uri; /* unused variable */
return NULL;
}
@ -177,9 +185,9 @@ static const LV2_Descriptor descriptor = {
LV2_SYMBOL_EXPORT
const LV2_Descriptor*
lv2_descriptor(uint32_t index)
lv2_descriptor(uint32_t idx)
{
switch (index) {
switch (idx) {
case 0:
return &descriptor;
default:
@ -187,4 +195,4 @@ lv2_descriptor(uint32_t index)
}
}
/* vi:set ts=8 sts=2 sw=2: */
/* vi:set ts=8 sts=2 sw=2 et: */

View File

@ -175,9 +175,10 @@ static void synthesize_sineP (RSSynthChannel* sc,
const uint8_t note, const float vol, const float fq,
const size_t n_samples, float* left, float* right) {
size_t i;
float phase = sc->phase[note];
for (size_t i=0; i < n_samples; ++i) {
for (i=0; i < n_samples; ++i) {
float env = adsr_env(sc, note);
if (sc->adsr_cnt[note] == 0) break;
const float amp = vol * env;
@ -188,7 +189,7 @@ static void synthesize_sineP (RSSynthChannel* sc,
left[i] += .080 * amp * sinf(2.0 * M_PI * phase * 4.0);
//left[i] -= .007 * amp * sinf(2.0 * M_PI * phase * 5.0);
//left[i] += .010 * amp * sinf(2.0 * M_PI * phase * 6.0);
//left[i] += .020 * amp * sinf(2.0 * M_PI * phase * 7.0);
left[i] += .020 * amp * sinf(2.0 * M_PI * phase * 7.0);
phase += fq;
right[i] += amp * sinf(2.0 * M_PI * phase);
right[i] += .300 * amp * sinf(2.0 * M_PI * phase * 2.0);
@ -196,13 +197,13 @@ static void synthesize_sineP (RSSynthChannel* sc,
right[i] -= .080 * amp * sinf(2.0 * M_PI * phase * 4.0);
//right[i] += .007 * amp * sinf(2.0 * M_PI * phase * 5.0);
//right[i] += .010 * amp * sinf(2.0 * M_PI * phase * 6.0);
//right[i] -= .020 * amp * sinf(2.0 * M_PI * phase * 7.0);
right[i] -= .020 * amp * sinf(2.0 * M_PI * phase * 7.0);
if (phase > 1.0) phase -= 2.0;
}
sc->phase[note] = phase;
}
static const ADSRcfg piano_adsr = {{ 5, 1300, 100}, { 1.0, 0.0}, {0,0,0}};
static const ADSRcfg piano_adsr = {{ 5, 800, 100}, { 1.0, 0.0}, {0,0,0}};
/*****************************************************************************/
@ -239,8 +240,8 @@ static void process_key (void *synth,
// note off
if (sc->adsr_cnt[note] <= sc->adsr.off[1]) {
if (sc->adsr_cnt[note] != sc->adsr.off[1]) {
// x-fade to release
sc->adsr_amp[note] = adsr_env(sc, note);
// x-fade to release
sc->adsr_amp[note] = adsr_env(sc, note);
}
sc->adsr_cnt[note] = sc->adsr.off[1] + 1;
}
@ -272,9 +273,11 @@ static void synth_fragment (void *synth, const size_t n_samples, float *left, fl
memset (left, 0, n_samples * sizeof(float));
memset (right, 0, n_samples * sizeof(float));
uint8_t keycomp = 0;
int c,k;
size_t i;
for (int c=0; c < 16; ++c) {
for (int k=0; k < 128; ++k) {
for (c=0; c < 16; ++c) {
for (k=0; k < 128; ++k) {
if (rs->sc[c].miditable[k] == 0) continue;
process_key(synth, c, k, n_samples, left, right);
}
@ -286,7 +289,7 @@ static void synth_fragment (void *synth, const size_t n_samples, float *left, fl
if (kctgt < .5) kctgt = .5;
if (kctgt > 1.0) kctgt = 1.0;
const float _w = rs->kcfilt;
for (unsigned int i=0; i < n_samples; ++i) {
for (i=0; i < n_samples; ++i) {
rs->kcgain += _w * (kctgt - rs->kcgain);
left[i] *= rs->kcgain;
right[i] *= rs->kcgain;
@ -296,7 +299,8 @@ static void synth_fragment (void *synth, const size_t n_samples, float *left, fl
}
static void synth_reset_channel(RSSynthChannel* sc) {
for (int k=0; k < 128; ++k) {
int k;
for (k=0; k < 128; ++k) {
sc->adsr_cnt[k] = 0;
sc->adsr_amp[k] = 0;
sc->phase[k] = -10;
@ -307,7 +311,8 @@ static void synth_reset_channel(RSSynthChannel* sc) {
static void synth_reset(void *synth) {
RSSynthesizer* rs = (RSSynthesizer*)synth;
for (int c=0; c < 16; ++c) {
int c;
for (c=0; c < 16; ++c) {
synth_reset_channel(&(rs->sc[c]));
}
rs->kcgain = 0;
@ -332,31 +337,31 @@ static void synth_process_midi_event(void *synth, struct rmidi_event_t *ev) {
switch(ev->type) {
case NOTE_ON:
if (rs->sc[ev->channel].miditable[ev->d.tone.note] <= 0)
rs->sc[ev->channel].miditable[ev->d.tone.note] = ev->d.tone.velocity;
rs->sc[ev->channel].miditable[ev->d.tone.note] = ev->d.tone.velocity;
break;
case NOTE_OFF:
if (rs->sc[ev->channel].miditable[ev->d.tone.note] > 0)
rs->sc[ev->channel].miditable[ev->d.tone.note] *= -1.0;
rs->sc[ev->channel].miditable[ev->d.tone.note] *= -1.0;
break;
case PROGRAM_CHANGE:
break;
case CONTROL_CHANGE:
if (ev->d.control.param == 0x00 || ev->d.control.param == 0x20) {
/* 0x00 and 0x20 are used for BANK select */
break;
/* 0x00 and 0x20 are used for BANK select */
break;
} else
if (ev->d.control.param == 121) {
/* reset all controllers */
break;
/* reset all controllers */
break;
} else
if (ev->d.control.param == 120 || ev->d.control.param == 123) {
/* Midi panic: 120: all sound off, 123: all notes off*/
synth_reset_channel(&(rs->sc[ev->channel]));
break;
/* Midi panic: 120: all sound off, 123: all notes off*/
synth_reset_channel(&(rs->sc[ev->channel]));
break;
} else
if (ev->d.control.param >= 120) {
/* params 122-127 are reserved - skip them. */
break;
/* params 122-127 are reserved - skip them. */
break;
}
break;
default:
@ -407,7 +412,7 @@ static uint32_t synth_sound (void *synth, uint32_t written, const uint32_t nfram
* @param data 8bit midi message
* @param size number of bytes in the midi-message
*/
static void synth_parse_midi(void *synth, uint8_t *data, size_t size) {
static void synth_parse_midi(void *synth, const uint8_t *data, const size_t size) {
if (size < 2 || size > 3) return;
// All messages need to be 3 bytes; except program-changes: 2bytes.
if (size == 2 && (data[0] & 0xf0) != 0xC0) return;
@ -454,14 +459,15 @@ static void synth_init(void *synth, double rate) {
rs->rate = rate;
rs->boffset = BUFFER_SIZE_SAMPLES;
const float tuning = 440;
for (int k=0; k < 128; k++) {
int c,k;
for (k=0; k < 128; k++) {
rs->freqs[k] = (2.0 * tuning / 32.0f) * powf(2, (k - 9.0) / 12.0) / rate;
assert(rs->freqs[k] < M_PI/2); // otherwise spatialization may phase out..
}
rs->kcfilt = 12.0 / rate;
synth_reset(synth);
for (int c=0; c < 16; c++) {
for (c=0; c < 16; c++) {
synth_load(&rs->sc[c], rate, &synthesize_sineP, &piano_adsr);
}
}
@ -487,4 +493,4 @@ static void * synth_alloc(void) {
static void synth_free(void *synth) {
free(synth);
}
/* vi:set ts=8 sts=2 sw=2: */
/* vi:set ts=8 sts=2 sw=2 et: */

View File

@ -15,10 +15,9 @@ def options(opt):
def configure(conf):
conf.load('compiler_c')
autowaf.configure(conf)
autowaf.set_c99_mode(conf)
if Options.options.lv2:
autowaf.check_pkg(conf, 'lv2', atleast_version='1.4.0',
uselib_store='LV2_1_4_0')
autowaf.check_pkg(conf, 'lv2', atleast_version='1.0.0',
uselib_store='LV2_1_0_0')
def build(bld):
bundle = 'reasonablesynth.lv2'
@ -41,7 +40,7 @@ def build(bld):
name = 'reasonablesynth',
target = '../../LV2/%s/reasonablesynth' % bundle,
install_path = '${LV2DIR}/%s' % bundle,
use = 'LV2_1_4_0'
use = 'LV2_1_0_0'
)
obj.env.cshlib_PATTERN = module_pat

View File

@ -24,10 +24,16 @@ def options(opt):
autowaf.set_options(opt)
def configure(conf):
conf.load('compiler_cxx')
autowaf.configure(conf)
if conf.is_defined('USE_EXTERNAL_LIBS'):
autowaf.check_pkg(conf, 'rubberband', uselib_store='RUBBERBAND', atleast_version='1.0', mandatory=True)
else:
conf.load('compiler_cxx')
autowaf.configure(conf)
def build(bld):
if bld.is_defined('USE_EXTERNAL_LIBS'):
return
# Library
obj = bld(features = 'cxx cxxshlib')
prefix = 'libs/rubberband/'

View File

@ -24,10 +24,16 @@ def options(opt):
autowaf.set_options(opt)
def configure(conf):
conf.load('compiler_cxx')
autowaf.configure(conf)
if conf.is_defined('USE_EXTERNAL_LIBS'):
autowaf.check_pkg(conf, 'taglib', uselib_store='TAGLIB', atleast_version="1.4", mandatory=True)
else:
conf.load('compiler_cxx')
autowaf.configure(conf)
def build(bld):
if bld.is_defined('USE_EXTERNAL_LIBS'):
return
# Library
obj = bld(features = 'cxx cxxshlib')
sources = bld.path.ant_glob('taglib/*.cpp')

View File

@ -37,7 +37,7 @@
#ifndef _AMPLITUDE_FOLLOWER_PLUGIN_H_
#define _AMPLITUDE_FOLLOWER_PLUGIN_H_
#include "vamp-sdk/Plugin.h"
#include <vamp-sdk/Plugin.h>
/**
* Example plugin implementing the SuperCollider amplitude follower

View File

@ -17,7 +17,7 @@
#ifndef _ONSET_PLUGIN_H_
#define _ONSET_PLUGIN_H_
#include "vamp-sdk/Plugin.h"
#include <vamp-sdk/Plugin.h>
#include <aubio/aubio.h>
class Onset : public Vamp::Plugin

View File

@ -15,7 +15,7 @@
#ifndef _ONSET_DETECT_PLUGIN_H_
#define _ONSET_DETECT_PLUGIN_H_
#include "vamp-sdk/Plugin.h"
#include <vamp-sdk/Plugin.h>
class OnsetDetectorData;

View File

@ -37,7 +37,7 @@
#ifndef _PERCUSSION_ONSET_DETECTOR_PLUGIN_H_
#define _PERCUSSION_ONSET_DETECTOR_PLUGIN_H_
#include "vamp-sdk/Plugin.h"
#include <vamp-sdk/Plugin.h>
/**
* Example plugin that detects percussive events.

View File

@ -37,7 +37,7 @@
#ifndef _SPECTRAL_CENTROID_PLUGIN_H_
#define _SPECTRAL_CENTROID_PLUGIN_H_
#include "vamp-sdk/Plugin.h"
#include <vamp-sdk/Plugin.h>
/**
* Example plugin that calculates the centre of gravity of the

View File

@ -37,7 +37,7 @@
#ifndef _ZERO_CROSSING_PLUGIN_H_
#define _ZERO_CROSSING_PLUGIN_H_
#include "vamp-sdk/Plugin.h"
#include <vamp-sdk/Plugin.h>
/**
* Example plugin that calculates the positions and density of

View File

@ -38,8 +38,8 @@
#include "libvampplugins-config.h"
#endif
#include "vamp/vamp.h"
#include "vamp-sdk/PluginAdapter.h"
#include <vamp/vamp.h>
#include <vamp-sdk/PluginAdapter.h>
#include "ZeroCrossing.h"
#include "SpectralCentroid.h"

View File

@ -23,13 +23,19 @@ def options(opt):
autowaf.set_options(opt)
def configure(conf):
conf.load('compiler_cxx')
autowaf.configure(conf)
autowaf.check_pkg(conf, 'fftw3', uselib_store='FFTW3', mandatory=True)
autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F', mandatory=True)
conf.env.append_value('CXXFLAGS', '-DHAVE_FFTW3')
if conf.is_defined('USE_EXTERNAL_LIBS'):
autowaf.check_pkg(conf, 'vamp-sdk', uselib_store='VAMPSDK', mandatory=True)
autowaf.check_pkg(conf, 'vamp-hostsdk', uselib_store='VAMPHOSTSDK', mandatory=True)
else:
conf.load('compiler_cxx')
autowaf.configure(conf)
autowaf.check_pkg(conf, 'fftw3', uselib_store='FFTW3', mandatory=True)
autowaf.check_pkg(conf, 'fftw3f', uselib_store='FFTW3F', mandatory=True)
conf.env.append_value('CXXFLAGS', '-DHAVE_FFTW3')
def build(bld):
if bld.is_defined('USE_EXTERNAL_LIBS'):
return
# Host Library
obj = bld(features = 'cxx cxxshlib')
obj.source = '''

14
tools/nofuzz.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
## this script should be run from the top-level source dir
## it remove all fuzzy and obsolte translations and wraps
## long lines.
##
## update .po and .pot files:
./waf i18n_pot
TEMPFILE=`mktemp`
for file in `git ls-files | grep -e '.po$'`; do
cp $file $TEMPFILE
msgattrib -o $file --no-fuzzy --no-obsolete $TEMPFILE
done
rm $TEMPFILE

40
wscript
View File

@ -304,13 +304,22 @@ def set_compiler_flags (conf,opt):
# prepend boiler plate optimization flags that work on all architectures
#
optimization_flags[:0] = [
"-O3",
"-fomit-frame-pointer",
"-ffast-math",
"-fstrength-reduce",
"-pipe"
]
optimization_flags[:0] = ["-pipe"]
# don't prepend optimization flags if "-O<something>" is present
prepend_opt_flags = True
for flag in optimization_flags:
if flag.startswith("-O"):
prepend_opt_flags = False
break
if prepend_opt_flags:
optimization_flags[:0] = [
"-O3",
"-fomit-frame-pointer",
"-ffast-math",
"-fstrength-reduce"
]
if opt.debug:
conf.env.append_value('CFLAGS', debug_flags)
@ -431,6 +440,8 @@ def options(opt):
help='Build internal libs as shared libraries')
opt.add_option('--internal-static-libs', action='store_false', dest='internal_shared_libs',
help='Build internal libs as static libraries')
opt.add_option('--use-external-libs', action='store_true', default=False, dest='use_external_libs',
help='Use external/system versions of some bundled libraries')
opt.add_option('--lv2', action='store_true', default=True, dest='lv2',
help='Compile with support for LV2 (if Lilv+Suil is available)')
opt.add_option('--no-lv2', action='store_false', dest='lv2',
@ -603,6 +614,9 @@ def configure(conf):
if Options.options.internal_shared_libs:
conf.define('INTERNAL_SHARED_LIBS', 1)
if Options.options.use_external_libs:
conf.define('USE_EXTERNAL_LIBS', 1)
if Options.options.boost_include != '':
conf.env.append_value('CXXFLAGS', '-I' + Options.options.boost_include)
@ -703,6 +717,7 @@ const char* const ardour_config_info = "\\n\\
write_config_text('Install prefix', conf.env['PREFIX'])
write_config_text('Strict compiler flags', conf.env['STRICT'])
write_config_text('Internal Shared Libraries', conf.is_defined('INTERNAL_SHARED_LIBS'))
write_config_text('Use External Libraries', conf.is_defined('USE_EXTERNAL_LIBS'))
write_config_text('Architecture flags', opts.arch)
write_config_text('Aubio', conf.is_defined('HAVE_AUBIO'))
@ -748,14 +763,17 @@ def build(bld):
# add directories that contain only headers, to workaround an issue with waf
bld.path.find_dir ('libs/evoral/evoral')
bld.path.find_dir ('libs/vamp-sdk/vamp-sdk')
if not bld.is_defined('USE_EXTERNAL_LIBS'):
bld.path.find_dir ('libs/vamp-sdk/vamp-sdk')
bld.path.find_dir ('libs/surfaces/control_protocol/control_protocol')
bld.path.find_dir ('libs/timecode/timecode')
bld.path.find_dir ('libs/libltc/ltc')
bld.path.find_dir ('libs/rubberband/rubberband')
if not bld.is_defined('USE_EXTERNAL_LIBS'):
bld.path.find_dir ('libs/libltc/ltc')
bld.path.find_dir ('libs/rubberband/rubberband')
bld.path.find_dir ('libs/gtkmm2ext/gtkmm2ext')
bld.path.find_dir ('libs/ardour/ardour')
bld.path.find_dir ('libs/taglib/taglib')
if not bld.is_defined('USE_EXTERNAL_LIBS'):
bld.path.find_dir ('libs/taglib/taglib')
bld.path.find_dir ('libs/pbd/pbd')
autowaf.set_recursive()