Еще одна позитивная техническая новость. Вчера удалось заставить прототип приложения Inspirer зазвучать. Пока в основной проект я этот момент не перенес, как и то, ради чего создавался этот прототип, но результат уже вполне себе интригующий.
Под прототипом я подразумеваю тестовое приложение, в котором гораздо удобнее, чем в основном проекте, было писать элемент управления для вывода нот (и не только, у него есть и обратная связь, а еще я в нем прописал математические функции, которые будут считать длительности в тактах), также в нем создавал и доводил до ума т.н. 'Piano Roll', элемент управления с клавишами от рояля. И на последнем, собственно, налаживал звучание, т.к. именно к нему было удобнее всего привязывать эту часть функционала.
Теперь небольшое опровержение. Я говорил, что у меня есть два приложения в исходниках под анализ, извлечение звукового функционала и перенос. Одно является плеером (что мне не особо подходило, но в принципе, читая код C++, я понимал, как можно это все вытащить на поверхность и использовать в своих корыстных целях), второе же - эмулятор пианино (что подходило мне куда больше, но на первый взгляд казалось переусложненным всякими ненужными мне дополнениями). В общем, оба отложены на потом ))
Я тут нашел еще одно приложение в исходнике, типа самое-самое простое (и оно таковое и есть). И в нем все сделано на редкость изящно и удобно для переноса. Настолько, что мне хватило пары часов, чтобы в нем разобраться, перенести из него функциональную часть в прототип, адаптировать вызовы и запустить это все. Хотя я был уверен, что у меня уйдет не меньше пары недель для запуска звукового блока, исходя из предварительного анализа тех двух приложений.
Вообще, я не исключаю, что вернусь к тем двум, даже скорее, к плееру, т.к. он гораздо функциональнее. Но это потом, может уже к 4-й версии Inspirer. А может и позже. На данный момент текущего функционала звукового движка мне достаточно (надеюсь).
Сомнения у меня из-за возможных подводных камней. В частности, звук хочу пускать еще и через различные наушники, как проводные, так и беспроводные, а это можно проверить только на реальном устройстве. Но проверить надо обязательно.
Зато другую часть сомнений мне удалось рассеять. Речь про многоканальность. Пример показывал отправку нескольких нот (аккордов) в звук, и это работало. Но они все шли одним инструментом. И у меня была мысль создать несколько экземпляров движка, по одному на дорожку. Но при адаптации вызова я засомневался, что так вообще получится. Однако, и это важно, Inspirer должен предусматривать многодорожечность. И я провел несколько тестов, отправляя одновременно несколько нот на разные инструменты. И это сработало. Это означает, что одним экземпляром вполне можно обойтись, что хорошо с точки зрения оптимизации.
Короче, я полноценно вернулся к разработке Inspirer, результаты мне нравятся, процесс идет.
p.s. обещанный релиз нейросетевой музыки застрял по части текстов. Не знаю, чего мне не хватает, но пока не получается их дописать. Как допишу - обязательно сообщу.







Комментариев нет:
Отправить комментарий