From 897f6ae3562ff5bebc7f0962d95cbfb29a34ff17 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 14 Jul 2013 18:34:36 +0200 Subject: switch to WM::Proxy Action management fixes http://tracker.ardour.org/view.php?id=5584 --- gtk2_ardour/ardour_ui2.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index 5a64e53140..50affa6c96 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -617,11 +617,10 @@ ARDOUR_UI::click_button_clicked (GdkEventButton* ev) return false; } - RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleRCOptionsEditor")); + RefPtr act = ActionManager::get_action (X_("Window"), X_("toggle-rc-options-editor")); assert (act); - RefPtr tact = RefPtr::cast_dynamic (act); - tact->set_active (); + act->activate(); rc_option_editor->set_current_page (_("Misc")); return true; -- cgit v1.2.3 From 6827261766a678b69b15394e645478ab78133eb6 Mon Sep 17 00:00:00 2001 From: Alexandre Prokoudine Date: Sun, 14 Jul 2013 18:45:13 +0200 Subject: Update Russian translation --- gtk2_ardour/po/ru.po | 1441 ++++++++++++++++++++++++++++---------------------- 1 file changed, 797 insertions(+), 644 deletions(-) diff --git a/gtk2_ardour/po/ru.po b/gtk2_ardour/po/ru.po index b724e52fc5..3c81be6c62 100644 --- a/gtk2_ardour/po/ru.po +++ b/gtk2_ardour/po/ru.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Ardour 3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-06-14 03:57+0400\n" -"PO-Revision-Date: 2013-06-14 04:15+0300\n" +"POT-Creation-Date: 2013-07-14 15:01+0400\n" +"PO-Revision-Date: 2013-07-14 18:04+0300\n" "Last-Translator: Александр Прокудин \n" "Language-Team: русский <>\n" "Language: ru\n" @@ -20,8 +20,8 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); 10<=4 && (n%100<10 || n" -"%100>=20) ? 1 : 2);\n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"%100>=20) ? 1: 2);\n" #: about.cc:122 msgid "Brian Ahr" @@ -413,7 +413,7 @@ msgstr "%1 menu definition file not found" msgid "%1 will not work without a valid ardour.menus file" msgstr "%1 will not work without a valid ardour.menus file" -#: add_route_dialog.cc:53 route_params_ui.cc:503 +#: add_route_dialog.cc:53 route_params_ui.cc:499 msgid "Add Track or Bus" msgstr "Добавить дорожку или шину" @@ -506,7 +506,7 @@ msgstr "" "звуковые и MIDI-дорожки." #: add_route_dialog.cc:319 add_route_dialog.cc:338 editor_actions.cc:385 -#: editor_rulers.cc:377 time_axis_view.cc:1301 +#: editor_rulers.cc:377 time_axis_view.cc:1304 msgid "Normal" msgstr "Нормальная" @@ -550,7 +550,7 @@ msgstr "8 каналов" msgid "12 Channel" msgstr "3 канала" -#: add_route_dialog.cc:475 mixer_strip.cc:2136 +#: add_route_dialog.cc:475 mixer_strip.cc:2130 msgid "Custom" msgstr "На заказ" @@ -638,7 +638,7 @@ msgid "Track" msgstr "Дорожка" #: analysis_window.cc:68 editor_actions.cc:616 mixer_ui.cc:125 -#: mixer_ui.cc:1793 +#: mixer_ui.cc:1795 msgid "Show" msgstr "Показать" @@ -646,91 +646,91 @@ msgstr "Показать" msgid "Re-analyze data" msgstr "Повторно проанализировать данные" -#: ardour_button.cc:658 +#: ardour_button.cc:704 msgid "button cannot watch state of non-existing Controllable\n" msgstr "" -#: ardour_ui.cc:179 +#: ardour_ui.cc:180 msgid "audition" msgstr "прослушивание" -#: ardour_ui.cc:180 +#: ardour_ui.cc:181 msgid "solo" msgstr "солирование" -#: ardour_ui.cc:181 +#: ardour_ui.cc:182 msgid "feedback" msgstr "отклик" -#: ardour_ui.cc:183 speaker_dialog.cc:36 +#: ardour_ui.cc:184 speaker_dialog.cc:36 msgid "Speaker Configuration" msgstr "Конфигурация громкоговорителей" -#: ardour_ui.cc:184 theme_manager.cc:56 theme_manager.cc:64 +#: ardour_ui.cc:185 theme_manager.cc:56 theme_manager.cc:64 msgid "Theme Manager" msgstr "Стиль оформления" -#: ardour_ui.cc:185 keyeditor.cc:53 +#: ardour_ui.cc:186 keyeditor.cc:53 msgid "Key Bindings" msgstr "Клавиатурные комбинации" -#: ardour_ui.cc:186 +#: ardour_ui.cc:187 msgid "Preferences" msgstr "Параметры" -#: ardour_ui.cc:187 ardour_ui.cc:192 +#: ardour_ui.cc:188 ardour_ui.cc:193 msgid "Add Tracks/Busses" msgstr "Добавить дорожки/шины" -#: ardour_ui.cc:188 +#: ardour_ui.cc:189 msgid "About" msgstr "О программе" -#: ardour_ui.cc:189 location_ui.cc:1134 +#: ardour_ui.cc:190 location_ui.cc:1146 msgid "Locations" msgstr "Позиции" -#: ardour_ui.cc:190 route_params_ui.cc:57 route_params_ui.cc:604 +#: ardour_ui.cc:191 route_params_ui.cc:57 route_params_ui.cc:600 msgid "Tracks and Busses" msgstr "Дорожки и шины" -#: ardour_ui.cc:191 +#: ardour_ui.cc:192 msgid "Properties" msgstr "Свойства" -#: ardour_ui.cc:193 bundle_manager.cc:263 +#: ardour_ui.cc:194 bundle_manager.cc:263 msgid "Bundle Manager" msgstr "Управление пакетами" -#: ardour_ui.cc:194 big_clock_window.cc:35 +#: ardour_ui.cc:195 big_clock_window.cc:35 msgid "Big Clock" msgstr "Большой счётчик" -#: ardour_ui.cc:195 +#: ardour_ui.cc:196 msgid "Audio Connections" msgstr "Звуковые соединения" -#: ardour_ui.cc:196 +#: ardour_ui.cc:197 msgid "MIDI Connections" msgstr "Соединения MIDI" -#: ardour_ui.cc:198 +#: ardour_ui.cc:199 msgid "Errors" msgstr "Ошибки" -#: ardour_ui.cc:299 +#: ardour_ui.cc:301 msgid "could not initialize %1." msgstr "Не удалось инициализировать %1." -#: ardour_ui.cc:394 +#: ardour_ui.cc:396 msgid "Starting audio engine" msgstr "Запускается звуковой движок" -#: ardour_ui.cc:763 startup.cc:638 +#: ardour_ui.cc:766 startup.cc:638 msgid "%1 is ready for use" msgstr "%1 готов к работе" -#: ardour_ui.cc:811 +#: ardour_ui.cc:814 msgid "" "WARNING: Your system has a limit for maximum amount of locked memory. This " "might cause %1 to run out of memory before your system runs out of memory. \n" @@ -745,23 +745,23 @@ msgstr "" "Вы можете узнать установленный предел при помощи команды 'ulimit -l'. Обычно " "это контролируется в %2." -#: ardour_ui.cc:828 +#: ardour_ui.cc:831 msgid "Do not show this window again" msgstr "Больше не показывать это окно" -#: ardour_ui.cc:870 +#: ardour_ui.cc:873 msgid "Don't quit" msgstr "Не выходить" -#: ardour_ui.cc:871 +#: ardour_ui.cc:874 msgid "Just quit" msgstr "Просто выйти" -#: ardour_ui.cc:872 +#: ardour_ui.cc:875 msgid "Save and quit" msgstr "Сохранить и выйти" -#: ardour_ui.cc:882 +#: ardour_ui.cc:885 msgid "" "%1 was unable to save your session.\n" "\n" @@ -776,15 +776,15 @@ msgstr "" "\n" "«Просто выйти»." -#: ardour_ui.cc:913 +#: ardour_ui.cc:916 msgid "Please wait while %1 cleans up..." msgstr "Дождитесь завершения подчистки сеанса в %1..." -#: ardour_ui.cc:930 +#: ardour_ui.cc:933 msgid "Unsaved Session" msgstr "Сеанс не сохранён" -#: ardour_ui.cc:951 +#: ardour_ui.cc:954 msgid "" "The session \"%1\"\n" "has not been saved.\n" @@ -802,7 +802,7 @@ msgstr "" "\n" "Что вы хотите сделать?" -#: ardour_ui.cc:954 +#: ardour_ui.cc:957 msgid "" "The snapshot \"%1\"\n" "has not been saved.\n" @@ -820,74 +820,74 @@ msgstr "" "\n" "Что вы хотите сделать?" -#: ardour_ui.cc:968 +#: ardour_ui.cc:971 msgid "Prompter" msgstr "" -#: ardour_ui.cc:1045 +#: ardour_ui.cc:1048 msgid "disconnected" msgstr "отсоединено" -#: ardour_ui.cc:1052 +#: ardour_ui.cc:1055 #, c-format msgid "JACK: %.1f kHz / %4.1f ms" msgstr "JACK: %.1f КГц / %4.1f мс" -#: ardour_ui.cc:1056 +#: ardour_ui.cc:1059 #, c-format msgid "JACK: % kHz / %4.1f ms" msgstr "JACK: % КГц / %4.1f мс" -#: ardour_ui.cc:1074 export_video_dialog.cc:67 +#: ardour_ui.cc:1077 export_video_dialog.cc:67 msgid "File:" msgstr "Файл:" -#: ardour_ui.cc:1078 +#: ardour_ui.cc:1081 msgid "BWF" msgstr "BWF" -#: ardour_ui.cc:1081 +#: ardour_ui.cc:1084 msgid "WAV" msgstr "WAV" -#: ardour_ui.cc:1084 +#: ardour_ui.cc:1087 msgid "WAV64" msgstr "WAV64" -#: ardour_ui.cc:1087 session_option_editor.cc:197 +#: ardour_ui.cc:1090 session_option_editor.cc:197 msgid "CAF" msgstr "CAF" -#: ardour_ui.cc:1090 +#: ardour_ui.cc:1093 msgid "AIFF" msgstr "AIFF" -#: ardour_ui.cc:1093 +#: ardour_ui.cc:1096 msgid "iXML" msgstr "iXML" -#: ardour_ui.cc:1096 +#: ardour_ui.cc:1099 msgid "RF64" msgstr "RF64" -#: ardour_ui.cc:1104 +#: ardour_ui.cc:1107 msgid "32-float" msgstr "32-float" -#: ardour_ui.cc:1107 +#: ardour_ui.cc:1110 msgid "24-int" msgstr "24-int" -#: ardour_ui.cc:1110 +#: ardour_ui.cc:1113 msgid "16-int" msgstr "16-int" -#: ardour_ui.cc:1129 +#: ardour_ui.cc:1132 #, c-format msgid "DSP: %5.1f%%" msgstr "ЦП: %5.1f%%" -#: ardour_ui.cc:1148 +#: ardour_ui.cc:1151 #, c-format msgid "" "Buffers: p:" @@ -898,33 +898,33 @@ msgstr "" "%% c:" "%%%" -#: ardour_ui.cc:1184 +#: ardour_ui.cc:1187 msgid "Disk: Unknown" msgstr "На диске: неизвестно" -#: ardour_ui.cc:1186 +#: ardour_ui.cc:1189 msgid "Disk: 24hrs+" msgstr "На диске: 24ч+" -#: ardour_ui.cc:1204 +#: ardour_ui.cc:1207 msgid "Disk: >24 hrs" msgstr "На диске: >24ч" -#: ardour_ui.cc:1215 +#: ardour_ui.cc:1218 #, c-format msgid "Disk: %02dh:%02dm:%02ds" msgstr "На диске: %02dч:%02dм:%02dс" -#: ardour_ui.cc:1241 +#: ardour_ui.cc:1244 #, c-format msgid "Timecode|TC: %s" msgstr "ТК: %s" -#: ardour_ui.cc:1358 ardour_ui.cc:1367 startup.cc:1045 +#: ardour_ui.cc:1361 ardour_ui.cc:1370 startup.cc:1045 msgid "Recent Sessions" msgstr "Недавние сеансы" -#: ardour_ui.cc:1447 +#: ardour_ui.cc:1450 msgid "" "%1 is not connected to JACK\n" "You cannot open or close sessions in this condition" @@ -932,27 +932,27 @@ msgstr "" "%1 не соединен с JACK.\n" "Открытие и закрытие сеансов невозможно." -#: ardour_ui.cc:1474 +#: ardour_ui.cc:1477 msgid "Open Session" msgstr "Открыть сеанс" -#: ardour_ui.cc:1492 session_import_dialog.cc:169 +#: ardour_ui.cc:1495 session_import_dialog.cc:169 #: session_metadata_dialog.cc:729 startup.cc:1074 msgid "%1 sessions" msgstr "Cеансы %1" -#: ardour_ui.cc:1529 +#: ardour_ui.cc:1532 msgid "You cannot add a track without a session already loaded." msgstr "Вы не можете добавить дорожку без загруженного сеанса." -#: ardour_ui.cc:1537 +#: ardour_ui.cc:1540 msgid "could not create %1 new mixed track" msgid_plural "could not create %1 new mixed tracks" msgstr[0] "Не удалось создать %1 новую смешанную дорожку" msgstr[1] "Не удалось создать %1 новых смешанных дорожки" msgstr[2] "Не удалось создать %1 новых смешанных дорожек" -#: ardour_ui.cc:1543 ardour_ui.cc:1604 +#: ardour_ui.cc:1546 ardour_ui.cc:1607 msgid "" "There are insufficient JACK ports available\n" "to create a new track or bus.\n" @@ -964,25 +964,25 @@ msgstr "" "Необходимо сохранить %1, выйти и запустить\n" "JACK с увеличенным количеством портов." -#: ardour_ui.cc:1578 +#: ardour_ui.cc:1581 msgid "You cannot add a track or bus without a session already loaded." msgstr "Вы не можете добавить дорожку или шину без открытого сеанса." -#: ardour_ui.cc:1587 +#: ardour_ui.cc:1590 msgid "could not create %1 new audio track" msgid_plural "could not create %1 new audio tracks" msgstr[0] "Не удалось создать %1 новую звуковую дорожку" msgstr[1] "Не удалось создать %2 новых звуковых дорожки" msgstr[2] "Не удалось создать %2 новых звуковых дорожек" -#: ardour_ui.cc:1596 +#: ardour_ui.cc:1599 msgid "could not create %1 new audio bus" msgid_plural "could not create %1 new audio busses" msgstr[0] "Не удалось создать %1 новую звуковую шину" msgstr[1] "Не удалось создать %1 новых звуковых шины" msgstr[2] "Не удалось создать %1 новых звуковых шин" -#: ardour_ui.cc:1713 +#: ardour_ui.cc:1716 msgid "" "Please create one or more tracks before trying to record.\n" "You can do this with the \"Add Track or Bus\" option in the Session menu." @@ -991,14 +991,14 @@ msgstr "" "как пытаться что-либо записать.\n" "Используйте меню «Сеанс > Добавить дорожку/шину»." -#: ardour_ui.cc:2103 +#: ardour_ui.cc:2106 msgid "" "The audio backend (JACK) was shutdown because:\n" "\n" "%1" msgstr "" -#: ardour_ui.cc:2105 +#: ardour_ui.cc:2108 msgid "" "JACK has either been shutdown or it\n" "disconnected %1 because %1\n" @@ -1009,19 +1009,19 @@ msgstr "" "с %1 и отсоединил его. Необходимо перезапустить \n" "JACK, восстановить соединение и сохранить сеанс." -#: ardour_ui.cc:2131 +#: ardour_ui.cc:2134 msgid "Unable to start the session running" msgstr "Невозможно запустить уже выполняемый сеанс" -#: ardour_ui.cc:2211 +#: ardour_ui.cc:2214 msgid "Take Snapshot" msgstr "Создать снимок" -#: ardour_ui.cc:2212 +#: ardour_ui.cc:2215 msgid "Name of new snapshot" msgstr "Название нового снимка" -#: ardour_ui.cc:2236 +#: ardour_ui.cc:2239 msgid "" "To ensure compatibility with various systems\n" "snapshot names may not contain a '%1' character" @@ -1029,27 +1029,27 @@ msgstr "" "Для обеспечения совместимости с различными системами\n" "названия снимков не могут содержать символ '%1'." -#: ardour_ui.cc:2248 +#: ardour_ui.cc:2251 msgid "Confirm Snapshot Overwrite" msgstr "Подтвердите перезапись снимка" -#: ardour_ui.cc:2249 +#: ardour_ui.cc:2252 msgid "A snapshot already exists with that name. Do you want to overwrite it?" msgstr "Снимок с таким названием уже есть. Перезаписать его?" -#: ardour_ui.cc:2252 utils_videotl.cc:66 +#: ardour_ui.cc:2255 utils_videotl.cc:66 msgid "Overwrite" msgstr "Перезаписать" -#: ardour_ui.cc:2286 +#: ardour_ui.cc:2289 msgid "Rename Session" msgstr "Переименовать сеанс" -#: ardour_ui.cc:2287 +#: ardour_ui.cc:2290 msgid "New session name" msgstr "Новое название сеанса" -#: ardour_ui.cc:2301 ardour_ui.cc:2681 ardour_ui.cc:2726 +#: ardour_ui.cc:2304 ardour_ui.cc:2684 ardour_ui.cc:2729 msgid "" "To ensure compatibility with various systems\n" "session names may not contain a '%1' character" @@ -1057,12 +1057,12 @@ msgstr "" "Для обеспечения совместимости с различными системами\n" "названия сеансов не могут содержать символ '%1'." -#: ardour_ui.cc:2309 +#: ardour_ui.cc:2312 msgid "" "That name is already in use by another directory/folder. Please try again." msgstr "" -#: ardour_ui.cc:2318 +#: ardour_ui.cc:2321 msgid "" "Renaming this session failed.\n" "Things could be seriously messed up at this point" @@ -1070,19 +1070,19 @@ msgstr "" "Не удалось переименовать этот сеанс.\n" "Очень может быть, что всё испортилось." -#: ardour_ui.cc:2429 +#: ardour_ui.cc:2432 msgid "Save Template" msgstr "Сохранить шаблон" -#: ardour_ui.cc:2430 +#: ardour_ui.cc:2433 msgid "Name for template:" msgstr "Название шаблона:" -#: ardour_ui.cc:2431 +#: ardour_ui.cc:2434 msgid "-template" msgstr "-шаблон" -#: ardour_ui.cc:2469 +#: ardour_ui.cc:2472 msgid "" "This session\n" "%1\n" @@ -1092,52 +1092,52 @@ msgstr "" "%1\n" "уже существует. Открыть его?" -#: ardour_ui.cc:2479 +#: ardour_ui.cc:2482 msgid "Open Existing Session" msgstr "Открыть существующий сеанс" -#: ardour_ui.cc:2717 +#: ardour_ui.cc:2720 msgid "There is no existing session at \"%1\"" msgstr "По адресу \"%1\" не существующего сеанса" -#: ardour_ui.cc:2804 +#: ardour_ui.cc:2807 msgid "Please wait while %1 loads your session" msgstr "Дождитесь завершения загрузки сеанса в %1" -#: ardour_ui.cc:2819 +#: ardour_ui.cc:2822 msgid "Port Registration Error" msgstr "Ошибка регистрации порта" -#: ardour_ui.cc:2820 +#: ardour_ui.cc:2823 msgid "Click the Close button to try again." msgstr "Щелкните кнопку «Закрыть» для возврата к предыдущему диалогу." -#: ardour_ui.cc:2841 +#: ardour_ui.cc:2844 msgid "Session \"%1 (snapshot %2)\" did not load successfully" msgstr "Не удалось загрузить сеанс \"%1 (снимок %2)\"" -#: ardour_ui.cc:2847 +#: ardour_ui.cc:2850 msgid "Loading Error" msgstr "Ошибка при загрузке" -#: ardour_ui.cc:2848 +#: ardour_ui.cc:2851 msgid "Click the Refresh button to try again." msgstr "Щёлкните кнопку «Обновить» для повторной попытки." -#: ardour_ui.cc:2930 +#: ardour_ui.cc:2933 msgid "Could not create session in \"%1\"" msgstr "Не удалось создать сеанс «%1»" -#: ardour_ui.cc:3030 +#: ardour_ui.cc:3033 msgid "No files were ready for clean-up" msgstr "Нет готовых к удалению звуковых файлов" -#: ardour_ui.cc:3034 ardour_ui.cc:3044 ardour_ui.cc:3177 ardour_ui.cc:3184 +#: ardour_ui.cc:3037 ardour_ui.cc:3047 ardour_ui.cc:3180 ardour_ui.cc:3187 #: ardour_ui_ed.cc:104 msgid "Clean-up" msgstr "Очистить" -#: ardour_ui.cc:3035 +#: ardour_ui.cc:3038 msgid "" "If this seems suprising, \n" "check for any existing snapshots.\n" @@ -1149,19 +1149,19 @@ msgstr "" "Они могут включать области, которым\n" "нужны неиспользуемые файлы." -#: ardour_ui.cc:3094 +#: ardour_ui.cc:3097 msgid "kilo" msgstr "кило" -#: ardour_ui.cc:3097 +#: ardour_ui.cc:3100 msgid "mega" msgstr "мега" -#: ardour_ui.cc:3100 +#: ardour_ui.cc:3103 msgid "giga" msgstr "гига" -#: ardour_ui.cc:3105 +#: ardour_ui.cc:3108 msgid "" "The following file was deleted from %2,\n" "releasing %3 %4bytes of disk space" @@ -1181,7 +1181,7 @@ msgstr[2] "" "освободив при этом %3 %4байт\n" "дискового пространства." -#: ardour_ui.cc:3112 +#: ardour_ui.cc:3115 msgid "" "The following file was not in use and \n" "has been moved to: %2\n" @@ -1201,7 +1201,7 @@ msgid_plural "" "\n" "will release an additional %3 %4bytes of disk space.\n" msgstr[0] "" -"Следующий %1 файл не используется и перемещён в пвпку\n" +"Следующий %1 файл не используется и перемещён в папку\n" "%2\n" "\n" "После повторного запуска %5 команда\n" @@ -1210,7 +1210,7 @@ msgstr[0] "" "\n" "дополнительно освободит %3 %4байт дискового пространства.\n" msgstr[1] "" -"Следующие %1 файла не используются и перемещён в пвпку\n" +"Следующие %1 файла не используются и перемещены в папку\n" "%2\n" "\n" "После повторного запуска %5 команда\n" @@ -1219,7 +1219,7 @@ msgstr[1] "" "\n" "дополнительно освободит %3 %4байт дискового пространства.\n" msgstr[2] "" -"Следующие %1 файлов не используются и перемещён в пвпку\n" +"Следующие %1 файлов не используются и перемещены в папку\n" "%2\n" "\n" "После повторного запуска %5 команда\n" @@ -1228,11 +1228,11 @@ msgstr[2] "" "\n" "дополнительно освободит %3 %4байт дискового пространства.\n" -#: ardour_ui.cc:3172 +#: ardour_ui.cc:3175 msgid "Are you sure you want to clean-up?" msgstr "Вы уверены, что хотите выполнить очистку?" -#: ardour_ui.cc:3179 +#: ardour_ui.cc:3182 msgid "" "Clean-up is a destructive operation.\n" "ALL undo/redo information will be lost if you clean-up.\n" @@ -1243,80 +1243,80 @@ msgstr "" "неиспользуемые звуковые файлы\n" "будут перемещены в «мертвую» зону." -#: ardour_ui.cc:3187 +#: ardour_ui.cc:3190 msgid "CleanupDialog" msgstr "Очистка" -#: ardour_ui.cc:3217 +#: ardour_ui.cc:3220 msgid "Cleaned Files" msgstr "Очищенные файлы" -#: ardour_ui.cc:3234 +#: ardour_ui.cc:3237 msgid "deleted file" msgstr "удалён файл" -#: ardour_ui.cc:3326 +#: ardour_ui.cc:3329 msgid "" "Video-Server was not launched by Ardour. The request to stop it is ignored." msgstr "" -#: ardour_ui.cc:3330 +#: ardour_ui.cc:3333 msgid "Stop Video-Server" msgstr "" -#: ardour_ui.cc:3331 +#: ardour_ui.cc:3334 msgid "Do you really want to stop the Video Server?" msgstr "Вы действительно хотите остановить видеосервер?" -#: ardour_ui.cc:3334 +#: ardour_ui.cc:3337 msgid "Yes, Stop It" msgstr "Да, остановить" -#: ardour_ui.cc:3360 +#: ardour_ui.cc:3363 msgid "The Video Server is already started." msgstr "" -#: ardour_ui.cc:3362 +#: ardour_ui.cc:3365 msgid "" "An external Video Server is configured and can be reached. Not starting a " "new instance." msgstr "" -#: ardour_ui.cc:3370 ardour_ui.cc:3460 +#: ardour_ui.cc:3373 ardour_ui.cc:3463 msgid "" "Could not connect to the Video Server. Start it or configure its access URL " "in Edit -> Preferences." msgstr "" -#: ardour_ui.cc:3394 +#: ardour_ui.cc:3397 msgid "Specified docroot is not an existing directory." msgstr "" -#: ardour_ui.cc:3399 +#: ardour_ui.cc:3402 msgid "Given Video Server is not an executable file." msgstr "" -#: ardour_ui.cc:3432 +#: ardour_ui.cc:3435 msgid "Cannot launch the video-server" msgstr "Не удалось запустить видеосервер" -#: ardour_ui.cc:3441 +#: ardour_ui.cc:3444 msgid "Video-server was started but does not respond to requests..." msgstr "" -#: ardour_ui.cc:3482 editor_audio_import.cc:629 +#: ardour_ui.cc:3489 editor_audio_import.cc:629 msgid "could not open %1" msgstr "не удалось открыть %1" -#: ardour_ui.cc:3486 +#: ardour_ui.cc:3493 msgid "no video-file selected" msgstr "" -#: ardour_ui.cc:3646 +#: ardour_ui.cc:3658 msgid "Recording was stopped because your system could not keep up." msgstr "Запись остановлена из-за недостаточного быстродействия системы" -#: ardour_ui.cc:3675 +#: ardour_ui.cc:3687 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1330,7 +1330,7 @@ msgstr "" "В частности ей не удалось записать данные на диск\n" "достаточно быстро для фиксации захваченных данных.\n" -#: ardour_ui.cc:3694 +#: ardour_ui.cc:3706 msgid "" "The disk system on your computer\n" "was not able to keep up with %1.\n" @@ -1344,11 +1344,11 @@ msgstr "" "В частности ей не удалось прочитать данные\n" "с диска достаточно быстро для воспроизведения.\n" -#: ardour_ui.cc:3734 +#: ardour_ui.cc:3746 msgid "Crash Recovery" msgstr "Восстановление данных" -#: ardour_ui.cc:3735 +#: ardour_ui.cc:3747 msgid "" "This session appears to have been in the\n" "middle of recording when %1 or\n" @@ -1364,19 +1364,19 @@ msgstr "" "%1 может восстановить записанные данные,\n" "либо проигнорировать их. Примите решение.\n" -#: ardour_ui.cc:3747 +#: ardour_ui.cc:3759 msgid "Ignore crash data" msgstr "Проигнорировать" -#: ardour_ui.cc:3748 +#: ardour_ui.cc:3760 msgid "Recover from crash" msgstr "Восстановить данные" -#: ardour_ui.cc:3768 +#: ardour_ui.cc:3780 msgid "Sample Rate Mismatch" msgstr "Несовпадение частот сэмплирования" -#: ardour_ui.cc:3769 +#: ardour_ui.cc:3781 msgid "" "This session was created with a sample rate of %1 Hz, but\n" "%2 is currently running at %3 Hz. If you load this session,\n" @@ -1388,23 +1388,23 @@ msgstr "" "Если вы загрузите этот сеанс, звуковые данные могут быть\n" "воспроизведены с некорректной частотой сэмплирования.\n" -#: ardour_ui.cc:3778 +#: ardour_ui.cc:3790 msgid "Do not load session" msgstr "Не загружать сеанс" -#: ardour_ui.cc:3779 +#: ardour_ui.cc:3791 msgid "Load session anyway" msgstr "Все равно загрузить" -#: ardour_ui.cc:3802 +#: ardour_ui.cc:3814 msgid "Could not disconnect from JACK" msgstr "Не удалось отсоединиться от сервера JACK" -#: ardour_ui.cc:3815 +#: ardour_ui.cc:3827 msgid "Could not reconnect to JACK" msgstr "Не удалось соединиться с сервером JACK" -#: ardour_ui.cc:4089 +#: ardour_ui.cc:4101 msgid "" "%4This is a session from an older version of %3%5\n" "\n" @@ -1427,57 +1427,61 @@ msgstr "Интерфейс: не удалось инициализировать msgid "UI: cannot setup mixer" msgstr "Интерфейс: не удалось инициализировать микшер" -#: ardour_ui2.cc:125 +#: ardour_ui2.cc:82 +msgid "UI: cannot setup meterbridge" +msgstr "Интерфейс: не удалось настроить панель индикаторов" + +#: ardour_ui2.cc:130 msgid "Play from playhead" msgstr "Воспроизвести от указателя" -#: ardour_ui2.cc:126 +#: ardour_ui2.cc:131 msgid "Stop playback" msgstr "Стоп" -#: ardour_ui2.cc:127 +#: ardour_ui2.cc:132 msgid "Toggle record" msgstr "Переключить готовность к записи" -#: ardour_ui2.cc:128 +#: ardour_ui2.cc:133 msgid "Play range/selection" msgstr "Воспроизвести выделение" -#: ardour_ui2.cc:129 +#: ardour_ui2.cc:134 msgid "Go to start of session" msgstr "В начало сеанса" -#: ardour_ui2.cc:130 +#: ardour_ui2.cc:135 msgid "Go to end of session" msgstr "В конец сеанса" -#: ardour_ui2.cc:131 +#: ardour_ui2.cc:136 msgid "Play loop range" msgstr "Воспроизвести выделение в петле" -#: ardour_ui2.cc:132 +#: ardour_ui2.cc:137 msgid "" "MIDI Panic\n" "Send note off and reset controller messages on all MIDI channels" msgstr "" -#: ardour_ui2.cc:133 +#: ardour_ui2.cc:138 msgid "Return to last playback start when stopped" msgstr "Вернуться к точке начала воспроизведения" -#: ardour_ui2.cc:134 +#: ardour_ui2.cc:139 msgid "Playhead follows Range Selections and Edits" msgstr "Указатель воспроизведения следует за выделением областей и правкам" -#: ardour_ui2.cc:135 +#: ardour_ui2.cc:140 msgid "Be sensible about input monitoring" msgstr "" -#: ardour_ui2.cc:136 +#: ardour_ui2.cc:141 msgid "Enable/Disable audio click" msgstr "Включить или выключить метроном" -#: ardour_ui2.cc:137 monitor_section.cc:101 +#: ardour_ui2.cc:142 monitor_section.cc:101 msgid "" "When active, something is soloed.\n" "Click to de-solo everything" @@ -1485,7 +1489,7 @@ msgstr "" "Включено, если какие-то дорожки солируют.\n" "Щёлкните, чтобы снять солирование везде." -#: ardour_ui2.cc:138 +#: ardour_ui2.cc:143 msgid "" "When active, auditioning is taking place\n" "Click to stop the audition" @@ -1493,11 +1497,11 @@ msgstr "" "Включено, если выполняется прослушивание.\n" "Щёлкните, чтобы прекратить его." -#: ardour_ui2.cc:139 +#: ardour_ui2.cc:144 msgid "When active, there is a feedback loop." msgstr "Включена, когда есть петля отклика (feedback loop)" -#: ardour_ui2.cc:140 +#: ardour_ui2.cc:145 msgid "" "Primary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1510,7 +1514,7 @@ msgstr "" "Прямой ввод: Esc: отмена; Enter: подтверждение; постфикс " "'+' или '-' вводит разницу во времени.\n" -#: ardour_ui2.cc:141 +#: ardour_ui2.cc:146 msgid "" "Secondary Clock right-click to set display mode. Click to edit, click" "+drag a digit or mouse-over+scroll wheel to modify.\n" @@ -1523,27 +1527,27 @@ msgstr "" "Прямой ввод: Esc: отмена; Enter: подтверждение; постфикс " "'+' или '-' вводит разницу во времени.\n" -#: ardour_ui2.cc:173 +#: ardour_ui2.cc:178 msgid "[ERROR]: " msgstr "[ОШИБКА]: " -#: ardour_ui2.cc:175 +#: ardour_ui2.cc:180 msgid "[WARNING]: " msgstr "[ПРЕДУПРЕЖДЕНИЕ]:" -#: ardour_ui2.cc:177 +#: ardour_ui2.cc:182 msgid "[INFO]: " msgstr "[СПРАВКА]:" -#: ardour_ui2.cc:241 ardour_ui_ed.cc:376 +#: ardour_ui2.cc:246 ardour_ui_ed.cc:377 msgid "Auto Return" msgstr "Автовозврат" -#: ardour_ui2.cc:243 ardour_ui_ed.cc:379 +#: ardour_ui2.cc:248 ardour_ui_ed.cc:380 msgid "Follow Edits" msgstr "Следовать правкам" -#: ardour_ui2.cc:621 rc_option_editor.cc:1004 rc_option_editor.cc:1022 +#: ardour_ui2.cc:626 rc_option_editor.cc:1004 rc_option_editor.cc:1022 #: rc_option_editor.cc:1025 rc_option_editor.cc:1027 rc_option_editor.cc:1029 #: rc_option_editor.cc:1037 rc_option_editor.cc:1045 rc_option_editor.cc:1047 #: rc_option_editor.cc:1055 rc_option_editor.cc:1062 rc_option_editor.cc:1071 @@ -1563,23 +1567,23 @@ msgstr "Настройка редактора" msgid "Setup Mixer" msgstr "Настройка микшера" -#: ardour_ui_dependents.cc:84 +#: ardour_ui_dependents.cc:85 msgid "Reload Session History" msgstr "Повторная загрузка истории сеансов" -#: ardour_ui_dialogs.cc:206 +#: ardour_ui_dialogs.cc:200 msgid "Don't close" msgstr "Не закрывать" -#: ardour_ui_dialogs.cc:207 +#: ardour_ui_dialogs.cc:201 msgid "Just close" msgstr "Просто закрыть" -#: ardour_ui_dialogs.cc:208 +#: ardour_ui_dialogs.cc:202 msgid "Save and close" msgstr "Сохранить и закрыть" -#: ardour_ui_dialogs.cc:293 +#: ardour_ui_dialogs.cc:291 msgid "This screen is not tall enough to display the mixer window" msgstr "Размеров экрана недостаточно, чтобы показать окно микшера" @@ -1644,7 +1648,7 @@ msgstr "Время задержки" msgid "Denormal Handling" msgstr "Обработка отклонений" -#: ardour_ui_ed.cc:123 route_time_axis.cc:1475 +#: ardour_ui_ed.cc:123 route_time_axis.cc:1489 msgid "New..." msgstr "Создать..." @@ -1674,7 +1678,7 @@ msgstr "Удалить видео" #: ardour_ui_ed.cc:141 msgid "Export To Video File" -msgstr "Экспортировать видеофайл" +msgstr "Видеофайл" #: ardour_ui_ed.cc:145 msgid "Snapshot..." @@ -1685,7 +1689,7 @@ msgid "Save As..." msgstr "Сохранить как..." #: ardour_ui_ed.cc:153 editor_actions.cc:1719 editor_markers.cc:858 -#: editor_snapshots.cc:123 mixer_strip.cc:1464 route_time_axis.cc:1471 +#: editor_snapshots.cc:123 mixer_strip.cc:1470 route_time_axis.cc:1485 msgid "Rename..." msgstr "Переименовать..." @@ -1738,8 +1742,8 @@ msgstr "Задержка отклика" msgid "Reconnect" msgstr "Пересоединить" -#: ardour_ui_ed.cc:195 global_port_matrix.cc:198 io_selector.cc:210 -#: mixer_strip.cc:712 mixer_strip.cc:838 +#: ardour_ui_ed.cc:195 global_port_matrix.cc:207 io_selector.cc:210 +#: mixer_strip.cc:718 mixer_strip.cc:844 msgid "Disconnect" msgstr "Отсоединить" @@ -1755,7 +1759,7 @@ msgstr "Редактор на полный экран" msgid "Show Toolbars" msgstr "Показывать панели" -#: ardour_ui_ed.cc:230 mixer_ui.cc:1863 mixer_ui.cc:1869 +#: ardour_ui_ed.cc:230 mixer_ui.cc:1865 mixer_ui.cc:1871 msgid "Window|Mixer" msgstr "Микшер" @@ -1763,27 +1767,31 @@ msgstr "Микшер" msgid "Toggle Editor+Mixer" msgstr "Редактор или микшер на переднем плане" -#: ardour_ui_ed.cc:233 midi_tracer.cc:39 +#: ardour_ui_ed.cc:232 meterbridge.cc:224 meterbridge.cc:230 +msgid "Window|Meterbridge" +msgstr "Панель индикаторов" + +#: ardour_ui_ed.cc:234 midi_tracer.cc:39 msgid "MIDI Tracer" msgstr "Журнал MIDI-событий" -#: ardour_ui_ed.cc:235 +#: ardour_ui_ed.cc:236 msgid "Chat" msgstr "Пообщаться" -#: ardour_ui_ed.cc:237 +#: ardour_ui_ed.cc:238 msgid "Help|Manual" msgstr "Справка" -#: ardour_ui_ed.cc:238 +#: ardour_ui_ed.cc:239 msgid "Reference" msgstr "Справка в Интернете" -#: ardour_ui_ed.cc:240 plugin_ui.cc:419 +#: ardour_ui_ed.cc:241 plugin_ui.cc:418 msgid "Save" msgstr "Сохранить" -#: ardour_ui_ed.cc:248 rc_option_editor.cc:1114 rc_option_editor.cc:1125 +#: ardour_ui_ed.cc:249 rc_option_editor.cc:1114 rc_option_editor.cc:1125 #: rc_option_editor.cc:1134 rc_option_editor.cc:1147 rc_option_editor.cc:1160 #: rc_option_editor.cc:1169 rc_option_editor.cc:1179 rc_option_editor.cc:1181 #: rc_option_editor.cc:1191 rc_option_editor.cc:1207 rc_option_editor.cc:1220 @@ -1793,99 +1801,99 @@ msgstr "Сохранить" msgid "Transport" msgstr "Транспорт" -#: ardour_ui_ed.cc:254 engine_dialog.cc:85 sfdb_ui.cc:559 +#: ardour_ui_ed.cc:255 engine_dialog.cc:85 msgid "Stop" msgstr "Стоп" -#: ardour_ui_ed.cc:257 +#: ardour_ui_ed.cc:258 msgid "Roll" msgstr "" -#: ardour_ui_ed.cc:261 +#: ardour_ui_ed.cc:262 msgid "Start/Stop" msgstr "Старт/Стоп" -#: ardour_ui_ed.cc:264 +#: ardour_ui_ed.cc:265 msgid "Start/Continue/Stop" msgstr "Старт/Продолжить/Стоп" -#: ardour_ui_ed.cc:267 +#: ardour_ui_ed.cc:268 msgid "Stop and Forget Capture" msgstr "Остановиться и забыть захват" -#: ardour_ui_ed.cc:277 +#: ardour_ui_ed.cc:278 msgid "Transition To Roll" msgstr "В обычном направлении" -#: ardour_ui_ed.cc:281 +#: ardour_ui_ed.cc:282 msgid "Transition To Reverse" msgstr "В обратном направлении" -#: ardour_ui_ed.cc:285 +#: ardour_ui_ed.cc:286 msgid "Play Loop Range" msgstr "Воспроизвести петлю" -#: ardour_ui_ed.cc:288 +#: ardour_ui_ed.cc:289 msgid "Play Selected Range" msgstr "" -#: ardour_ui_ed.cc:291 +#: ardour_ui_ed.cc:292 msgid "Play Selection w/Preroll" msgstr "" -#: ardour_ui_ed.cc:295 +#: ardour_ui_ed.cc:296 msgid "Enable Record" msgstr "Разрешить запись" -#: ardour_ui_ed.cc:298 +#: ardour_ui_ed.cc:299 msgid "Start Recording" msgstr "Начать запись" -#: ardour_ui_ed.cc:302 +#: ardour_ui_ed.cc:303 msgid "Rewind" msgstr "Перемотать назад" -#: ardour_ui_ed.cc:305 +#: ardour_ui_ed.cc:306 msgid "Rewind (Slow)" msgstr "Перемотать назад (медленно)" -#: ardour_ui_ed.cc:308 +#: ardour_ui_ed.cc:309 msgid "Rewind (Fast)" msgstr "Перемотать назад (быстро)" -#: ardour_ui_ed.cc:311 startup.cc:727 +#: ardour_ui_ed.cc:312 startup.cc:727 msgid "Forward" msgstr "Перемотать вперёд" -#: ardour_ui_ed.cc:314 +#: ardour_ui_ed.cc:315 msgid "Forward (Slow)" msgstr "Перемотать вперёд (медленно)" -#: ardour_ui_ed.cc:317 +#: ardour_ui_ed.cc:318 msgid "Forward (Fast)" msgstr "Перемотать вперёд (быстро)" -#: ardour_ui_ed.cc:320 +#: ardour_ui_ed.cc:321 msgid "Goto Zero" msgstr "К нулевой отметке" -#: ardour_ui_ed.cc:323 +#: ardour_ui_ed.cc:324 msgid "Goto Start" msgstr "К началу" -#: ardour_ui_ed.cc:326 +#: ardour_ui_ed.cc:327 msgid "Goto End" msgstr "В конец" -#: ardour_ui_ed.cc:329 +#: ardour_ui_ed.cc:330 msgid "Goto Wall Clock" msgstr "К текущему времени" -#: ardour_ui_ed.cc:333 +#: ardour_ui_ed.cc:334 msgid "Focus On Clock" msgstr "" -#: ardour_ui_ed.cc:337 ardour_ui_ed.cc:346 audio_clock.cc:2046 editor.cc:237 +#: ardour_ui_ed.cc:338 ardour_ui_ed.cc:347 audio_clock.cc:2046 editor.cc:237 #: editor_actions.cc:544 editor_actions.cc:553 export_timespan_selector.cc:88 #: session_option_editor.cc:41 session_option_editor.cc:61 #: session_option_editor.cc:80 session_option_editor.cc:96 @@ -1894,125 +1902,125 @@ msgstr "" msgid "Timecode" msgstr "Тайм-код" -#: ardour_ui_ed.cc:339 ardour_ui_ed.cc:348 editor_actions.cc:542 +#: ardour_ui_ed.cc:340 ardour_ui_ed.cc:349 editor_actions.cc:542 msgid "Bars & Beats" msgstr "Такты и доли" -#: ardour_ui_ed.cc:341 ardour_ui_ed.cc:350 +#: ardour_ui_ed.cc:342 ardour_ui_ed.cc:351 msgid "Minutes & Seconds" msgstr "Минуты и секунды" -#: ardour_ui_ed.cc:343 ardour_ui_ed.cc:352 audio_clock.cc:2050 editor.cc:238 +#: ardour_ui_ed.cc:344 ardour_ui_ed.cc:353 audio_clock.cc:2050 editor.cc:238 #: editor_actions.cc:543 msgid "Samples" msgstr "Сэмплы" -#: ardour_ui_ed.cc:355 +#: ardour_ui_ed.cc:356 msgid "Punch In" msgstr "Начало врезки" -#: ardour_ui_ed.cc:356 mixer_strip.cc:1904 route_ui.cc:132 +#: ardour_ui_ed.cc:357 mixer_strip.cc:1904 route_ui.cc:132 #: time_info_box.cc:113 msgid "In" msgstr "Вход" -#: ardour_ui_ed.cc:359 +#: ardour_ui_ed.cc:360 msgid "Punch Out" msgstr "Конец врезки" -#: ardour_ui_ed.cc:360 time_info_box.cc:114 +#: ardour_ui_ed.cc:361 time_info_box.cc:114 msgid "Out" msgstr "Выход" -#: ardour_ui_ed.cc:363 +#: ardour_ui_ed.cc:364 msgid "Punch In/Out" msgstr "Врезка" -#: ardour_ui_ed.cc:364 +#: ardour_ui_ed.cc:365 msgid "In/Out" msgstr "Вх/Вых" -#: ardour_ui_ed.cc:367 rc_option_editor.cc:1071 +#: ardour_ui_ed.cc:368 rc_option_editor.cc:1071 msgid "Click" msgstr "Метроном" -#: ardour_ui_ed.cc:370 +#: ardour_ui_ed.cc:371 msgid "Auto Input" msgstr "Автовход" -#: ardour_ui_ed.cc:373 +#: ardour_ui_ed.cc:374 msgid "Auto Play" msgstr "Автовоспр." -#: ardour_ui_ed.cc:384 +#: ardour_ui_ed.cc:385 msgid "Sync Startup to Video" msgstr "Синхронизировать начало с видео" -#: ardour_ui_ed.cc:386 +#: ardour_ui_ed.cc:387 msgid "Time Master" msgstr "Ведущий времени" -#: ardour_ui_ed.cc:393 +#: ardour_ui_ed.cc:394 msgid "Toggle Record Enable Track %1" msgstr "Переключить записываемость дорожки %1" -#: ardour_ui_ed.cc:400 +#: ardour_ui_ed.cc:401 msgid "Percentage" msgstr "Проценты" -#: ardour_ui_ed.cc:401 shuttle_control.cc:169 +#: ardour_ui_ed.cc:402 shuttle_control.cc:169 msgid "Semitones" msgstr "Полутона" -#: ardour_ui_ed.cc:405 +#: ardour_ui_ed.cc:406 msgid "Send MTC" msgstr "Передавать MTC" -#: ardour_ui_ed.cc:407 +#: ardour_ui_ed.cc:408 msgid "Send MMC" msgstr "Передавать MMC" -#: ardour_ui_ed.cc:409 +#: ardour_ui_ed.cc:410 msgid "Use MMC" msgstr "Использовать MMC" -#: ardour_ui_ed.cc:411 rc_option_editor.cc:1702 +#: ardour_ui_ed.cc:412 rc_option_editor.cc:1702 msgid "Send MIDI Clock" msgstr "Отправлять MIDI Clock" -#: ardour_ui_ed.cc:413 +#: ardour_ui_ed.cc:414 msgid "Send MIDI Feedback" msgstr "Отправлять MIDI Feedback" -#: ardour_ui_ed.cc:419 +#: ardour_ui_ed.cc:420 msgid "Panic" msgstr "" -#: ardour_ui_ed.cc:559 +#: ardour_ui_ed.cc:560 msgid "Wall Clock" msgstr "Текущее время" -#: ardour_ui_ed.cc:560 +#: ardour_ui_ed.cc:561 msgid "Disk Space" msgstr "Диск. пространство" -#: ardour_ui_ed.cc:561 +#: ardour_ui_ed.cc:562 msgid "DSP" msgstr "DSP" -#: ardour_ui_ed.cc:562 +#: ardour_ui_ed.cc:563 msgid "Buffers" msgstr "Буферы" -#: ardour_ui_ed.cc:563 +#: ardour_ui_ed.cc:564 msgid "JACK Sampling Rate and Latency" msgstr "Частота сэмплирования и задержка JACK" -#: ardour_ui_ed.cc:564 +#: ardour_ui_ed.cc:565 msgid "Timecode Format" msgstr "Формат тайм-кода" -#: ardour_ui_ed.cc:565 +#: ardour_ui_ed.cc:566 msgid "File Format" msgstr "Формат файлов" @@ -2149,28 +2157,28 @@ msgid "hide track" msgstr "Скрыть дорожку" #: automation_time_axis.cc:255 automation_time_axis.cc:307 -#: automation_time_axis.cc:496 gain_meter.cc:196 generic_pluginui.cc:456 -#: generic_pluginui.cc:733 panner_ui.cc:150 +#: automation_time_axis.cc:496 gain_meter.cc:194 generic_pluginui.cc:456 +#: generic_pluginui.cc:746 panner_ui.cc:150 msgid "Automation|Manual" msgstr "Вручную" #: automation_time_axis.cc:257 automation_time_axis.cc:318 #: automation_time_axis.cc:501 editor.cc:1933 editor.cc:2010 -#: editor_actions.cc:118 editor_actions.cc:1865 gain_meter.cc:199 -#: generic_pluginui.cc:459 generic_pluginui.cc:735 midi_time_axis.cc:1488 +#: editor_actions.cc:118 editor_actions.cc:1865 gain_meter.cc:197 +#: generic_pluginui.cc:459 generic_pluginui.cc:748 midi_time_axis.cc:1488 #: midi_time_axis.cc:1491 midi_time_axis.cc:1494 panner_ui.cc:153 msgid "Play" msgstr "Воспр." #: automation_time_axis.cc:259 automation_time_axis.cc:329 -#: automation_time_axis.cc:506 gain_meter.cc:202 generic_pluginui.cc:462 -#: generic_pluginui.cc:737 panner_ui.cc:156 +#: automation_time_axis.cc:506 gain_meter.cc:200 generic_pluginui.cc:462 +#: generic_pluginui.cc:750 panner_ui.cc:156 msgid "Write" msgstr "Запись" #: automation_time_axis.cc:261 automation_time_axis.cc:340 -#: automation_time_axis.cc:511 gain_meter.cc:205 generic_pluginui.cc:465 -#: generic_pluginui.cc:739 panner_ui.cc:159 +#: automation_time_axis.cc:511 gain_meter.cc:203 generic_pluginui.cc:465 +#: generic_pluginui.cc:752 panner_ui.cc:159 msgid "Touch" msgstr "Касание" @@ -2183,7 +2191,7 @@ msgid "clear automation" msgstr "Очистить автоматизацию" #: automation_time_axis.cc:485 editor_actions.cc:613 editor_markers.cc:857 -#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:699 +#: location_ui.cc:55 plugin_selector.cc:85 route_time_axis.cc:708 msgid "Hide" msgstr "Скрыть" @@ -2204,7 +2212,7 @@ msgstr "Дискретный" msgid "Linear" msgstr "Линейная" -#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:638 +#: automation_time_axis.cc:543 rhythm_ferret.cc:110 route_time_axis.cc:647 #: shuttle_control.cc:188 msgid "Mode" msgstr "Режим" @@ -2221,13 +2229,13 @@ msgstr "Изменение пакета" msgid "Direction:" msgstr "Направление:" -#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:156 -#: mixer_strip.cc:2132 +#: bundle_manager.cc:205 bundle_manager.cc:209 mixer_strip.cc:157 +#: mixer_strip.cc:2126 msgid "Input" msgstr "Вход" #: bundle_manager.cc:206 bundle_manager.cc:211 bundle_manager.cc:245 -#: mixer_strip.cc:161 mixer_strip.cc:2135 +#: mixer_strip.cc:162 mixer_strip.cc:2129 msgid "Output" msgstr "Выход" @@ -2237,8 +2245,8 @@ msgid "Edit" msgstr "Правка" #: bundle_manager.cc:265 editor.cc:5493 editor_actions.cc:310 -#: editor_actions.cc:368 plugin_ui.cc:420 processor_box.cc:2227 -#: route_time_axis.cc:704 +#: editor_actions.cc:368 plugin_ui.cc:419 processor_box.cc:2216 +#: route_time_axis.cc:713 msgid "Delete" msgstr "Удалить" @@ -2406,7 +2414,7 @@ msgstr "Время" #: edit_note_dialog.cc:98 editor_regions.cc:114 #: export_timespan_selector.cc:359 export_timespan_selector.cc:421 -#: location_ui.cc:313 midi_list_editor.cc:114 time_info_box.cc:105 +#: location_ui.cc:317 midi_list_editor.cc:114 time_info_box.cc:105 msgid "Length" msgstr "Длительность" @@ -2687,8 +2695,8 @@ msgstr "Симметрично" msgid "Slow" msgstr "Медленно" -#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1606 -#: sfdb_ui.cc:1715 +#: editor.cc:1390 editor.cc:1483 editor.cc:1545 sfdb_ui.cc:1633 +#: sfdb_ui.cc:1742 msgid "Fast" msgstr "Быстро" @@ -2708,7 +2716,7 @@ msgstr "Активировать" msgid "Slowest" msgstr "Медленнее всего" -#: editor.cc:1572 route_time_axis.cc:1863 selection.cc:1009 selection.cc:1064 +#: editor.cc:1572 route_time_axis.cc:1877 selection.cc:1009 selection.cc:1064 msgid "programming error: " msgstr "Ошибка в программе: " @@ -2825,7 +2833,7 @@ msgid "Select All in Track" msgstr "Выделить всё на дорожке" #: editor.cc:1942 editor.cc:2019 editor_actions.cc:185 -#: export_timespan_selector.cc:53 processor_box.cc:2235 +#: export_timespan_selector.cc:53 processor_box.cc:2224 msgid "Select All" msgstr "Выделить всё" @@ -2877,15 +2885,15 @@ msgstr "Создать выделение между указателем и к msgid "Select" msgstr "Выделить" -#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2220 +#: editor.cc:1965 editor.cc:2036 editor_actions.cc:309 processor_box.cc:2209 msgid "Cut" msgstr "Вырезать" -#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2223 +#: editor.cc:1966 editor.cc:2037 editor_actions.cc:312 processor_box.cc:2212 msgid "Copy" msgstr "Копировать" -#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2231 +#: editor.cc:1967 editor.cc:2038 editor_actions.cc:313 processor_box.cc:2220 msgid "Paste" msgstr "Вставить" @@ -3090,7 +3098,7 @@ msgstr "Очистить списки воспроизведения" msgid "Please wait while %1 loads visual data." msgstr "Дождитесь загрузки визуальных данных в %1." -#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2251 +#: editor.cc:5492 editor_markers.cc:940 panner_ui.cc:393 processor_box.cc:2240 msgid "Edit..." msgstr "Изменить" @@ -3139,7 +3147,7 @@ msgstr "Слои" msgid "Position" msgstr "Положение" -#: editor_actions.cc:101 gain_meter.cc:124 gain_meter.cc:755 panner_ui.cc:177 +#: editor_actions.cc:101 gain_meter.cc:120 gain_meter.cc:787 panner_ui.cc:177 #: panner_ui.cc:586 msgid "Trim" msgstr "Обрезать" @@ -3231,8 +3239,8 @@ msgstr "Дополнительный счётчик" msgid "Separate" msgstr "Разделить" -#: editor_actions.cc:132 mixer_strip.cc:1916 route_time_axis.cc:199 -#: route_time_axis.cc:2397 +#: editor_actions.cc:132 mixer_strip.cc:1913 route_time_axis.cc:208 +#: route_time_axis.cc:2417 msgid "Solo" msgstr "Соло" @@ -3244,7 +3252,7 @@ msgstr "Подвыборки" msgid "Timecode fps" msgstr "Скорость (FPS) тайм-кода" -#: editor_actions.cc:137 route_time_axis.cc:421 +#: editor_actions.cc:137 route_time_axis.cc:430 msgid "Height" msgstr "Высота" @@ -3368,7 +3376,7 @@ msgstr "К началу области" msgid "Playhead to Range End" msgstr "К концу области" -#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2237 +#: editor_actions.cc:186 export_timespan_selector.cc:61 processor_box.cc:2226 msgid "Deselect All" msgstr "Снять все выделения" @@ -3637,8 +3645,8 @@ msgid "Toggle Active" msgstr "Переключить активность" #: editor_actions.cc:370 editor_actions.cc:1716 editor_markers.cc:876 -#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1488 -#: route_time_axis.cc:701 +#: editor_markers.cc:941 editor_snapshots.cc:121 mixer_strip.cc:1494 +#: route_time_axis.cc:710 msgid "Remove" msgstr "Удалить" @@ -3646,19 +3654,19 @@ msgstr "Удалить" msgid "Fit Selected Tracks" msgstr "Только выделенные дорожки" -#: editor_actions.cc:376 time_axis_view.cc:1298 +#: editor_actions.cc:376 time_axis_view.cc:1301 msgid "Largest" msgstr "Огромная" -#: editor_actions.cc:379 time_axis_view.cc:1299 +#: editor_actions.cc:379 time_axis_view.cc:1302 msgid "Larger" msgstr "Больше" -#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1300 +#: editor_actions.cc:382 editor_rulers.cc:375 time_axis_view.cc:1303 msgid "Large" msgstr "Большая" -#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1302 +#: editor_actions.cc:388 editor_rulers.cc:379 time_axis_view.cc:1305 msgid "Small" msgstr "Маленькая" @@ -4025,7 +4033,7 @@ msgstr "" #: editor_actions.cc:652 editor_audio_import.cc:279 #: session_import_dialog.cc:74 session_import_dialog.cc:94 -#: session_metadata_dialog.cc:297 editor_videotimeline.cc:107 +#: session_metadata_dialog.cc:297 editor_videotimeline.cc:108 msgid "Import" msgstr "Импортировать" @@ -4103,7 +4111,7 @@ msgstr "Приклеить к тактам и долям" msgid "Remove Sync" msgstr "Удалить синхронизатор" -#: editor_actions.cc:1752 mixer_strip.cc:1903 route_time_axis.cc:200 +#: editor_actions.cc:1752 mixer_strip.cc:1903 route_time_axis.cc:209 msgid "Mute" msgstr "Молча" @@ -4376,7 +4384,7 @@ msgstr "" "В этом сеансе уже есть исходный файл с именем %1. Вы хотите импортировать %2 " "как новый источник или пропустить его?" -#: editor_audio_import.cc:279 editor_videotimeline.cc:107 +#: editor_audio_import.cc:279 editor_videotimeline.cc:108 msgid "Cancel Import" msgstr "Отменить импорт" @@ -4424,7 +4432,7 @@ msgstr "Начало видеофайла" #: editor_drag.cc:1702 msgid "Diff:" -msgstr "" +msgstr "Разница:" #: editor_drag.cc:1722 msgid "Move Video" @@ -4610,7 +4618,7 @@ msgid "end" msgstr "Конец" #: editor_markers.cc:646 editor_ops.cc:1744 editor_ops.cc:1764 -#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1005 +#: editor_ops.cc:1788 editor_ops.cc:1815 location_ui.cc:1017 msgid "add marker" msgstr "добавка маркера" @@ -4618,7 +4626,7 @@ msgstr "добавка маркера" msgid "range" msgstr "область" -#: editor_markers.cc:713 location_ui.cc:840 +#: editor_markers.cc:713 location_ui.cc:852 msgid "remove marker" msgstr "удаление маркера" @@ -4695,7 +4703,7 @@ msgid "Rename Range" msgstr "Переименовать выделение" #: editor_markers.cc:1363 editor_mouse.cc:2510 processor_box.cc:1768 -#: processor_box.cc:2233 route_time_axis.cc:968 route_ui.cc:1535 +#: processor_box.cc:2222 route_time_axis.cc:982 route_ui.cc:1535 msgid "Rename" msgstr "Переименовать" @@ -5326,7 +5334,7 @@ msgstr "" msgid "Length of region fade-out (units: secondary clock), () if dsisabled" msgstr "" -#: editor_regions.cc:118 mixer_strip.cc:1960 mono_panner.cc:179 +#: editor_regions.cc:118 mixer_strip.cc:1953 mono_panner.cc:179 #: stereo_panner.cc:217 stereo_panner.cc:240 msgid "L" msgstr "Л" @@ -5343,8 +5351,9 @@ msgstr "" msgid "Region position glued to Bars|Beats time?" msgstr "" -#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:723 -#: mixer_strip.cc:1934 panner_ui.cc:554 stereo_panner.cc:237 +#: editor_regions.cc:120 editor_routes.cc:207 gain_meter.cc:755 +#: mixer_strip.cc:1930 meter_strip.cc:272 panner_ui.cc:554 +#: stereo_panner.cc:237 msgid "M" msgstr "В" @@ -5413,7 +5422,8 @@ msgstr "Название дорожи/шины" msgid "Track/Bus visible ?" msgstr "Дорожка или шина видима?" -#: editor_routes.cc:204 mixer_strip.cc:1951 route_time_axis.cc:2387 +#: editor_routes.cc:204 mixer_strip.cc:1944 meter_strip.cc:286 +#: route_time_axis.cc:2407 msgid "A" msgstr "A" @@ -5421,7 +5431,7 @@ msgstr "A" msgid "Track/Bus active ?" msgstr "Дорожка или шина активна?" -#: editor_routes.cc:205 mixer_strip.cc:1935 +#: editor_routes.cc:205 mixer_strip.cc:1931 msgid "I" msgstr "ВХ" @@ -5429,7 +5439,7 @@ msgstr "ВХ" msgid "MIDI input enabled" msgstr "Вход MIDI включен" -#: editor_routes.cc:206 mixer_strip.cc:1933 mono_panner.cc:198 +#: editor_routes.cc:206 mixer_strip.cc:1929 mono_panner.cc:198 #: stereo_panner.cc:215 stereo_panner.cc:242 msgid "R" msgstr "П" @@ -5442,7 +5452,7 @@ msgstr "Готовность к записи" msgid "Muted" msgstr "" -#: editor_routes.cc:208 mixer_strip.cc:1947 +#: editor_routes.cc:208 mixer_strip.cc:1940 meter_strip.cc:282 msgid "S" msgstr "S" @@ -5454,7 +5464,7 @@ msgstr "..." msgid "SI" msgstr "" -#: editor_routes.cc:209 mixer_strip.cc:351 rc_option_editor.cc:1872 +#: editor_routes.cc:209 mixer_strip.cc:352 rc_option_editor.cc:1872 msgid "Solo Isolated" msgstr "Изолирование соло" @@ -5736,7 +5746,7 @@ msgstr "192КГц" #: engine_dialog.cc:127 engine_dialog.cc:132 engine_dialog.cc:169 #: engine_dialog.cc:552 midi_channel_selector.cc:163 #: midi_channel_selector.cc:402 midi_channel_selector.cc:438 -#: rc_option_editor.cc:1250 sfdb_ui.cc:542 +#: rc_option_editor.cc:1250 sfdb_ui.cc:541 msgid "None" msgstr "Нет" @@ -5785,7 +5795,7 @@ msgstr "Драйвер:" msgid "Audio Interface:" msgstr "Звуковой интерфейс:" -#: engine_dialog.cc:187 sfdb_ui.cc:148 sfdb_ui.cc:261 sfdb_ui.cc:266 +#: engine_dialog.cc:187 sfdb_ui.cc:149 sfdb_ui.cc:262 sfdb_ui.cc:267 msgid "Sample rate:" msgstr "Частота сэмплирования:" @@ -5907,7 +5917,7 @@ msgstr "Значению AudioSetup для %1 не хватает данных" msgid "configuration files contain a JACK server path that doesn't exist (%1)" msgstr "" -#: export_channel_selector.cc:45 sfdb_ui.cc:146 +#: export_channel_selector.cc:45 sfdb_ui.cc:147 msgid "Channels:" msgstr "Каналов:" @@ -6184,6 +6194,10 @@ msgstr "Параметры FLAC" msgid "Broadcast Wave options" msgstr "Параметры Broadcast Wave" +#: export_format_selector.cc:136 +msgid "Do you really want to remove the format?" +msgstr "Вы действительно хотите удалить этот формат?" + #: export_preset_selector.cc:28 msgid "Preset" msgstr "Профиль" @@ -6194,6 +6208,10 @@ msgid "" "Perhaps it references a format that has been removed?" msgstr "" +#: export_preset_selector.cc:156 +msgid "Do you really want to remove this preset?" +msgstr "Вы действительно хотите удалить этот профиль?" + #: export_timespan_selector.cc:46 msgid "Show Times as:" msgstr "Показать время как:" @@ -6206,36 +6224,32 @@ msgstr " до " msgid "Range" msgstr "Диапазон" -#: gain_meter.cc:109 gain_meter.cc:431 gain_meter.cc:820 +#: gain_meter.cc:105 gain_meter.cc:356 gain_meter.cc:461 gain_meter.cc:852 msgid "-inf" msgstr "-inf" -#: gain_meter.cc:115 gain_meter.cc:869 +#: gain_meter.cc:111 gain_meter.cc:909 msgid "Fader automation mode" msgstr "Режим автоматизации фейдера" -#: gain_meter.cc:116 gain_meter.cc:870 +#: gain_meter.cc:112 gain_meter.cc:910 msgid "Fader automation type" msgstr "Тип автоматизации фейдера" -#: gain_meter.cc:125 gain_meter.cc:759 panner_ui.cc:178 panner_ui.cc:590 +#: gain_meter.cc:121 gain_meter.cc:791 panner_ui.cc:178 panner_ui.cc:590 msgid "Abs" msgstr "Абс" -#: gain_meter.cc:334 -msgid "-Inf" -msgstr "-Inf" - -#: gain_meter.cc:726 mixer_strip.cc:1954 panner_ui.cc:557 -#: route_time_axis.cc:2391 +#: gain_meter.cc:758 mixer_strip.cc:1947 meter_strip.cc:289 panner_ui.cc:557 +#: route_time_axis.cc:2411 msgid "P" msgstr "P" -#: gain_meter.cc:729 panner_ui.cc:560 +#: gain_meter.cc:761 panner_ui.cc:560 msgid "T" msgstr "К" -#: gain_meter.cc:732 panner_ui.cc:563 +#: gain_meter.cc:764 panner_ui.cc:563 msgid "W" msgstr "З" @@ -6247,7 +6261,7 @@ msgstr "Профили" msgid "Switches" msgstr "Переключатели" -#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2210 +#: generic_pluginui.cc:242 generic_pluginui.cc:376 processor_box.cc:2199 msgid "Controls" msgstr "Управление" @@ -6275,7 +6289,7 @@ msgstr "Управление звуковыми соединениями" msgid "MIDI Connection Manager" msgstr "Управление MIDI-соединениями" -#: global_port_matrix.cc:204 io_selector.cc:216 +#: global_port_matrix.cc:213 io_selector.cc:216 msgid "port" msgstr "порт" @@ -6427,11 +6441,11 @@ msgstr "Импортируется файл: %1 из %2" msgid "I/O selector" msgstr "Выбор входов и выходов" -#: io_selector.cc:266 +#: io_selector.cc:265 msgid "%1 input" msgstr "%1 вход" -#: io_selector.cc:268 +#: io_selector.cc:267 msgid "%1 output" msgstr "%1 выход" @@ -6507,7 +6521,7 @@ msgstr[2] "%1 сэмплов" msgid "Reset" msgstr "Сбросить" -#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1734 +#: latency_gui.cc:151 rhythm_ferret.cc:274 sfdb_ui.cc:1761 msgid "programming error: %1 (%2)" msgstr "Ошибка в программе: %1 (%2)" @@ -6535,63 +6549,63 @@ msgstr "Композитор:" msgid "Pre-Emphasis" msgstr "" -#: location_ui.cc:310 +#: location_ui.cc:314 msgid "Remove this range" msgstr "Удалить эту область" -#: location_ui.cc:311 +#: location_ui.cc:315 msgid "Start time - middle click to locate here" msgstr "" -#: location_ui.cc:312 +#: location_ui.cc:316 msgid "End time - middle click to locate here" msgstr "" -#: location_ui.cc:315 +#: location_ui.cc:319 msgid "Set range start from playhead location" msgstr "Установить начало диапазона по указателю воспроизведения" -#: location_ui.cc:316 +#: location_ui.cc:320 msgid "Set range end from playhead location" msgstr "Установить конец диапазона по указателю воспроизведения" -#: location_ui.cc:320 +#: location_ui.cc:324 msgid "Remove this marker" msgstr "Удалить этот маркер" -#: location_ui.cc:321 +#: location_ui.cc:325 msgid "Position - middle click to locate here" msgstr "" -#: location_ui.cc:323 +#: location_ui.cc:327 msgid "Set marker time from playhead location" msgstr "" -#: location_ui.cc:462 +#: location_ui.cc:494 msgid "You cannot put a CD marker at the start of the session" msgstr "Размещение маркера CD в начале сеанса невозможно" -#: location_ui.cc:708 +#: location_ui.cc:720 msgid "New Marker" msgstr "Создать маркер" -#: location_ui.cc:709 +#: location_ui.cc:721 msgid "New Range" msgstr "Создать область" -#: location_ui.cc:722 +#: location_ui.cc:734 msgid "Loop/Punch Ranges" msgstr "Диапазоны петель/врезок" -#: location_ui.cc:747 +#: location_ui.cc:759 msgid "Markers (Including CD Index)" msgstr "Маркеры (включая индекс CD)" -#: location_ui.cc:782 +#: location_ui.cc:794 msgid "Ranges (Including CD Track Ranges)" msgstr "Диапазоны (включая диапазоны дорожек CD)" -#: location_ui.cc:1024 +#: location_ui.cc:1036 msgid "add range marker" msgstr "добавка маркера выделения" @@ -7263,152 +7277,152 @@ msgstr "" msgid "Could not find mixer.bindings in search path %1" msgstr "" -#: mixer_strip.cc:91 mixer_strip.cc:119 mixer_strip.cc:1720 +#: mixer_strip.cc:92 mixer_strip.cc:120 mixer_strip.cc:1720 msgid "pre" msgstr "lj" -#: mixer_strip.cc:93 mixer_strip.cc:121 mixer_strip.cc:352 mixer_strip.cc:1293 +#: mixer_strip.cc:94 mixer_strip.cc:122 mixer_strip.cc:353 mixer_strip.cc:1299 #: rc_option_editor.cc:1873 msgid "Comments" msgstr "Комментарии" -#: mixer_strip.cc:145 +#: mixer_strip.cc:146 msgid "Click to toggle the width of this mixer strip." msgstr "Щёлкните для переключения ширины полоски микшера" -#: mixer_strip.cc:147 +#: mixer_strip.cc:148 msgid "" "\n" "%1-%2-click to toggle the width of all strips." msgstr "" -#: mixer_strip.cc:154 +#: mixer_strip.cc:155 msgid "Hide this mixer strip" msgstr "Скрыть полоску микшера" -#: mixer_strip.cc:165 +#: mixer_strip.cc:166 msgid "Click to select metering point" msgstr "Щёлкните для выбора точка замера" -#: mixer_strip.cc:171 +#: mixer_strip.cc:172 msgid "tupni" msgstr "" -#: mixer_strip.cc:190 +#: mixer_strip.cc:191 msgid "Isolate Solo" msgstr "Изолировать соло" -#: mixer_strip.cc:199 +#: mixer_strip.cc:200 msgid "Lock Solo Status" msgstr "Статус блокировки солирования" -#: mixer_strip.cc:201 mixer_strip.cc:1929 +#: mixer_strip.cc:202 mixer_strip.cc:1925 msgid "lock" msgstr "Блок" -#: mixer_strip.cc:202 mixer_strip.cc:1928 +#: mixer_strip.cc:203 mixer_strip.cc:1924 msgid "iso" msgstr "Изол" -#: mixer_strip.cc:256 +#: mixer_strip.cc:257 msgid "Mix group" msgstr "Группа микса" -#: mixer_strip.cc:349 rc_option_editor.cc:1870 +#: mixer_strip.cc:350 rc_option_editor.cc:1870 msgid "Phase Invert" msgstr "Инверсия фазы" -#: mixer_strip.cc:350 rc_option_editor.cc:1871 route_ui.cc:1213 +#: mixer_strip.cc:351 rc_option_editor.cc:1871 route_ui.cc:1213 msgid "Solo Safe" msgstr "Блокировка солирования" -#: mixer_strip.cc:353 mixer_ui.cc:124 route_time_axis.cc:664 +#: mixer_strip.cc:354 mixer_ui.cc:124 route_time_axis.cc:673 msgid "Group" msgstr "Группа" -#: mixer_strip.cc:354 rc_option_editor.cc:1874 +#: mixer_strip.cc:355 rc_option_editor.cc:1874 msgid "Meter Point" msgstr "Точка измерения" -#: mixer_strip.cc:466 +#: mixer_strip.cc:469 msgid "Enable/Disable MIDI input" msgstr "Включить или выключить MIDI-вход" -#: mixer_strip.cc:616 +#: mixer_strip.cc:621 msgid "" "Aux\n" "Sends" msgstr "" -#: mixer_strip.cc:640 +#: mixer_strip.cc:645 msgid "Snd" msgstr "Псл" -#: mixer_strip.cc:694 mixer_strip.cc:822 processor_box.cc:2152 +#: mixer_strip.cc:700 mixer_strip.cc:828 processor_box.cc:2141 msgid "Not connected to JACK - no I/O changes are possible" msgstr "Нет соединения с JACK, любые изменения входа-выхода невозможны" -#: mixer_strip.cc:1089 +#: mixer_strip.cc:1095 msgid "INPUT to %1" msgstr "ВХОД в %1" -#: mixer_strip.cc:1092 +#: mixer_strip.cc:1098 msgid "OUTPUT from %1" msgstr "ВЫХОД из %1" -#: mixer_strip.cc:1167 +#: mixer_strip.cc:1173 msgid "Disconnected" msgstr "Нет соединения" -#: mixer_strip.cc:1296 +#: mixer_strip.cc:1302 msgid "*Comments*" msgstr "*Кмт*" -#: mixer_strip.cc:1303 +#: mixer_strip.cc:1309 msgid "Cmt" msgstr "Кмт" -#: mixer_strip.cc:1306 +#: mixer_strip.cc:1312 msgid "*Cmt*" msgstr "*Кмт*" -#: mixer_strip.cc:1312 +#: mixer_strip.cc:1318 msgid "Click to Add/Edit Comments" msgstr "Нажмите для добавления/правки комментариев" -#: mixer_strip.cc:1351 +#: mixer_strip.cc:1357 msgid ": comment editor" msgstr ": редактор комментариев" -#: mixer_strip.cc:1428 +#: mixer_strip.cc:1434 msgid "Grp" msgstr "Грп" -#: mixer_strip.cc:1431 +#: mixer_strip.cc:1437 msgid "~G" msgstr "нГр" -#: mixer_strip.cc:1460 +#: mixer_strip.cc:1466 msgid "Comments..." msgstr "Комментарии..." -#: mixer_strip.cc:1462 +#: mixer_strip.cc:1468 msgid "Save As Template..." msgstr "Сохранить как шаблон..." -#: mixer_strip.cc:1468 route_group_dialog.cc:39 route_time_axis.cc:687 +#: mixer_strip.cc:1474 route_group_dialog.cc:39 route_time_axis.cc:696 msgid "Active" msgstr "Активность" -#: mixer_strip.cc:1475 +#: mixer_strip.cc:1481 msgid "Adjust Latency..." msgstr "Скорректировать задержку..." -#: mixer_strip.cc:1478 +#: mixer_strip.cc:1484 msgid "Protect Against Denormals" msgstr "Защищать от отклонений" -#: mixer_strip.cc:1484 route_time_axis.cc:426 +#: mixer_strip.cc:1490 route_time_axis.cc:435 msgid "Remote Control ID..." msgstr "ID для удалённого управления..." @@ -7448,31 +7462,63 @@ msgstr "" msgid "Disk" msgstr "Диск" -#: mixer_strip.cc:1920 monitor_section.cc:63 +#: mixer_strip.cc:1917 monitor_section.cc:63 msgid "AFL" msgstr "AFL" -#: mixer_strip.cc:1923 monitor_section.cc:64 +#: mixer_strip.cc:1920 monitor_section.cc:64 msgid "PFL" msgstr "PFL" -#: mixer_strip.cc:1936 +#: mixer_strip.cc:1932 msgid "D" msgstr "" -#: mixer_strip.cc:1959 +#: mixer_strip.cc:1952 #, fuzzy msgid "i" msgstr "вх" -#: mixer_strip.cc:2133 +#: mixer_strip.cc:2127 msgid "Pre-fader" msgstr "До фейдера" -#: mixer_strip.cc:2134 +#: mixer_strip.cc:2128 msgid "Post-fader" msgstr "После фейдера" +#: mixer_strip.cc:2135 meter_strip.cc:575 +msgid "Peak" +msgstr "Пиковое значение" + +#: mixer_strip.cc:2136 meter_strip.cc:576 +msgid "RMS + Peak" +msgstr "Среднеквадратичное + пиковое значение" + +#: mixer_strip.cc:2155 meter_strip.cc:579 +msgid "Change all in Group to Peak" +msgstr "Поменять все в группе на пиковое" + +#: mixer_strip.cc:2156 meter_strip.cc:580 +msgid "Change all in Group to RMS + Peak" +msgstr "Поменять все в группе на среднеквадратичное + пиковое" + +#: mixer_strip.cc:2157 meter_strip.cc:581 +msgid "Change all to Peak" +msgstr "Поменять все на пиковое" + +#: mixer_strip.cc:2158 meter_strip.cc:582 +msgid "Change all to RMS + Peak" +msgstr "Поменять все на среднеквадратичное + пиковое" + +#: mixer_strip.cc:2159 meter_strip.cc:583 +msgid "Change same track-type to Peak" +msgstr "Поменять дорожки одного типа на пиковое" + +#: mixer_strip.cc:2160 meter_strip.cc:584 +msgid "Change same track-type to RMS + Peak" +msgstr "Поменять дорожки одного типа на среднеквадратичное + пиковое" + #: mixer_ui.cc:1189 msgid "track display list item for renamed strip not found!" msgstr "" @@ -7481,7 +7527,7 @@ msgstr "" msgid "-all-" msgstr "-все-" -#: mixer_ui.cc:1792 +#: mixer_ui.cc:1794 msgid "Strips" msgstr "Каналы" @@ -7642,7 +7688,7 @@ msgstr "Левый:%3d, Правый:%3d" #: mono_panner_editor.cc:33 msgid "Mono Panner" -msgstr "" +msgstr "Монопанорама" #: mono_panner_editor.cc:44 mono_panner_editor.cc:49 #: stereo_panner_editor.cc:46 stereo_panner_editor.cc:51 @@ -7865,7 +7911,7 @@ msgstr "" msgid "Panner (2D)" msgstr "Панорамирование (2D)" -#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:452 +#: panner2d.cc:783 panner_ui.cc:384 plugin_ui.cc:451 msgid "Bypass" msgstr "Обход" @@ -8038,7 +8084,7 @@ msgstr "По категории" msgid "Eh? LADSPA plugins don't have editors!" msgstr "Что? У эффектов LADSPA нет своих редакторов!" -#: plugin_ui.cc:125 plugin_ui.cc:228 +#: plugin_ui.cc:125 plugin_ui.cc:227 msgid "" "unknown type of editor-supplying plugin (note: no VST support in this " "version of %1)" @@ -8048,51 +8094,51 @@ msgstr "" msgid "unknown type of editor-supplying plugin" msgstr "" -#: plugin_ui.cc:258 +#: plugin_ui.cc:257 msgid "" "unknown type of editor-supplying plugin (note: no linuxVST support in this " "version of %1)" msgstr "" -#: plugin_ui.cc:330 +#: plugin_ui.cc:329 msgid "create_lv2_editor called on non-LV2 plugin" msgstr "" -#: plugin_ui.cc:418 +#: plugin_ui.cc:417 msgid "Add" msgstr "Добавить" -#: plugin_ui.cc:422 +#: plugin_ui.cc:421 msgid "Description" msgstr "Описание" -#: plugin_ui.cc:423 +#: plugin_ui.cc:422 msgid "Plugin analysis" msgstr "Частотный анализ модуля" -#: plugin_ui.cc:430 +#: plugin_ui.cc:429 msgid "" "Presets (if any) for this plugin\n" "(Both factory and user-created)" msgstr "Все доступные профили этого модуля,как «заводские», так и собственные" -#: plugin_ui.cc:431 +#: plugin_ui.cc:430 msgid "Save a new preset" msgstr "Сохранить новый профиль" -#: plugin_ui.cc:432 +#: plugin_ui.cc:431 msgid "Save the current preset" msgstr "Сохранить текущий профиль" -#: plugin_ui.cc:433 +#: plugin_ui.cc:432 msgid "Delete the current preset" msgstr "Удалить текущий профиль" -#: plugin_ui.cc:434 +#: plugin_ui.cc:433 msgid "Disable signal processing by the plugin" msgstr "Выключить обработку сигнала этим модулем" -#: plugin_ui.cc:467 plugin_ui.cc:632 +#: plugin_ui.cc:466 plugin_ui.cc:662 msgid "" "Click to allow the plugin to receive keyboard events that %1 would normally " "use as a shortcut" @@ -8100,30 +8146,42 @@ msgstr "" "Щёлкните, чтобы разрешить этому модулю получать клавиатурные события, " "которые %1 обычно использует как горячие клавиши" -#: plugin_ui.cc:468 +#: plugin_ui.cc:467 msgid "Click to enable/disable this plugin" msgstr "Щелкните, чтобы включить или отключить этот модуль" -#: plugin_ui.cc:507 +#: plugin_ui.cc:506 msgid "latency (%1 sample)" msgid_plural "latency (%1 samples)" msgstr[0] "Задержка (%1 сэмпл)" msgstr[1] "Задержка (%1 сэмпла)" msgstr[2] "Задержка (%1 сэмплов)" -#: plugin_ui.cc:509 +#: plugin_ui.cc:508 msgid "latency (%1 ms)" msgstr "Задержка (%1 мс)" -#: plugin_ui.cc:520 +#: plugin_ui.cc:519 msgid "Edit Latency" msgstr "Изменить задержку" -#: plugin_ui.cc:559 +#: plugin_ui.cc:558 msgid "Plugin preset %1 not found" msgstr "Предустановка модуля %1 не обнаружена" -#: plugin_ui.cc:639 +#: plugin_ui.cc:595 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"full version" +msgstr "" + +#: plugin_ui.cc:615 plugin_ui.cc:630 +msgid "" +"Plugin presets are not supported in this build of %1. Consider paying for a " +"newer version" +msgstr "" + +#: plugin_ui.cc:669 msgid "Click to allow normal use of %1 keyboard shortcuts" msgstr "" "Щёлкните, чтобы переключиться на обычное использование горячих клавиш %1" @@ -8228,46 +8286,46 @@ msgstr "Выполняется определение..." msgid "Port Insert " msgstr "Вставка порта" -#: port_matrix.cc:323 port_matrix.cc:342 +#: port_matrix.cc:325 port_matrix.cc:344 msgid "Sources" msgstr "Источники" -#: port_matrix.cc:324 port_matrix.cc:343 +#: port_matrix.cc:326 port_matrix.cc:345 msgid "Destinations" msgstr "Назначения" -#: port_matrix.cc:419 port_matrix.cc:427 +#: port_matrix.cc:421 port_matrix.cc:429 #, c-format msgid "Add %s %s" msgstr "Добавить %s %s" -#: port_matrix.cc:435 +#: port_matrix.cc:437 #, c-format msgid "Rename '%s'..." msgstr "Переименовать '%s'..." -#: port_matrix.cc:451 +#: port_matrix.cc:453 msgid "Remove all" msgstr "Удалить все" -#: port_matrix.cc:471 port_matrix.cc:483 +#: port_matrix.cc:473 port_matrix.cc:485 #, c-format msgid "%s all" msgstr "%s все" -#: port_matrix.cc:506 +#: port_matrix.cc:508 msgid "Rescan" msgstr "Просканировать заново" -#: port_matrix.cc:508 +#: port_matrix.cc:510 msgid "Show individual ports" msgstr "Показывать порты раздельно" -#: port_matrix.cc:514 +#: port_matrix.cc:516 msgid "Flip" msgstr "Повернуть матрицу" -#: port_matrix.cc:702 +#: port_matrix.cc:704 msgid "" "It is not possible to add a port here, as the first processor in the track " "or buss cannot support the new configuration." @@ -8275,31 +8333,31 @@ msgstr "" "Невозможно добавить сюда порт, поскольку первый обработчик дорожки или шины " "не может поддерживать новую конфигурацию." -#: port_matrix.cc:705 +#: port_matrix.cc:707 msgid "Cannot add port" msgstr "Невозможно добавить порт" -#: port_matrix.cc:727 +#: port_matrix.cc:729 msgid "Port removal not allowed" msgstr "Удаление портов не разрешено" -#: port_matrix.cc:728 +#: port_matrix.cc:730 msgid "" "This port cannot be removed, as the first plugin in the track or buss cannot " "accept the new number of inputs." msgstr "" -#: port_matrix.cc:945 +#: port_matrix.cc:947 #, c-format msgid "Remove '%s'" msgstr "Удалить '%s'" -#: port_matrix.cc:960 +#: port_matrix.cc:962 #, c-format msgid "%s all from '%s'" msgstr "%s все из '%s'" -#: port_matrix.cc:1026 +#: port_matrix.cc:1028 msgid "channel" msgstr "канал" @@ -8317,12 +8375,17 @@ msgid "" "Double-click to show GUI.\n" "Alt+double-click to show generic GUI." msgstr "" +"%1\n" +"Двойной щелчок вызывает собственный диалог модуля.\n" +"Alt+ двойной щелчок вызывает генерируемый хостом диалог с параметрами." #: processor_box.cc:258 msgid "" "%1\n" "Double-click to show generic GUI." msgstr "" +"%1\n" +"Двойной щелчок вызывает генерируемый хостом диалог с параметрами." #: processor_box.cc:371 msgid "Show All Controls" @@ -8479,51 +8542,51 @@ msgstr "" "послефейдерные обработчики из \"%1\" ?\n" "(отмена невозможна)" -#: processor_box.cc:2198 +#: processor_box.cc:2187 msgid "New Plugin" msgstr "Добавить модуль" -#: processor_box.cc:2201 +#: processor_box.cc:2190 msgid "New Insert" msgstr "Добавить возврат" -#: processor_box.cc:2204 +#: processor_box.cc:2193 msgid "New External Send ..." msgstr "Добавить внешний посыл с портом JACK..." -#: processor_box.cc:2208 +#: processor_box.cc:2197 msgid "New Aux Send ..." msgstr "Добавить внешний посыл без порта JACK..." -#: processor_box.cc:2212 +#: processor_box.cc:2201 msgid "Clear (all)" msgstr "Очистить (всё)" -#: processor_box.cc:2214 +#: processor_box.cc:2203 msgid "Clear (pre-fader)" msgstr "Очистить (до фейдера)" -#: processor_box.cc:2216 +#: processor_box.cc:2205 msgid "Clear (post-fader)" msgstr "Очистить (после фейдера)" -#: processor_box.cc:2242 +#: processor_box.cc:2231 msgid "Activate All" msgstr "Активировать все" -#: processor_box.cc:2244 +#: processor_box.cc:2233 msgid "Deactivate All" msgstr "Деактивировать все" -#: processor_box.cc:2246 +#: processor_box.cc:2235 msgid "A/B Plugins" msgstr "Отключить все" -#: processor_box.cc:2255 +#: processor_box.cc:2244 msgid "Edit with generic controls..." msgstr "Изменить с интерфейсом хоста..." -#: processor_box.cc:2531 +#: processor_box.cc:2544 msgid "%1: %2 (by %3)" msgstr "%1: %2 (автор — %3)" @@ -8644,7 +8707,6 @@ msgid "Recording (seconds of buffering):" msgstr "Запись (в секундах):" #: rc_option_editor.cc:656 -#, fuzzy msgid "Control Surface Protocol" msgstr "Устройства управления" @@ -8660,11 +8722,11 @@ msgstr "" #: rc_option_editor.cc:817 msgid "Show Video Export Info before export" -msgstr "" +msgstr "Показывать диалог с вводной информацией об экспорте видео" #: rc_option_editor.cc:818 msgid "Show Video Server Startup Dialog" -msgstr "" +msgstr "Показывать диалог с параметрами видеосервера" #: rc_option_editor.cc:819 msgid "Advanced Setup (remote video server)" @@ -8705,12 +8767,16 @@ msgid "" "When enabled an information window with details is displayed before " "the video-export dialog." msgstr "" +"Если включено, перед экспортом видео показывается окно со справочной " +"информацией" #: rc_option_editor.cc:853 msgid "" "When enabled the video server is never launched automatically without " "confirmation" msgstr "" +"Если включено, видеосервер никогда автоматически не запускается без " +"подтверждения" #: rc_option_editor.cc:993 msgid "%1 Preferences" @@ -8772,7 +8838,7 @@ msgstr "Максимальное число недавних сеансов" msgid "Click gain level" msgstr "Уровень щелчка метронома" -#: rc_option_editor.cc:1083 route_time_axis.cc:206 route_time_axis.cc:667 +#: rc_option_editor.cc:1083 route_time_axis.cc:215 route_time_axis.cc:676 msgid "Automation" msgstr "Автоматизация" @@ -9228,23 +9294,23 @@ msgstr "Солирование приоритетнее приглушения" #: rc_option_editor.cc:1665 msgid "Default track / bus muting options" -msgstr "Параметры приглушения дорожки/шины по умолчанию" +msgstr "Приглушение дорожек и шин по умолчанию затрагивает" #: rc_option_editor.cc:1670 msgid "Mute affects pre-fader sends" -msgstr "Приглушение затрагивает предфейдерные посылы" +msgstr "Предфейдерные посылы" #: rc_option_editor.cc:1678 msgid "Mute affects post-fader sends" -msgstr "Приглушение затрагивает послефейдерные посылы" +msgstr "Послефейдерные посылы" #: rc_option_editor.cc:1686 msgid "Mute affects control outputs" -msgstr "Приглушение затрагивает выходы мониторинга" +msgstr "Выходы мониторинга" #: rc_option_editor.cc:1694 msgid "Mute affects main outputs" -msgstr "Приглушение затрагивает основные выходы" +msgstr "Основные выходы" #: rc_option_editor.cc:1710 msgid "Send MIDI Time Code" @@ -9300,6 +9366,9 @@ msgid "" " (requires a restart of %1 to take effect)\n" " (if available for your language preferences)" msgstr "" +"Использовать перевод интерфейса %1\n" +" (вступает в силу после перезапуска %1)\n" +" (если локализация для вашего языка доступна)" #: rc_option_editor.cc:1812 msgid "Keyboard" @@ -9323,7 +9392,8 @@ msgstr "Следуют порядку редактора" #: rc_option_editor.cc:1838 rc_option_editor.cc:1846 rc_option_editor.cc:1856 #: rc_option_editor.cc:1877 rc_option_editor.cc:1886 rc_option_editor.cc:1894 -#: rc_option_editor.cc:1908 rc_option_editor.cc:1925 +#: rc_option_editor.cc:1908 rc_option_editor.cc:1927 rc_option_editor.cc:1943 +#: rc_option_editor.cc:1957 msgid "Preferences|GUI" msgstr "Интерфейс" @@ -9341,7 +9411,7 @@ msgstr "Интерфейс" #: rc_option_editor.cc:1862 msgid "update transport clock display every 40ms instead of every 100ms" -msgstr "" +msgstr "Обновлять счётчик транспорта каждые 40мс вместо каждых 100мс" #: rc_option_editor.cc:1879 msgid "Mixer Strip" @@ -9352,14 +9422,14 @@ msgid "Use narrow strips in the mixer by default" msgstr "Использовать тонкие полоски в микшере по умолчанию" #: rc_option_editor.cc:1898 -msgid "Meter hold time" -msgstr "Задержка индикатора" +msgid "Peak hold time" +msgstr "Удерживание пика" #: rc_option_editor.cc:1904 msgid "short" msgstr "Короткое" -#: rc_option_editor.cc:1905 rc_option_editor.cc:1920 +#: rc_option_editor.cc:1905 msgid "medium" msgstr "Среднее" @@ -9368,28 +9438,74 @@ msgid "long" msgstr "Долгое" #: rc_option_editor.cc:1912 -msgid "Meter fall-off" -msgstr "Спадание индикатора" +msgid "DPM fall-off" +msgstr "Скорость спадания" #: rc_option_editor.cc:1918 -msgid "slowest" -msgstr "Самое медленное" +msgid "slowest [6.6dB/sec]" +msgstr "Самое медленное [6,6 Дб/с]" #: rc_option_editor.cc:1919 -msgid "slow" -msgstr "Медленное" +msgid "slow [8.6dB/sec] (BBC PPM, EBU PPM)" +msgstr "Медленное [8,6 Дб/с] (BBC PPM, EBU PPM)" + +#: rc_option_editor.cc:1920 +msgid "slowish [12.0dB/sec] (DIN)" +msgstr "Неторопливое [12 Дб/с] (DIN)" #: rc_option_editor.cc:1921 -msgid "fast" -msgstr "Быстрое" +msgid "moderate [13.3dB/sec] (EBU Digi PPM, IRT Digi PPM)" +msgstr "Умеренное [13,3 Дб/с] (EBU Digi PPM, IRT Digi PPM)" #: rc_option_editor.cc:1922 -msgid "faster" -msgstr "Ещё более быстрее" +msgid "medium [20dB/sec]" +msgstr "Среднее [20 Дб/с]" #: rc_option_editor.cc:1923 -msgid "fastest" -msgstr "Скорейшее" +msgid "fast [32dB/sec]" +msgstr "Быстрое [32 Дб/с]" + +#: rc_option_editor.cc:1924 +msgid "faster [46dB/sec]" +msgstr "Ещё быстрее [46 Дб/с]" + +#: rc_option_editor.cc:1925 +msgid "fastest [70dB/sec]" +msgstr "Самое быстрое [70 Дб/с]" + +#: rc_option_editor.cc:1931 +msgid "Meter line-up level" +msgstr "Уровень выравнивания" + +#: rc_option_editor.cc:1936 +msgid "-24dB" +msgstr "-24 Дб" + +#: rc_option_editor.cc:1937 +msgid "-20dB (SMPTE)" +msgstr "-20 Дб (SMPTE)" + +#: rc_option_editor.cc:1938 +msgid "-18dB (EBU)" +msgstr "-18 Дб (EBU)" + +#: rc_option_editor.cc:1939 +msgid "-15dB" +msgstr "-15 Дб" + +#: rc_option_editor.cc:1941 +msgid "Configure meter-ticks and color-knee point." +msgstr "" + +#: rc_option_editor.cc:1947 +msgid "Peak threshold [dBFS]" +msgstr "Порог пика (dbFS)" + +#: rc_option_editor.cc:1955 +msgid "" +"Specify the audio signal level in dbFS at and above which the meter-peak " +"indicator will flash red." +msgstr "" #: region_editor.cc:79 msgid "audition this region" @@ -9403,7 +9519,7 @@ msgstr "Позиция:" msgid "End:" msgstr "Конец:" -#: region_editor.cc:92 sfdb_ui.cc:140 +#: region_editor.cc:92 sfdb_ui.cc:141 msgid "Length:" msgstr "Длительность:" @@ -9427,23 +9543,23 @@ msgstr "Источники:" msgid "Source:" msgstr "Источник:" -#: region_editor.cc:167 +#: region_editor.cc:166 msgid "Region '%1'" msgstr "Область %1" -#: region_editor.cc:274 +#: region_editor.cc:273 msgid "change region start position" msgstr "смена позиции начала области" -#: region_editor.cc:290 +#: region_editor.cc:289 msgid "change region end position" msgstr "смена позиции конца области" -#: region_editor.cc:310 +#: region_editor.cc:309 msgid "change region length" msgstr "смена длительности области" -#: region_editor.cc:404 region_editor.cc:416 +#: region_editor.cc:403 region_editor.cc:415 msgid "change region sync point" msgstr "смена синхронизатора областей" @@ -9651,198 +9767,197 @@ msgstr "Выходы" msgid "Plugins, Inserts & Sends" msgstr "Модули, возвраты и посылы" -#: route_params_ui.cc:211 +#: route_params_ui.cc:207 msgid "route display list item for renamed route not found!" msgstr "" -#: route_params_ui.cc:258 route_params_ui.cc:286 +#: route_params_ui.cc:254 route_params_ui.cc:282 #, c-format msgid "Playback delay: % samples" msgstr "Задержка воспроизведения: % сэмплов" -#: route_params_ui.cc:478 +#: route_params_ui.cc:474 msgid "NO TRACK" msgstr "НЕТ ДОРОЖЕК" -#: route_params_ui.cc:611 route_params_ui.cc:612 +#: route_params_ui.cc:607 route_params_ui.cc:608 msgid "No Track or Bus Selected" msgstr "Нет выбранных дорожек или шин" -#: route_time_axis.cc:96 +#: route_time_axis.cc:97 msgid "g" msgstr "г" -#: route_time_axis.cc:97 +#: route_time_axis.cc:98 msgid "p" msgstr "сп" -#: route_time_axis.cc:98 +#: route_time_axis.cc:99 msgid "a" msgstr "а" -#: route_time_axis.cc:168 +#: route_time_axis.cc:173 msgid "Record (Right-click for Step Edit)" msgstr "Запись (правая клавиша мыши активирует пошаговый ввод)" -#: route_time_axis.cc:171 +#: route_time_axis.cc:176 msgid "Record" msgstr "Запись" -#: route_time_axis.cc:201 +#: route_time_axis.cc:210 msgid "Route Group" msgstr "Группа маршрутизации" -#: route_time_axis.cc:204 +#: route_time_axis.cc:213 msgid "MIDI Controllers and Automation" msgstr "MIDI-контроллеры и автоматизация" -#: route_time_axis.cc:381 +#: route_time_axis.cc:390 msgid "Show All Automation" msgstr "Показать всю автоматизацию" -#: route_time_axis.cc:384 +#: route_time_axis.cc:393 msgid "Show Existing Automation" msgstr "Показать существующую автоматизацию" -#: route_time_axis.cc:387 +#: route_time_axis.cc:396 msgid "Hide All Automation" msgstr "Скрыть всю автоматизацию" -#: route_time_axis.cc:396 -#, fuzzy +#: route_time_axis.cc:405 msgid "Processor automation" -msgstr "Очистить автоматизацию" +msgstr "Автоматизация обработчика" -#: route_time_axis.cc:415 +#: route_time_axis.cc:424 msgid "Color..." msgstr "Цвет..." -#: route_time_axis.cc:472 +#: route_time_axis.cc:481 msgid "Overlaid" msgstr "Перекрывают друг друга" -#: route_time_axis.cc:478 +#: route_time_axis.cc:487 msgid "Stacked" msgstr "В стопке" -#: route_time_axis.cc:486 +#: route_time_axis.cc:495 msgid "Layers" msgstr "Слои" -#: route_time_axis.cc:555 +#: route_time_axis.cc:564 msgid "Automatic (based on I/O connections)" msgstr "Автоматическое (по соединениям входа-выхода)" -#: route_time_axis.cc:564 +#: route_time_axis.cc:573 msgid "(Currently: Existing Material)" msgstr "(Сейчас: с записанным материалом)" -#: route_time_axis.cc:567 +#: route_time_axis.cc:576 msgid "(Currently: Capture Time)" msgstr "(Сейчас: по времени захвата)" -#: route_time_axis.cc:575 +#: route_time_axis.cc:584 msgid "Align With Existing Material" msgstr "С записанным материалом" -#: route_time_axis.cc:580 +#: route_time_axis.cc:589 msgid "Align With Capture Time" msgstr "По времени захвата" -#: route_time_axis.cc:585 +#: route_time_axis.cc:594 msgid "Alignment" msgstr "Выравнивание" -#: route_time_axis.cc:620 +#: route_time_axis.cc:629 msgid "Normal Mode" msgstr "Обычный режим" -#: route_time_axis.cc:626 +#: route_time_axis.cc:635 msgid "Tape Mode" msgstr "Плёночный режим" -#: route_time_axis.cc:632 +#: route_time_axis.cc:641 msgid "Non-Layered Mode" msgstr "Бесслойный режим" -#: route_time_axis.cc:645 route_time_axis.cc:1587 +#: route_time_axis.cc:654 route_time_axis.cc:1601 msgid "Playlist" msgstr "Список" -#: route_time_axis.cc:965 +#: route_time_axis.cc:979 msgid "Rename Playlist" msgstr "Переименовать список воспроизведения" -#: route_time_axis.cc:966 +#: route_time_axis.cc:980 msgid "New name for playlist:" msgstr "Новое название списка воспроизведения:" -#: route_time_axis.cc:1051 +#: route_time_axis.cc:1065 msgid "New Copy Playlist" msgstr "Новая копия списка воспроизведения" -#: route_time_axis.cc:1052 route_time_axis.cc:1105 +#: route_time_axis.cc:1066 route_time_axis.cc:1119 msgid "Name for new playlist:" msgstr "Название нового списка воспроизведения:" -#: route_time_axis.cc:1104 +#: route_time_axis.cc:1118 msgid "New Playlist" msgstr "Новый список воспроизведения" -#: route_time_axis.cc:1295 +#: route_time_axis.cc:1309 msgid "You cannot create a track with that name as it is reserved for %1" msgstr "" "Вы не можете добавить дорожку с названием, которое зарезервировано для %1" -#: route_time_axis.cc:1476 +#: route_time_axis.cc:1490 msgid "New Copy..." msgstr "Создать копию..." -#: route_time_axis.cc:1480 +#: route_time_axis.cc:1494 msgid "New Take" msgstr "Новый дубль" -#: route_time_axis.cc:1481 +#: route_time_axis.cc:1495 msgid "Copy Take" msgstr "Скопировать дубль" -#: route_time_axis.cc:1486 +#: route_time_axis.cc:1500 msgid "Clear Current" msgstr "Очистить текущий" -#: route_time_axis.cc:1489 +#: route_time_axis.cc:1503 msgid "Select From All..." msgstr "Выбрать из всех..." -#: route_time_axis.cc:1577 +#: route_time_axis.cc:1591 msgid "Take: %1.%2" msgstr "Дубль: %1.%2" -#: route_time_axis.cc:2267 +#: route_time_axis.cc:2291 msgid "Underlays" msgstr "" -#: route_time_axis.cc:2270 +#: route_time_axis.cc:2294 msgid "Remove \"%1\"" msgstr "Удалить «%1»" -#: route_time_axis.cc:2320 route_time_axis.cc:2357 +#: route_time_axis.cc:2344 route_time_axis.cc:2381 msgid "programming error: underlay reference pointer pairs are inconsistent!" msgstr "" -#: route_time_axis.cc:2388 +#: route_time_axis.cc:2408 msgid "After-fade listen (AFL)" msgstr "Прослушивание после фейдера (AFL)" -#: route_time_axis.cc:2392 +#: route_time_axis.cc:2412 msgid "Pre-fade listen (PFL)" msgstr "Прослушивание до фейдера (PFL)" -#: route_time_axis.cc:2396 +#: route_time_axis.cc:2416 msgid "s" msgstr "с" -#: route_time_axis.cc:2400 +#: route_time_axis.cc:2419 msgid "m" msgstr "м" @@ -10397,6 +10512,7 @@ msgid "" "Use Video File's FPS Instead of Timecode Value for Timeline and Video " "Monitor." msgstr "" +"Использовать частоту кадров видео вместо таймкода в проекте и видеомониторе" #: session_option_editor.cc:91 msgid "" @@ -10576,155 +10692,207 @@ msgstr "Приклеивать новые маркеры к тактам и до msgid "Glue new regions to bars and beats" msgstr "Приклеивать новые области к тактам и долям" -#: sfdb_ui.cc:87 sfdb_ui.cc:107 sfdb_ui.cc:116 +#: session_option_editor.cc:275 session_option_editor.cc:277 +#: session_option_editor.cc:284 session_option_editor.cc:291 +#: session_option_editor.cc:298 session_option_editor.cc:300 +#: session_option_editor.cc:307 session_option_editor.cc:314 +#: session_option_editor.cc:321 session_option_editor.cc:323 +msgid "Meterbridge" +msgstr "Панель индикаторов" + +#: session_option_editor.cc:275 +msgid "Route Display" +msgstr "Показывать в маршрутизации" + +#: session_option_editor.cc:279 +msgid "Show Midi Tracks" +msgstr "MIDI-дорожки" + +#: session_option_editor.cc:286 +msgid "Show Busses" +msgstr "Шины" + +#: session_option_editor.cc:293 +msgid "Include Master Bus" +msgstr "Мастер-шина" + +#: session_option_editor.cc:298 +msgid "Button Area" +msgstr "Показывать в кнопках" + +#: session_option_editor.cc:302 +msgid "Rec-enable Button" +msgstr "Переключатель записываемости" + +#: session_option_editor.cc:309 +msgid "Mute Button" +msgstr "Переключатель приглушения" + +#: session_option_editor.cc:316 +msgid "Solo Button" +msgstr "Переключатель солирования" + +#: session_option_editor.cc:321 +msgid "Name Labels" +msgstr "Показывать в метках имён" + +#: session_option_editor.cc:325 +msgid "Track Name" +msgstr "Название дорожи" + +#: sfdb_ui.cc:88 sfdb_ui.cc:108 sfdb_ui.cc:117 msgid "as new tracks" msgstr "как новые дорожки" -#: sfdb_ui.cc:89 sfdb_ui.cc:109 +#: sfdb_ui.cc:90 sfdb_ui.cc:110 msgid "to selected tracks" msgstr "в выделенные дорожки" -#: sfdb_ui.cc:91 sfdb_ui.cc:111 +#: sfdb_ui.cc:92 sfdb_ui.cc:112 msgid "to region list" msgstr "в список областей" -#: sfdb_ui.cc:93 sfdb_ui.cc:113 +#: sfdb_ui.cc:94 sfdb_ui.cc:114 msgid "as new tape tracks" msgstr "как новые плёночные дорожки" -#: sfdb_ui.cc:97 +#: sfdb_ui.cc:98 msgid "programming error: unknown import mode string %1" msgstr "Ошибка в программе: неизвестная строка режима импорта %1" -#: sfdb_ui.cc:124 +#: sfdb_ui.cc:125 msgid "Auto-play" msgstr "Автовоспр." -#: sfdb_ui.cc:130 sfdb_ui.cc:237 +#: sfdb_ui.cc:131 sfdb_ui.cc:238 msgid "Sound File Information" msgstr "Информация о файле" -#: sfdb_ui.cc:142 +#: sfdb_ui.cc:143 msgid "Timestamp:" msgstr "Отметка времени:" -#: sfdb_ui.cc:144 +#: sfdb_ui.cc:145 msgid "Format:" msgstr "Формат:" -#: sfdb_ui.cc:183 sfdb_ui.cc:530 +#: sfdb_ui.cc:184 sfdb_ui.cc:529 msgid "Tags:" msgstr "Метки:" -#: sfdb_ui.cc:320 +#: sfdb_ui.cc:321 msgid "Auditioning of MIDI files is not yet supported" msgstr "Прослушивание файлов MIDI пока что не реализовано" -#: sfdb_ui.cc:327 +#: sfdb_ui.cc:328 msgid "Could not read file: %1 (%2)." msgstr "Не удалось прочитать файл: %1 (%2)" -#: sfdb_ui.cc:349 +#: sfdb_ui.cc:350 msgid "Could not access soundfile: " msgstr "Файл недоступен: " -#: sfdb_ui.cc:403 +#: sfdb_ui.cc:404 msgid "SoundFileBox: Could not tokenize string: " msgstr "" -#: sfdb_ui.cc:423 sfdb_ui.cc:425 +#: sfdb_ui.cc:424 sfdb_ui.cc:426 msgid "Search" msgstr "Искать" -#: sfdb_ui.cc:449 +#: sfdb_ui.cc:450 msgid "Audio and MIDI files" msgstr "Звуковые и MIDI-файлы" -#: sfdb_ui.cc:452 +#: sfdb_ui.cc:453 msgid "Audio files" msgstr "Звуковые файлы" -#: sfdb_ui.cc:455 +#: sfdb_ui.cc:456 msgid "MIDI files" msgstr "Файлы MIDI" -#: sfdb_ui.cc:458 add_video_dialog.cc:131 +#: sfdb_ui.cc:459 add_video_dialog.cc:131 msgid "All files" msgstr "Все файлы" -#: sfdb_ui.cc:477 add_video_dialog.cc:142 +#: sfdb_ui.cc:478 add_video_dialog.cc:142 msgid "Browse Files" msgstr "Обзор файлов" -#: sfdb_ui.cc:506 +#: sfdb_ui.cc:507 msgid "Paths" msgstr "Расположения" -#: sfdb_ui.cc:517 +#: sfdb_ui.cc:516 msgid "Search Tags" msgstr "Поиск по меткам" -#: sfdb_ui.cc:535 +#: sfdb_ui.cc:534 msgid "Sort:" msgstr "Критерий сортировки:" -#: sfdb_ui.cc:543 +#: sfdb_ui.cc:542 msgid "Longest" msgstr "Более длинные" -#: sfdb_ui.cc:544 +#: sfdb_ui.cc:543 msgid "Shortest" msgstr "Более короткие" -#: sfdb_ui.cc:545 +#: sfdb_ui.cc:544 msgid "Newest" msgstr "Более новые" -#: sfdb_ui.cc:546 +#: sfdb_ui.cc:545 msgid "Oldest" msgstr "Более старые" -#: sfdb_ui.cc:547 +#: sfdb_ui.cc:546 msgid "Most downloaded" msgstr "Чаще скачиваемые" -#: sfdb_ui.cc:548 +#: sfdb_ui.cc:547 msgid "Least downloaded" msgstr "Реже скачиваемые" -#: sfdb_ui.cc:549 +#: sfdb_ui.cc:548 msgid "Highest rated" msgstr "Выше оценённые" -#: sfdb_ui.cc:550 +#: sfdb_ui.cc:549 msgid "Lowest rated" msgstr "Ниже оценённые" -#: sfdb_ui.cc:555 +#: sfdb_ui.cc:554 msgid "More" msgstr "" -#: sfdb_ui.cc:572 +#: sfdb_ui.cc:558 +msgid "Similar" +msgstr "" + +#: sfdb_ui.cc:570 msgid "ID" msgstr "ID" -#: sfdb_ui.cc:573 add_video_dialog.cc:83 +#: sfdb_ui.cc:571 add_video_dialog.cc:83 msgid "Filename" msgstr "Имя файла" -#: sfdb_ui.cc:575 +#: sfdb_ui.cc:573 msgid "Duration" msgstr "Длительность" -#: sfdb_ui.cc:576 +#: sfdb_ui.cc:574 msgid "Size" msgstr "Размер" -#: sfdb_ui.cc:577 +#: sfdb_ui.cc:575 msgid "Samplerate" msgstr "Частота сэмплирования" -#: sfdb_ui.cc:578 +#: sfdb_ui.cc:576 msgid "License" msgstr "Лицензия" @@ -10745,88 +10913,70 @@ msgstr "" msgid "Press to close this window without importing any files" msgstr "Нажмите, чтобы закрыть это окно, ничего не импортируя" -#: sfdb_ui.cc:846 -msgid "found %1 match" -msgid_plural "found %1 matches" -msgstr[0] "Найдено %1 совпадение" -msgstr[1] "Найдено %1 совпадения" -msgstr[2] "Найдено %1 совпадений" - -#: sfdb_ui.cc:862 +#: sfdb_ui.cc:813 msgid "SoundFileBrowser: Could not tokenize string: " msgstr "" -#: sfdb_ui.cc:960 +#: sfdb_ui.cc:1013 msgid "%1 more page of 100 results available" msgid_plural "%1 more pages of 100 results available" msgstr[0] "Ещё %1 страница из 100 доступных" msgstr[1] "Ещё %1 страницы из 100 доступных" msgstr[2] "Ещё %1 страниц из 100 доступных" -#: sfdb_ui.cc:965 +#: sfdb_ui.cc:1018 msgid "No more results available" msgstr "Больше результатов нет" -#: sfdb_ui.cc:1029 +#: sfdb_ui.cc:1082 msgid "B" msgstr "Б" -#: sfdb_ui.cc:1031 +#: sfdb_ui.cc:1084 msgid "kB" msgstr "КБ" -#: sfdb_ui.cc:1033 sfdb_ui.cc:1035 +#: sfdb_ui.cc:1086 sfdb_ui.cc:1088 msgid "MB" msgstr "МБ" -#: sfdb_ui.cc:1037 +#: sfdb_ui.cc:1090 msgid "GB" msgstr "ГБ" -#: sfdb_ui.cc:1070 -msgid "Search returned no results." -msgstr "" - -#: sfdb_ui.cc:1072 -msgid "Found %1 match" -msgid_plural "Found %1 matches" -msgstr[0] "Найдено %1 совпадение" -msgstr[1] "Найдено %1 совпадения" -msgstr[2] "Найдено %1 совпадений" - -#: sfdb_ui.cc:1277 sfdb_ui.cc:1585 sfdb_ui.cc:1635 sfdb_ui.cc:1653 +#: sfdb_ui.cc:1304 sfdb_ui.cc:1612 sfdb_ui.cc:1662 sfdb_ui.cc:1680 msgid "one track per file" msgstr "Одна дорожка на файл" -#: sfdb_ui.cc:1280 sfdb_ui.cc:1636 sfdb_ui.cc:1654 +#: sfdb_ui.cc:1307 sfdb_ui.cc:1663 sfdb_ui.cc:1681 msgid "one track per channel" msgstr "Одна дорожка на канал" -#: sfdb_ui.cc:1288 sfdb_ui.cc:1638 sfdb_ui.cc:1655 +#: sfdb_ui.cc:1315 sfdb_ui.cc:1665 sfdb_ui.cc:1682 msgid "sequence files" msgstr "" -#: sfdb_ui.cc:1291 sfdb_ui.cc:1643 +#: sfdb_ui.cc:1318 sfdb_ui.cc:1670 msgid "all files in one track" msgstr "Все файлы в одну дорожку" -#: sfdb_ui.cc:1292 sfdb_ui.cc:1637 +#: sfdb_ui.cc:1319 sfdb_ui.cc:1664 msgid "merge files" msgstr "Объединить файлы" -#: sfdb_ui.cc:1298 sfdb_ui.cc:1640 +#: sfdb_ui.cc:1325 sfdb_ui.cc:1667 msgid "one region per file" msgstr "Одна область на файл" -#: sfdb_ui.cc:1301 sfdb_ui.cc:1641 +#: sfdb_ui.cc:1328 sfdb_ui.cc:1668 msgid "one region per channel" msgstr "Одна область на канал" -#: sfdb_ui.cc:1306 sfdb_ui.cc:1642 sfdb_ui.cc:1656 +#: sfdb_ui.cc:1333 sfdb_ui.cc:1669 sfdb_ui.cc:1683 msgid "all files in one region" msgstr "Все файлы в одной области" -#: sfdb_ui.cc:1373 +#: sfdb_ui.cc:1400 msgid "" "One or more of the selected files\n" "cannot be used by %1" @@ -10834,55 +10984,55 @@ msgstr "" "Один или более выбранных файлов\n" "не могут быть использованы в %1" -#: sfdb_ui.cc:1513 +#: sfdb_ui.cc:1540 msgid "Copy files to session" msgstr "Скопировать файлы в сеанс" -#: sfdb_ui.cc:1530 sfdb_ui.cc:1693 +#: sfdb_ui.cc:1557 sfdb_ui.cc:1720 msgid "file timestamp" msgstr "По отметке времени файла" -#: sfdb_ui.cc:1531 sfdb_ui.cc:1695 +#: sfdb_ui.cc:1558 sfdb_ui.cc:1722 msgid "edit point" msgstr "По курсору редактора" -#: sfdb_ui.cc:1532 sfdb_ui.cc:1697 +#: sfdb_ui.cc:1559 sfdb_ui.cc:1724 msgid "playhead" msgstr "По указателю воспр." -#: sfdb_ui.cc:1533 +#: sfdb_ui.cc:1560 msgid "session start" msgstr "В начало сеанса" -#: sfdb_ui.cc:1538 +#: sfdb_ui.cc:1565 msgid "Add files as ..." msgstr "Добавить файлы как..." -#: sfdb_ui.cc:1560 +#: sfdb_ui.cc:1587 msgid "Insert at" msgstr "Куда вставить" -#: sfdb_ui.cc:1573 +#: sfdb_ui.cc:1600 msgid "Mapping" msgstr "Способ вставки" -#: sfdb_ui.cc:1591 +#: sfdb_ui.cc:1618 msgid "Conversion quality" msgstr "Качество преобразования:" -#: sfdb_ui.cc:1603 sfdb_ui.cc:1709 +#: sfdb_ui.cc:1630 sfdb_ui.cc:1736 msgid "Best" msgstr "Наилучшее" -#: sfdb_ui.cc:1604 sfdb_ui.cc:1711 +#: sfdb_ui.cc:1631 sfdb_ui.cc:1738 msgid "Good" msgstr "Хорошее" -#: sfdb_ui.cc:1605 sfdb_ui.cc:1713 +#: sfdb_ui.cc:1632 sfdb_ui.cc:1740 msgid "Quick" msgstr "Быстрое" -#: sfdb_ui.cc:1607 +#: sfdb_ui.cc:1634 msgid "Fastest" msgstr "Быстрее всего" @@ -11148,10 +11298,6 @@ msgstr "" msgid "Click to open the program website in your web browser" msgstr "" -#: startup.cc:594 -msgid "What would you like to do ?" -msgstr "Что вы хотите сделать?" - #: startup.cc:729 msgid "Open" msgstr "Открыть" @@ -11764,7 +11910,7 @@ msgstr "Рисовать кнопки плоскими" #: theme_manager.cc:61 msgid "All floating windows are dialogs" -msgstr "" +msgstr "Все плавающие окна являются диалогами" #: theme_manager.cc:62 msgid "Draw waveforms with color gradient" @@ -11977,7 +12123,7 @@ msgstr "Соотношение сторон:" msgid " %1 fps" msgstr " %1 к/с" -#: editor_videotimeline.cc:138 +#: editor_videotimeline.cc:146 msgid "Export Successful: %1" msgstr "Экспорт успешно завершён: %1" @@ -12049,7 +12195,7 @@ msgstr "Файл вывода:" #: transcode_video_dialog.cc:60 export_video_dialog.cc:72 msgid "Abort" -msgstr "" +msgstr "Прервать" #: transcode_video_dialog.cc:62 msgid "Height = " @@ -12061,7 +12207,7 @@ msgstr "" #: transcode_video_dialog.cc:69 msgid "Debug Mode: Print ffmpeg Command and Output to stdout." -msgstr "" +msgstr "Режим отладки: вывод команд ffmpeg в stdout" #: transcode_video_dialog.cc:106 msgid "File Information" @@ -12097,9 +12243,8 @@ msgid "Geometry:" msgstr "Геометрия:" #: transcode_video_dialog.cc:154 -#, fuzzy msgid "??" -msgstr "???" +msgstr "" #: transcode_video_dialog.cc:175 msgid "Import Settings" @@ -12111,7 +12256,7 @@ msgstr "Не импортировать видео" #: transcode_video_dialog.cc:181 msgid "Reference From Current Location" -msgstr "" +msgstr "Использовать исходный видеофайл" #: transcode_video_dialog.cc:183 msgid "Import/Transcode Video to Session" @@ -12143,7 +12288,7 @@ msgstr "Не удалось извлечь звуковую дорожку." #: transcode_video_dialog.cc:373 msgid "Transcoding Video.." -msgstr "" +msgstr "Перекодирование видео..." #: transcode_video_dialog.cc:407 msgid "Transcoding Failed." @@ -12162,9 +12307,8 @@ msgid "Server Executable:" msgstr "Исполняемый файл сервера:" #: video_server_dialog.cc:45 -#, fuzzy msgid "Server Docroot:" -msgstr "Сервер:" +msgstr "" #: video_server_dialog.cc:51 msgid "Don't show this dialog again. (Reset in Edit->Preferences)." @@ -12223,14 +12367,12 @@ msgid "Confirm Overwrite" msgstr "Подтвердите перезапись" #: utils_videotl.cc:63 -#, fuzzy msgid "A file with the same name already exists. Do you want to overwrite it?" msgstr "Снимок с таким названием уже есть. Перезаписать его?" #: utils_videotl.cc:73 utils_videotl.cc:89 -#, fuzzy msgid "Cannot create video folder \"%1\" (%2)" -msgstr "Не удалось создать пользовательскую папку %3: %1 (%2)" +msgstr "Не удалось создать папку для видео: \"%1\" (%2)" #: export_video_dialog.cc:65 msgid "Export Video File " @@ -12261,9 +12403,8 @@ msgid "Codec Optimizations:" msgstr "Оптимизация кодека:" #: export_video_dialog.cc:83 -#, fuzzy msgid "Deinterlace" -msgstr "Указатель по центру" +msgstr "" #: export_video_dialog.cc:84 msgid "Use [2] B-frames (MPEG 2 or 4 only)" @@ -12316,81 +12457,81 @@ msgstr "от 00:00:00:00 до конца видео" msgid "from the video's start to the video's end" msgstr "от начала до конца видео" -#: export_video_dialog.cc:166 +#: export_video_dialog.cc:183 msgid "Settings:" msgstr "Параметры:" -#: export_video_dialog.cc:174 +#: export_video_dialog.cc:191 msgid "Range:" msgstr "Диапазон:" -#: export_video_dialog.cc:177 +#: export_video_dialog.cc:194 msgid "Preset:" msgstr "Профиль:" -#: export_video_dialog.cc:180 +#: export_video_dialog.cc:197 msgid "Video Codec:" msgstr "Видеокодек:" -#: export_video_dialog.cc:183 +#: export_video_dialog.cc:200 msgid "Video KBit/s:" msgstr "Скорость видеопотока (Кбит/с):" -#: export_video_dialog.cc:186 +#: export_video_dialog.cc:203 msgid "Audio Codec:" msgstr "Звуковой кодек:" -#: export_video_dialog.cc:189 +#: export_video_dialog.cc:206 msgid "Audio KBit/s:" msgstr "Скорость звукового потока (Кбит/с):" -#: export_video_dialog.cc:192 +#: export_video_dialog.cc:209 msgid "Audio Samplerate:" msgstr "Частота сэмплирования звука:" -#: export_video_dialog.cc:369 +#: export_video_dialog.cc:386 msgid "Normalizing audio" msgstr "Выполняется нормировка звука" -#: export_video_dialog.cc:373 +#: export_video_dialog.cc:390 msgid "Exporting audio" -msgstr "" +msgstr "Экспорт звука" -#: export_video_dialog.cc:419 +#: export_video_dialog.cc:436 msgid "Exporting Audio..." msgstr "Экспортируется звук..." -#: export_video_dialog.cc:476 +#: export_video_dialog.cc:493 msgid "" "Export Video: Cannot query duration of video-file, using duration from " "timeline instead." msgstr "" -#: export_video_dialog.cc:505 +#: export_video_dialog.cc:522 msgid "Export Video: No Master Out Ports to Connect for Audio Export" msgstr "" -#: export_video_dialog.cc:544 +#: export_video_dialog.cc:561 msgid "Encoding Video..." msgstr "Кодируется видео..." -#: export_video_dialog.cc:563 +#: export_video_dialog.cc:580 msgid "Export Video: Video input file cannot be read." msgstr "" -#: export_video_dialog.cc:661 +#: export_video_dialog.cc:678 msgid "Encoding Video.. Pass 1/2" msgstr "Выполняется кодирование видео. Проход 1/2." -#: export_video_dialog.cc:673 +#: export_video_dialog.cc:690 msgid "Encoding Video.. Pass 2/2" msgstr "Выполняется кодирование видео. Проход 2/2." -#: export_video_dialog.cc:761 +#: export_video_dialog.cc:778 msgid "Transcoding failed." msgstr "Не удалось выполнить перекодировку." -#: export_video_dialog.cc:930 export_video_dialog.cc:950 +#: export_video_dialog.cc:947 export_video_dialog.cc:967 msgid "Save Exported Video File" msgstr "Сохранить экспортированный видеофайл" @@ -12404,35 +12545,50 @@ msgstr "" #: export_video_infobox.cc:43 msgid "Video Export Info" -msgstr "" +msgstr "Справка по экспорту видео" -#: export_video_infobox.cc:46 +#: export_video_infobox.cc:48 msgid "" -"Ardour video export is not recommended for mastering!\n" -"While 'ffmpeg' (which is used by ardour) can produce high-quality files, " -"this export lacks the possibility to tweak many settings. We recommend to " -"use 'winff', 'devede' or 'dvdauthor' to mux & master. Nevertheless this " -"video-export comes in handy to do quick snapshots, intermediates, dailies or " -"online videos.\n" -"\n" -"The soundtrack is created from the master-bus of the current Ardour " -"session.\n" +"Video encoding is a non-trivial task with many details.\n" "\n" -"The video soure defaults to the file used in the video timeline, which may " -"not the best quality to start with, you should the original video file.\n" +"Please see the manual at %1/video-timeline/operations/#export.\n" "\n" -"If the export-range is longer than the original video, black video frames " -"are prefixed and/or appended. This process may fail with non-standard pixel-" -"aspect-ratios.\n" -"\n" -"The file-format is determined by the extension that you choose for the " -"output file (.avi, .mov, .flv, .ogv,...)\n" -"Note: not all combinations of format+codec+settings produce files which are " -"according so spec. e.g. flv files require sample-rates of 22.1kHz or " -"44.1kHz, mpeg containers can not be used with ac3 audio-codec, etc. If in " -"doubt, use one of the built-in presets." +"Open Manual in Browser? " msgstr "" +#~ msgid "-Inf" +#~ msgstr "-Inf" + +#~ msgid "slowest" +#~ msgstr "Самое медленное" + +#~ msgid "slow" +#~ msgstr "Медленное" + +#~ msgid "fast" +#~ msgstr "Быстрое" + +#~ msgid "faster" +#~ msgstr "Ещё более быстрее" + +#~ msgid "fastest" +#~ msgstr "Скорейшее" + +#~ msgid "found %1 match" +#~ msgid_plural "found %1 matches" +#~ msgstr[0] "Найдено %1 совпадение" +#~ msgstr[1] "Найдено %1 совпадения" +#~ msgstr[2] "Найдено %1 совпадений" + +#~ msgid "Found %1 match" +#~ msgid_plural "Found %1 matches" +#~ msgstr[0] "Найдено %1 совпадение" +#~ msgstr[1] "Найдено %1 совпадения" +#~ msgstr[2] "Найдено %1 совпадений" + +#~ msgid "What would you like to do ?" +#~ msgstr "Что вы хотите сделать?" + #~ msgid "Control surfaces" #~ msgstr "Устройства управления" @@ -14227,9 +14383,6 @@ msgstr "" #~ msgid "solo change" #~ msgstr "смена солирования" -#~ msgid "rec-enable change" -#~ msgstr "смена записываемости" - #~ msgid "Solo Lock" #~ msgstr "Запереть солирование" -- cgit v1.2.3 From 23bf9b11c64037bba655b66ee36301e63fe5bd0c Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Sun, 14 Jul 2013 21:06:25 -0500 Subject: Use a static string variable for dll path. Making this consistent with all other funtions in this file. --- libs/ardour/filesystem_paths.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/libs/ardour/filesystem_paths.cc b/libs/ardour/filesystem_paths.cc index 73bfaff137..bea0e330b9 100644 --- a/libs/ardour/filesystem_paths.cc +++ b/libs/ardour/filesystem_paths.cc @@ -86,11 +86,14 @@ user_config_directory () std::string ardour_dll_directory () { - std::string s = Glib::getenv("ARDOUR_DLL_PATH"); + static std::string s; + if (s.empty()) { - std::cerr << _("ARDOUR_DLL_PATH not set in environment - exiting\n"); - ::exit (1); - } + s = Glib::getenv("ARDOUR_DLL_PATH"); + std::cerr << _("ARDOUR_DLL_PATH not set in environment - exiting\n"); + ::exit (1); + } + return s; } -- cgit v1.2.3 From 879bab6a5305ba48573d2ca8c08422350ead0269 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Sun, 14 Jul 2013 21:16:08 -0500 Subject: Formatting only. --- libs/ardour/filesystem_paths.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/ardour/filesystem_paths.cc b/libs/ardour/filesystem_paths.cc index bea0e330b9..d3ec807e1c 100644 --- a/libs/ardour/filesystem_paths.cc +++ b/libs/ardour/filesystem_paths.cc @@ -89,10 +89,10 @@ ardour_dll_directory () static std::string s; if (s.empty()) { - s = Glib::getenv("ARDOUR_DLL_PATH"); - std::cerr << _("ARDOUR_DLL_PATH not set in environment - exiting\n"); - ::exit (1); - } + s = Glib::getenv("ARDOUR_DLL_PATH"); + std::cerr << _("ARDOUR_DLL_PATH not set in environment - exiting\n"); + ::exit (1); + } return s; } -- cgit v1.2.3 From e487814e9dc52b712d7c5cd242ce4fac76397b1a Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Sun, 14 Jul 2013 21:19:59 -0500 Subject: Lazily load bundled LV2 plugins in LV2PluginInfo::discover() - Do this instead of finding them in the static ctor of LV2World - Prevents usage of ARDOUR_DLL_PATH environment variable before it is set in main(...) --- libs/ardour/lv2_plugin.cc | 49 ++++++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index d49f8412b7..6d4a71869f 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -112,6 +112,8 @@ public: LV2World (); ~LV2World (); + void load_bundled_plugins(); + LilvWorld* world; LilvNode* atom_AtomPort; @@ -140,6 +142,9 @@ public: LilvNode* time_Position; LilvNode* ui_GtkUI; LilvNode* ui_external; + +private: + bool _bundle_checked; }; static LV2World _world; @@ -1903,27 +1908,10 @@ static bool lv2_filter (const string& str, void *arg) LV2World::LV2World() : world(lilv_world_new()) + , _bundle_checked(false) { lilv_world_load_all(world); - cout << "Scanning folders for bundled LV2s: " << ARDOUR::lv2_bundled_search_path().to_string() << endl; - PathScanner scanner; - vector *plugin_objects = scanner (ARDOUR::lv2_bundled_search_path().to_string(), lv2_filter, 0, true, true); - if (plugin_objects) { - for ( vector::iterator x = plugin_objects->begin(); x != plugin_objects->end (); ++x) { -#ifdef WINDOWS - string uri = "file:///" + **x + "/"; -#else - string uri = "file://" + **x + "/"; -#endif - LilvNode *node = lilv_new_uri(world, uri.c_str()); - lilv_world_load_bundle(world, node); - lilv_node_free(node); - } - } - delete (plugin_objects); - - atom_AtomPort = lilv_new_uri(world, LV2_ATOM__AtomPort); atom_Chunk = lilv_new_uri(world, LV2_ATOM__Chunk); atom_Sequence = lilv_new_uri(world, LV2_ATOM__Sequence); @@ -1982,6 +1970,29 @@ LV2World::~LV2World() lilv_node_free(atom_AtomPort); } +void +LV2World::load_bundled_plugins() +{ + if (!_bundle_checked) { + cout << "Scanning folders for bundled LV2s: " << ARDOUR::lv2_bundled_search_path().to_string() << endl; + PathScanner scanner; + vector *plugin_objects = scanner (ARDOUR::lv2_bundled_search_path().to_string(), lv2_filter, 0, true, true); + if (plugin_objects) { + for ( vector::iterator x = plugin_objects->begin(); x != plugin_objects->end (); ++x) { +#ifdef WINDOWS + string uri = "file:///" + **x + "/"; +#else + string uri = "file://" + **x + "/"; +#endif + LilvNode *node = lilv_new_uri(world, uri.c_str()); + lilv_world_load_bundle(world, node); + lilv_node_free(node); + } + } + delete (plugin_objects); + } +} + LV2PluginInfo::LV2PluginInfo (const void* c_plugin) : _c_plugin(c_plugin) { @@ -2013,6 +2024,8 @@ LV2PluginInfo::load(Session& session) PluginInfoList* LV2PluginInfo::discover() { + _world.load_bundled_plugins(); + PluginInfoList* plugs = new PluginInfoList; const LilvPlugins* plugins = lilv_world_get_all_plugins(_world.world); -- cgit v1.2.3 From be44b3c37b572a02cb4607c0da4fb62791bb3dad Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Sun, 14 Jul 2013 21:22:34 -0500 Subject: set the flag true --- libs/ardour/lv2_plugin.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index 6d4a71869f..df33e6c38d 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -1980,16 +1980,18 @@ LV2World::load_bundled_plugins() if (plugin_objects) { for ( vector::iterator x = plugin_objects->begin(); x != plugin_objects->end (); ++x) { #ifdef WINDOWS - string uri = "file:///" + **x + "/"; + string uri = "file:///" + **x + "/"; #else - string uri = "file://" + **x + "/"; + string uri = "file://" + **x + "/"; #endif - LilvNode *node = lilv_new_uri(world, uri.c_str()); - lilv_world_load_bundle(world, node); - lilv_node_free(node); - } + LilvNode *node = lilv_new_uri(world, uri.c_str()); + lilv_world_load_bundle(world, node); + lilv_node_free(node); } + } delete (plugin_objects); + + _bundle_checked = true; } } -- cgit v1.2.3 From 453713178f88649455cc7bcad0087239a369aae6 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Sun, 14 Jul 2013 21:40:20 -0500 Subject: Housekeeping --- libs/ardour/filesystem_paths.cc | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/libs/ardour/filesystem_paths.cc b/libs/ardour/filesystem_paths.cc index d3ec807e1c..73bfaff137 100644 --- a/libs/ardour/filesystem_paths.cc +++ b/libs/ardour/filesystem_paths.cc @@ -86,14 +86,11 @@ user_config_directory () std::string ardour_dll_directory () { - static std::string s; - + std::string s = Glib::getenv("ARDOUR_DLL_PATH"); if (s.empty()) { - s = Glib::getenv("ARDOUR_DLL_PATH"); std::cerr << _("ARDOUR_DLL_PATH not set in environment - exiting\n"); ::exit (1); - } - + } return s; } -- cgit v1.2.3 From 6908ad1053a42bf98bfc576e481424d6a4c073df Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 15 Jul 2013 15:04:20 +0200 Subject: move ardour meter globals into dedicated namespace (TODO meter_patters typedef) --- gtk2_ardour/gain_meter.cc | 1 + gtk2_ardour/meter_patterns.cc | 40 +++++++++++++++++++++++----------------- gtk2_ardour/meter_patterns.h | 8 +++++--- gtk2_ardour/meter_strip.cc | 1 + gtk2_ardour/meterbridge.cc | 1 + gtk2_ardour/mixer_strip.cc | 1 + 6 files changed, 32 insertions(+), 20 deletions(-) diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 36ed5e918e..1148c6b889 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -60,6 +60,7 @@ using namespace Gtkmm2ext; using namespace Gtk; using namespace std; using Gtkmm2ext::Keyboard; +using namespace ArdourMeter; GainMeterBase::GainMeterBase (Session* s, bool horizontal, int fader_length, int fader_girth) : gain_adjustment (gain_to_slider_position_with_max (1.0, Config->get_max_gain()), 0.0, 1.0, 0.01, 0.1) diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index f749927e9a..cb5209d8ea 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -35,18 +35,27 @@ using namespace PBD; using namespace Gtk; using namespace Gtkmm2ext; using namespace std; - +using namespace ArdourMeter; static const int max_pattern_metric_size = 1026; -sigc::signal ResetAllPeakDisplays; -sigc::signal ResetRoutePeakDisplays; -sigc::signal ResetGroupPeakDisplays; -sigc::signal RedrawMetrics; +sigc::signal ArdourMeter::ResetAllPeakDisplays; +sigc::signal ArdourMeter::ResetRoutePeakDisplays; +sigc::signal ArdourMeter::ResetGroupPeakDisplays; +sigc::signal ArdourMeter::RedrawMetrics; + +sigc::signal ArdourMeter::SetMeterTypeMulti; + +namespace ArdourMeter { + typedef std::map TickPatterns; + typedef std::map MetricPatterns; +} -sigc::signal SetMeterTypeMulti; +static ArdourMeter::TickPatterns ticks_patterns; +static ArdourMeter::MetricPatterns metric_patterns; -cairo_pattern_t* + +static cairo_pattern_t* meter_render_ticks (Gtk::Widget& w, vector types) { Glib::RefPtr win (w.get_window()); @@ -195,7 +204,7 @@ meter_render_ticks (Gtk::Widget& w, vector types) } -cairo_pattern_t* +static cairo_pattern_t* meter_render_metrics (Gtk::Widget& w, vector types) { Glib::RefPtr win (w.get_window()); @@ -407,10 +416,8 @@ meter_render_metrics (Gtk::Widget& w, vector types) } -typedef std::map TickPatterns; -static TickPatterns ticks_patterns; - -gint meter_expose_ticks (GdkEventExpose *ev, std::vector types, Gtk::DrawingArea *mta) +gint +ArdourMeter::meter_expose_ticks (GdkEventExpose *ev, std::vector types, Gtk::DrawingArea *mta) { Glib::RefPtr win (mta->get_window()); cairo_t* cr; @@ -446,10 +453,8 @@ gint meter_expose_ticks (GdkEventExpose *ev, std::vector types return true; } -typedef std::map MetricPatterns; -static MetricPatterns metric_patterns; - -gint meter_expose_metrics (GdkEventExpose *ev, std::vector types, Gtk::DrawingArea *mma) +gint +ArdourMeter::meter_expose_metrics (GdkEventExpose *ev, std::vector types, Gtk::DrawingArea *mma) { Glib::RefPtr win (mma->get_window()); cairo_t* cr; @@ -485,7 +490,8 @@ gint meter_expose_metrics (GdkEventExpose *ev, std::vector typ return true; } -void meter_clear_pattern_cache(int which) { +void +ArdourMeter::meter_clear_pattern_cache(int which) { MetricPatterns::iterator i = metric_patterns.begin(); TickPatterns::iterator j = ticks_patterns.begin(); diff --git a/gtk2_ardour/meter_patterns.h b/gtk2_ardour/meter_patterns.h index a664f478f2..9ac8ce308a 100644 --- a/gtk2_ardour/meter_patterns.h +++ b/gtk2_ardour/meter_patterns.h @@ -27,6 +27,9 @@ #include "gtkmm2ext/cairo_widget.h" #include + +namespace ArdourMeter { + extern sigc::signal ResetAllPeakDisplays; extern sigc::signal ResetRoutePeakDisplays; extern sigc::signal ResetGroupPeakDisplays; @@ -34,13 +37,12 @@ extern sigc::signal RedrawMetrics; extern sigc::signal SetMeterTypeMulti; -cairo_pattern_t* meter_render_ticks (Gtk::Widget& w, std::vector types); -cairo_pattern_t* meter_render_metrics (Gtk::Widget& w, std::vector types); - gint meter_expose_ticks (GdkEventExpose *ev, std::vector types, Gtk::DrawingArea *mta); gint meter_expose_metrics (GdkEventExpose *ev, std::vector types, Gtk::DrawingArea *mma); void meter_clear_pattern_cache(int which=7); +} + #endif diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index 88a946585a..c5d32d6680 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -52,6 +52,7 @@ using namespace PBD; using namespace Gtk; using namespace Gtkmm2ext; using namespace std; +using namespace ArdourMeter; PBD::Signal1 MeterStrip::CatchDeletion; PBD::Signal0 MeterStrip::MetricChanged; diff --git a/gtk2_ardour/meterbridge.cc b/gtk2_ardour/meterbridge.cc index 24b21656d1..cdecb36c7c 100644 --- a/gtk2_ardour/meterbridge.cc +++ b/gtk2_ardour/meterbridge.cc @@ -62,6 +62,7 @@ using namespace Gtk; using namespace Glib; using namespace Gtkmm2ext; using namespace std; +using namespace ArdourMeter; using PBD::atoi; diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 98b208f317..cd3185fcbf 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -71,6 +71,7 @@ using namespace PBD; using namespace Gtk; using namespace Gtkmm2ext; using namespace std; +using namespace ArdourMeter; int MixerStrip::scrollbar_height = 0; PBD::Signal1 MixerStrip::CatchDeletion; -- cgit v1.2.3 From 9b1d7fd2f7c9167d9d7b7aa3115497ab65747877 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 15 Jul 2013 14:38:24 +0200 Subject: simplify meter-type context menu in preparation for adding more meter-types --- gtk2_ardour/meter_patterns.cc | 15 +++++++++++++++ gtk2_ardour/meter_patterns.h | 2 ++ gtk2_ardour/meter_strip.cc | 19 +++++++++++-------- gtk2_ardour/mixer_strip.cc | 19 +++++++++++-------- 4 files changed, 39 insertions(+), 16 deletions(-) diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index cb5209d8ea..80655af7b9 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -54,6 +54,21 @@ namespace ArdourMeter { static ArdourMeter::TickPatterns ticks_patterns; static ArdourMeter::MetricPatterns metric_patterns; +const std::string +ArdourMeter::meter_type_string (ARDOUR::MeterType mt) +{ + switch (mt) { + case MeterPeak: + return _("Peak"); + break; + case MeterKrms: + return _("RMS + Peak"); + break; + default: + return _("???"); + break; + } +} static cairo_pattern_t* meter_render_ticks (Gtk::Widget& w, vector types) diff --git a/gtk2_ardour/meter_patterns.h b/gtk2_ardour/meter_patterns.h index 9ac8ce308a..90ef4ec980 100644 --- a/gtk2_ardour/meter_patterns.h +++ b/gtk2_ardour/meter_patterns.h @@ -42,6 +42,8 @@ gint meter_expose_metrics (GdkEventExpose *ev, std::vector typ void meter_clear_pattern_cache(int which=7); +const std::string meter_type_string (ARDOUR::MeterType); + } #endif diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index c5d32d6680..44144114a4 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -571,16 +571,19 @@ MeterStrip::popup_level_meter_menu (GdkEventButton* ev) RadioMenuItem::Group group; _suspend_menu_callbacks = true; - add_level_meter_item (items, group, _("Peak"), MeterPeak); - add_level_meter_item (items, group, _("RMS + Peak"), MeterKrms); + add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterPeak), MeterPeak); + add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterKrms), MeterKrms); + + MeterType cmt = _route->meter_type(); + const std::string cmn = ArdourMeter::meter_type_string(cmt); items.push_back (SeparatorElem()); - items.push_back (MenuElem (_("Change all in Group to Peak"), sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), MeterPeak))); - items.push_back (MenuElem (_("Change all in Group to RMS + Peak"), sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), MeterKrms))); - items.push_back (MenuElem (_("Change all to Peak"), sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), MeterPeak))); - items.push_back (MenuElem (_("Change all to RMS + Peak"), sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), MeterKrms))); - items.push_back (MenuElem (_("Change same track-type to Peak"), sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), MeterPeak))); - items.push_back (MenuElem (_("Change same track-type to RMS + Peak"), sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), MeterKrms))); + items.push_back (MenuElem (string_compose(_("Change all in Group to %1"), cmn), + sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), cmt))); + items.push_back (MenuElem (string_compose(_("Change all to %1"), cmn), + sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), cmt))); + items.push_back (MenuElem (string_compose(_("Change same track-type to %1"), cmn), + sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), cmt))); m->popup (ev->button, ev->time); _suspend_menu_callbacks = false; diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index cd3185fcbf..6128780cf0 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -2133,8 +2133,8 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev) RadioMenuItem::Group tgroup; items.push_back (SeparatorElem()); - add_level_meter_item_type (items, tgroup, _("Peak"), MeterPeak); - add_level_meter_item_type (items, tgroup, _("RMS + Peak"), MeterKrms); + add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterPeak), MeterPeak); + add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterKrms), MeterKrms); int _strip_type; if (_route->is_master()) { @@ -2152,13 +2152,16 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev) _strip_type = 1; } + MeterType cmt = _route->meter_type(); + const std::string cmn = ArdourMeter::meter_type_string(cmt); + items.push_back (SeparatorElem()); - items.push_back (MenuElem (_("Change all in Group to Peak"), sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), MeterPeak))); - items.push_back (MenuElem (_("Change all in Group to RMS + Peak"), sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), MeterKrms))); - items.push_back (MenuElem (_("Change all to Peak"), sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), MeterPeak))); - items.push_back (MenuElem (_("Change all to RMS + Peak"), sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), MeterKrms))); - items.push_back (MenuElem (_("Change same track-type to Peak"), sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), MeterPeak))); - items.push_back (MenuElem (_("Change same track-type to RMS + Peak"), sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), MeterKrms))); + items.push_back (MenuElem (string_compose(_("Change all in Group to %1"), cmn), + sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), cmt))); + items.push_back (MenuElem (string_compose(_("Change all to %1"), cmn), + sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), cmt))); + items.push_back (MenuElem (string_compose(_("Change same track-type to %1"), cmn), + sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), cmt))); m->popup (ev->button, ev->time); _suspend_menu_callbacks = false; -- cgit v1.2.3 From 80aa2574819e947668092c660d767e25a661c6f1 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 15 Jul 2013 15:00:22 +0200 Subject: add VU and IEC meter DSP (from jmeters) --- gtk2_ardour/meter_patterns.cc | 9 ++++ gtk2_ardour/meter_strip.cc | 3 ++ gtk2_ardour/mixer_strip.cc | 3 ++ libs/ardour/ardour/iec1ppmdsp.h | 51 ++++++++++++++++++++ libs/ardour/ardour/iec2ppmdsp.h | 51 ++++++++++++++++++++ libs/ardour/ardour/kmeterdsp.h | 46 ++++++++++++++++++ libs/ardour/ardour/meter.h | 10 +++- libs/ardour/ardour/types.h | 5 +- libs/ardour/ardour/vumeterdsp.h | 49 ++++++++++++++++++++ libs/ardour/iec1ppmdsp.cc | 100 ++++++++++++++++++++++++++++++++++++++++ libs/ardour/iec2ppmdsp.cc | 100 ++++++++++++++++++++++++++++++++++++++++ libs/ardour/kmeterdsp.cc | 23 +++++---- libs/ardour/kmeterdsp.h | 45 ------------------ libs/ardour/meter.cc | 93 ++++++++++++++++++++++++++++++++----- libs/ardour/vumeterdsp.cc | 89 +++++++++++++++++++++++++++++++++++ libs/ardour/wscript | 3 ++ 16 files changed, 610 insertions(+), 70 deletions(-) create mode 100644 libs/ardour/ardour/iec1ppmdsp.h create mode 100644 libs/ardour/ardour/iec2ppmdsp.h create mode 100644 libs/ardour/ardour/kmeterdsp.h create mode 100644 libs/ardour/ardour/vumeterdsp.h create mode 100644 libs/ardour/iec1ppmdsp.cc create mode 100644 libs/ardour/iec2ppmdsp.cc delete mode 100644 libs/ardour/kmeterdsp.h create mode 100644 libs/ardour/vumeterdsp.cc diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index 80655af7b9..ccf24fcefc 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -64,6 +64,15 @@ ArdourMeter::meter_type_string (ARDOUR::MeterType mt) case MeterKrms: return _("RMS + Peak"); break; + case MeterIEC1: + return _("DIN"); + break; + case MeterIEC2: + return _("EBU/BBC"); + break; + case MeterVU: + return _("VU"); + break; default: return _("???"); break; diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index 44144114a4..3a8410867a 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -573,6 +573,9 @@ MeterStrip::popup_level_meter_menu (GdkEventButton* ev) _suspend_menu_callbacks = true; add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterPeak), MeterPeak); add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterKrms), MeterKrms); + add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterIEC1), MeterIEC1); + add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterIEC2), MeterIEC2); + add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterVU), MeterVU); MeterType cmt = _route->meter_type(); const std::string cmn = ArdourMeter::meter_type_string(cmt); diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 6128780cf0..dec072b067 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -2135,6 +2135,9 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev) add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterPeak), MeterPeak); add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterKrms), MeterKrms); + add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterIEC1), MeterIEC1); + add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterIEC2), MeterIEC2); + add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterVU), MeterVU); int _strip_type; if (_route->is_master()) { diff --git a/libs/ardour/ardour/iec1ppmdsp.h b/libs/ardour/ardour/iec1ppmdsp.h new file mode 100644 index 0000000000..58dea97555 --- /dev/null +++ b/libs/ardour/ardour/iec1ppmdsp.h @@ -0,0 +1,51 @@ +/* + Copyright (C) 2012 Fons Adriaensen + Adopted for Ardour 2013 by Robin Gareus + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __IEC1PPMDSP_H +#define __IEC1PPMDSP_H + + +class Iec1ppmdsp +{ +public: + + Iec1ppmdsp (void); + ~Iec1ppmdsp (void); + + void process (float *p, int n); + float read (void); + void reset (); + + static void init (float fsamp); + +private: + + float _z1; // filter state + float _z2; // filter state + float _m; // max value since last read() + bool _res; // flag to reset m + + static float _w1; // attack filter coefficient + static float _w2; // attack filter coefficient + static float _w3; // release filter coefficient + static float _g; // gain factor +}; + + +#endif diff --git a/libs/ardour/ardour/iec2ppmdsp.h b/libs/ardour/ardour/iec2ppmdsp.h new file mode 100644 index 0000000000..3574a8bd3f --- /dev/null +++ b/libs/ardour/ardour/iec2ppmdsp.h @@ -0,0 +1,51 @@ +/* + Copyright (C) 2012 Fons Adriaensen + Adopted for Ardour 2013 by Robin Gareus + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __IEC2PPMDSP_H +#define __IEC2PPMDSP_H + + +class Iec2ppmdsp +{ +public: + + Iec2ppmdsp (void); + ~Iec2ppmdsp (void); + + void process (float *p, int n); + float read (void); + void reset (); + + static void init (float fsamp); + +private: + + float _z1; // filter state + float _z2; // filter state + float _m; // max value since last read() + bool _res; // flag to reset m + + static float _w1; // attack filter coefficient + static float _w2; // attack filter coefficient + static float _w3; // release filter coefficient + static float _g; // gain factor +}; + + +#endif diff --git a/libs/ardour/ardour/kmeterdsp.h b/libs/ardour/ardour/kmeterdsp.h new file mode 100644 index 0000000000..eca3c76695 --- /dev/null +++ b/libs/ardour/ardour/kmeterdsp.h @@ -0,0 +1,46 @@ +/* + Copyright (C) 2008-2011 Fons Adriaensen + Adopted for Ardour 2013 by Robin Gareus + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __KMETERDSP_H +#define __KMETERDSP_H + +class Kmeterdsp +{ +public: + + Kmeterdsp (void); + ~Kmeterdsp (void); + + void process (float *p, int n); + float read (); + void reset (); + + static void init (int fsamp); + +private: + + float _z1; // filter state + float _z2; // filter state + float _rms; // max rms value since last read() + bool _flag; // flag set by read(), resets _rms + + static float _omega; // ballistics filter constant. +}; + +#endif diff --git a/libs/ardour/ardour/meter.h b/libs/ardour/ardour/meter.h index 31ebc76179..4ac140fd04 100644 --- a/libs/ardour/ardour/meter.h +++ b/libs/ardour/ardour/meter.h @@ -23,7 +23,11 @@ #include "ardour/types.h" #include "ardour/processor.h" #include "pbd/fastlog.h" -#include "kmeterdsp.h" + +#include "ardour/kmeterdsp.h" +#include "ardour/iec1ppmdsp.h" +#include "ardour/iec2ppmdsp.h" +#include "ardour/vumeterdsp.h" namespace ARDOUR { @@ -104,7 +108,11 @@ private: std::vector _visible_peak_power; std::vector _max_peak_signal; std::vector _max_peak_power; + std::vector _kmeter; + std::vector _iec1meter; + std::vector _iec2meter; + std::vector _vumeter; MeterType _meter_type; }; diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index 05d6d0b27d..df7209b581 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -181,7 +181,10 @@ namespace ARDOUR { MeterMaxSignal = 0x01, MeterMaxPeak = 0x02, MeterPeak = 0x04, - MeterKrms = 0x08 + MeterKrms = 0x08, + MeterIEC1 = 0x10, + MeterIEC2 = 0x20, + MeterVU = 0x40 }; enum TrackMode { diff --git a/libs/ardour/ardour/vumeterdsp.h b/libs/ardour/ardour/vumeterdsp.h new file mode 100644 index 0000000000..86487e8e8e --- /dev/null +++ b/libs/ardour/ardour/vumeterdsp.h @@ -0,0 +1,49 @@ +/* + Copyright (C) 2012 Fons Adriaensen + Adopted for Ardour 2013 by Robin Gareus + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __VUMETERDSP_H +#define __VUMETERDSP_H + + +class Vumeterdsp +{ +public: + + Vumeterdsp (void); + ~Vumeterdsp (void); + + void process (float *p, int n); + float read (void); + void reset (); + + static void init (float fsamp); + +private: + + float _z1; // filter state + float _z2; // filter state + float _m; // max value since last read() + bool _res; // flag to reset m + + static float _w; // lowpass filter coefficient + static float _g; // gain factor +}; + + +#endif diff --git a/libs/ardour/iec1ppmdsp.cc b/libs/ardour/iec1ppmdsp.cc new file mode 100644 index 0000000000..bed825048f --- /dev/null +++ b/libs/ardour/iec1ppmdsp.cc @@ -0,0 +1,100 @@ +/* + Copyright (C) 2012 Fons Adriaensen + Adopted for Ardour 2013 by Robin Gareus + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include +#include "ardour/iec1ppmdsp.h" + + +float Iec1ppmdsp::_w1; +float Iec1ppmdsp::_w2; +float Iec1ppmdsp::_w3; +float Iec1ppmdsp::_g; + + +Iec1ppmdsp::Iec1ppmdsp (void) : + _z1 (0), + _z2 (0), + _m (0), + _res (true) +{ +} + + +Iec1ppmdsp::~Iec1ppmdsp (void) +{ +} + + +void Iec1ppmdsp::process (float *p, int n) +{ + float z1, z2, m, t; + + z1 = _z1; + z2 = _z2; + m = _res ? 0: _m; + _res = false; + + n /= 4; + while (n--) + { + z1 *= _w3; + z2 *= _w3; + t = fabsf (*p++); + if (t > z1) z1 += _w1 * (t - z1); + if (t > z2) z2 += _w2 * (t - z2); + t = fabsf (*p++); + if (t > z1) z1 += _w1 * (t - z1); + if (t > z2) z2 += _w2 * (t - z2); + t = fabsf (*p++); + if (t > z1) z1 += _w1 * (t - z1); + if (t > z2) z2 += _w2 * (t - z2); + t = fabsf (*p++); + if (t > z1) z1 += _w1 * (t - z1); + if (t > z2) z2 += _w2 * (t - z2); + t = z1 + z2; + if (t > m) m = t; + } + + _z1 = z1 + 1e-10f; + _z2 = z2 + 1e-10f; + _m = m; +} + + +float Iec1ppmdsp::read (void) +{ + _res = true; + return _g * _m; +} + +void Iec1ppmdsp::reset () +{ + _z1 = _z2 = _m = .0f; + _res = true; +} + +void Iec1ppmdsp::init (float fsamp) +{ + _w1 = 450.0f / fsamp; + _w2 = 1300.0f / fsamp; + _w3 = 1.0f - 5.4f / fsamp; + _g = 0.5108f; +} + +/* vi:set ts=8 sts=8 sw=4: */ diff --git a/libs/ardour/iec2ppmdsp.cc b/libs/ardour/iec2ppmdsp.cc new file mode 100644 index 0000000000..76862cccd2 --- /dev/null +++ b/libs/ardour/iec2ppmdsp.cc @@ -0,0 +1,100 @@ +/* + Copyright (C) 2012 Fons Adriaensen + Adopted for Ardour 2013 by Robin Gareus + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include +#include "ardour/iec2ppmdsp.h" + + +float Iec2ppmdsp::_w1; +float Iec2ppmdsp::_w2; +float Iec2ppmdsp::_w3; +float Iec2ppmdsp::_g; + + +Iec2ppmdsp::Iec2ppmdsp (void) : + _z1 (0), + _z2 (0), + _m (0), + _res (true) +{ +} + + +Iec2ppmdsp::~Iec2ppmdsp (void) +{ +} + + +void Iec2ppmdsp::process (float *p, int n) +{ + float z1, z2, m, t; + + z1 = _z1; + z2 = _z2; + m = _res ? 0: _m; + _res = false; + + n /= 4; + while (n--) + { + z1 *= _w3; + z2 *= _w3; + t = fabsf (*p++); + if (t > z1) z1 += _w1 * (t - z1); + if (t > z2) z2 += _w2 * (t - z2); + t = fabsf (*p++); + if (t > z1) z1 += _w1 * (t - z1); + if (t > z2) z2 += _w2 * (t - z2); + t = fabsf (*p++); + if (t > z1) z1 += _w1 * (t - z1); + if (t > z2) z2 += _w2 * (t - z2); + t = fabsf (*p++); + if (t > z1) z1 += _w1 * (t - z1); + if (t > z2) z2 += _w2 * (t - z2); + t = z1 + z2; + if (t > m) m = t; + } + + _z1 = z1 + 1e-10f; + _z2 = z2 + 1e-10f; + _m = m; +} + + +float Iec2ppmdsp::read (void) +{ + _res = true; + return _g * _m; +} + +void Iec2ppmdsp::reset () +{ + _z1 = _z2 = _m = .0f; + _res = true; +} + +void Iec2ppmdsp::init (float fsamp) +{ + _w1 = 200.0f / fsamp; + _w2 = 860.0f / fsamp; + _w3 = 1.0f - 4.0f / fsamp; + _g = 0.5141f; +} + +/* vi:set ts=8 sts=8 sw=4: */ diff --git a/libs/ardour/kmeterdsp.cc b/libs/ardour/kmeterdsp.cc index 77d1a87a81..2490ae34ec 100644 --- a/libs/ardour/kmeterdsp.cc +++ b/libs/ardour/kmeterdsp.cc @@ -1,6 +1,6 @@ /* Copyright (C) 2008-2011 Fons Adriaensen - Adopted for Ardour 2013 by Robin Gareus + Adopted for Ardour 2013 by Robin Gareus This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,12 +17,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - #include -#include "kmeterdsp.h" +#include "ardour/kmeterdsp.h" + float Kmeterdsp::_omega; + Kmeterdsp::Kmeterdsp (void) : _z1 (0), _z2 (0), @@ -36,6 +37,10 @@ Kmeterdsp::~Kmeterdsp (void) { } +void Kmeterdsp::init (int fsamp) +{ + _omega = 9.72f / fsamp; // ballistic filter coefficient +} void Kmeterdsp::process (float *p, int n) { @@ -93,7 +98,6 @@ void Kmeterdsp::process (float *p, int n) if (s > _rms) _rms = s; } - /* Returns highest _rms value since last call */ float Kmeterdsp::read () { @@ -102,15 +106,10 @@ float Kmeterdsp::read () return rv; } -void Kmeterdsp::init (int fsamp) -{ - _omega = 9.72f / fsamp; // ballistic filter coefficient -} - void Kmeterdsp::reset () { - _z1 = _z2 = _rms = 0.0; - _flag=false; + _z1 = _z2 = _rms = .0f; + _flag = false; } -/* vi:set ts=8 sts=8 sw=8: */ +/* vi:set ts=8 sts=8 sw=4: */ diff --git a/libs/ardour/kmeterdsp.h b/libs/ardour/kmeterdsp.h deleted file mode 100644 index 9c2309e09c..0000000000 --- a/libs/ardour/kmeterdsp.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - Copyright (C) 2008-2011 Fons Adriaensen - Adopted for Ardour 2013 by Robin Gareus - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef __KMETERDSP_H -#define __KMETERDSP_H - -class Kmeterdsp -{ -public: - - Kmeterdsp (void); - ~Kmeterdsp (void); - - void process (float *p, int n); - float read (); - static void init (int fsamp); - void reset (); - -private: - - float _z1; // filter state - float _z2; // filter state - float _rms; // max rms value since last read() - bool _flag; // flag set by read(), resets _rms - - static float _omega; // ballistics filter constant. -}; - -#endif diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc index f239a1c4b7..383a5bdfad 100644 --- a/libs/ardour/meter.cc +++ b/libs/ardour/meter.cc @@ -40,13 +40,22 @@ PeakMeter::PeakMeter (Session& s, const std::string& name) : Processor (s, string_compose ("meter-%1", name)) { Kmeterdsp::init(s.nominal_frame_rate()); + Iec1ppmdsp::init(s.nominal_frame_rate()); + Iec2ppmdsp::init(s.nominal_frame_rate()); + Vumeterdsp::init(s.nominal_frame_rate()); } PeakMeter::~PeakMeter () { while (_kmeter.size() > 0) { delete (_kmeter.back()); + delete (_iec1meter.back()); + delete (_iec2meter.back()); + delete (_vumeter.back()); _kmeter.pop_back(); + _iec1meter.pop_back(); + _iec2meter.pop_back(); + _vumeter.pop_back(); } } @@ -100,6 +109,15 @@ PeakMeter::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end_fr if (_meter_type & MeterKrms) { _kmeter[i]->process(bufs.get_audio(i).data(), nframes); } + if (_meter_type & MeterIEC1) { + _iec1meter[i]->process(bufs.get_audio(i).data(), nframes); + } + if (_meter_type & MeterIEC2) { + _iec2meter[i]->process(bufs.get_audio(i).data(), nframes); + } + if (_meter_type & MeterVU) { + _vumeter[i]->process(bufs.get_audio(i).data(), nframes); + } } // Zero any excess peaks @@ -167,6 +185,9 @@ PeakMeter::reflect_inputs (const ChanCount& in) for (size_t n = 0; n < n_audio; ++n) { _kmeter[n]->reset(); + _iec1meter[n]->reset(); + _iec2meter[n]->reset(); + _vumeter[n]->reset(); } reset_max(); @@ -202,12 +223,24 @@ PeakMeter::reset_max_channels (const ChanCount& chn) /* alloc/free other audio-only meter types. */ while (_kmeter.size() > n_audio) { delete (_kmeter.back()); + delete (_iec1meter.back()); + delete (_iec2meter.back()); + delete (_vumeter.back()); _kmeter.pop_back(); + _iec1meter.pop_back(); + _iec2meter.pop_back(); + _vumeter.pop_back(); } while (_kmeter.size() < n_audio) { _kmeter.push_back(new Kmeterdsp()); + _iec1meter.push_back(new Iec1ppmdsp()); + _iec2meter.push_back(new Iec2ppmdsp()); + _vumeter.push_back(new Vumeterdsp()); } assert(_kmeter.size() == n_audio); + assert(_iec1meter.size() == n_audio); + assert(_iec2meter.size() == n_audio); + assert(_vumeter.size() == n_audio); } /** To be driven by the Meter signal from IO. @@ -279,32 +312,51 @@ PeakMeter::meter_level(uint32_t n, MeterType type) { switch (type) { case MeterKrms: { - const uint32_t n_midi = current_meters.n_midi(); + const uint32_t n_midi = current_meters.n_midi(); if ((n - n_midi) < _kmeter.size() && (n - n_midi) >= 0) { -#if 0 - return fast_coefficient_to_dB (_kmeter[n-n_midi]->read()); -#else - return accurate_coefficient_to_dB (_kmeter[n-n_midi]->read()); -#endif + return accurate_coefficient_to_dB (_kmeter[n - n_midi]->read()); + } + } + break; + case MeterIEC1: + { + const uint32_t n_midi = current_meters.n_midi(); + if ((n - n_midi) < _iec1meter.size() && (n - n_midi) >= 0) { + return accurate_coefficient_to_dB (_iec1meter[n - n_midi]->read()); + } + } + break; + case MeterIEC2: + { + const uint32_t n_midi = current_meters.n_midi(); + if ((n - n_midi) < _iec2meter.size() && (n - n_midi) >= 0) { + return accurate_coefficient_to_dB (_iec2meter[n - n_midi]->read()); } - return minus_infinity(); } + break; + case MeterVU: + { + const uint32_t n_midi = current_meters.n_midi(); + if ((n - n_midi) < _vumeter.size() && (n - n_midi) >= 0) { + return accurate_coefficient_to_dB (_vumeter[n - n_midi]->read()); + } + } + break; case MeterPeak: return peak_power(n); case MeterMaxSignal: if (n < _max_peak_signal.size()) { return _max_peak_signal[n]; - } else { - return minus_infinity(); } + break; default: case MeterMaxPeak: if (n < _max_peak_power.size()) { return _max_peak_power[n]; - } else { - return minus_infinity(); } + break; } + return minus_infinity(); } void @@ -322,6 +374,25 @@ PeakMeter::set_type(MeterType t) _kmeter[n]->reset(); } } + if (t & MeterIEC1) { + const size_t n_audio = current_meters.n_audio(); + for (size_t n = 0; n < n_audio; ++n) { + _iec1meter[n]->reset(); + } + } + if (t & MeterIEC2) { + const size_t n_audio = current_meters.n_audio(); + for (size_t n = 0; n < n_audio; ++n) { + _iec2meter[n]->reset(); + } + } + if (t & MeterVU) { + const size_t n_audio = current_meters.n_audio(); + for (size_t n = 0; n < n_audio; ++n) { + _vumeter[n]->reset(); + } + } + TypeChanged(t); } diff --git a/libs/ardour/vumeterdsp.cc b/libs/ardour/vumeterdsp.cc new file mode 100644 index 0000000000..67d48f6c54 --- /dev/null +++ b/libs/ardour/vumeterdsp.cc @@ -0,0 +1,89 @@ +/* + Copyright (C) 2012 Fons Adriaensen + Adopted for Ardour 2013 by Robin Gareus + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include +#include "ardour/vumeterdsp.h" + + +float Vumeterdsp::_w; +float Vumeterdsp::_g; + + +Vumeterdsp::Vumeterdsp (void) : + _z1 (0), + _z2 (0), + _m (0), + _res (true) +{ +} + + +Vumeterdsp::~Vumeterdsp (void) +{ +} + + +void Vumeterdsp::process (float *p, int n) +{ + float z1, z2, m, t1, t2; + + z1 = _z1; + z2 = _z2; + m = _res ? 0: _m; + _res = false; + + n /= 4; + while (n--) + { + t2 = z2 / 2; + t1 = fabsf (*p++) - t2; + z1 += _w * (t1 - z1); + t1 = fabsf (*p++) - t2; + z1 += _w * (t1 - z1); + t1 = fabsf (*p++) - t2; + z1 += _w * (t1 - z1); + t1 = fabsf (*p++) - t2; + z1 += _w * (t1 - z1); + z2 += 4 * _w * (z1 - z2); + if (z2 > m) m = z2; + } + + _z1 = z1; + _z2 = z2 + 1e-10f; + _m = m; +} + + +float Vumeterdsp::read (void) +{ + _res = true; + return _g * _m; +} + +void Vumeterdsp::reset () +{ + _z1 = _z2 = _m = .0f; + _res = true; +} + +void Vumeterdsp::init (float fsamp) +{ + _w = 11.1f / fsamp; + _g = 1.5f * 1.571f; +} diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 4e7e23aa1a..ea08636ea8 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -91,6 +91,8 @@ libardour_sources = [ 'globals.cc', 'graph.cc', 'graphnode.cc', + 'iec1ppmdsp.cc', + 'iec2ppmdsp.cc', 'import.cc', 'instrument_info.cc', 'internal_return.cc', @@ -206,6 +208,7 @@ libardour_sources = [ 'user_bundle.cc', 'utils.cc', 'version.cc', + 'vumeterdsp.cc', 'worker.cc' ] -- cgit v1.2.3 From ce621d1c8a600853be0020942a9664ccee0ab165 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 15 Jul 2013 15:12:15 +0200 Subject: add new meter-type enums (amend 80aa2574) --- libs/ardour/enums.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc index 495ff0b4c3..12eb59ce65 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -177,6 +177,9 @@ setup_enum_writer () REGISTER_ENUM (MeterMaxPeak); REGISTER_ENUM (MeterPeak); REGISTER_ENUM (MeterKrms); + REGISTER_ENUM (MeterIEC1); + REGISTER_ENUM (MeterIEC2); + REGISTER_ENUM (MeterVU); REGISTER (_MeterType); REGISTER_ENUM (Normal); -- cgit v1.2.3 From d80f672e8487f459d76ab291958bffcded08f0fd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 15 Jul 2013 16:07:37 +0200 Subject: Revert new meter types (postponed until after 3.3 release) This reverts commit ce621d1c8a600853be0020942a9664ccee0ab165. This reverts commit 80aa2574819e947668092c660d767e25a661c6f1. --- gtk2_ardour/meter_patterns.cc | 9 ---- gtk2_ardour/meter_strip.cc | 3 -- gtk2_ardour/mixer_strip.cc | 3 -- libs/ardour/ardour/iec1ppmdsp.h | 51 -------------------- libs/ardour/ardour/iec2ppmdsp.h | 51 -------------------- libs/ardour/ardour/kmeterdsp.h | 46 ------------------ libs/ardour/ardour/meter.h | 10 +--- libs/ardour/ardour/types.h | 5 +- libs/ardour/ardour/vumeterdsp.h | 49 -------------------- libs/ardour/enums.cc | 3 -- libs/ardour/iec1ppmdsp.cc | 100 ---------------------------------------- libs/ardour/iec2ppmdsp.cc | 100 ---------------------------------------- libs/ardour/kmeterdsp.cc | 23 ++++----- libs/ardour/kmeterdsp.h | 45 ++++++++++++++++++ libs/ardour/meter.cc | 93 +++++-------------------------------- libs/ardour/vumeterdsp.cc | 89 ----------------------------------- libs/ardour/wscript | 3 -- 17 files changed, 70 insertions(+), 613 deletions(-) delete mode 100644 libs/ardour/ardour/iec1ppmdsp.h delete mode 100644 libs/ardour/ardour/iec2ppmdsp.h delete mode 100644 libs/ardour/ardour/kmeterdsp.h delete mode 100644 libs/ardour/ardour/vumeterdsp.h delete mode 100644 libs/ardour/iec1ppmdsp.cc delete mode 100644 libs/ardour/iec2ppmdsp.cc create mode 100644 libs/ardour/kmeterdsp.h delete mode 100644 libs/ardour/vumeterdsp.cc diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index ccf24fcefc..80655af7b9 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -64,15 +64,6 @@ ArdourMeter::meter_type_string (ARDOUR::MeterType mt) case MeterKrms: return _("RMS + Peak"); break; - case MeterIEC1: - return _("DIN"); - break; - case MeterIEC2: - return _("EBU/BBC"); - break; - case MeterVU: - return _("VU"); - break; default: return _("???"); break; diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index 3a8410867a..44144114a4 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -573,9 +573,6 @@ MeterStrip::popup_level_meter_menu (GdkEventButton* ev) _suspend_menu_callbacks = true; add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterPeak), MeterPeak); add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterKrms), MeterKrms); - add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterIEC1), MeterIEC1); - add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterIEC2), MeterIEC2); - add_level_meter_item (items, group, ArdourMeter::meter_type_string(MeterVU), MeterVU); MeterType cmt = _route->meter_type(); const std::string cmn = ArdourMeter::meter_type_string(cmt); diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index dec072b067..6128780cf0 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -2135,9 +2135,6 @@ MixerStrip::popup_level_meter_menu (GdkEventButton* ev) add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterPeak), MeterPeak); add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterKrms), MeterKrms); - add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterIEC1), MeterIEC1); - add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterIEC2), MeterIEC2); - add_level_meter_item_type (items, tgroup, ArdourMeter::meter_type_string(MeterVU), MeterVU); int _strip_type; if (_route->is_master()) { diff --git a/libs/ardour/ardour/iec1ppmdsp.h b/libs/ardour/ardour/iec1ppmdsp.h deleted file mode 100644 index 58dea97555..0000000000 --- a/libs/ardour/ardour/iec1ppmdsp.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright (C) 2012 Fons Adriaensen - Adopted for Ardour 2013 by Robin Gareus - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef __IEC1PPMDSP_H -#define __IEC1PPMDSP_H - - -class Iec1ppmdsp -{ -public: - - Iec1ppmdsp (void); - ~Iec1ppmdsp (void); - - void process (float *p, int n); - float read (void); - void reset (); - - static void init (float fsamp); - -private: - - float _z1; // filter state - float _z2; // filter state - float _m; // max value since last read() - bool _res; // flag to reset m - - static float _w1; // attack filter coefficient - static float _w2; // attack filter coefficient - static float _w3; // release filter coefficient - static float _g; // gain factor -}; - - -#endif diff --git a/libs/ardour/ardour/iec2ppmdsp.h b/libs/ardour/ardour/iec2ppmdsp.h deleted file mode 100644 index 3574a8bd3f..0000000000 --- a/libs/ardour/ardour/iec2ppmdsp.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - Copyright (C) 2012 Fons Adriaensen - Adopted for Ardour 2013 by Robin Gareus - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef __IEC2PPMDSP_H -#define __IEC2PPMDSP_H - - -class Iec2ppmdsp -{ -public: - - Iec2ppmdsp (void); - ~Iec2ppmdsp (void); - - void process (float *p, int n); - float read (void); - void reset (); - - static void init (float fsamp); - -private: - - float _z1; // filter state - float _z2; // filter state - float _m; // max value since last read() - bool _res; // flag to reset m - - static float _w1; // attack filter coefficient - static float _w2; // attack filter coefficient - static float _w3; // release filter coefficient - static float _g; // gain factor -}; - - -#endif diff --git a/libs/ardour/ardour/kmeterdsp.h b/libs/ardour/ardour/kmeterdsp.h deleted file mode 100644 index eca3c76695..0000000000 --- a/libs/ardour/ardour/kmeterdsp.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - Copyright (C) 2008-2011 Fons Adriaensen - Adopted for Ardour 2013 by Robin Gareus - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef __KMETERDSP_H -#define __KMETERDSP_H - -class Kmeterdsp -{ -public: - - Kmeterdsp (void); - ~Kmeterdsp (void); - - void process (float *p, int n); - float read (); - void reset (); - - static void init (int fsamp); - -private: - - float _z1; // filter state - float _z2; // filter state - float _rms; // max rms value since last read() - bool _flag; // flag set by read(), resets _rms - - static float _omega; // ballistics filter constant. -}; - -#endif diff --git a/libs/ardour/ardour/meter.h b/libs/ardour/ardour/meter.h index 4ac140fd04..31ebc76179 100644 --- a/libs/ardour/ardour/meter.h +++ b/libs/ardour/ardour/meter.h @@ -23,11 +23,7 @@ #include "ardour/types.h" #include "ardour/processor.h" #include "pbd/fastlog.h" - -#include "ardour/kmeterdsp.h" -#include "ardour/iec1ppmdsp.h" -#include "ardour/iec2ppmdsp.h" -#include "ardour/vumeterdsp.h" +#include "kmeterdsp.h" namespace ARDOUR { @@ -108,11 +104,7 @@ private: std::vector _visible_peak_power; std::vector _max_peak_signal; std::vector _max_peak_power; - std::vector _kmeter; - std::vector _iec1meter; - std::vector _iec2meter; - std::vector _vumeter; MeterType _meter_type; }; diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index df7209b581..05d6d0b27d 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -181,10 +181,7 @@ namespace ARDOUR { MeterMaxSignal = 0x01, MeterMaxPeak = 0x02, MeterPeak = 0x04, - MeterKrms = 0x08, - MeterIEC1 = 0x10, - MeterIEC2 = 0x20, - MeterVU = 0x40 + MeterKrms = 0x08 }; enum TrackMode { diff --git a/libs/ardour/ardour/vumeterdsp.h b/libs/ardour/ardour/vumeterdsp.h deleted file mode 100644 index 86487e8e8e..0000000000 --- a/libs/ardour/ardour/vumeterdsp.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - Copyright (C) 2012 Fons Adriaensen - Adopted for Ardour 2013 by Robin Gareus - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef __VUMETERDSP_H -#define __VUMETERDSP_H - - -class Vumeterdsp -{ -public: - - Vumeterdsp (void); - ~Vumeterdsp (void); - - void process (float *p, int n); - float read (void); - void reset (); - - static void init (float fsamp); - -private: - - float _z1; // filter state - float _z2; // filter state - float _m; // max value since last read() - bool _res; // flag to reset m - - static float _w; // lowpass filter coefficient - static float _g; // gain factor -}; - - -#endif diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc index 12eb59ce65..495ff0b4c3 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -177,9 +177,6 @@ setup_enum_writer () REGISTER_ENUM (MeterMaxPeak); REGISTER_ENUM (MeterPeak); REGISTER_ENUM (MeterKrms); - REGISTER_ENUM (MeterIEC1); - REGISTER_ENUM (MeterIEC2); - REGISTER_ENUM (MeterVU); REGISTER (_MeterType); REGISTER_ENUM (Normal); diff --git a/libs/ardour/iec1ppmdsp.cc b/libs/ardour/iec1ppmdsp.cc deleted file mode 100644 index bed825048f..0000000000 --- a/libs/ardour/iec1ppmdsp.cc +++ /dev/null @@ -1,100 +0,0 @@ -/* - Copyright (C) 2012 Fons Adriaensen - Adopted for Ardour 2013 by Robin Gareus - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#include -#include "ardour/iec1ppmdsp.h" - - -float Iec1ppmdsp::_w1; -float Iec1ppmdsp::_w2; -float Iec1ppmdsp::_w3; -float Iec1ppmdsp::_g; - - -Iec1ppmdsp::Iec1ppmdsp (void) : - _z1 (0), - _z2 (0), - _m (0), - _res (true) -{ -} - - -Iec1ppmdsp::~Iec1ppmdsp (void) -{ -} - - -void Iec1ppmdsp::process (float *p, int n) -{ - float z1, z2, m, t; - - z1 = _z1; - z2 = _z2; - m = _res ? 0: _m; - _res = false; - - n /= 4; - while (n--) - { - z1 *= _w3; - z2 *= _w3; - t = fabsf (*p++); - if (t > z1) z1 += _w1 * (t - z1); - if (t > z2) z2 += _w2 * (t - z2); - t = fabsf (*p++); - if (t > z1) z1 += _w1 * (t - z1); - if (t > z2) z2 += _w2 * (t - z2); - t = fabsf (*p++); - if (t > z1) z1 += _w1 * (t - z1); - if (t > z2) z2 += _w2 * (t - z2); - t = fabsf (*p++); - if (t > z1) z1 += _w1 * (t - z1); - if (t > z2) z2 += _w2 * (t - z2); - t = z1 + z2; - if (t > m) m = t; - } - - _z1 = z1 + 1e-10f; - _z2 = z2 + 1e-10f; - _m = m; -} - - -float Iec1ppmdsp::read (void) -{ - _res = true; - return _g * _m; -} - -void Iec1ppmdsp::reset () -{ - _z1 = _z2 = _m = .0f; - _res = true; -} - -void Iec1ppmdsp::init (float fsamp) -{ - _w1 = 450.0f / fsamp; - _w2 = 1300.0f / fsamp; - _w3 = 1.0f - 5.4f / fsamp; - _g = 0.5108f; -} - -/* vi:set ts=8 sts=8 sw=4: */ diff --git a/libs/ardour/iec2ppmdsp.cc b/libs/ardour/iec2ppmdsp.cc deleted file mode 100644 index 76862cccd2..0000000000 --- a/libs/ardour/iec2ppmdsp.cc +++ /dev/null @@ -1,100 +0,0 @@ -/* - Copyright (C) 2012 Fons Adriaensen - Adopted for Ardour 2013 by Robin Gareus - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#include -#include "ardour/iec2ppmdsp.h" - - -float Iec2ppmdsp::_w1; -float Iec2ppmdsp::_w2; -float Iec2ppmdsp::_w3; -float Iec2ppmdsp::_g; - - -Iec2ppmdsp::Iec2ppmdsp (void) : - _z1 (0), - _z2 (0), - _m (0), - _res (true) -{ -} - - -Iec2ppmdsp::~Iec2ppmdsp (void) -{ -} - - -void Iec2ppmdsp::process (float *p, int n) -{ - float z1, z2, m, t; - - z1 = _z1; - z2 = _z2; - m = _res ? 0: _m; - _res = false; - - n /= 4; - while (n--) - { - z1 *= _w3; - z2 *= _w3; - t = fabsf (*p++); - if (t > z1) z1 += _w1 * (t - z1); - if (t > z2) z2 += _w2 * (t - z2); - t = fabsf (*p++); - if (t > z1) z1 += _w1 * (t - z1); - if (t > z2) z2 += _w2 * (t - z2); - t = fabsf (*p++); - if (t > z1) z1 += _w1 * (t - z1); - if (t > z2) z2 += _w2 * (t - z2); - t = fabsf (*p++); - if (t > z1) z1 += _w1 * (t - z1); - if (t > z2) z2 += _w2 * (t - z2); - t = z1 + z2; - if (t > m) m = t; - } - - _z1 = z1 + 1e-10f; - _z2 = z2 + 1e-10f; - _m = m; -} - - -float Iec2ppmdsp::read (void) -{ - _res = true; - return _g * _m; -} - -void Iec2ppmdsp::reset () -{ - _z1 = _z2 = _m = .0f; - _res = true; -} - -void Iec2ppmdsp::init (float fsamp) -{ - _w1 = 200.0f / fsamp; - _w2 = 860.0f / fsamp; - _w3 = 1.0f - 4.0f / fsamp; - _g = 0.5141f; -} - -/* vi:set ts=8 sts=8 sw=4: */ diff --git a/libs/ardour/kmeterdsp.cc b/libs/ardour/kmeterdsp.cc index 2490ae34ec..77d1a87a81 100644 --- a/libs/ardour/kmeterdsp.cc +++ b/libs/ardour/kmeterdsp.cc @@ -1,6 +1,6 @@ /* Copyright (C) 2008-2011 Fons Adriaensen - Adopted for Ardour 2013 by Robin Gareus + Adopted for Ardour 2013 by Robin Gareus This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,13 +17,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include -#include "ardour/kmeterdsp.h" +#include +#include "kmeterdsp.h" float Kmeterdsp::_omega; - Kmeterdsp::Kmeterdsp (void) : _z1 (0), _z2 (0), @@ -37,10 +36,6 @@ Kmeterdsp::~Kmeterdsp (void) { } -void Kmeterdsp::init (int fsamp) -{ - _omega = 9.72f / fsamp; // ballistic filter coefficient -} void Kmeterdsp::process (float *p, int n) { @@ -98,6 +93,7 @@ void Kmeterdsp::process (float *p, int n) if (s > _rms) _rms = s; } + /* Returns highest _rms value since last call */ float Kmeterdsp::read () { @@ -106,10 +102,15 @@ float Kmeterdsp::read () return rv; } +void Kmeterdsp::init (int fsamp) +{ + _omega = 9.72f / fsamp; // ballistic filter coefficient +} + void Kmeterdsp::reset () { - _z1 = _z2 = _rms = .0f; - _flag = false; + _z1 = _z2 = _rms = 0.0; + _flag=false; } -/* vi:set ts=8 sts=8 sw=4: */ +/* vi:set ts=8 sts=8 sw=8: */ diff --git a/libs/ardour/kmeterdsp.h b/libs/ardour/kmeterdsp.h new file mode 100644 index 0000000000..9c2309e09c --- /dev/null +++ b/libs/ardour/kmeterdsp.h @@ -0,0 +1,45 @@ +/* + Copyright (C) 2008-2011 Fons Adriaensen + Adopted for Ardour 2013 by Robin Gareus + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#ifndef __KMETERDSP_H +#define __KMETERDSP_H + +class Kmeterdsp +{ +public: + + Kmeterdsp (void); + ~Kmeterdsp (void); + + void process (float *p, int n); + float read (); + static void init (int fsamp); + void reset (); + +private: + + float _z1; // filter state + float _z2; // filter state + float _rms; // max rms value since last read() + bool _flag; // flag set by read(), resets _rms + + static float _omega; // ballistics filter constant. +}; + +#endif diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc index 383a5bdfad..f239a1c4b7 100644 --- a/libs/ardour/meter.cc +++ b/libs/ardour/meter.cc @@ -40,22 +40,13 @@ PeakMeter::PeakMeter (Session& s, const std::string& name) : Processor (s, string_compose ("meter-%1", name)) { Kmeterdsp::init(s.nominal_frame_rate()); - Iec1ppmdsp::init(s.nominal_frame_rate()); - Iec2ppmdsp::init(s.nominal_frame_rate()); - Vumeterdsp::init(s.nominal_frame_rate()); } PeakMeter::~PeakMeter () { while (_kmeter.size() > 0) { delete (_kmeter.back()); - delete (_iec1meter.back()); - delete (_iec2meter.back()); - delete (_vumeter.back()); _kmeter.pop_back(); - _iec1meter.pop_back(); - _iec2meter.pop_back(); - _vumeter.pop_back(); } } @@ -109,15 +100,6 @@ PeakMeter::run (BufferSet& bufs, framepos_t /*start_frame*/, framepos_t /*end_fr if (_meter_type & MeterKrms) { _kmeter[i]->process(bufs.get_audio(i).data(), nframes); } - if (_meter_type & MeterIEC1) { - _iec1meter[i]->process(bufs.get_audio(i).data(), nframes); - } - if (_meter_type & MeterIEC2) { - _iec2meter[i]->process(bufs.get_audio(i).data(), nframes); - } - if (_meter_type & MeterVU) { - _vumeter[i]->process(bufs.get_audio(i).data(), nframes); - } } // Zero any excess peaks @@ -185,9 +167,6 @@ PeakMeter::reflect_inputs (const ChanCount& in) for (size_t n = 0; n < n_audio; ++n) { _kmeter[n]->reset(); - _iec1meter[n]->reset(); - _iec2meter[n]->reset(); - _vumeter[n]->reset(); } reset_max(); @@ -223,24 +202,12 @@ PeakMeter::reset_max_channels (const ChanCount& chn) /* alloc/free other audio-only meter types. */ while (_kmeter.size() > n_audio) { delete (_kmeter.back()); - delete (_iec1meter.back()); - delete (_iec2meter.back()); - delete (_vumeter.back()); _kmeter.pop_back(); - _iec1meter.pop_back(); - _iec2meter.pop_back(); - _vumeter.pop_back(); } while (_kmeter.size() < n_audio) { _kmeter.push_back(new Kmeterdsp()); - _iec1meter.push_back(new Iec1ppmdsp()); - _iec2meter.push_back(new Iec2ppmdsp()); - _vumeter.push_back(new Vumeterdsp()); } assert(_kmeter.size() == n_audio); - assert(_iec1meter.size() == n_audio); - assert(_iec2meter.size() == n_audio); - assert(_vumeter.size() == n_audio); } /** To be driven by the Meter signal from IO. @@ -312,51 +279,32 @@ PeakMeter::meter_level(uint32_t n, MeterType type) { switch (type) { case MeterKrms: { - const uint32_t n_midi = current_meters.n_midi(); + const uint32_t n_midi = current_meters.n_midi(); if ((n - n_midi) < _kmeter.size() && (n - n_midi) >= 0) { - return accurate_coefficient_to_dB (_kmeter[n - n_midi]->read()); - } - } - break; - case MeterIEC1: - { - const uint32_t n_midi = current_meters.n_midi(); - if ((n - n_midi) < _iec1meter.size() && (n - n_midi) >= 0) { - return accurate_coefficient_to_dB (_iec1meter[n - n_midi]->read()); - } - } - break; - case MeterIEC2: - { - const uint32_t n_midi = current_meters.n_midi(); - if ((n - n_midi) < _iec2meter.size() && (n - n_midi) >= 0) { - return accurate_coefficient_to_dB (_iec2meter[n - n_midi]->read()); +#if 0 + return fast_coefficient_to_dB (_kmeter[n-n_midi]->read()); +#else + return accurate_coefficient_to_dB (_kmeter[n-n_midi]->read()); +#endif } + return minus_infinity(); } - break; - case MeterVU: - { - const uint32_t n_midi = current_meters.n_midi(); - if ((n - n_midi) < _vumeter.size() && (n - n_midi) >= 0) { - return accurate_coefficient_to_dB (_vumeter[n - n_midi]->read()); - } - } - break; case MeterPeak: return peak_power(n); case MeterMaxSignal: if (n < _max_peak_signal.size()) { return _max_peak_signal[n]; + } else { + return minus_infinity(); } - break; default: case MeterMaxPeak: if (n < _max_peak_power.size()) { return _max_peak_power[n]; + } else { + return minus_infinity(); } - break; } - return minus_infinity(); } void @@ -374,25 +322,6 @@ PeakMeter::set_type(MeterType t) _kmeter[n]->reset(); } } - if (t & MeterIEC1) { - const size_t n_audio = current_meters.n_audio(); - for (size_t n = 0; n < n_audio; ++n) { - _iec1meter[n]->reset(); - } - } - if (t & MeterIEC2) { - const size_t n_audio = current_meters.n_audio(); - for (size_t n = 0; n < n_audio; ++n) { - _iec2meter[n]->reset(); - } - } - if (t & MeterVU) { - const size_t n_audio = current_meters.n_audio(); - for (size_t n = 0; n < n_audio; ++n) { - _vumeter[n]->reset(); - } - } - TypeChanged(t); } diff --git a/libs/ardour/vumeterdsp.cc b/libs/ardour/vumeterdsp.cc deleted file mode 100644 index 67d48f6c54..0000000000 --- a/libs/ardour/vumeterdsp.cc +++ /dev/null @@ -1,89 +0,0 @@ -/* - Copyright (C) 2012 Fons Adriaensen - Adopted for Ardour 2013 by Robin Gareus - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#include -#include "ardour/vumeterdsp.h" - - -float Vumeterdsp::_w; -float Vumeterdsp::_g; - - -Vumeterdsp::Vumeterdsp (void) : - _z1 (0), - _z2 (0), - _m (0), - _res (true) -{ -} - - -Vumeterdsp::~Vumeterdsp (void) -{ -} - - -void Vumeterdsp::process (float *p, int n) -{ - float z1, z2, m, t1, t2; - - z1 = _z1; - z2 = _z2; - m = _res ? 0: _m; - _res = false; - - n /= 4; - while (n--) - { - t2 = z2 / 2; - t1 = fabsf (*p++) - t2; - z1 += _w * (t1 - z1); - t1 = fabsf (*p++) - t2; - z1 += _w * (t1 - z1); - t1 = fabsf (*p++) - t2; - z1 += _w * (t1 - z1); - t1 = fabsf (*p++) - t2; - z1 += _w * (t1 - z1); - z2 += 4 * _w * (z1 - z2); - if (z2 > m) m = z2; - } - - _z1 = z1; - _z2 = z2 + 1e-10f; - _m = m; -} - - -float Vumeterdsp::read (void) -{ - _res = true; - return _g * _m; -} - -void Vumeterdsp::reset () -{ - _z1 = _z2 = _m = .0f; - _res = true; -} - -void Vumeterdsp::init (float fsamp) -{ - _w = 11.1f / fsamp; - _g = 1.5f * 1.571f; -} diff --git a/libs/ardour/wscript b/libs/ardour/wscript index ea08636ea8..4e7e23aa1a 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -91,8 +91,6 @@ libardour_sources = [ 'globals.cc', 'graph.cc', 'graphnode.cc', - 'iec1ppmdsp.cc', - 'iec2ppmdsp.cc', 'import.cc', 'instrument_info.cc', 'internal_return.cc', @@ -208,7 +206,6 @@ libardour_sources = [ 'user_bundle.cc', 'utils.cc', 'version.cc', - 'vumeterdsp.cc', 'worker.cc' ] -- cgit v1.2.3 From d64d4b881d89acb0caaf8f7becf7bf4ad7341cef Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 12:42:09 -0500 Subject: Fix typo in osx BETA startup screen - Step #2 was being skipped in the text --- gtk2_ardour/startup.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index ca598ba949..82914d79a8 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -197,11 +197,11 @@ it is still at the beta stage on OS X. So, a few guidelines:\n\ \n\ 1) Please do NOT use this software with the expectation that it is stable or reliable\n\ though it may be so, depending on your workflow.\n\ -3) Please do NOT use the forums at ardour.org to report issues.\n\ -4) Please DO use the bugtracker at http://tracker.ardour.org/ to report issues\n\ +2) Please do NOT use the forums at ardour.org to report issues.\n\ +3) Please DO use the bugtracker at http://tracker.ardour.org/ to report issues\n\ making sure to note the product version number as 3.0-beta.\n\ -5) Please DO use the ardour-users mailing list to discuss ideas and pass on comments.\n\ -6) Please DO join us on IRC for real time discussions about ardour3. You\n\ +4) Please DO use the ardour-users mailing list to discuss ideas and pass on comments.\n\ +5) Please DO join us on IRC for real time discussions about ardour3. You\n\ can get there directly from Ardour via the Help->Chat menu option.\n\ \n\ Full information on all the above can be found on the support page at\n\ -- cgit v1.2.3 From abb8d61dea9da9d6560d25427b92b60d74fec109 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 12:48:33 -0500 Subject: Correcting Indentation Errors --- gtk2_ardour/startup.cc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index 82914d79a8..433b80ff92 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -189,9 +189,9 @@ ArdourStartup::ready_without_display () const void ArdourStartup::setup_prerelease_page () { - VBox* vbox = manage (new VBox); - Label* label = manage (new Label); - label->set_markup (_("Welcome to this BETA release of Ardour 3.0\n\n\ + VBox* vbox = manage (new VBox); + Label* label = manage (new Label); + label->set_markup (_("Welcome to this BETA release of Ardour 3.0\n\n\ Ardour 3.0 has been released for Linux but because of the lack of testers,\n\ it is still at the beta stage on OS X. So, a few guidelines:\n\ \n\ @@ -209,13 +209,13 @@ Full information on all the above can be found on the support page at\n\ http://ardour.org/support\n\ ")); - vbox->set_border_width (12); - vbox->pack_start (*label, false, false, 12); - vbox->show_all (); - - append_page (*vbox); - set_page_type (*vbox, ASSISTANT_PAGE_CONTENT); - set_page_title (*vbox, _("This is a BETA RELEASE")); + vbox->set_border_width (12); + vbox->pack_start (*label, false, false, 12); + vbox->show_all (); + + append_page (*vbox); + set_page_type (*vbox, ASSISTANT_PAGE_CONTENT); + set_page_title (*vbox, _("This is a BETA RELEASE")); set_page_complete (*vbox, true); } -- cgit v1.2.3 From 08e6dcde7621c309f3abc2779a196b2b86f19060 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 13:00:35 -0500 Subject: Startup BETA Mac Screen - Pull version number from VERSIONSTRING --- gtk2_ardour/startup.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index 433b80ff92..e7edf5e995 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -191,15 +191,15 @@ ArdourStartup::setup_prerelease_page () { VBox* vbox = manage (new VBox); Label* label = manage (new Label); - label->set_markup (_("Welcome to this BETA release of Ardour 3.0\n\n\ -Ardour 3.0 has been released for Linux but because of the lack of testers,\n\ + label->set_markup (string_compose (_("Welcome to this BETA release of Ardour %1\n\n\ +Ardour %1 has been released for Linux but because of the lack of testers,\n\ it is still at the beta stage on OS X. So, a few guidelines:\n\ \n\ 1) Please do NOT use this software with the expectation that it is stable or reliable\n\ though it may be so, depending on your workflow.\n\ 2) Please do NOT use the forums at ardour.org to report issues.\n\ 3) Please DO use the bugtracker at http://tracker.ardour.org/ to report issues\n\ - making sure to note the product version number as 3.0-beta.\n\ + making sure to note the product version number as %1-beta.\n\ 4) Please DO use the ardour-users mailing list to discuss ideas and pass on comments.\n\ 5) Please DO join us on IRC for real time discussions about ardour3. You\n\ can get there directly from Ardour via the Help->Chat menu option.\n\ @@ -207,7 +207,7 @@ it is still at the beta stage on OS X. So, a few guidelines:\n\ Full information on all the above can be found on the support page at\n\ \n\ http://ardour.org/support\n\ -")); +"), VERSIONSTRING)); vbox->set_border_width (12); vbox->pack_start (*label, false, false, 12); -- cgit v1.2.3 From 9f6d97376da6a29f8386c7e6d2dbdd20f83a867a Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 00:56:36 +0200 Subject: add option to disable cairo-RGBA overlays for meters. --- libs/gtkmm2ext/fastmeter.cc | 11 ++++++++--- libs/gtkmm2ext/gtkmm2ext/fastmeter.h | 2 ++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/libs/gtkmm2ext/fastmeter.cc b/libs/gtkmm2ext/fastmeter.cc index c0bcb05af5..6ea1a6dd4b 100644 --- a/libs/gtkmm2ext/fastmeter.cc +++ b/libs/gtkmm2ext/fastmeter.cc @@ -23,6 +23,8 @@ #include #include +#include + #include #include #include @@ -37,6 +39,7 @@ using namespace std; int FastMeter::min_pattern_metric_size = 16; int FastMeter::max_pattern_metric_size = 1024; +bool FastMeter::no_rgba_overlay = false; FastMeter::Pattern10Map FastMeter::vm_pattern_cache; FastMeter::PatternBgMap FastMeter::vb_pattern_cache; @@ -61,6 +64,7 @@ FastMeter::FastMeter (long hold, unsigned long dimen, Orientation o, int len, last_peak_rect.height = 0; highlight = false; + no_rgba_overlay = ! Glib::getenv("NO_METER_SHADE").empty(); _clr[0] = clr0; _clr[1] = clr1; @@ -173,7 +177,7 @@ FastMeter::generate_meter_pattern ( cairo_pattern_add_color_stop_rgb (pat, 1.0, r/255.0, g/255.0, b/255.0); - if (shade) { + if (shade && !no_rgba_overlay) { cairo_pattern_t* shade_pattern = cairo_pattern_create_linear (0.0, 0.0, width, 0.0); cairo_pattern_add_color_stop_rgba (shade_pattern, 0, 1.0, 1.0, 1.0, 0.2); cairo_pattern_add_color_stop_rgba (shade_pattern, 1, 0.0, 0.0, 0.0, 0.3); @@ -221,7 +225,7 @@ FastMeter::generate_meter_background ( cairo_pattern_add_color_stop_rgb (pat, 1.0, r0/255.0, g0/255.0, b0/255.0); - if (shade) { + if (shade && !no_rgba_overlay) { cairo_pattern_t* shade_pattern = cairo_pattern_create_linear (0.0, 0.0, width, 0.0); cairo_pattern_add_color_stop_rgba (shade_pattern, 0.0, 1.0, 1.0, 1.0, 0.15); cairo_pattern_add_color_stop_rgba (shade_pattern, 0.6, 0.0, 0.0, 0.0, 0.10); @@ -417,7 +421,8 @@ FastMeter::vertical_expose (GdkEventExpose* ev) cairo_set_source (cr, fgpattern->cobj()); cairo_rectangle (cr, 1, last_peak_rect.y, pixwidth, last_peak_rect.height); - if (bright_hold) { + + if (bright_hold && !no_rgba_overlay) { cairo_fill_preserve (cr); cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.3); } diff --git a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h index f065020a57..15c962deb4 100644 --- a/libs/gtkmm2ext/gtkmm2ext/fastmeter.h +++ b/libs/gtkmm2ext/gtkmm2ext/fastmeter.h @@ -96,6 +96,8 @@ private: bool vertical_expose (GdkEventExpose*); void queue_vertical_redraw (const Glib::RefPtr&, float); + static bool no_rgba_overlay; + static Cairo::RefPtr generate_meter_pattern ( int w, int h, int *clr, float *stp, bool shade); static Cairo::RefPtr request_vertical_meter ( -- cgit v1.2.3 From 332deec1553ceabd6716af9797a965a80ad9dfed Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 15 Jul 2013 20:04:37 -0400 Subject: tweaks to NO_PLUGIN_STATE logic --- libs/ardour/plugin.cc | 2 +- libs/ardour/route.cc | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/libs/ardour/plugin.cc b/libs/ardour/plugin.cc index e76353e8d5..9b2170c349 100644 --- a/libs/ardour/plugin.cc +++ b/libs/ardour/plugin.cc @@ -395,7 +395,7 @@ Plugin::get_state () add_state (root); #else if (!seen_get_state_message) { - info << string_compose (_("Saving AudioUnit settings is not supported in this build of %1. Consider paying for a newer version"), + info << string_compose (_("Saving plugin settings is not supported in this build of %1. Consider paying for the full version"), PROGRAM_NAME) << endmsg; seen_get_state_message = true; diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index e87cb4b03f..9d7dc8792b 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -2558,21 +2558,25 @@ Route::set_processor_state (const XMLNode& node) continue; } -#ifndef NO_PLUGIN_STATE - if (processor->set_state (**niter, Stateful::current_state_version) != 0) { - /* This processor could not be configured. Turn it into a UnknownProcessor */ - processor.reset (new UnknownProcessor (_session, **niter)); - } -#else if (boost::dynamic_pointer_cast(processor)) { +#ifndef NO_PLUGIN_STATE if (processor->set_state (**niter, Stateful::current_state_version) != 0) { /* This processor could not be configured. Turn it into a UnknownProcessor */ processor.reset (new UnknownProcessor (_session, **niter)); } +#else + /* plugin, with NO_PLUGIN_STATE defined + * =>::set_state() not allowed. Do not + * display a message here - things will + * get too verbose. + */ +#endif } else { - /* plugin, but ::set_state() not * allowed no message here - things will get too verbose */ + if (processor->set_state (**niter, Stateful::current_state_version) != 0) { + /* This processor could not be configured. Turn it into a UnknownProcessor */ + processor.reset (new UnknownProcessor (_session, **niter)); + } } -#endif /* we have to note the monitor send here, otherwise a new one will be created and the state of this one will be lost. -- cgit v1.2.3 From 90f5eb4a31bebeb315d4c36f20b1aefe110657d0 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 15 Jul 2013 20:35:31 -0400 Subject: more plugin state debugging --- libs/ardour/route.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 9d7dc8792b..d48fbeff96 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -2559,12 +2559,15 @@ Route::set_processor_state (const XMLNode& node) } if (boost::dynamic_pointer_cast(processor)) { + cerr << "Working on plugin processor state for " << processor->name() << endl; #ifndef NO_PLUGIN_STATE + cerr << "plugin state allowed\n"; if (processor->set_state (**niter, Stateful::current_state_version) != 0) { /* This processor could not be configured. Turn it into a UnknownProcessor */ processor.reset (new UnknownProcessor (_session, **niter)); } #else + cerr << "plugin state dis-allowed\n"; /* plugin, with NO_PLUGIN_STATE defined * =>::set_state() not allowed. Do not * display a message here - things will -- cgit v1.2.3 From 9cb678ebcc2ca0c7993bdd182c9e6ad1f8adf09a Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 15 Jul 2013 22:23:16 -0400 Subject: finally get to the bottom of where NO_PLUGIN_STATE needs to be in order to be useful --- libs/ardour/audio_unit.cc | 2 ++ libs/ardour/ladspa_plugin.cc | 10 ++++++++++ libs/ardour/lv2_plugin.cc | 3 +++ libs/ardour/plugin_insert.cc | 6 ++++++ libs/ardour/route.cc | 24 +++--------------------- libs/ardour/vst_plugin.cc | 4 +++- 6 files changed, 27 insertions(+), 22 deletions(-) diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index 0e9a11e6df..20a55e49f9 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -1717,6 +1717,7 @@ AUPlugin::set_state(const XMLNode& node, int version) return -1; } +#ifndef NO_PLUGIN_STATE if (node.children().empty()) { return -1; } @@ -1752,6 +1753,7 @@ AUPlugin::set_state(const XMLNode& node, int version) } CFRelease (propertyList); } +#endif Plugin::set_state (node, version); return ret; diff --git a/libs/ardour/ladspa_plugin.cc b/libs/ardour/ladspa_plugin.cc index cebff59771..1ab00e0b34 100644 --- a/libs/ardour/ladspa_plugin.cc +++ b/libs/ardour/ladspa_plugin.cc @@ -34,6 +34,7 @@ #include "pbd/compose.h" #include "pbd/error.h" #include "pbd/xml++.h" +#include "pbd/stacktrace.h" #include "midi++/manager.h" @@ -360,6 +361,7 @@ LadspaPlugin::set_state (const XMLNode& node, int version) return set_state_2X (node, version); } +#ifndef NO_PLUGIN_STATE XMLNodeList nodes; XMLProperty *prop; XMLNodeConstIterator iter; @@ -367,6 +369,7 @@ LadspaPlugin::set_state (const XMLNode& node, int version) const char *port; const char *data; uint32_t port_id; +#endif LocaleGuard lg (X_("POSIX")); if (node.name() != state_node_name()) { @@ -374,6 +377,8 @@ LadspaPlugin::set_state (const XMLNode& node, int version) return -1; } +#ifndef NO_PLUGIN_STATE + nodes = node.children ("Port"); for (iter = nodes.begin(); iter != nodes.end(); ++iter) { @@ -396,6 +401,7 @@ LadspaPlugin::set_state (const XMLNode& node, int version) sscanf (port, "%" PRIu32, &port_id); set_parameter (port_id, atof(data)); } +#endif latency_compute_run (); @@ -405,6 +411,7 @@ LadspaPlugin::set_state (const XMLNode& node, int version) int LadspaPlugin::set_state_2X (const XMLNode& node, int /* version */) { +#ifndef NO_PLUGIN_STATE XMLNodeList nodes; XMLProperty *prop; XMLNodeConstIterator iter; @@ -412,6 +419,7 @@ LadspaPlugin::set_state_2X (const XMLNode& node, int /* version */) const char *port; const char *data; uint32_t port_id; +#endif LocaleGuard lg (X_("POSIX")); if (node.name() != state_node_name()) { @@ -419,6 +427,7 @@ LadspaPlugin::set_state_2X (const XMLNode& node, int /* version */) return -1; } +#ifndef NO_PLUGIN_STATE nodes = node.children ("port"); for(iter = nodes.begin(); iter != nodes.end(); ++iter){ @@ -443,6 +452,7 @@ LadspaPlugin::set_state_2X (const XMLNode& node, int /* version */) } latency_compute_run (); +#endif return 0; } diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc index df33e6c38d..5ea76934a5 100644 --- a/libs/ardour/lv2_plugin.cc +++ b/libs/ardour/lv2_plugin.cc @@ -1233,6 +1233,8 @@ LV2Plugin::set_state(const XMLNode& node, int version) return -1; } +#ifndef NO_PLUGIN_STATE + if (version < 3000) { nodes = node.children("port"); } else { @@ -1288,6 +1290,7 @@ LV2Plugin::set_state(const XMLNode& node, int version) } latency_compute_run(); +#endif return Plugin::set_state(node, version); } diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index 23cebf4276..998a03e3aa 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -882,7 +882,12 @@ PluginInsert::set_control_ids (const XMLNode& node, int version) if ((prop = (*iter)->property (X_("parameter"))) != 0) { uint32_t p = atoi (prop->value()); + + /* this may create the new controllable */ + boost::shared_ptr c = control (Evoral::Parameter (PluginAutomation, 0, p)); + +#ifndef NO_PLUGIN_STATE if (!c) { continue; } @@ -890,6 +895,7 @@ PluginInsert::set_control_ids (const XMLNode& node, int version) if (ac) { ac->set_state (**iter, version); } +#endif } } } diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index d48fbeff96..dad1922488 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -2558,27 +2558,9 @@ Route::set_processor_state (const XMLNode& node) continue; } - if (boost::dynamic_pointer_cast(processor)) { - cerr << "Working on plugin processor state for " << processor->name() << endl; -#ifndef NO_PLUGIN_STATE - cerr << "plugin state allowed\n"; - if (processor->set_state (**niter, Stateful::current_state_version) != 0) { - /* This processor could not be configured. Turn it into a UnknownProcessor */ - processor.reset (new UnknownProcessor (_session, **niter)); - } -#else - cerr << "plugin state dis-allowed\n"; - /* plugin, with NO_PLUGIN_STATE defined - * =>::set_state() not allowed. Do not - * display a message here - things will - * get too verbose. - */ -#endif - } else { - if (processor->set_state (**niter, Stateful::current_state_version) != 0) { - /* This processor could not be configured. Turn it into a UnknownProcessor */ - processor.reset (new UnknownProcessor (_session, **niter)); - } + if (processor->set_state (**niter, Stateful::current_state_version) != 0) { + /* This processor could not be configured. Turn it into a UnknownProcessor */ + processor.reset (new UnknownProcessor (_session, **niter)); } /* we have to note the monitor send here, otherwise a new one will be created diff --git a/libs/ardour/vst_plugin.cc b/libs/ardour/vst_plugin.cc index c385e71a5a..b80a594495 100644 --- a/libs/ardour/vst_plugin.cc +++ b/libs/ardour/vst_plugin.cc @@ -197,14 +197,15 @@ int VSTPlugin::set_state (const XMLNode& node, int version) { LocaleGuard lg (X_("POSIX")); + int ret = -1; if (node.name() != state_node_name()) { error << _("Bad node sent to VSTPlugin::set_state") << endmsg; return 0; } +#ifndef NO_PLUGIN_STATE XMLNode* child; - int ret = -1; if ((child = find_named_node (node, X_("chunk"))) != 0) { @@ -237,6 +238,7 @@ VSTPlugin::set_state (const XMLNode& node, int version) ret = 0; } +#endif Plugin::set_state (node, version); return ret; -- cgit v1.2.3 From 7f6765ece4391cfed18577a92dd15c16da9fefe1 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:35:20 -0500 Subject: OSX GUI - Prevent compiler errors when -std=c++11 is switched on --- gtk2_ardour/au_pluginui.mm | 2 +- gtk2_ardour/cocoacarbon.mm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/au_pluginui.mm b/gtk2_ardour/au_pluginui.mm index 7bebcee84f..bbae272116 100644 --- a/gtk2_ardour/au_pluginui.mm +++ b/gtk2_ardour/au_pluginui.mm @@ -658,7 +658,7 @@ AUPluginUI::parent_cocoa_window () /* move the au_view down so that it doesn't overlap the top_box contents */ - NSPoint origin = { 0, a.height }; + NSPoint origin = { 0, static_cast (a.height) }; [au_view setFrameOrigin:origin]; [view addSubview:au_view positioned:NSWindowBelow relativeTo:nil]; diff --git a/gtk2_ardour/cocoacarbon.mm b/gtk2_ardour/cocoacarbon.mm index 072008e9a1..76b92cb91f 100644 --- a/gtk2_ardour/cocoacarbon.mm +++ b/gtk2_ardour/cocoacarbon.mm @@ -112,7 +112,7 @@ set_language_preference () break; } } - NSRange r = { 0, count }; + NSRange r = { 0, static_cast (count) }; setenv ("LANGUAGE", [[[languages subarrayWithRange:r] componentsJoinedByString:@":"] UTF8String], 0); cout << "LANGUAGE set to " << getenv ("LANGUAGE") << endl; } -- cgit v1.2.3 From 5e739dbfc1ee5b631c285c68f69327951db53494 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:38:54 -0500 Subject: Typo fixed: call class method instead of trying to use as a variable --- libs/evoral/evoral/PatchChange.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/evoral/evoral/PatchChange.hpp b/libs/evoral/evoral/PatchChange.hpp index b1a42c6f2e..53b50a3383 100644 --- a/libs/evoral/evoral/PatchChange.hpp +++ b/libs/evoral/evoral/PatchChange.hpp @@ -123,7 +123,7 @@ public: return time() < o.time(); } - if (bank != o.bank()) { + if (bank() != o.bank()) { return bank() < o.bank(); } -- cgit v1.2.3 From 3e11c80ac3adc2679b013e0d24746e4cc6308a1c Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:42:20 -0500 Subject: C++11 Building - Add space between macros and quoted strings --- gtk2_ardour/audio_clock.cc | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc index a0b48b3557..12d3a1642f 100644 --- a/gtk2_ardour/audio_clock.cc +++ b/gtk2_ardour/audio_clock.cc @@ -997,18 +997,18 @@ AudioClock::set_slave_info () switch (sync_src) { case JACK: - _left_layout->set_markup (string_compose (""TXTSPAN"%2", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, sync_source_to_string(sync_src, true))); _right_layout->set_text (""); break; case MIDIClock: if (slave) { - _left_layout->set_markup (string_compose (""TXTSPAN"%2", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, sync_source_to_string(sync_src, true))); - _right_layout->set_markup (string_compose (""TXTSPAN"%2", + _right_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, slave->approximate_current_delta())); } else { - _left_layout->set_markup (string_compose (""TXTSPAN"%2", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, _("--pending--"))); _right_layout->set_text (""); } @@ -1020,21 +1020,21 @@ AudioClock::set_slave_info () TimecodeSlave* tcslave; if ((tcslave = dynamic_cast(_session->slave())) != 0) { matching = (tcslave->apparent_timecode_format() == _session->config.get_timecode_format()); - _left_layout->set_markup (string_compose (""TXTSPAN"%2%4", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2%4", INFO_FONT_SIZE, sync_source_to_string(sync_src, true)[0], (matching?"green":"red"), dynamic_cast(slave)->approximate_current_position())); - _right_layout->set_markup (string_compose (""TXTSPAN"%2", + _right_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, slave->approximate_current_delta())); } } else { - _left_layout->set_markup (string_compose (""TXTSPAN"%2", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2", INFO_FONT_SIZE, _("--pending--"))); _right_layout->set_text (""); } break; } } else { - _left_layout->set_markup (string_compose (""TXTSPAN"INT/%2", + _left_layout->set_markup (string_compose ("" TXTSPAN "INT/%2", INFO_FONT_SIZE, sync_source_to_string(sync_src, true))); _right_layout->set_text (""); } @@ -1079,17 +1079,17 @@ AudioClock::set_frames (framepos_t when, bool /*force*/) sprintf (buf, "%" PRId64 "Hz", rate); } - _left_layout->set_markup (string_compose (""TXTSPAN"%2 %3", + _left_layout->set_markup (string_compose ("" TXTSPAN "%2 %3", INFO_FONT_SIZE, _("SR"), buf)); float vid_pullup = _session->config.get_video_pullup(); if (vid_pullup == 0.0) { - _right_layout->set_markup (string_compose (""TXTSPAN"%2 off", + _right_layout->set_markup (string_compose ("" TXTSPAN "%2 off", INFO_FONT_SIZE, _("Pull"))); } else { sprintf (buf, _("%+.4f%%"), vid_pullup); - _right_layout->set_markup (string_compose (""TXTSPAN"%2 %3", + _right_layout->set_markup (string_compose ("" TXTSPAN "%2 %3", INFO_FONT_SIZE, _("Pull"), buf)); } } @@ -1233,11 +1233,11 @@ AudioClock::set_bbt (framepos_t when, bool /*force*/) TempoMetric m (_session->tempo_map().metric_at (pos)); sprintf (buf, "%-5.1f", m.tempo().beats_per_minute()); - _left_layout->set_markup (string_compose (""TXTSPAN"%3 %2", + _left_layout->set_markup (string_compose ("" TXTSPAN "%3 %2", INFO_FONT_SIZE, buf, _("Tempo"))); sprintf (buf, "%g/%g", m.meter().divisions_per_bar(), m.meter().note_divisor()); - _right_layout->set_markup (string_compose (""TXTSPAN"%3 %2", + _right_layout->set_markup (string_compose ("" TXTSPAN "%3 %2", INFO_FONT_SIZE, buf, _("Meter"))); } } -- cgit v1.2.3 From 693713ecdb0bd4024f0a45aac6b74bd00d00eae4 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:44:03 -0500 Subject: Allow compiling with c++11 enabled --- libs/audiographer/audiographer/debug_utils.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/audiographer/audiographer/debug_utils.h b/libs/audiographer/audiographer/debug_utils.h index a1d8259716..a1dad22eaf 100644 --- a/libs/audiographer/audiographer/debug_utils.h +++ b/libs/audiographer/audiographer/debug_utils.h @@ -3,6 +3,7 @@ #include "flag_field.h" +#include #include #ifdef __GNUC__ @@ -24,7 +25,7 @@ struct DebugUtils char * res = abi::__cxa_demangle (typeid(obj).name(), 0, 0, &status); if (status == 0) { std::string s(res); - free (res); + std::free (res); return s; } #endif -- cgit v1.2.3 From 65eb0b845f1e028d0b310cfe112730c6a62f3efd Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:45:34 -0500 Subject: Include evoral/Note.hpp before pbd/compose.h - This workaround prevents a clang compiler error about template visibility --- libs/evoral/src/Sequence.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/evoral/src/Sequence.cpp b/libs/evoral/src/Sequence.cpp index b56c234d75..204ef58f33 100644 --- a/libs/evoral/src/Sequence.cpp +++ b/libs/evoral/src/Sequence.cpp @@ -24,6 +24,10 @@ #include #include +#if __clang__ +#include "evoral/Note.hpp" +#endif + #include "pbd/compose.h" #include "pbd/error.h" -- cgit v1.2.3 From bf153e58a5e3b31536648bff4b95bf6e0a107c6c Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:47:07 -0500 Subject: C++11 Building - Use new style struct field inititializing - clang with std=c++11 enabled was failing here --- libs/surfaces/generic_midi/interface.cc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/libs/surfaces/generic_midi/interface.cc b/libs/surfaces/generic_midi/interface.cc index 94edb0ba80..57f56bd399 100644 --- a/libs/surfaces/generic_midi/interface.cc +++ b/libs/surfaces/generic_midi/interface.cc @@ -56,17 +56,17 @@ probe_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/) } static ControlProtocolDescriptor generic_midi_descriptor = { - name : "Generic MIDI", - id : "uri://ardour.org/surfaces/generic_midi:0", - ptr : 0, - module : 0, - mandatory : 0, - supports_feedback : true, - probe : probe_generic_midi_protocol, - initialize : new_generic_midi_protocol, - destroy : delete_generic_midi_protocol + .name = "Generic MIDI", + .id = "uri://ardour.org/surfaces/generic_midi:0", + .ptr = 0, + .module = 0, + .mandatory = 0, + .supports_feedback = true, + .probe = probe_generic_midi_protocol, + .initialize = new_generic_midi_protocol, + .destroy = delete_generic_midi_protocol }; - + extern "C" { ControlProtocolDescriptor* -- cgit v1.2.3 From fa1086d82d497d61140bb164abd7b9c94d1a9d28 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:52:50 -0500 Subject: Dereference pointers in ctors where appropriate. (c++11 wants this) --- gtk2_ardour/window_manager.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/window_manager.h b/gtk2_ardour/window_manager.h index 3a80840891..ca33b30234 100644 --- a/gtk2_ardour/window_manager.h +++ b/gtk2_ardour/window_manager.h @@ -151,7 +151,7 @@ class ProxyWithConstructor: public ProxyBase { : ProxyBase (name, menu_name) , creator (c) {} ProxyWithConstructor (const std::string& name, const std::string& menu_name, const boost::function& c, const XMLNode* node) - : ProxyBase (name, menu_name, node) , creator (c) {} + : ProxyBase (name, menu_name, *node) , creator (c) {} Gtk::Window* get (bool create = false) { if (!_window) { @@ -198,7 +198,7 @@ class Proxy : public ProxyBase { : ProxyBase (name, menu_name) {} Proxy (const std::string& name, const std::string& menu_name, const XMLNode* node) - : ProxyBase (name, menu_name, node) {} + : ProxyBase (name, menu_name, *node) {} Gtk::Window* get (bool create = false) { if (!_window) { -- cgit v1.2.3 From 066df0d218ee4391eb3e15259deca5ccc190ed84 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 16:53:55 -0500 Subject: Temporary OSX/Clang/C++11 workaround - Adds a directive that includes upon specific conditions - WIP --- libs/pbd/pbd/stl_delete.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libs/pbd/pbd/stl_delete.h b/libs/pbd/pbd/stl_delete.h index 66fb027387..ac2161560c 100644 --- a/libs/pbd/pbd/stl_delete.h +++ b/libs/pbd/pbd/stl_delete.h @@ -20,11 +20,19 @@ #ifndef __libmisc_stl_delete_h__ #define __libmisc_stl_delete_h__ + +#if __clang__ && __APPLE__ && __cplusplus >= 201103L +#include +#ifndef _CPP_VECTOR +#define _CPP_VECTOR +#endif +#endif + /* To actually use any of these deletion functions, you need to first include the revelant container type header. */ #if defined(_CPP_VECTOR) || defined(_GLIBCXX_VECTOR) || defined(__SGI_STL_VECTOR) -template void vector_delete (std::vector *vec) +template void vector_delete (std::vector *vec) { typename std::vector::iterator i; -- cgit v1.2.3 From cdef4aa50f64daf784590a8f27f1ba11c03f1884 Mon Sep 17 00:00:00 2001 From: "Michael R. Fisher" Date: Mon, 15 Jul 2013 17:27:21 -0500 Subject: Add c++11 enablement options in wscript - adds "--cxx11" toggle for ./waf configure - The switch adds appropriate compiler flags and tests the compiler for usability of c++11 - This 'should' be compatible for linux, osx, and windows systems that have gcc and/or clang with support c++11 --- wscript | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/wscript b/wscript index a6106c0aef..48e30ef7ea 100644 --- a/wscript +++ b/wscript @@ -110,6 +110,22 @@ def set_compiler_flags (conf,opt): # waf adds -O0 -g itself. thanks waf! is_clang = conf.env['CXX'][0].endswith('clang++') + + if conf.options.cxx11: + conf.check_cxx(cxxflags=["-std=c++11"]) + conf.env.append_unique('CXXFLAGS', ['-std=c++11']) + if platform == "darwin": + conf.env.append_unique('CXXFLAGS', ['-stdlib=libc++']) + conf.env.append_unique('LINKFLAGS', ['-lc++']) + # Prevents visibility issues in standard headers + conf.define("_DARWIN_C_SOURCE", 1) + + if is_clang and platform == "darwin": + # Silence warnings about the non-existing osx clang compiler flags + # -compatibility_version and -current_version. These are Waf + # generated and not needed with clang + conf.env.append_unique ("CXXFLAGS", ["-Qunused-arguments"]) + if opt.gprofile: debug_flags = [ '-pg' ] @@ -454,6 +470,8 @@ def options(opt): help='directory where Wine\'s Windows header files can be found') opt.add_option('--noconfirm', action='store_true', default=False, dest='noconfirm', help='Do not ask questions that require confirmation during the build') + opt.add_option('--cxx11', action='store_true', default=False, dest='cxx11', + help='Turn on c++11 compiler flags (-std=c++11)') for i in children: opt.recurse(i) -- cgit v1.2.3 From 9a25fcbfe13f56665beb93a7f248f7ba8eeaa580 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 15:11:50 +0200 Subject: fix input metering: if meter==input, meter depends on In/Disk see also 29108187ed --- libs/ardour/audio_track.cc | 2 +- libs/ardour/midi_track.cc | 2 +- libs/ardour/track.cc | 10 +++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc index b4ca9e2df8..70f385a890 100644 --- a/libs/ardour/audio_track.cc +++ b/libs/ardour/audio_track.cc @@ -354,7 +354,7 @@ AudioTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_fram fill_buffers_with_input (bufs, _input, nframes); - if (_meter_point == MeterInput) { + if (_meter_point == MeterInput && (_monitoring & MonitorInput)) { _meter->run (bufs, start_frame, end_frame, nframes, true); } diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index f7f9ff7a59..23077bafc8 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -354,7 +354,7 @@ MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame fill_buffers_with_input (bufs, _input, nframes); - if (_meter_point == MeterInput) { + if (_meter_point == MeterInput && (_monitoring & MonitorInput)) { _meter->run (bufs, start_frame, end_frame, nframes, true); } diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 6d153e1cbf..b88cc0480a 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -945,6 +945,14 @@ Track::set_monitoring (MonitorChoice mc) MeterState Track::metering_state () const { - return (_diskstream->record_enabled() || _meter_point == MeterInput) ? MeteringInput : MeteringRoute; + bool rv; + if (_session.transport_rolling ()) { + // audio_track.cc || midi_track.cc roll() runs meter IFF: + rv = _meter_point == MeterInput && (_monitoring & MonitorInput); + } else { + // track no_roll() always metering if + rv = _meter_point == MeterInput; + } + return rv ? MeteringInput : MeteringRoute; } -- cgit v1.2.3 From e9289a19c8101ea584167d468748d2499664bc03 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 16:04:41 +0200 Subject: fix "monitor mode 11" see http://www.oofus.co.uk/ardour/Ardour3MonitorModesV2.pdf the overall logic can probably be simplified somewhat track-rec-enable on -> always monitor input --- libs/ardour/audio_track.cc | 2 +- libs/ardour/midi_track.cc | 2 +- libs/ardour/track.cc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc index 70f385a890..ad2c3a96e1 100644 --- a/libs/ardour/audio_track.cc +++ b/libs/ardour/audio_track.cc @@ -354,7 +354,7 @@ AudioTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_fram fill_buffers_with_input (bufs, _input, nframes); - if (_meter_point == MeterInput && (_monitoring & MonitorInput)) { + if (_meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled())) { _meter->run (bufs, start_frame, end_frame, nframes, true); } diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 23077bafc8..16a0e89077 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -354,7 +354,7 @@ MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame fill_buffers_with_input (bufs, _input, nframes); - if (_meter_point == MeterInput && (_monitoring & MonitorInput)) { + if (_meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled())) { _meter->run (bufs, start_frame, end_frame, nframes, true); } diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index b88cc0480a..1cf9887594 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -948,7 +948,7 @@ Track::metering_state () const bool rv; if (_session.transport_rolling ()) { // audio_track.cc || midi_track.cc roll() runs meter IFF: - rv = _meter_point == MeterInput && (_monitoring & MonitorInput); + rv = _meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled()); } else { // track no_roll() always metering if rv = _meter_point == MeterInput; -- cgit v1.2.3 From a716f3c55a0bae667977545c3d190f6f78f4db72 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 16:25:27 +0200 Subject: RMS meter - reset after calculating new data --- libs/ardour/kmeterdsp.cc | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/libs/ardour/kmeterdsp.cc b/libs/ardour/kmeterdsp.cc index 77d1a87a81..afd0f71719 100644 --- a/libs/ardour/kmeterdsp.cc +++ b/libs/ardour/kmeterdsp.cc @@ -46,12 +46,6 @@ void Kmeterdsp::process (float *p, int n) float s, t, z1, z2; - if (_flag) // Display thread has read the rms value. - { - _rms = 0; - _flag = false; - } - // Get filter state. z1 = _z1; z2 = _z2; @@ -88,9 +82,18 @@ void Kmeterdsp::process (float *p, int n) _z1 = z1 + 1e-20f; _z2 = z2 + 1e-20f; - // Adjust RMS value and update maximum since last read(). s = sqrtf (2 * z2); - if (s > _rms) _rms = s; + + if (_flag) // Display thread has read the rms value. + { + _rms = s; + _flag = false; + } + else + { + // Adjust RMS value and update maximum since last read(). + if (s > _rms) _rms = s; + } } -- cgit v1.2.3 From 8f5cc1dbbae40378b9fa7c046d31a12b8497b570 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 17:55:18 +0200 Subject: increase spacing between meter ticks and labels --- gtk2_ardour/meter_patterns.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index 80655af7b9..7818711922 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -364,11 +364,11 @@ meter_render_metrics (Gtk::Widget& w, vector types) snprintf (buf, sizeof (buf), "%+2d", j->first); pos = height - (gint) floor (height * fraction); if (tickleft) { - cairo_move_to(cr, width-2.5, pos + .5); + cairo_move_to(cr, width-1.5, pos + .5); cairo_line_to(cr, width, pos + .5); } else { cairo_move_to(cr, 0, pos + .5); - cairo_line_to(cr, 2.5, pos + .5); + cairo_line_to(cr, 1.5, pos + .5); } cairo_stroke (cr); break; @@ -398,7 +398,7 @@ meter_render_metrics (Gtk::Widget& w, vector types) p = min (p, height - th); p = max (p, 0); - cairo_move_to (cr, width-4-tw, p); + cairo_move_to (cr, width-3-tw, p); pango_cairo_show_layout (cr, layout->gobj()); } } -- cgit v1.2.3 From 003492cbf9b6636f97eba44481e08cbea46c5fea Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 14 Jul 2013 16:34:49 +0200 Subject: move ff* structs & typedef into dedicated namespace (further avoid conflicts with plugins) --- gtk2_ardour/export_video_dialog.cc | 4 ++-- gtk2_ardour/transcode_ffmpeg.cc | 14 +++++++------- gtk2_ardour/transcode_ffmpeg.h | 21 +++++++++++---------- gtk2_ardour/transcode_video_dialog.cc | 4 ++-- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/gtk2_ardour/export_video_dialog.cc b/gtk2_ardour/export_video_dialog.cc index ce85fad81e..eb4213b237 100644 --- a/gtk2_ardour/export_video_dialog.cc +++ b/gtk2_ardour/export_video_dialog.cc @@ -584,7 +584,7 @@ ExportVideoDialog::encode_pass (int pass) } std::string preset = preset_combo.get_active_text(); - FFSettings ffs ; /* = transcoder->default_encoder_settings(); */ + TranscodeFfmpeg::FFSettings ffs ; /* = transcoder->default_encoder_settings(); */ ffs.clear(); if (fps_checkbox.get_active()) { @@ -740,7 +740,7 @@ ExportVideoDialog::encode_pass (int pass) transcoder->set_avoffset(av_offset / (double)_session->nominal_frame_rate()); } - FFSettings meta = transcoder->default_meta_data(); + TranscodeFfmpeg::FFSettings meta = transcoder->default_meta_data(); if (meta_checkbox.get_active()) { ARDOUR::SessionMetadata * session_data = ARDOUR::SessionMetadata::Metadata(); if (session_data->year() > 0 ) { diff --git a/gtk2_ardour/transcode_ffmpeg.cc b/gtk2_ardour/transcode_ffmpeg.cc index 657b79ffba..9499c6c184 100644 --- a/gtk2_ardour/transcode_ffmpeg.cc +++ b/gtk2_ardour/transcode_ffmpeg.cc @@ -261,10 +261,10 @@ TranscodeFfmpeg::probe () return true; } -FFSettings +TranscodeFfmpeg::FFSettings TranscodeFfmpeg::default_encoder_settings () { - FFSettings ffs; + TranscodeFfmpeg::FFSettings ffs; ffs.clear(); ffs["-vcodec"] = "mpeg4"; ffs["-acodec"] = "ac3"; @@ -273,10 +273,10 @@ TranscodeFfmpeg::default_encoder_settings () return ffs; } -FFSettings +TranscodeFfmpeg::FFSettings TranscodeFfmpeg::default_meta_data () { - FFSettings ffm; + TranscodeFfmpeg::FFSettings ffm; ffm.clear(); ffm["comment"] = "Created with ardour"; return ffm; @@ -308,7 +308,7 @@ TranscodeFfmpeg::format_metadata (std::string key, std::string value) } bool -TranscodeFfmpeg::encode (std::string outfile, std::string inf_a, std::string inf_v, FFSettings ffs, FFSettings meta, bool map) +TranscodeFfmpeg::encode (std::string outfile, std::string inf_a, std::string inf_v, TranscodeFfmpeg::FFSettings ffs, TranscodeFfmpeg::FFSettings meta, bool map) { #define MAX_FFMPEG_ENCODER_ARGS (100) char **argp; @@ -327,11 +327,11 @@ TranscodeFfmpeg::encode (std::string outfile, std::string inf_a, std::string inf argp[a++] = strdup("-i"); argp[a++] = strdup(inf_a.c_str()); - for(FFSettings::const_iterator it = ffs.begin(); it != ffs.end(); ++it) { + for(TranscodeFfmpeg::FFSettings::const_iterator it = ffs.begin(); it != ffs.end(); ++it) { argp[a++] = strdup(it->first.c_str()); argp[a++] = strdup(it->second.c_str()); } - for(FFSettings::const_iterator it = meta.begin(); it != meta.end(); ++it) { + for(TranscodeFfmpeg::FFSettings::const_iterator it = meta.begin(); it != meta.end(); ++it) { argp[a++] = strdup("-metadata"); argp[a++] = format_metadata(it->first.c_str(), it->second.c_str()); } diff --git a/gtk2_ardour/transcode_ffmpeg.h b/gtk2_ardour/transcode_ffmpeg.h index d1f445bf48..61267ac853 100644 --- a/gtk2_ardour/transcode_ffmpeg.h +++ b/gtk2_ardour/transcode_ffmpeg.h @@ -24,14 +24,6 @@ #include "ardour/types.h" #include "system_exec.h" -/* TODO: use a namespace here ? */ -struct FFAudioStream { - std::string name; - std::string stream_id; - uint32_t channels; -}; -typedef std::vector AudioStreams; -typedef std::map FFSettings; /** @class TranscodeFfmpeg * @brief wrapper around ffmpeg and ffprobe command-line utils @@ -46,6 +38,15 @@ class TranscodeFfmpeg : public sigc::trackable { public: + struct FFAudioStream { + std::string name; + std::string stream_id; + uint32_t channels; + }; + typedef std::vector FFAudioStreams; + typedef std::map FFSettings; + + /** instantiate a new transcoder. If a file-name is given, the file's * attributes (fps, duration, geometry etc) are read. * @@ -110,7 +111,7 @@ class TranscodeFfmpeg : public sigc::trackable ARDOUR::framecnt_t get_duration() { return m_duration; } std::string get_codec() { return m_codec; } - AudioStreams get_audio() { return m_audio; } + FFAudioStreams get_audio() { return m_audio; } /** override file duration used with the \ref Progress signal. * @param d duration in video-frames = length_in_seconds * get_fps() @@ -145,7 +146,7 @@ class TranscodeFfmpeg : public sigc::trackable bool ffexecok; bool probeok; - AudioStreams m_audio; + FFAudioStreams m_audio; char *format_metadata (std::string, std::string); void ffmpegparse_v (std::string d, size_t s); diff --git a/gtk2_ardour/transcode_video_dialog.cc b/gtk2_ardour/transcode_video_dialog.cc index fa5d447a3a..5c6ae0c7b4 100644 --- a/gtk2_ardour/transcode_video_dialog.cc +++ b/gtk2_ardour/transcode_video_dialog.cc @@ -88,7 +88,7 @@ TranscodeVideoDialog::TranscodeVideoDialog (Session* s, std::string infile) int w = 0, h = 0; m_aspect = 4.0/3.0; - AudioStreams as; as.clear(); + TranscodeFfmpeg::FFAudioStreams as; as.clear(); path_hbox->pack_start (path_label, false, false, 3); path_hbox->pack_start (path_entry, true, true, 3); @@ -227,7 +227,7 @@ TranscodeVideoDialog::TranscodeVideoDialog (Session* s, std::string infile) t->attach (audio_combo, 1, 4, 2, 3); audio_combo.append_text("No audio"); if (as.size() > 0) { - for (AudioStreams::iterator it = as.begin(); it < as.end(); ++it) { + for (TranscodeFfmpeg::FFAudioStreams::iterator it = as.begin(); it < as.end(); ++it) { audio_combo.append_text((*it).name); } } -- cgit v1.2.3 From c456166dd163e12053c7cfd4554f695ab0d30b68 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 19:36:57 +0200 Subject: zero meters for inactive tracks --- libs/ardour/audio_track.cc | 3 +++ libs/ardour/meter.cc | 4 ++++ libs/ardour/midi_track.cc | 3 +++ libs/ardour/track.cc | 3 +++ 4 files changed, 13 insertions(+) diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc index ad2c3a96e1..4b33bbd4c6 100644 --- a/libs/ardour/audio_track.cc +++ b/libs/ardour/audio_track.cc @@ -325,6 +325,9 @@ AudioTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_fram if (!_active) { silence (nframes); + if (_meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled())) { + _meter->reset(); + } return 0; } diff --git a/libs/ardour/meter.cc b/libs/ardour/meter.cc index f239a1c4b7..90f0977e4d 100644 --- a/libs/ardour/meter.cc +++ b/libs/ardour/meter.cc @@ -116,6 +116,10 @@ PeakMeter::reset () for (size_t i = 0; i < _peak_signal.size(); ++i) { _peak_signal[i] = 0.0f; } + + for (size_t n = 0; n < _kmeter.size(); ++n) { + _kmeter[n]->reset(); + } } void diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 16a0e89077..c7768c7249 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -330,6 +330,9 @@ MidiTrack::roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame if (!_active) { silence (nframes); + if (_meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled())) { + _meter->reset(); + } return 0; } diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 1cf9887594..d2c9b1deb5 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -347,6 +347,9 @@ Track::no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, if (!_active) { silence (nframes); + if (_meter_point == MeterInput && (_monitoring & MonitorInput || _diskstream->record_enabled())) { + _meter->reset(); + } return 0; } -- cgit v1.2.3 From 2231db91cdeea8111961b3eeb94e2d87df6f9e8a Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 19:37:36 +0200 Subject: fix metering states 34, 38, 49, 50, 53 and 54 for state descriptions see http://www.oofus.co.uk/ardour/Ardour3MonitorModesV3.pdf --- libs/ardour/io.cc | 4 +++- libs/ardour/track.cc | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc index cdb8a4693c..21fdca6e96 100644 --- a/libs/ardour/io.cc +++ b/libs/ardour/io.cc @@ -1639,7 +1639,9 @@ IO::process_input (boost::shared_ptr proc, framepos_t start_frame, fr } _buffers.get_jack_port_addresses (_ports, nframes); - proc->run (_buffers, start_frame, end_frame, nframes, true); + if (proc) { + proc->run (_buffers, start_frame, end_frame, nframes, true); + } } void diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index d2c9b1deb5..d4c095d738 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -408,8 +408,23 @@ Track::no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, if (be_silent) { if (_meter_point == MeterInput) { - /* still need input monitoring */ - _input->process_input (_meter, start_frame, end_frame, nframes); + /* still need input monitoring and metering */ + + bool const track_rec = _diskstream->record_enabled (); + bool const auto_input = _session.config.get_auto_input (); + bool const software_monitor = Config->get_monitoring_model() == SoftwareMonitoring; + bool const tape_machine_mode = Config->get_tape_machine_mode (); + + if (!software_monitor && tape_machine_mode && !track_rec) { + _meter->reset(); + _input->process_input (boost::shared_ptr(), start_frame, end_frame, nframes); + } + else if (!software_monitor && !tape_machine_mode && !track_rec && !auto_input) { + _meter->reset(); + _input->process_input (boost::shared_ptr(), start_frame, end_frame, nframes); + } else { + _input->process_input (_meter, start_frame, end_frame, nframes); + } } passthru_silence (start_frame, end_frame, nframes, 0); -- cgit v1.2.3 From f842e8af2340b7836f961e2ebfb100950c5831d3 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 20:37:30 +0200 Subject: yet another meter+monitoring detail: "explicit Monitor DISK" + "Transport Stop" + "not track rec-en" -> meter is always zero --- libs/ardour/track.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index d4c095d738..e8eea740b1 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -414,12 +414,19 @@ Track::no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, bool const auto_input = _session.config.get_auto_input (); bool const software_monitor = Config->get_monitoring_model() == SoftwareMonitoring; bool const tape_machine_mode = Config->get_tape_machine_mode (); + bool no_meter = false; - if (!software_monitor && tape_machine_mode && !track_rec) { - _meter->reset(); - _input->process_input (boost::shared_ptr(), start_frame, end_frame, nframes); + if (_monitoring & MonitorDisk && !track_rec) { + no_meter=true; + } + else if (!software_monitor && tape_machine_mode && !track_rec) { + no_meter=true; } else if (!software_monitor && !tape_machine_mode && !track_rec && !auto_input) { + no_meter=true; + } + + if (no_meter) { _meter->reset(); _input->process_input (boost::shared_ptr(), start_frame, end_frame, nframes); } else { -- cgit v1.2.3 From 1b97f147eb0af7cbdc6f1311679824b8e383d176 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 16 Jul 2013 14:52:52 -0400 Subject: Revert "C++11 Building - Use new style struct field inititializing" (this code change breaks gcc on several platforms). This reverts commit bf153e58a5e3b31536648bff4b95bf6e0a107c6c. --- libs/surfaces/generic_midi/interface.cc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/libs/surfaces/generic_midi/interface.cc b/libs/surfaces/generic_midi/interface.cc index 57f56bd399..94edb0ba80 100644 --- a/libs/surfaces/generic_midi/interface.cc +++ b/libs/surfaces/generic_midi/interface.cc @@ -56,17 +56,17 @@ probe_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/) } static ControlProtocolDescriptor generic_midi_descriptor = { - .name = "Generic MIDI", - .id = "uri://ardour.org/surfaces/generic_midi:0", - .ptr = 0, - .module = 0, - .mandatory = 0, - .supports_feedback = true, - .probe = probe_generic_midi_protocol, - .initialize = new_generic_midi_protocol, - .destroy = delete_generic_midi_protocol + name : "Generic MIDI", + id : "uri://ardour.org/surfaces/generic_midi:0", + ptr : 0, + module : 0, + mandatory : 0, + supports_feedback : true, + probe : probe_generic_midi_protocol, + initialize : new_generic_midi_protocol, + destroy : delete_generic_midi_protocol }; - + extern "C" { ControlProtocolDescriptor* -- cgit v1.2.3 From 81412b95beea58ef8b17781a0756dfbc1d3a39cb Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 21:18:52 +0200 Subject: revert functionality of f842e8af2 (meter display in DISK mode) --- libs/ardour/track.cc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index e8eea740b1..522b9ebe05 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -416,10 +416,7 @@ Track::no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, bool const tape_machine_mode = Config->get_tape_machine_mode (); bool no_meter = false; - if (_monitoring & MonitorDisk && !track_rec) { - no_meter=true; - } - else if (!software_monitor && tape_machine_mode && !track_rec) { + if (!software_monitor && tape_machine_mode && !track_rec) { no_meter=true; } else if (!software_monitor && !tape_machine_mode && !track_rec && !auto_input) { -- cgit v1.2.3 From 920154702fcf690c762301a96c49848a9a241674 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 22:18:51 +0200 Subject: fix re-drawing of splitting icon --- gtk2_ardour/processor_box.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index 495845d2d4..7d2e39639b 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -655,10 +655,14 @@ PluginInsertProcessorEntry::SplittingIcon::on_expose_event (GdkEventExpose* ev) { cairo_t* cr = gdk_cairo_create (get_window()->gobj()); + cairo_rectangle (cr, ev->area.x, ev->area.y, ev->area.width, ev->area.height); + cairo_clip (cr); + cairo_set_line_width (cr, 1); - double const width = ev->area.width; - double const height = ev->area.height; + Gtk::Allocation a = get_allocation(); + double const width = a.get_width(); + double const height = a.get_height(); Gdk::Color const bg = get_style()->get_bg (STATE_NORMAL); cairo_set_source_rgb (cr, bg.get_red_p (), bg.get_green_p (), bg.get_blue_p ()); -- cgit v1.2.3 From f78d60a4a38228bb4c772e9a104ebb431bd6b940 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 22:43:23 +0200 Subject: rework metering states 2, 6, 18 and 22 --- libs/ardour/track.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 522b9ebe05..3ad5733320 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -416,7 +416,10 @@ Track::no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, bool const tape_machine_mode = Config->get_tape_machine_mode (); bool no_meter = false; - if (!software_monitor && tape_machine_mode && !track_rec) { + if (!auto_input && !track_rec) { + no_meter=true; + } + else if (!software_monitor && tape_machine_mode && !track_rec) { no_meter=true; } else if (!software_monitor && !tape_machine_mode && !track_rec && !auto_input) { -- cgit v1.2.3 From 562bd6811e55873fc63645094f10cb2668aacdba Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 22:44:54 +0200 Subject: possible fix for http://tracker.ardour.org/view.php?id=5586 --- libs/gtkmm2ext/persistent_tooltip.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libs/gtkmm2ext/persistent_tooltip.cc b/libs/gtkmm2ext/persistent_tooltip.cc index ea0ffd63e9..77a8d94c0f 100644 --- a/libs/gtkmm2ext/persistent_tooltip.cc +++ b/libs/gtkmm2ext/persistent_tooltip.cc @@ -48,6 +48,9 @@ PersistentTooltip::~PersistentTooltip () bool PersistentTooltip::enter (GdkEventCrossing *) { + if (_timeout.connected()) { + leave(NULL); + } _timeout = Glib::signal_timeout().connect (sigc::mem_fun (*this, &PersistentTooltip::timeout), 500); return false; } -- cgit v1.2.3 From ec63180ef6c82e25b22a845cc4b99010d81cfc98 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Jul 2013 23:30:21 +0200 Subject: meter-state 17 and 49 + code-comment --- libs/ardour/track.cc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libs/ardour/track.cc b/libs/ardour/track.cc index 3ad5733320..c6a348ddfb 100644 --- a/libs/ardour/track.cc +++ b/libs/ardour/track.cc @@ -416,9 +416,18 @@ Track::no_roll (pframes_t nframes, framepos_t start_frame, framepos_t end_frame, bool const tape_machine_mode = Config->get_tape_machine_mode (); bool no_meter = false; + /* this needs a proper K-map + * and should be separated into a function similar to monitoring_state() + * that also handles roll() states in audio_track.cc, midi_track.cc and route.cc + * + * see http://www.oofus.co.uk/ardour/Ardour3MonitorModesV3.pdf + */ if (!auto_input && !track_rec) { no_meter=true; } + else if (tape_machine_mode && !track_rec && auto_input) { + no_meter=true; + } else if (!software_monitor && tape_machine_mode && !track_rec) { no_meter=true; } -- cgit v1.2.3 From fc0053a7218476065355fbdef933324e3d53885f Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 16 Jul 2013 18:54:45 -0400 Subject: bump actual publically visible version (oops) --- wscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wscript b/wscript index 48e30ef7ea..66d7c655e5 100644 --- a/wscript +++ b/wscript @@ -8,7 +8,7 @@ import subprocess import sys MAJOR = '3' -MINOR = '2' +MINOR = '3' VERSION = MAJOR + '.' + MINOR APPNAME = 'Ardour' + MAJOR -- cgit v1.2.3 From bf0f4fe07769718b70e65fb78830fb3b951148ac Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 17 Jul 2013 02:35:02 +0200 Subject: work around sparse motion notification events when tooltips are disabled fixes http://tracker.ardour.org/view.php?id=5174 --- gtk2_ardour/group_tabs.cc | 4 +++- gtk2_ardour/time_axis_view.cc | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk2_ardour/group_tabs.cc b/gtk2_ardour/group_tabs.cc index 1332d4ba10..b8d30dc989 100644 --- a/gtk2_ardour/group_tabs.cc +++ b/gtk2_ardour/group_tabs.cc @@ -42,7 +42,7 @@ GroupTabs::GroupTabs () , _dragging (0) , _dragging_new_tab (0) { - + add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK|Gdk::POINTER_MOTION_MASK); } GroupTabs::~GroupTabs () @@ -175,6 +175,8 @@ GroupTabs::on_motion_notify_event (GdkEventMotion* ev) set_dirty (); queue_draw (); + gdk_event_request_motions(ev); + return true; } diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index fdb9782236..2cc2adf761 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -410,6 +410,7 @@ TimeAxisView::controls_ebox_motion (GdkEventMotion* ev) maybe_set_cursor (ev->y); } + gdk_event_request_motions(ev); return true; } -- cgit v1.2.3 From c92e1a0742b0b74f8c6ed795bbe48ea02a312c6b Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 17 Jul 2013 16:41:48 +1000 Subject: Use g_lstat instead of lstat for portability --- gtk2_ardour/ardour_ui.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index 91dbd999df..b321b2bce0 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -37,9 +37,8 @@ #include #include -#include -#include -#include +#include +#include #include #include @@ -3398,11 +3397,11 @@ ARDOUR_UI::start_video_server (Gtk::Window* float_window, bool popup_msg) if (icsd_docroot.empty()) {icsd_docroot = X_("/");} struct stat sb; - if (!lstat (icsd_docroot.c_str(), &sb) == 0 || !S_ISDIR(sb.st_mode)) { + if (!g_lstat (icsd_docroot.c_str(), &sb) == 0 || !S_ISDIR(sb.st_mode)) { warning << _("Specified docroot is not an existing directory.") << endmsg; continue; } - if ( (!lstat (icsd_exec.c_str(), &sb) == 0) + if ( (!g_lstat (icsd_exec.c_str(), &sb) == 0) || (sb.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH)) == 0 ) { warning << _("Given Video Server is not an executable file.") << endmsg; continue; -- cgit v1.2.3 From 0444c40053e74414d0f94501d9c8bfad90b25ec1 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 17 Jul 2013 16:45:00 +1000 Subject: Use file modes supported by mingw compiler on Windows --- gtk2_ardour/ardour_ui.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index b321b2bce0..9577444120 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -3401,11 +3401,19 @@ ARDOUR_UI::start_video_server (Gtk::Window* float_window, bool popup_msg) warning << _("Specified docroot is not an existing directory.") << endmsg; continue; } +#ifndef WIN32 if ( (!g_lstat (icsd_exec.c_str(), &sb) == 0) || (sb.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH)) == 0 ) { warning << _("Given Video Server is not an executable file.") << endmsg; continue; } +#else + if ( (!g_lstat (icsd_exec.c_str(), &sb) == 0) + || (sb.st_mode & (S_IXUSR)) == 0 ) { + warning << _("Given Video Server is not an executable file.") << endmsg; + continue; + } +#endif char **argp; argp=(char**) calloc(9,sizeof(char*)); -- cgit v1.2.3 From e1d2f7070434c936877213e63ac06c29e5b4afce Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 17 Jul 2013 16:47:29 +1000 Subject: Also define casting macro when using mingw compiler --- gtk2_ardour/canvas-waveview.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk2_ardour/canvas-waveview.c b/gtk2_ardour/canvas-waveview.c index 2080b208d8..51384c0fad 100644 --- a/gtk2_ardour/canvas-waveview.c +++ b/gtk2_ardour/canvas-waveview.c @@ -35,7 +35,7 @@ /* POSIX guarantees casting between void* and function pointers, ISO C doesn't * We can work around warnings by going one step deeper in our casts */ -#ifdef _POSIX_VERSION +#if defined(_POSIX_VERSION) || defined(__MINGW32__) #define POSIX_FUNC_PTR_CAST(type, object) *((type*) &(object)) #endif // _POSIX_VERSION -- cgit v1.2.3 From c7d0a52a0b806f1d96d92f224cdfb81da4e93262 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 17 Jul 2013 16:47:56 +1000 Subject: Work around badly chosen argument name in giomm --- gtk2_ardour/ardour_ui_dialogs.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 8c78d6494d..c0fd97cfd6 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -27,6 +27,10 @@ #include "ardour/audioengine.h" #include "ardour/automation_watch.h" +#ifdef interface +#undef interface +#endif + #include "actions.h" #include "add_route_dialog.h" #include "add_video_dialog.h" -- cgit v1.2.3 From 22e15422e86e51385a9eb00ec166bdff0e621059 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 17 Jul 2013 16:48:40 +1000 Subject: Fix ambiguous type CheckMenuItem that is also defined via windows.h --- gtk2_ardour/editor_rulers.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index 2752f96553..a7883674cd 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -373,11 +373,11 @@ Editor::popup_ruler_menu (framepos_t where, ItemType t) ruler_items.push_back (MenuElem (_("Timeline height"))); static_cast(&ruler_items.back())->set_sensitive(false); ruler_items.push_back (CheckMenuElem (_("Large"), sigc::bind ( sigc::mem_fun(*this, &Editor::set_video_timeline_height), 6))); - if (videotl_bar_height == 6) { static_cast(&ruler_items.back())->set_active(true);} + if (videotl_bar_height == 6) { static_cast(&ruler_items.back())->set_active(true);} ruler_items.push_back (CheckMenuElem (_("Normal"), sigc::bind ( sigc::mem_fun(*this, &Editor::set_video_timeline_height), 4))); - if (videotl_bar_height == 4) { static_cast(&ruler_items.back())->set_active(true);} + if (videotl_bar_height == 4) { static_cast(&ruler_items.back())->set_active(true);} ruler_items.push_back (CheckMenuElem (_("Small"), sigc::bind ( sigc::mem_fun(*this, &Editor::set_video_timeline_height), 3))); - if (videotl_bar_height == 3) { static_cast(&ruler_items.back())->set_active(true);} + if (videotl_bar_height == 3) { static_cast(&ruler_items.back())->set_active(true);} ruler_items.push_back (SeparatorElem ()); ruler_items.push_back (MenuElem (_("Align Video Track"))); @@ -385,7 +385,7 @@ Editor::popup_ruler_menu (framepos_t where, ItemType t) ruler_items.push_back (CheckMenuElem (_("Lock"))); { - CheckMenuItem* vtl_lock = static_cast(&ruler_items.back()); + Gtk::CheckMenuItem* vtl_lock = static_cast(&ruler_items.back()); vtl_lock->set_active(is_video_timeline_locked()); vtl_lock->signal_activate().connect (sigc::mem_fun(*this, &Editor::toggle_video_timeline_locked)); } -- cgit v1.2.3 From f903d623e4b0d314f940f8a1efe5346bc323d663 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 17 Jul 2013 18:15:02 +1000 Subject: Use jack_client_stop_thread on windows --- libs/ardour/audioengine.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index a69e98283e..583ed1ae82 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -1568,7 +1568,7 @@ AudioEngine::stop_process_thread (jack_native_thread_t thread) * Jack 2 _jack arg is not used so it should be OK */ -#ifdef USING_JACK2_EXPANSION_OF_JACK_API +#if defined(USING_JACK2_EXPANSION_OF_JACK_API) || defined(WIN32) if (jack_client_stop_thread (_jack, thread) != 0) { error << "AudioEngine: cannot stop process thread" << endmsg; return false; -- cgit v1.2.3 From 11335e4bf030d9442b659447c23dcb92c9460163 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 17 Jul 2013 19:05:01 +1000 Subject: Allow PBD::canonical_path to compile with mingw build --- libs/pbd/pathexpand.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libs/pbd/pathexpand.cc b/libs/pbd/pathexpand.cc index ad53bea37b..89fc148ad7 100644 --- a/libs/pbd/pathexpand.cc +++ b/libs/pbd/pathexpand.cc @@ -38,7 +38,7 @@ PBD::canonical_path (const std::string& path) { #ifdef WIN32 return path; -#endif +#else char buf[PATH_MAX+1]; if (!realpath (path.c_str(), buf) && (errno != ENOENT)) { @@ -46,6 +46,7 @@ PBD::canonical_path (const std::string& path) } return string (buf); +#endif } string -- cgit v1.2.3 From 5f2fcb2e327ac7ebfe002eb25396663674866e97 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 17 Jul 2013 19:29:34 +1000 Subject: Add PBD::ffs function --- libs/pbd/ffs.cc | 35 +++++++++++++++++++++++++++++++++++ libs/pbd/pbd/ffs.h | 27 +++++++++++++++++++++++++++ libs/pbd/wscript | 1 + 3 files changed, 63 insertions(+) create mode 100644 libs/pbd/ffs.cc create mode 100644 libs/pbd/pbd/ffs.h diff --git a/libs/pbd/ffs.cc b/libs/pbd/ffs.cc new file mode 100644 index 0000000000..8f7ecdb502 --- /dev/null +++ b/libs/pbd/ffs.cc @@ -0,0 +1,35 @@ +/* + Copyright (C) 2013 Tim Mayberry + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include "pbd/ffs.h" + +#include + +namespace PBD { +int +ffs (int x) +{ +#if defined(WIN32) && defined(__GNUC__) + return __builtin_ffs(x); +#else + return ffs(x); +#endif +} + +} diff --git a/libs/pbd/pbd/ffs.h b/libs/pbd/pbd/ffs.h new file mode 100644 index 0000000000..3a2eadfae7 --- /dev/null +++ b/libs/pbd/pbd/ffs.h @@ -0,0 +1,27 @@ +/* + Copyright (C) 2013 Tim Mayberry + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef __libpbd_ffs_h__ +#define __libpbd_ffs_h__ + +namespace PBD { + int ffs(int x); +} + +#endif /* __libpbd_ffs_h__ */ diff --git a/libs/pbd/wscript b/libs/pbd/wscript index 91d9b2c50b..e26b96ca11 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -45,6 +45,7 @@ libpbd_sources = [ 'enums.cc', 'epa.cc', 'error.cc', + 'ffs.cc', 'file_manager.cc', 'file_utils.cc', 'fpu.cc', -- cgit v1.2.3 From 780397d0ccf8df54eeb78c88eebbaab0c2745029 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 17 Jul 2013 13:35:45 +0200 Subject: possible fix for 5591 (show elements after re-adding them) --- gtk2_ardour/startup.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gtk2_ardour/startup.cc b/gtk2_ardour/startup.cc index e7edf5e995..0ec79667ab 100644 --- a/gtk2_ardour/startup.cc +++ b/gtk2_ardour/startup.cc @@ -917,6 +917,7 @@ ArdourStartup::setup_new_session_page () if (more_new_session_options_button.get_active()) { set_page_type (session_vbox, ASSISTANT_PAGE_CONTENT); } + session_hbox.show_all(); } void @@ -1092,6 +1093,7 @@ ArdourStartup::setup_existing_session_page () set_page_title (session_vbox, _("Select a session")); set_page_type (session_vbox, ASSISTANT_PAGE_CONFIRM); + session_hbox.show_all(); } void -- cgit v1.2.3 From 9cbe231b920d92a2e44e08962a3ed6870b962f34 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Wed, 17 Jul 2013 20:03:34 +1000 Subject: Use PBD::ffs for portability --- gtk2_ardour/midi_time_axis.cc | 7 +++---- libs/ardour/ardour/midi_track.h | 4 +++- libs/ardour/midi_diskstream.cc | 4 ++-- libs/ardour/midi_track.cc | 5 ++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc index a8fc9c3e60..3da5f11f10 100644 --- a/gtk2_ardour/midi_time_axis.cc +++ b/gtk2_ardour/midi_time_axis.cc @@ -19,8 +19,6 @@ #include #include -#include // for ffs(3) - #include #include #include @@ -28,6 +26,7 @@ #include #include "pbd/error.h" +#include "pbd/ffs.h" #include "pbd/stl_delete.h" #include "pbd/whitespace.h" #include "pbd/basename.h" @@ -1491,7 +1490,7 @@ MidiTimeAxisView::playback_channel_mode_changed () _playback_channel_status.set_markup (string_compose ("%1: %2", _("Play"), _("some"))); break; case ForceChannel: - _playback_channel_status.set_markup (string_compose ("%1: %2>%3", _("Play"), _("all"), ffs (midi_track()->get_playback_channel_mask()))); + _playback_channel_status.set_markup (string_compose ("%1: %2>%3", _("Play"), _("all"), PBD::ffs (midi_track()->get_playback_channel_mask()))); break; } } @@ -1507,7 +1506,7 @@ MidiTimeAxisView::capture_channel_mode_changed () _capture_channel_status.set_markup (string_compose ("%1: %2", _("Rec"), _("some"))); break; case ForceChannel: - _capture_channel_status.set_markup (string_compose ("%1: %2>%3", _("Rec"), _("all"), ffs (midi_track()->get_capture_channel_mask()))); + _capture_channel_status.set_markup (string_compose ("%1: %2>%3", _("Rec"), _("all"), PBD::ffs (midi_track()->get_capture_channel_mask()))); break; } } diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 3b75c0a51b..9c1d21a3e4 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -20,6 +20,8 @@ #ifndef __ardour_midi_track_h__ #define __ardour_midi_track_h__ +#include "pbd/ffs.h" + #include "ardour/track.h" #include "ardour/midi_ring_buffer.h" @@ -183,7 +185,7 @@ private: /* if mode is ForceChannel, force mask to the lowest set channel or 1 if no * channels are set. */ -#define force_mask(mode,mask) (((mode) == ForceChannel) ? (((mask) ? (1<<(ffs((mask))-1)) : 1)) : mask) +#define force_mask(mode,mask) (((mode) == ForceChannel) ? (((mask) ? (1<<(PBD::ffs((mask))-1)) : 1)) : mask) void _set_playback_channel_mode(ChannelMode mode, uint16_t mask) { mask = force_mask (mode, mask); diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc index a21f3fb6f4..d27c2fa9c7 100644 --- a/libs/ardour/midi_diskstream.cc +++ b/libs/ardour/midi_diskstream.cc @@ -26,10 +26,10 @@ #include #include #include -#include // for ffs(3) #include #include "pbd/error.h" +#include "pbd/ffs.h" #include "pbd/basename.h" #include #include "pbd/xml++.h" @@ -438,7 +438,7 @@ MidiDiskstream::process (BufferSet& bufs, framepos_t transport_frame, pframes_t break; case ForceChannel: if (ev.is_channel_event()) { - ev.set_channel (ffs(mask) - 1); + ev.set_channel (PBD::ffs(mask) - 1); } _capture_buf->write(transport_frame + loop_offset + ev.time(), ev.type(), ev.size(), ev.buffer()); diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index f7f9ff7a59..51edd06aee 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -17,8 +17,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#include // for ffs(3) - +#include "pbd/ffs.h" #include "pbd/enumwriter.h" #include "pbd/convert.h" #include "evoral/midi_util.h" @@ -504,7 +503,7 @@ MidiTrack::filter_channels (BufferSet& bufs, ChannelMode mode, uint32_t mask) } break; case ForceChannel: - ev.set_channel (ffs (mask) - 1); + ev.set_channel (PBD::ffs (mask) - 1); ++e; break; case AllChannels: -- cgit v1.2.3 From 82d351f6ca3214ef77df555aca853e18137b7ab4 Mon Sep 17 00:00:00 2001 From: John Emmas Date: Wed, 17 Jul 2013 16:55:24 +0100 Subject: JOHNE - Testing to see if I have write access to the repo --- msvc_extra_headers/je-test.h | 66 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 msvc_extra_headers/je-test.h diff --git a/msvc_extra_headers/je-test.h b/msvc_extra_headers/je-test.h new file mode 100644 index 0000000000..6653041d8a --- /dev/null +++ b/msvc_extra_headers/je-test.h @@ -0,0 +1,66 @@ +#ifndef _TARGETSXS_H_ +#define _TARGETSXS_H_ + +#pragma warning( disable : 4996 ) + +#ifndef HAVE_LV2 +#define HAVE_SUIL +#define HAVE_LV2 +/* Comment out the above lines to build Mixbus without LV2 support */ +#endif + +#ifndef VST_SUPPORT +#define VST_SUPPORT +/* Comment out the above line to build Mixbus without VST support */ +#endif + +#ifndef JACK_32_64 +#define JACK_32_64 +/* Shouldn't really be needed but make sure that any structs we + obtain from libjack will have 1-byte packing alignment where + necessary (belt & braces approach to be on the safe side) */ +#endif + +#ifdef _DEBUG +#define _SECURE_SCL 1 +#define _HAS_ITERATOR_DEBUGGING 1 +/* #define to zero for a more conventional Debug build */ +#endif + +#ifndef __midl +#if defined(_DEBUG) || defined (DEBUG) +/* Experimental - link to the lowest DebugCRT so we can run on another system */ +#define _SXS_ASSEMBLY_VERSION "8.0.50727.42" +#else +#define _SXS_ASSEMBLY_VERSION "8.0.50727.6195" +#endif +#define _CRT_ASSEMBLY_VERSION _SXS_ASSEMBLY_VERSION +#define _MFC_ASSEMBLY_VERSION _SXS_ASSEMBLY_VERSION +#define _ATL_ASSEMBLY_VERSION _SXS_ASSEMBLY_VERSION + +#ifdef __cplusplus +extern "C" { +#endif +__declspec(selectany) int _forceCRTManifest; +__declspec(selectany) int _forceMFCManifest; +__declspec(selectany) int _forceAtlDllManifest; +__declspec(selectany) int _forceCRTManifestRTM; +__declspec(selectany) int _forceMFCManifestRTM; +__declspec(selectany) int _forceAtlDllManifestRTM; +#ifdef __cplusplus +} +#endif +#endif + +/* 'stdint.h' conflicts with various other libraries so + let's #include stdint.h first to ensure one consistent + implementation for commonly used integer types. */ +#include + +#if (BUILDING_ARDOUR) +#if defined(_MSC_VER) && !defined(__MINGW__) && !defined(__MINGW32__) +#include +#endif +#endif + +#endif /*_TARGETSXS_H_*/ -- cgit v1.2.3