Menu

desdocru

desdoc (1)
xakepp35

Дизайн-документ OpenDAW

OpenDAW - Цифровая рабочая станция (DAW) с открытым исходным кодом и лицензией GNU GPL для некоммерчческого использования (использования, не приносящего прибыль в каком-бы то ни было виде, в том числе и косвенно). OpenDAW должна составить конкуренцию таким коммерческим пакетам, как Cubase, Reason или FruityLoops.


Ключевые моменты:

  • OpenSource. Открытый исходный код позволит любому желающему использовать его в некоммерческих целях. Пара глаз хорошо, а тысяча лучше - большой размер OpenSource-сообщества позволит развиваться проэкту быстрее, исправляя ошибки и вводя дополнительную функциональность. Также разработка проэкта с использованием готовых технологий с открытым исходным кодом позволит развиваться быстрее и обеспечит должную поддержку.
  • Non-Profit. Созданный не с целью получения прибыли, этот проэкт живёт основываясь на идее, что есть самый мощный двигатель прогресса в мире. Использование самых современных технологий и алгоритмов обработки данных вкупе с открытым исходным кодом создаёт отличную базу для исследований в данной области.
  • Cross-Platform. ПО, работающее в операционных системах Windows, Linux и MacOS, позволяет делать привычные пользователю вещи вне зависимости от операционной системы. Это приятно.
  • Architecture-Independent. Поддержка повсеместно-распространённой архитектуры x86, также как и поддержка занимающей всё большую нишу x64. При должной необходимости может быть портирован и на другие платформы, такие как ARM.
  • Multi-Threading. Многопоточная архитектура и использование библиотеки TBB от Intel даёт огромный прирост при выполнении алгоритмов цифровой обработки звука на многоядерных процессорах.
  • CUDA. Использование этой технология предоставит счастливым обладателям видеокарт NVidia с поддержкой CUDA невероятную мощь вычислений. Почему этого никто ещё не сделал?
  • User Interface. Дружественный и интуитивно понятный, крайне простой и удобный в использовании интерфейс - это то, чего так не хватает многим DAW. Практически все пакеты подобного рода используют окна для отображения компонентов. Практика развития интернет-браузеров показала, что вкладки являются более удобным для пользователя вариантом отображения информации. Поэтому интерфейс, построенный на вкладках будет новым шагом в развитии цифровых станций.
  • Lightweight. Малый размер, оптимизированность алгоритмов позволяют пакету выполняться даже на низко-производительном оборудовании с небольшим объёмом памяти. Никаких тяжёлых фреймворков!



Обзор архитектуры пакета.

Пакет состоит из нескольких взаимосвязанных модулей - UI, DSP, IO, и Sequencer.

  1. UI. Данный модуль предоставляет интерфейс программы, построенный на вкладках. Он обеспечивает управление другими модулями и графическое отображение информации.
  2. DSP. Цифровой процессор управляет цифровой обработкой и микшированием сигнала, поступающего от различных инструментов и направляет результат в IO.
  3. IO. Модуль, обеспечивающий ввод и вывод аудио-сигнала и MIDI-комманд с клавиатуры.
  4. Sequencer. Управляет состоянием DSP, руководствуясь треками автоматизации(automation).



Обзор UI.

Поскольку к интерфейсу предоставляются все вышеописанные требования, а существующие кроссплатформенные UI-фреймворки, вроде wxWidgets или Qt слишком тяжелы, придётся разработать свой и обеспечивать его поддержку в рамках нужд проэкта. Предполагается, что окно пакета будет развёрнуто и занимать всё пространство экрана. в верхней части будет панель управления (toolbar), обеспечивающая работу с файлами, управление транспортом, доступ к вкладке с настройками и прочие важные функции. Ниже будут располагаться переключаемые вкладки. Вкладки будут выполнять те же функции, что и окона в прочих DAW.


Обзор DSP.

Работая с 8 и 16-битным аудио при цифровой обработки сигнала во избежании потерь качества достаточно использовать 32-bit float.
Но при использовании 24 и 32 бит для обеспечения той же точности требуется уже 64-bit double.
Так как данный пакет должен выполняться как на мощом оборудовании, так и на оборудовании с более низкими характеристиками необходимо предусмотреть переключение режимов работы этого модуля не выходя из программы.
Одна из вкладок должна содержать управление микшером. Другая - соединением устройств и посылами/возвратами на эффекты. Также сделать на каждый инструмент вкладку с управлением каналом микшера для этого устройства и эффектами. Также основные настройки микшера будут доступны во вкладке секвенсора в левой части. Это обеспечит гибкость и удобство управления.


Обзор IO.

Ввод-вывод с поддержкой разных драйверов. Каждый драйвер выполнен в виде отдельной (динамически-линкуемой) библиотеки с единым интерфейсом.
драйвер может быть переключен непосредственно в процессе работы
Варианты технологий для "драйвера"

  1. WinAPI (waveOut*** и waveIn***, windows-only)
  2. DirectSound (windows only)
  3. WASAPI (Windows Audio Session API, Windows-only)
  4. ALSA (advanced linux sound arch.) (en.wikipedia.org)
  5. OpenAL
  6. ASIO

также возможно поддержка JACK.


Обзор Sequencer

Обычный секвенсор, какой используется в программах Cubase или Reason. Поддержка двух типов дорожек - MIDI и Audio. Возможность записи звука на дорожку.


MongoDB Logo MongoDB