+
Общий музыкальный Profile Feed

JStation! Делаем народную DAW своими руками ) Часть 1

Друзья, коллеги, приветствую!

 

Блог создан, исходя из недавней темы https://promodj.com/forum/common/1151642/Nebolshoy_vopros_na_interesnuyu_temu , там имеется вводная часть.

 

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

win32 и win64. В качестве рабочего названия, решил обозначить проект как JStation.

 

Итак, перечислю вышеуказанные концепции:

-        Система плавающих окон и поддержка мультимониторности (имеется в виду дисплей)

-        Архитектура интерфейса

-        Система компонентов среды DAW

 

Теперь подробнее:

 

Система плавающих окон и поддержка мультимониторности

Практически все окна (формы) в программе имеют одинаковое представление и поведение. Центральная палитра программы имеет три зоны, к которой могут липнуть окна, слева, справа и в центре. Также окно можно вытащить из данных  зон и оно приобретет свободноплавающий вид. Что будет в этих окнах, собственно весь функционал и привычный и непривычный. Окно секвенсора проекта также будет таким же окном с таким же поведением, можно разносить окна по разным мониторам, что очень удобно, если рабочее место имеет более одного монитора. Микшер, например, точно также, пианоролл - туда же. Т.е. все что будет в визуальных окнах DAW будет обладать описанным поведением. Перетаскиваем окно обычным образом, при этом либо делаем его свободноплавающим, либо прикрепляем к определенной зоне, сместив влево, вправо или к верху. При нажатии кнопки фиксатора в правом углу окна, форма закрепляется и автоматически не будет скрываться. Текущая конфигурация запоминается и будет восстановлена при перезапуске. В общем и целом, система направлена на то, чтобы каждый пользователь мог исходя из собственных удобств и конфигурации оборудования настроить среду удобно под себя.

 

Архитектура интерфейса

В целях увеличения вертикального пространства, главное меню вынесено в панель слева и

имеет кнопки с пиктограммами. Все главные функции, Открыть проект, Сохранить и т.п.

вынесены в отдельные кнопки для быстрого доступа, остальные функции доступны в виде

контекстного всплывающего меню, активация данного меню по самой нижней кнопке в меню.

Если какое-либо окно было закрыто, получить к нему доступ

можно из соответствующего пункта меню.

 

Система компонентов среды DAW

Программа имеет API для сторонних компонентов от независимых разработчиков. Компонент

похож на тот же обычный плагин, но имеет другое предназначение. Плагин работает с

аудио либо миди потоком и работает в достаточно изолированной среде. Компонент приложения

работает на уровне самой программы и ему предоставляются богатые возможности. Компонент

может создавать, открывать, закрывать миксы. Воздействовать на содержимое микса.

Т.е. компонент работает структурно вместе с DAW и дополняет ее возможности. Что-то

похожее сейчас реализовано во многих DAW через технологию ARA, но там также имеется

множество ограничений. В качестве первого компонента, реализован компонент JPluger.

Данный компонент может открыть любой плагин (в зависимости от версии win32 и win64) с

обзорной целью. Можно посмотреть вид плагина, послушать звуки и т.д.

 

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

аудио движок программы, компонент JPluger начнет издавать звуки от плагинов.

 

Присоединяйтесь, пишите, предлагайте. Все мнения будут учтены!

 

Ссылка на релиз программы: http://hw.h1n.ru/jstation.zip

 

Скриншоты:

 

 

 

 

 

3 ▲
24 December 2021 0:54
Atom Sound

Comments

Маленькая просьба - собери не debug, а release версию, MSVCR120D не входит в публичный runtime, увы.
А вообще интересно, может ли Visual Studio использовать статическую линковку, то есть собирать exe и dll, вообще не зависящие от рантаймов, а только от Windows API?
32-битную. 64 запускается без проблем.
obridge.dll там дебажная получается ?
Либо сам exe-шник
Я автоматический сборщик сегодня допишу, посмотрел он оказывается не собирает эту библиотеку, берет готовую уже, потому она дебажная и получилась
Заменил архив, теперь все там релизное
Небольшое пожелание по интерфейсу - свернутые окна внизу лучше активировать не по наведению мыши, а по нажатию. А то получается, двигаешь мышь, а они мелькают.
И про меню. На мой взгляд, стоит хотя бы в качестве опции сделать традиционное верхнее меню. Полоска меню вверху окна занимает, если не ошибаюсь, 21 пиксель. Боковая панель все-таки больше.
Боковая, да, больше, но на ноуте не хватает вертикали, по горизонтали нормально. Надо подумать.
Я потому и говорю - можно сделать настройку. Хотя сейчас ноуты вроде FullHD...
Ноуты FUllHD конечно, но по вертикали критично для секвенсора, меню нужно раз в час а полоска эта постоянно висит
Ну надо обдумать, в целом посмотрим сколько там вообще опций будет
Интересно будет посмотреть,что получится.
Такой вопросик. Кто общался с найтиновским контактом. Плагин мультипрограммный, как в разных студиях реализован интерфейс работы с ним и в целом с мультипрограммными плагинами ? Будет время, черкните кто-нибудь. Спасибо!
С контактом не работал, но не совсем понимаю, что значит мультипрограммный? Спрашиваю, чтобы понять, может у меня другие такие плагины есть. Знаю, что у контакта 64 выходных канала.
Да я вот с ними тоже дел не имел, но смысл такой, они используют множество каналов для миди событий, т.е. у обычного синта один вход миди по нему и работает, в sdk это называется программами, мультипрограммные используют множество входов миди, вот и спрашиваю как чисто технически в студии им назначаются эти каналы и работают с ними
Контакт имеет множество дек, которые можно вставлять и каждой деке назначается свой канал миди
Таких не видел ни разу... Возможно, в моем Рипере контакт падает именно из-за этого (а может, просто криво установлен).
В стандарте MIDI есть каналы, но события разных каналов идут одним потоком MIDI-команд.
А с выходными каналами плагинов тоже непонятно, как лучше сделать. Можно делать вложенные дорожки на каждую пару каналов, а можно делать матрицу, где указывать, какой канал плагина на какой канал дорожки выводится.
"В стандарте MIDI есть каналы, но события разных каналов идут одним потоком MIDI-команд."

Я пока собственно сам в этом плаваю, видел краем глаза в спецификации vst 2.x, что можно выбрать номер программы и гнать поток миди уже по нему, видимо плагин учитывает этот номер и разделяет потоки, обычный плагин ничего не делит и весь поток одинаково воспринимает, как то мне это так видится. В рипере должна быть поддержка таких вещей.
В Рипере у каждой дорожки есть несколько "MIDI шин", может, они как-то используются. Но я не нашел способа, как ноты из пианоролла перенаправить на другую шину, если только посылом с другой дорожки.
Я спецификации VST не читал, только самого MIDI протокола, когда-то с ним работал, еще когда VST не было.
"А с выходными каналами плагинов тоже непонятно, как лучше сделать. Можно делать вложенные дорожки на каждую пару каналов, а можно делать матрицу, где указывать, какой канал плагина на какой канал дорожки выводится."

По самому аудио движку там множество интересных моментов, как раз занимаюсь его планированием. У меня в движке не будет как таковых дорожек, дорожки будут вырисовываться из нод общего графа, каждая нода соотвественным образом коммутируется с другими нодами и из всего это набора уже будет выделяться графический интерфейс уже с обычными дорожками, инсертами и т.п.
Это надо смотреть, пока не очень представляю... В рипере как раз ноды (если смотреть в окне Wiring) - это дорожки, в каждой из них свой Plugin chain.
В общем, открылся контакт в довольно старом сонаре, там так - в меню 4 порта - A, B, C, D, причем у A написано From host, у остальных - Not available. В Орионе то же самое. Собственно, у тебя так же. Рипер контакт просто не открывает, валится.
А вот по движку тем (скинов) - в диалоге открытия файлов сверху имена папок отрисованы белым на белом. Можно ли сделать опцию, чтобы не использовались скины, а просто были стандартные интерфейсные компоненты Windows?
FL 20 тоже не открывает мой Kontakt. Версия Kontakt - 6 portable.
Да блин, куча людей юзает контакт, думаю появятся, опишут процесс, пока не срочно это.
Я знаю, что у диалога там есть глюк по скинам, шрифт белый почему то, потом с этим буду разбираться, не критично пока. Скины выключить можно конечно, но там такой "вырви глаз" получится. Вообще по графике, пытаюсь человека привлечь, но пока неполноценно как то получается, поэтому только на себя расчитывать приходится, а времени и сил на это нету. Хотя прекрасно понятно, графика должна быть внятной пусть и не шибко профессиональной, компромисс пока где то.
Тут конечно подходы разные, сейчас модно делать скины, но лично мне нравится, когда программа без скинов, со стандартным интерфейсом, по крайней мере в диалогах, потому и предложил опцию сделать.
Доберемся до опций, но каждую цветую схему надо руками отрабатывать, вся дальнейшая графика, ручки, крутилки, окошки и т.д. должны соответствовать своей схеме, одному это нереально переработать, тут на одну бы схему понарисовать.
Please, sign up (it's quick!) or sign in, to post comments and do more fun stuff.