Мне было нечем заняться, я таки заебошил гораздо более лучшую версию midi2piano для перевода миди-файлов в ноты.
(включите субтитры)
Как работать:
0. Сначала надо скачать сам скрипт и midi.py, по этой ссылке: https://mega.nz/#!fl...BgMD6IezIaY5AMM
1. Скиньте оба файла в любую папку
2. Дальше необходимо скачать Python 3.5: https://www.python.o...ase/python-352/
3. При установке Python 3.5 в ваших интересах отметить добавление его в PATH
4. Откройте командную строку
5. (если PATH не был добавлен) cd "папка-до-питона/Scripts"
7. Запустите скрипт двойным кликом на midi2piano.py
8. Можете выбирать файлы до опупения. После выбора MIDI файла скрипт автоматически конвертирует его в ноты и копирует в буфер обмена, готовых к вставке.
Продвинутое использование:
Смещение по октавам: откройте блокнотом midi2piano.py и изменяйте переменную OCTAVE_TRANSPOSE на любую, какую надо. Это будет смещать по октавам конечный результат. По-умолчанию идет смещение на 1 октаву влево, ибо надо.
Увеличение точности делителей: тоже самое, но переменная FLOAT_PRECISION. По-умолчанию стоит 2.
Необходимо установить тиклаг для правильной работы: конкретное значение зависит от сервера, на Блю это 0.33. Тиклаг устанавливать в TICK_LAG!
Прочее:
Весь скрипт прокоментирован, разобраться в нем не должно составить труда знающим людям.
Скрипт написан целиком в функциональном стиле, отладка должна быть во много раз легче.
Ограничения:
1. Поистине быстрые мелодии или мелодии с охуенными аккордами не парсятся: в одной строке может оказаться больше символом, чем должно быть. Увы, переносить аккорды по строкам нельзя. Да и смысла нет.
2. Для более больших MIDI-файлов все равно может потребоваться редактирование, ибо у Бъонда есть неопределенное ограничение на количество играемых звуков по отношению к скорости
3. MIDI ивент set_tempo не парсится. Это означает, что мелодии, где скорость проигрывания меняется внутренне таким образом вместо использования других длин нот не будут нормально конвертироваться. Вообще, это можно исправить, но мне лень писать соответствующий код.
4. Если две ноты играются за меньше чем 50 мс, то они объединяются в аккорды. Собственно, нехуй слишком большие мелодии или слишком быстрые кормить.
Достоинства:
1. Не надо мерджить треки, это происходит автоматически
2. BPM определяется по наиболее часто встречающейся длительности. Это связано с тем, чтобы сократить количество используемых символов и не писать огромное количество /1.22 и прочее, когда можно всю мелодию умножить на 1.22
3. Высокая эффективность использования места. Фичи вроде запоминания ключей и октав (ПОНОТНО, СУКА) используются до предела, что позволяет относительно длинные мелодии записывать очень коротко.
4. Если не кормить ему левые файлы или какую-нибудь парашу, то не должно вылетать.
5. Изменяемо.
6. Открытый код.
7. Швабодка.
8. Хотите шутку? Разработка на Анимусе.
Главный вопрос: как сконвертировать mp3/ogg в midi?
СОСАТЬ ХУИ, СДЕЛАТЬ БОЧКУ И ИДТИ ЧИТАТЬ СПЕЦИФИКАЦИЮ MIDI
Если у тебя MP3 имеет 10 состояний, а MIDI всего 2, то ты не сможешь все десять состояний представить в MIDI -> каждому 1 состоянию MIDI соответствует 5 состояний MP3. Обратное возможно по понятной причине, MP3 будет вмешать в себя все возможные состояния MIDI.
Если у меня есть алфавит, например, A = ABC, B = BCD, C = CDE и так далее, то у такого алфавита энтропия ниже, чем если бы каждая буква была по отдельности. Это означает, что хотя ты и можешь написать, например, ABC и перевести это без проблем в ABC BCD CDE, ты крайне редко сможешь со случайными данными, составленными по второму алфавиту, получить обратное, то есть ACB уже нельзя ни в какой символ преобразовать. Приближенно это, конечно, A, но ты теряешь часть информации при переводе, ибо при разжатии будет ABC, а не ACB как было изначалльно.
Именно поэтому mp3 в mid невозможно принципиально.
По крайней мере без крайне больших искжаений.
(включите субтитры)
Как работать:
0. Сначала надо скачать сам скрипт и midi.py, по этой ссылке: https://mega.nz/#!fl...BgMD6IezIaY5AMM
1. Скиньте оба файла в любую папку
2. Дальше необходимо скачать Python 3.5: https://www.python.o...ase/python-352/
3. При установке Python 3.5 в ваших интересах отметить добавление его в PATH
4. Откройте командную строку
5. (если PATH не был добавлен) cd "папка-до-питона/Scripts"
7. Запустите скрипт двойным кликом на midi2piano.py
8. Можете выбирать файлы до опупения. После выбора MIDI файла скрипт автоматически конвертирует его в ноты и копирует в буфер обмена, готовых к вставке.
Продвинутое использование:
Смещение по октавам: откройте блокнотом midi2piano.py и изменяйте переменную OCTAVE_TRANSPOSE на любую, какую надо. Это будет смещать по октавам конечный результат. По-умолчанию идет смещение на 1 октаву влево, ибо надо.
Увеличение точности делителей: тоже самое, но переменная FLOAT_PRECISION. По-умолчанию стоит 2.
Необходимо установить тиклаг для правильной работы: конкретное значение зависит от сервера, на Блю это 0.33. Тиклаг устанавливать в TICK_LAG!
Прочее:
Весь скрипт прокоментирован, разобраться в нем не должно составить труда знающим людям.
Скрипт написан целиком в функциональном стиле, отладка должна быть во много раз легче.
Ограничения:
1. Поистине быстрые мелодии или мелодии с охуенными аккордами не парсятся: в одной строке может оказаться больше символом, чем должно быть. Увы, переносить аккорды по строкам нельзя. Да и смысла нет.
2. Для более больших MIDI-файлов все равно может потребоваться редактирование, ибо у Бъонда есть неопределенное ограничение на количество играемых звуков по отношению к скорости
3. MIDI ивент set_tempo не парсится. Это означает, что мелодии, где скорость проигрывания меняется внутренне таким образом вместо использования других длин нот не будут нормально конвертироваться. Вообще, это можно исправить, но мне лень писать соответствующий код.
4. Если две ноты играются за меньше чем 50 мс, то они объединяются в аккорды. Собственно, нехуй слишком большие мелодии или слишком быстрые кормить.
Достоинства:
1. Не надо мерджить треки, это происходит автоматически
2. BPM определяется по наиболее часто встречающейся длительности. Это связано с тем, чтобы сократить количество используемых символов и не писать огромное количество /1.22 и прочее, когда можно всю мелодию умножить на 1.22
3. Высокая эффективность использования места. Фичи вроде запоминания ключей и октав (ПОНОТНО, СУКА) используются до предела, что позволяет относительно длинные мелодии записывать очень коротко.
4. Если не кормить ему левые файлы или какую-нибудь парашу, то не должно вылетать.
5. Изменяемо.
6. Открытый код.
7. Швабодка.
8. Хотите шутку? Разработка на Анимусе.
Главный вопрос: как сконвертировать mp3/ogg в midi?
Спойлер
СОСАТЬ ХУИ, СДЕЛАТЬ БОЧКУ И ИДТИ ЧИТАТЬ СПЕЦИФИКАЦИЮ MIDI
Спойлер
Потому что у MIDI меньшая информационная энтропия, чем у MP3 и цифровой музыки в целом. То есть количество всех возможных MIDI при конечной длине мелодии гораздо меньше всех возможных состояний у mp3. Отсюда и больший размер. Ты не можешь все возможные состояния какой-то системы точно упростить более простой системой.Если у тебя MP3 имеет 10 состояний, а MIDI всего 2, то ты не сможешь все десять состояний представить в MIDI -> каждому 1 состоянию MIDI соответствует 5 состояний MP3. Обратное возможно по понятной причине, MP3 будет вмешать в себя все возможные состояния MIDI.
Если у меня есть алфавит, например, A = ABC, B = BCD, C = CDE и так далее, то у такого алфавита энтропия ниже, чем если бы каждая буква была по отдельности. Это означает, что хотя ты и можешь написать, например, ABC и перевести это без проблем в ABC BCD CDE, ты крайне редко сможешь со случайными данными, составленными по второму алфавиту, получить обратное, то есть ACB уже нельзя ни в какой символ преобразовать. Приближенно это, конечно, A, но ты теряешь часть информации при переводе, ибо при разжатии будет ABC, а не ACB как было изначалльно.
Именно поэтому mp3 в mid невозможно принципиально.
По крайней мере без крайне больших искжаений.
43










