Project

General

Profile

Интеграция с редактором элементов (Samplitude)

Задача
h3. Пользовательские требования
h4. "Открытие из МБД"

Из среды Samplitude выбрать один из существующих элементов МБД и открыть звуковой файл элемента на редактирование в Samplitude.

"Сохранение в МБД"

Из среды Samplitude выполнить внесение изменений в МБД. При этом изначально элемент не обязательно открыт на редактирование из МБД

  1. замену файла существующего элемента МБД, с возможностью указания метаданных
  2. добавление нового элемента, с возможностью указания метаданных

"Открыть в Samplitude"

Из среды Digispot вызвать открытие выбранного элемента МБД на редактирование в Samplitude, результат аналогичен выполнению для данного элемента "Открыть из МБД".

Реализация
h3. Функциональная модель

При обращении из другого приложения все операции, специфичные для Digispot, выполняются внутри специально запущенного приложения Digispot II. Данное приложение открывает все необходимые окна и выполняет все необходимые операции. Соответственно, на рабочем месте должна быть установлена копия ПО Дигиспот, включенная в состав комплекса, подключенная к руту и БД. Далее Digispot server application (DSA) . Непосредственно сервером может быть:

  1. Обычное приложение, расширенное по функциональности (Джин, Трек).
  2. Специально написанное приложение - интегратор.

Сервер DSA работает постоянно, т.к запуск приложения в рамках ГР происходит не быстро.

При выполнении работы с БД действия выполняются с правами пользователя, который залогинен в текущий момент на сервере DSA. Учитывая использование windows-авторизации на ГР это не является проблемой. Но при отсутствии windows-авторизации и смене работающего пользователя возникает проблема соблюдения его прав.

Samplitude использует для общения с Дигиспот специальную библиотеку, которая может быть реализована в разных формах, предлагаемый варианты:

  • сборка .NET
  • COM-компонента
  • обычная DLL

Данная библиотека ведет общение с сервером DSA по протоколу DigispotIP. Библиотеке указывается путь к серверу и она может сама запустить приложение.

Сценарии
h4. Открытие из МБД

  1. Samplitude загружает библиотеку
  2. Вызывается метод библиотеки OpenFromDigispot
    1. Библиотека подключается к серверу, возможно, запуская его
    2. Сервер открывает необходимые окна, ведет диалог с пользователем.
    3. Завершив выбор, сервер закрывает все окна, и пересылает данные библиотеке
  3. Завершается метод, Samplitude получает данные

Сохранение в МБД

Аналогично, за тем исключением, что данные передаются из Samplitude в Дигиспот.

Открыть в Samplitude

Т.к. инициатором данной операции является Дигиспот, то сценарий отличается от предыдущих.

  1. Сценарий управляемого запуска
    1. Джин запускает Samplitude с передачей через командную строку данных об открываемом элементе (формат передачи?), тот сам разбирается, как это открыть, возможно, передав данные в уже работающую копию.
      Данный сценарий не имеет ничего общего с предыдущими двумя, с другой стороны - не требует наличия библиотеки вообще.
  2. Сценарий исходящего вызова
    1. Джин связывается по DSA с библиотекой, встроенной в Samplitude. Возможно, Джин может запустить Samplitude.
    2. Библиотека имеет возможность произвести исходящий вызов к Samplitude. Что она и делает, передавая ему данные, полностью аналогичные данным из сценария "Открыть из МБД".

Второй сценарий требует некоторых особенностей от реализации работы с библиотекой в Samplitude

  1. Библиотека должна быть загружена в течении всего времени работы Samplitude, чтобы обеспечить возможность вызывать данную функцию из Дигиспот в любое время
  2. API библиотеки должно обеспечивать возможность исходящего вызова к Samplitude, а он, в свою очередь, должен это обеспечить.

Мне второй вариант кажется более однородным по реализации.

Вариант с запуском и передачей через командную строку можно реализовать в общем случае для открытия в любых внешних реакторах.

Формат обмена данными

Предлагается использовать передачу данных в виде строки XML, описывающей все метаданные элемента, в том числе, и имя его файла и ID в МБД.

При передачи информации в Дигиспот samplitude может сформировать только необходимые поля XML, а может и дополнительные - название и пр.
Если они присутствуют в передаваемом описании - они будут применены при сохранении в Дигиспот, если нет - будут сохранены те, что есть (при перезаписи) или они будут автоматически сформированы по стандартному поведению - при добавлении.

Файл для Samplitude

Т.к. Samplitude не поддерживает некоторые форматы файлов, например, *.tpr, то необходимо перед открытием файла в Samplitude сформировать специальный файл, со стандартным форматом, например PCM WAV, который собственно и будет обработан редактором. При этом выполняется сведение с применением всех настроек, резиновых нитей и пр. Этот файл должен быть доступен все время работы над ним в Samplitude. Т.е. он не удаляется при завершении работы программ.

Если редактирование будет происходить достаточно интенсивно, то таких файлов будет накоплено очень много, их необходимо автоматически удалять. Т.к. определить, когда файл перестал быть нужен для работы - невозможно, то предлагается

  1. Экспортировать файлы в спец. каталог на данном рабочем месте.
  2. Автоматическое удаление в этом каталоге файлов, созданных более, чем указанное кол-во дней назад. Например, неделю.

Пользователи должны быть в курсе данного поведения, при долговременной работе должны пересохранять файлы в другое место.

Add picture from clipboard (Maximum size: 742 MB)