helio-fm / helio-sequencer

Libre music sequencer for desktop and mobile platforms
https://helio.fm
GNU General Public License v3.0
3.12k stars 115 forks source link

Add additional soundfont formats for mobile devices. #310

Open Ivan-Spoda opened 3 months ago

Ivan-Spoda commented 3 months ago

[RU] Занялся я созданием своего Soundfont, и обнаружил, что на Android вообще нет программ, которые бы поддерживали новые версии Soundfont, такие как sfArk, sf3. Можете реализовать такое в Хелио?

[EN] I started creating my own Soundfont, and found out that there are no programs on Android at all that would support new versions of Soundfont, such as sfArk, sf3. Can you implement this in Helio?

peterrudenko commented 3 months ago

Да, вроде это не должно быть сложно (как я понимаю, там единственное отличие в том, что сэмплы сжаты), добавлю, когда будет время.

Ivan-Spoda commented 3 months ago

Да, вроде это не должно быть сложно (как я понимаю, там единственное отличие в том, что сэмплы сжаты), добавлю, когда будет время.

Да, правильно понимаете, семплы там сжаты, спасибо за ответ...

peterrudenko commented 3 months ago

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

Например, Yamaha CFX Grand - 176 сэмплов в sf3 грузятся секунд 40 вместо 1 секунды в sf2. FluidR3Mono_GM.sf3 зависает на 3-4 минуты. FLAC и sfArk не тестировал, но мрачно подозреваю, что будет что-то в том же духе, декомпрессия в любом случае не бесплатная.

Я поэтому не уверен, насколько это нужная фича: как будто бы компрессия добавляет больше проблем, чем решает. Дисковое место сейчас доступное, в том числе и на мобилках, а тормоза на десятки секунд или минуты - это просто дичь. Еще и приложение пожирнеет из-за добавленного ogg-кодировщика.

Ivan-Spoda commented 3 months ago

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

Например, Yamaha CFX Grand - 176 сэмплов в sf3 грузятся секунд 40 вместо 1 секунды в sf2. FluidR3Mono_GM.sf3 зависает на 3-4 минуты. FLAC и sfArk не тестировал, но мрачно подозреваю, что будет что-то в том же духе, декомпрессия в любом случае не бесплатная.

Я поэтому не уверен, насколько это нужная фича: как будто бы компрессия добавляет больше проблем, чем решает. Дисковое место сейчас доступное, в том числе и на мобилках, а тормоза на десятки секунд или минуты - это просто дичь. Еще и приложение пожирнеет из-за добавленного ogg-кодировщика.

А может... Выпелить к херам OGG правда мы тогда потеряем sf3, ему правда будет альтернатива в виде sfz v2, которая может питаться флаками? Да и мне кажется стоит попробовать, авось от формата все зависит, я читал документацию по какому-то из форматов, то ли sf3, то-ли sfArk, и мне показалось, что там вся компрессия заключается в том, что тупа семпл конвертирован в flac, и типа када это все дело загружается, то семпл воспроизводится в таком формате, в котором он есть (у меня все проги, которые едят sf3/sf4/sfArk - конвертируют на кой то хрен flac семплы в wav), если идея не опрадает ожиданий, тогда будем ждать что-то на подобии nki и ncw... Кстати, где есть готовый билд, чтобы это все опробовать? Кстати у меня есть предположение, что размер инструмента влияет на скорость загрузки, ибо у меня в контакте инструменты тоже с разным временем загружаются в зависимости от размера... Мне кажется это норма, если у этой задумки есть потенциал, то почему бы ее не развивать? У меня тут есть инструмент на 2800+ семплов, мною сделанный могу дать вам для тестов... Щас еще будет билд sf3/sfArk...

peterrudenko commented 3 months ago

Погонял под профайлером на свежую голову - оказывается, что можно сделать все быстрее ¯_(ツ)_/¯

Yamaha CFX Studio Grand теперь грузится у меня секунд 10 вместо 40 (тоже ужас, но не ужас-ужас). FLAC, кстати, читает в разы быстрее, чем OGG: то же самое пианино грузит уже всего за 3 секунды. Залил все это в develop сборку, должна поддерживать и OGG и FLAC, посмотрите плиз.

Ivan-Spoda commented 3 months ago

Погонял под профайлером на свежую голову - оказывается, что можно сделать все быстрее ¯(ツ)

Yamaha CFX Studio Grand теперь грузится у меня секунд 10 вместо 40 (тоже ужас, но не ужас-ужас). FLAC, кстати, читает в разы быстрее, чем OGG: то же самое пианино грузит уже всего за 3 секунды. Залил все это в develop сборку, должна поддерживать и OGG и FLAC, посмотрите плиз.

Спасибо, щас билд сделаю своего инструмента в flac, посмотрим как оно там...

Ivan-Spoda commented 3 months ago

Погонял под профайлером на свежую голову - оказывается, что можно сделать все быстрее ¯(ツ)

Yamaha CFX Studio Grand теперь грузится у меня секунд 10 вместо 40 (тоже ужас, но не ужас-ужас). FLAC, кстати, читает в разы быстрее, чем OGG: то же самое пианино грузит уже всего за 3 секунды. Залил все это в develop сборку, должна поддерживать и OGG и FLAC, посмотрите плиз.

Ваще гуд, пробовал тока флак, так как сжатие без потерь меня больше всего интересует, и пробовал тока на пк, на дройде тоже скоро попробую, короче загружает 5к семплов за 5-10 секунд, вообще спокойно, короче мне кажется что все таки этой фиче быть в Хелио, жаль что софта нет нихрена, чтобы создавать sf4, а так все гуд. Sfz v2 (Level 2) кстати тоже поддерживает флак). В общем и целом вы красава, офигенно получилось

Ivan-Spoda commented 3 months ago

Погонял под профайлером на свежую голову - оказывается, что можно сделать все быстрее ¯(ツ)

Yamaha CFX Studio Grand теперь грузится у меня секунд 10 вместо 40 (тоже ужас, но не ужас-ужас). FLAC, кстати, читает в разы быстрее, чем OGG: то же самое пианино грузит уже всего за 3 секунды. Залил все это в develop сборку, должна поддерживать и OGG и FLAC, посмотрите плиз.

В общем, попытался я проверить это дело на дройде, сжал я значится саундфонт, который весил 2 гб в формате sf2, и даже запускался на мобиле, спокойно. Теперь он весит 300Мб, но на дройде не запускается, сначала, когда я выбрал саундфонт в файлпикере, у меня сначала файлпикер завис, потом через секунд 5-10 он раздуплился, и переключил все таки меня на лайаут в хелио, потом хелио завис на секунд 20 и вылетел с критической ошибкой... Я один хрен рад, что вы это реализовали, я прекрасно понимаю что на дройде все криво... И еще... Мне показалось что он многда при воспроизведении саундфонта игнорит лупы.

peterrudenko commented 3 months ago

А можете залить куда-нибудь этот саундфонт и скинуть ссылку?

Ivan-Spoda commented 3 months ago

А можете залить куда-нибудь этот саундфонт и скинуть ссылку?

Да, без проблем

Ivan-Spoda commented 3 months ago

А можете залить куда-нибудь этот саундфонт и скинуть ссылку?

Держите. Тут и sf2, и sf4 лежит. Сделал sf4 этой фигней, ибо по другому просто никак... Пока что никто не сделал компрессор в sf4, ну и так же ни одна известная прога, по типу Polyphone/Awave Studio/Viena - пока что не поддерживает его...

Ivan-Spoda commented 3 months ago

Не помогло это дройду, все так же вылетает, на пк лупы теперь вроде бы нормально работают

peterrudenko commented 3 months ago

Там сборка закончилась позже, чем вы написали, наверное у вас все еще старая, попробуйте скачать сейчас. Я поправил работу с памятью, она должна лучше работать с большими файлами. Может быть, даже грузиться будет еще побыстрее.

Насчет лупов, я тестировал вот на этом: https://musical-artifacts.com/artifacts/3851, он весь сделан на лупах, и вроде звучит так же, как и во фруктах (что sf2, что сконвертированный sf3/sf4). Может я что-то упускаю.

Ivan-Spoda commented 3 months ago

Там сборка закончилась позже, чем вы написали, наверное у вас все еще старая, попробуйте скачать сейчас. Я поправил работу с памятью, она должна лучше работать с большими файлами. Может быть, даже грузиться будет еще побыстрее.

Насчет лупов, я тестировал вот на этом: https://musical-artifacts.com/artifacts/3851, он весь сделан на лупах, и вроде звучит так же, как и во фруктах (что sf2, что сконвертированный sf3/sf4). Может я что-то упускаю.

А да, я тупой, я теперь понял чо этот круглешек возле коммита обозначает

Ivan-Spoda commented 3 months ago

Там сборка закончилась позже, чем вы написали, наверное у вас все еще старая, попробуйте скачать сейчас. Я поправил работу с памятью, она должна лучше работать с большими файлами. Может быть, даже грузиться будет еще побыстрее.

Насчет лупов, я тестировал вот на этом: https://musical-artifacts.com/artifacts/3851, он весь сделан на лупах, и вроде звучит так же, как и во фруктах (что sf2, что сконвертированный sf3/sf4). Может я что-то упускаю.

Протестировал, саундфонт загрузился, все работает как надо, вы молодчина... Кстати, а может вы еще sfz и sfArk накинуть, чтобы было пока что проще создавать инструменты?

peterrudenko commented 3 months ago

С ними будет больше возни, в ближайшее время вряд ли дойдут руки (для sf3/sf4 было итак почти все готово)

Ivan-Spoda commented 3 months ago

С ними будет больше возни, в ближайшее время вряд ли дойдут руки (для sf3/sf4 было итак почти все готово)

Да я понимаю, в целом мне очень нравится то, что есть сейчас, просто я ленивая жопа, которая не хочет сильно заморачиваться))