ПроектыФорумОцените

Компактный синтезатор MIDI (6 стр)

Страницы: 15 6 7 814 Следующая »
#75
18:29, 9 апр 2015

gammaker
Работает, очень не хватает барабанов. Есть ощущение, что бас на октаву низит.

#76
18:46, 9 апр 2015

Mikle
> Работает, очень не хватает барабанов. Есть ощущение, что бас на октаву низит.
Проблема в том, что ради одного единственного звука для каждого ударника придётся городить отдельный генератор. Да ещё я не разобрался в принципе как делать ударники. Поэтому я пока за них решил не браться. Хотя в теме конкурса 96к видел один ударник, но ещё пока себе не забрал. Если кто-нибудь ещё изобретёт генерацию барабанов и других ударников, кидайте сюда.
Мне казалось, что многие инструменты слишком писклявые и я их снижал на октаву. Но басу я только одному снижал, тому который synth bass 1 в midi.

FordPerfect
> Походу Orchestral Harp генерируется... странно.
Да, я видимо туда какой-то инструмент от балды пихнул и не исправлял, потому что он как-то больше нигде и не встречается.
Кстати да, я туда скрипку Mikle'а поставил. Хотя на скрипку оно уж точно совсем не похоже. Надо наверное код генерации гитары адаптировать для этого инструмента.

#77
21:42, 9 апр 2015

gammaker
>Если кто-нибудь ещё изобретёт генерацию барабанов и других ударников, кидайте сюда.
Ты о хроматической перкуссии, или о 10 канале?

+ Показать
#78
23:18, 9 апр 2015

Я об ударниках, которые отдельно от музыкальных инструментов. Те, которые в музыкальном редакторе называются общим словом Drums.

#79
0:02, 26 июня 2015

про качество звука если кратко то инструменты на себя не похожи, но тут тебе только бесконечные эксперименты помогут. Но что можно исправить безотносительно самого синтеза нот, так это проблему со сменой темпа, то ли у тебя при смене темпа все играющие ноты останавливаются то ли еще что-то. Проверь у себя на этом файле например http://www.angelfire.com/oh5/rh_midi/Julia_s_Piano_Solo.mid в концовке явно что-то не так с темпом.

з.ы. как выглядит Api? Почему не использовать soundfont'ы? Ты можешь на генерировать препроцессом нужные инструменты и потом уже смешивать, плюс в том что можно будет подключить уже имеющиеся soundfount'ы сделанные кем то ранее для отдельных инструментов и менять их при желании на лету.

#80
1:01, 26 июня 2015

Aroch
> про качество звука если кратко то инструменты на себя не похожи, но тут тебе
> только бесконечные эксперименты помогут.
Я уже с тех пор кое-что улучшил, но пока не выкладывал версию. Наверное завтра выложу. Там даже пара ударников появилась.

Aroch
> Но что можно исправить безотносительно самого синтеза нот, так это проблему со
> сменой темпа, то ли у тебя при смене темпа все играющие ноты останавливаются то
> ли еще что-то.
Не может быть такого, чтобы они останавливались. Все ноты сначала заносятся в структуру с учётом темпа, где уже нет понятия темпа. И только потом идёт синтез.

Aroch
> Проверь у себя на этом файле например
> http://www.angelfire.com/oh5/rh_midi/Julia_s_Piano_Solo.mid в концовке явно
> что-то не так с темпом.
Не качается "404 Error!".

Aroch
> з.ы. как выглядит Api?
API чего именно? Инструментов? Завтра покажу, а то спать пора.

Aroch
> Почему не использовать soundfont'ы?
Это что? Готовые семплы что ли? Свои семплы кешировать смысла почти нет, так как производительность упирается в затухание, которое логичнее отдельно накладывать. К тому же непонятно, какой длины тогда ноты брать для хранения. Длинные много памяти займут, а короткие я пробовал зацикливать, но звучит ужасно. А к чужим семплам я принципиально не хочу привязываться, потому что цель создать компактный синтезатор, который делает всё своими силами. Хотя как дополнение их можно и прикрутить. И вопрос в том, где их брать?

Aroch
> Ты можешь на генерировать препроцессом нужные инструменты и потом уже смешивать
Я и так могу всё смешивать без проблем.

#81
1:14, 26 июня 2015

gammaker
>Это что?
https://en.wikipedia.org/wiki/SoundFont
>И вопрос в том, где их брать?
Вот парочка ссылок:
http://sourceforge.net/p/fluidsynth/wiki/SoundFont/
Там сотни мегабайт, типично.
На http://solmire.com/ можно посмотреть список популярных и послушать на примере.

#82
4:29, 26 июня 2015

gammaker
> Не качается "404 Error!".
попробуй тут тогда http://files.khinsider.com/midifiles/ps1/final-fantasy-8/julia-s-piano-solo.mid
> API чего именно? Инструментов? Завтра покажу, а то спать пора.
нет, того как воспроизводишь ноты с заданными параметрами, с пользовательского кода я могу например по мере поступления тупо отправлять миди сообщения?
> Это что? Готовые семплы что ли?
не совсем, там всё несколько сложней, это как атлас шрифта но при этом есть еще инфа о кернинге, высоте, упакован с максимальным возможным размером, и ресайз и не приводит к ухудшению качества и еще куча всякий разных мелочей.

#83
11:04, 26 июня 2015

Aroch
> попробуй тут тогда
> http://files.khinsider.com/midifiles/ps1/final-fantasy-8/julia-s-piano-solo.mid

Aroch
> нет, того как воспроизводишь ноты с заданными параметрами, с пользовательского
> кода я могу например по мере поступления тупо отправлять миди сообщения?
Ноты генерируются этой функцией:

void GetNoteSamples(ArrayRange<float> inOutSamples, MusicNote note, float tempo, float volume, uint sampleRate, bool add) const

MusicNote содержит в себе октаву, ноту и длительность.
То есть нужно заранее знать длину ноты. А в midi были сообщения начала и конца ноты. Поэтому чтобы сделать поддержку midi сообщений в реальном времени, придётся это переделать и ноту генерировать по частям. Но в инструментах с экспоненциальным затуханием это не нужно, потому что у них длина фиксирована - пока не затухнет достаточно.

Aroch
>упакован с максимальным возможным размером
В смысле с минимальным?

FordPerfect
> Там сотни мегабайт, типично.
Многовато. А какой из SoundFont'ов самый компактный?


Aroch
> Но что можно исправить безотносительно самого синтеза нот, так это проблему со
> сменой темпа, то ли у тебя при смене темпа все играющие ноты останавливаются то
> ли еще что-то.
Я вспомнил, что был такой глюк, когда все ноты останавливались. Но не знаю, был ли он в какой-то из выложенных версий. Сейчас проверил, в последних двух выложенных версиях его нет. У меня та же музыка звучит нормально без прерывания нот.

#84
11:49, 26 июня 2015

Новая версия: [file=108422]. Midi внутри.
Как всегда, много улучшений музыкальных инструментов. Появилась пара ритмичных инструментов вместо старой заглушки. Это версия без стриминга. А то говорят, что на XP он заикается. Она хорошо оптимизирована и долго синтеза ждать не придётся. Но если музыка содержит скрипку, то придётся подождать около 10-30 секунд, так как там используется физическое моделирование. Но таких немного.

#85
12:31, 26 июня 2015

gammaker
> В смысле с минимальным?
максимальным, о distance field же :) речь шла об обычных шрифтах в качестве аналогии.
> Ноты генерируются этой функцией:
ок, если я знаю заранее длину ноты, твое api позволяет сразу ее проиграть в реал тайме? Мне не нужна генерация сэмпла, я хочу просто сказать вот есть такая нота, такой-то длины, извлекай звук здесь и сейчас. Есть такое или нужно заранее обрабатывать все ноты?
> Многовато. А какой из SoundFont'ов самый компактный?
есть шрифты которые включают в себя сразу все стандартные инструменты включая ударные, и максимальный размер который я видел доходил почти до гигабайта, есть которые конкретно для конкретного инструмента, если тебе нужен шрифт с полным набором инструментов и при этом достаточно компактный то посмотри Timidity у него чуть меньше 6мб шрифт (есть исходники его синтезатора в том числе), лично мне больше нравится Fluidовский шрифт, он 140мб.
> У меня та же музыка звучит нормально без прерывания нот.
не знаю, похоже у тебя просто ноты малых октав гасятся сами по себе быстрее чем нужно, но концовка звучит заметно рвано. (проверил на новой версии, также невнятно заканчивается, вся мелодия словно рассыпается)

з.ы. И сделай закрытие консоли без крэша :) если закрыть щелчком по крестику.

#86
13:03, 26 июня 2015

Aroch
> з.ы. И сделай закрытие консоли без крэша :) если закрыть щелчком по крестику.
Это винда виновата по-видимому. Она как-то некорректно прибивает процесс. Если память не изменяет, падает из-за того, что программа пытается освободить DirectSound, а тот уже прибит виндой. В восьмёрке исправили, уже не крешится. Закрывай на Enter.

Aroch
> ок, если я знаю заранее длину ноты, твое api позволяет сразу ее проиграть в
> реал тайме?
> Мне не нужна генерация сэмпла, я хочу просто сказать вот есть такая нота,
> такой-то длины, извлекай звук здесь и сейчас.
Ну примерно это делается в версиях со стримингом. То есть там используется циклический буфер, в который всё это миксится, а потом складывается в буфер DirectSound. Но ноты генерируются заранее. Если делать здесь и сейчас, то так не получится - придётся ждать, когда уже загруженная часть буфера доиграет, а она порядка секунды - чем больше, тем равномернее нагрузка на процессор. Можно создавать буфер на лету и его воспроизводить, но не знаю, сколько времени он будет создаваться, заливаться и какая будет задержка воспроизведения. Короче от API зависит. И ещё плюс время синтеза, одна нота синтезируется за время порядка миллисекунды, если это не скрипка. Скрипка примерно в 100 раз медленнее.

#87
13:32, 26 июня 2015

MusicSynthesizer_2015_06_26.exe - Точка входа не найдена
---------------------------
Точка входа в процедуру _except_handler4_common не найдена в библиотеке DLL msvcrt.dll.

XP SP3.
какую то особую дллку может нужно туда поместить?

Версия из #73 норм запускается.
Что-то питч там как-то не туда попадает. Возможно контролсы переопределения глубины питча не обрабатываются.

#88
13:48, 26 июня 2015

Dexus
> MusicSynthesizer_2015_06_26.exe - Точка входа не найдена
> ---------------------------
> Точка входа в процедуру _except_handler4_common не найдена в библиотеке DLL
> msvcrt.dll.
> XP SP3.
Аналогично.

#89
13:51, 26 июня 2015

Это наверное из-за перехода на Visual Studio 2015 RC. Она опять поломала совместимость с XP. Сейчас буду разбираться.

Страницы: 15 6 7 814 Следующая »
ПроектыФорумОцените

Тема в архиве.