Pull to refresh
2
0
geniot @geniot

User

Send message

А! Всё, я понял. У вас же свой редактор есть. Т.е. свой рендерер. Ну тогда понятно. Я остановился на Sibelius, но для меня это не принципиально. Основные форматы SVG, PNG и MIDI.

Ого. Ну это очень сложно. Ведь это означает, что вы сами ноты рендерите? А в каком формате изначально ноты хранятся? Миди? Что-то я сомневаюсь... Скорее всего вы там какой-то движок используете LilyPond, Sibelius, Finale... А потом экспортируете в SVG и оттуда x, y выковыриваете.

Ясненько. Это очень круто сделано. Я сам тут делаю обучающий плеер, типа flowkey, но для баяна и аккордеона. Поэтому меня вся эта тема интересует.

А, раз так. Извините. И как же тогда вы отрисовываете такты на клиенте? Откуда берёте x, y координаты?

Нет вообще-то. Грузится вот этот PNG https://musescore.com/static/musescore/scoredata/g/8fbceb3e46eb0cf31b7f20922556d3f5ebcfa43d/score_0.png@0?no-cache=1621346013

Выбора "mp3 или midi" нет на сайте как опции.

Зачем вы вообще отвечаете, если не знаете? Или вы не вникли в вопрос. Я спрашивал про веб-плеер на сайте https://musescore.com/ , а не про open source продукт MuseScore.

Здравствуйте, Андрей. Спасибо за интересный взгляд изнутри. Я давно знаком с MuseScore, теперь вот узнал, как вы работаете над производительностью. У меня вопросы, может быть, слишком приземлённые. Это вы делали плеер на сайте, например, https://musescore.com/user/12461571/scores/3291706/piano-tutorial ? Вы рассматривали вариант загрузки SVG, а не PNG? Когда плеер играет, что это звучит mp3, midi? Я посмотрел network, но уловить там формат тяжело. В то же время, если бы вы проигрывали midi, то вам нужно было бы загрузить music-font, который весит около 2Мб. А такого размера в network я не нахожу. Как происходит выделение тактов во время проигрывания? На сервере, я так понимаю, вы подготовили некий формат данных, чтобы потом отрисовывать такты на клиенте. Вот меня интересует, как нашли x,y для всех тактов. Какой подход использовали. Всё это я спрашиваю, потому что сам недавно реализовал похожий плеер, и мне интересно, как это у вас сделано и почему вы выбрали то или иное решение. Если это коммерческая тайна, то заранее прошу прощения. Провоцировать на нарушение NDA у меня не было цели.

Отличный вопрос. Я рассматривал этот вариант. Тут может быть Github web hook, но он мне не подходит, потому что у меня Jenkins в локальной сети, и я не планирую запрашивать внешний ip адрес. И второй вариант (который, видимо, вы имеете ввиду) - локальный хук. Здесь я, во-первых, ленюсь всё это настраивать, во-вторых, предвижу кучу проблем: - пересяду на другой комп, забуду, что хуки не настроены, - jenkins будет не доступен по какой-нибудь причине, хук сфейлится, но легче от этого мне не станет, - я пользуюсь Intellij IDEA, там свой Git плагин, как он интегрируется, пока не понятно. Короче: сложно всё это. Я начинал вообще с того, что установил и настроил TeamCity. А потом наткнулся на проблему с билдом Angular проекта и пришлось всё свернуть, перейти на старый добрый Jenkins.

Этот пост идёт с пометкой tutorial. Я надеюсь, информация сэкономит время тем, кто захочет повторить всё описанное. У меня ушло прилично времени, чтобы найти оптимальные для себя решения. Например, логин в Github, редеплой с помощью сервиса, jenkins sudoer. Ведь можно тысячью разными способами это организовать. Я, собственно, многие из них и перепробовал, прежде чем прийти к таким решениям.

Интересно. В своё время я искал, как получить доступ к элементам красно-чёрного дерева по индексу (порядковый номер в отсортированном списке). Нашёл где-то, что можно добавить вес к каждому элементу. Имплементаций не было. В итоге пропатчил java.util.TreeSet/TreeMap Вот, что получилось. https://github.com/geniot/indexed-tree-map Может и вам будет интерсно.

Information

Rating
Does not participate
Registered
Activity