PDA

Просмотр полной версии : DryWetMIDI / .NET библиотека для работы с MIDI файлами



realMakS
01.12.2018, 15:59
DryWetMIDI (https://github.com/melanchall/drywetmidi) – .NET библиотека для работы с MIDI файлами, позволяющая:


Читать, писать и создавать файлы в формате Standard MIDI Files (SMF) (https://www.midi.org/specifications/category/smf-specifications), а также RMID (https://www.loc.gov/preservation/digital/formats/fdd/fdd000120.shtml) файлы, где SMF упакован в блок RIFF. Процесс чтения и записи можно точно настроить, что позволяет, например, прочитать испорченные файлы и восстановить их, или же написать валидатор MIDI файлов.
Реализовать пользовательские блоки данных (https://github.com/melanchall/drywetmidi/wiki/Custom-chunks) (chunks) и мета события (https://github.com/melanchall/drywetmidi/wiki/Custom-meta-events) (meta events), которые могут быть записаны в MIDI файлы или же прочитаны из них.
Управлять содержимым MIDI файлов посредством низкоуровневых сущностей (например, событий) или же высокоуровневых (например, нот).
Создавать музыкальные композиции (Pattern (https://github.com/melanchall/drywetmidi/wiki/Pattern)).
Выполнять сложные задачи, например, квантизацию, разделение нот или конвертацию MIDI файла в CSV (Tools (https://github.com/melanchall/drywetmidi/wiki/Tools)).


Для быстрого погружения в работу с библиотекой можно прочитать следующие статьи:


DryWetMIDI: High-level processing of MIDI files (https://www.codeproject.com/Articles/1200014/DryWetMIDI-High-level-processing-of-MIDI-files)
DryWetMIDI: Notes Quantization (https://www.codeproject.com/Articles/1204629/DryWetMIDI-Notes-Quantization)


GitHub проекта: https://github.com/melanchall/drywetmidi
Wiki: https://github.com/melanchall/drywetmidi/wiki

root_sashok
01.12.2018, 16:04
Поздравляю, Макс! Помню, как ты начинал делать её в 2013 и писал здесь об этом. Так же немного приложил руку к проекту, помогав тестировать библиотеку на практике. Это первый и пока единственный серьёзный программный проект, связанный с музыкой и нашим форумом.

realMakS
01.12.2018, 16:17
Да, спасибо за предоставленное оборудование для тестов нового большого пласта функциональности библиотеки – работы с MIDI устройствами. Надеюсь, скоро будет релиз с этими новшествами :)

root_sashok
01.12.2018, 21:29
А как на практике, интересуются люди продуктом?

realMakS
02.12.2018, 14:19
Да, создают issue в GitHub, пишут по почте иногда. Сегодня вот подогнали: Total length of MIDI file (https://github.com/melanchall/drywetmidi/issues/17)

root_sashok
02.12.2018, 15:34
Неплохо было бы для пользователей форума вкратце описать несколько практических применений твоей библиотеке

realMakS
02.12.2018, 21:37
Могу рассказать о проектах тех, кто ко мне обращался.

Было несколько обращений по поводу использования в играх на Unity. Язык программирования в проектах на Unity – C#, поэтому DryWetMIDI идеально вписывается туда. Есть и ещё .NET библиотеки, но ни в одной нет высокоуровневых средств для работы с MIDI файлами: ноты, паузы, времена и длины в разных форматах и т.д. Один из проектов была игра наподобие Guitar Hero, пользователю нужно было синхронизировать по времени MIDI файлы и аудио.

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

Кроме того, в библиотеке есть средства для быстрого программного создания мелодий, см. класс Pattern и PatternBuilder. То есть процедурная генерация музыки, опять же для игр, например.