Дизайн-документ 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.
- UI. Данный модуль предоставляет интерфейс программы, построенный на вкладках. Он обеспечивает управление другими модулями и графическое отображение информации.
- DSP. Цифровой процессор управляет цифровой обработкой и микшированием сигнала, поступающего от различных инструментов и направляет результат в IO.
- IO. Модуль, обеспечивающий ввод и вывод аудио-сигнала и MIDI-комманд с клавиатуры.
- Sequencer. Управляет состоянием DSP, руководствуясь треками автоматизации(automation).
Обзор UI.
Поскольку к интерфейсу предоставляются все вышеописанные требования, а существующие кроссплатформенные UI-фреймворки, вроде wxWidgets или Qt слишком тяжелы, придётся разработать свой и обеспечивать его поддержку в рамках нужд проэкта. Предполагается, что окно пакета будет развёрнуто и занимать всё пространство экрана. в верхней части будет панель управления (toolbar), обеспечивающая работу с файлами, управление транспортом, доступ к вкладке с настройками и прочие важные функции. Ниже будут располагаться переключаемые вкладки. Вкладки будут выполнять те же функции, что и окона в прочих DAW.
Обзор DSP.
Работая с 8 и 16-битным аудио при цифровой обработки сигнала во избежании потерь качества достаточно использовать 32-bit float.
Но при использовании 24 и 32 бит для обеспечения той же точности требуется уже 64-bit double.
Так как данный пакет должен выполняться как на мощом оборудовании, так и на оборудовании с более низкими характеристиками необходимо предусмотреть переключение режимов работы этого модуля не выходя из программы.
Одна из вкладок должна содержать управление микшером. Другая - соединением устройств и посылами/возвратами на эффекты. Также сделать на каждый инструмент вкладку с управлением каналом микшера для этого устройства и эффектами. Также основные настройки микшера будут доступны во вкладке секвенсора в левой части. Это обеспечит гибкость и удобство управления.
Обзор IO.
Ввод-вывод с поддержкой разных драйверов. Каждый драйвер выполнен в виде отдельной (динамически-линкуемой) библиотеки с единым интерфейсом.
драйвер может быть переключен непосредственно в процессе работы
Варианты технологий для "драйвера"
- WinAPI (waveOut*** и waveIn***, windows-only)
- DirectSound (windows only)
- WASAPI (Windows Audio Session API, Windows-only)
- ALSA (advanced linux sound arch.) (en.wikipedia.org)
- OpenAL
- ASIO
также возможно поддержка JACK.
Обзор Sequencer
Обычный секвенсор, какой используется в программах Cubase или Reason. Поддержка двух типов дорожек - MIDI и Audio. Возможность записи звука на дорожку.