Перейти к содержимому


midi2piano, новая, продвинутая версия от Эдитора (теперь работает правильно!)


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 62

#41 Editor TEH Chaos-neutral

Editor TEH Chaos-neutral

    ­­­­­­­­­­

  • Detective
  • 4964 сообщений
  

Отправлено 19 December 2016 - 23:23

Цитата

UPD: А Эдитор таки малаца, эта утилита сама по себе довольно удобная. Правда, насчет ужимания строк не могу судить, возможно я скармливал слишком длинный файл, но в 50-строчный лимит результат не уместился.
Она была сделана под Грин, где у пианино лимит на 200 строк. Если нужно этот лимит уменьшить, то изменить переменную LINES_LIMIT. Никаких неумещений быть не должно, количество линий обрезается.

#42 Editor TEH Chaos-neutral

Editor TEH Chaos-neutral

    ­­­­­­­­­­

  • Detective
  • 4964 сообщений
  

Отправлено 19 December 2016 - 23:30

Вообще, теоретически, возможно и дальше увеличивать степень сжатия если попробовать находить наименьший общее наименьшее кратное по длительностям. Однако это, к сожалению, ломается одной простой и совершенно уебанской вещью: ограничение по BPM. До 1500. В случае с нотами BPM придется домножать на столь большое число, что оно просто не влезет. В пределе я могу разве что ЧИСЛЕННО найти все возможные способы записать мелодию и найти самый плотный среди них.

К примеру если теоретическая мелодия состоит из длительностей, скажем, 4.5 и 6.5 (каждая запись занимает 3 символа в строке, всего можно 50 символов), то умножением на 0.2 оно сначала становится 0.9 и 1.2, затем умножением на 10 это будет 9 и 12 -- уже всего 1 и 2 символа. Разделив это на три можно получить 3 и 4 и это несокращаемо. Таким образом мы сократили длину это мелодии в 3 раза, с 6 символов на длительности до 2. Нахождения такой цепи умножений для целой мелодии - нетривиальная задача, не имеющая простого решения.

#43 alkoz

alkoz

    Hevi

  • Employee
  • 6401 сообщений
  • Discord:alkoz
     

Отправлено 20 December 2016 - 00:57

Просмотр сообщенияEditor TEH Chaos-neutral (19 December 2016 - 23:23) писал:

Она была сделана под Грин, где у пианино лимит на 200 строк. Если нужно этот лимит уменьшить, то изменить переменную LINES_LIMIT. Никаких неумещений быть не должно, количество линий обрезается.

Тогда все в порядке, я это проверял на бейском пианино. дДа и в самом файле оказалось сразу 2 песни, так что его по идее надо раздербанивать напополам.
Изображение
Скрытый текст

#44 koghs

koghs

    2D-космонавтик

  • Employee
  • 454 сообщений
  

Отправлено 23 December 2016 - 22:34

Когда ввожу "pip3.5 install easygui==0.96" командная строка не распознаёт "pip3.5" как исполняемую программу. Что я делаю не так?

#45 ucnaHez

ucnaHez

    Капитан Космической Станции

  • Chaotic Security Officer
  • 5605 сообщений
  • Discord:ucnaHez#6885
  • ГородБолонья
  

Отправлено 24 December 2016 - 13:49

Просмотр сообщенияPiranha (23 December 2016 - 22:34) писал:

Когда ввожу "pip3.5 install easygui==0.96" командная строка не распознаёт "pip3.5" как исполняемую программу. Что я делаю не так?

Пытаешься вызвать пип, не установив его?

Изображение

"[usr] весь такой кодер."


#46 koghs

koghs

    2D-космонавтик

  • Employee
  • 454 сообщений
  

Отправлено 24 December 2016 - 14:44

Просмотр сообщенияucnaHez (24 December 2016 - 13:49) писал:

Пытаешься вызвать пип, не установив его?
Он стоит и работает, я поставил 3.5 ещё полгода назад что бы учится кодить.

#47 Editor TEH Chaos-neutral

Editor TEH Chaos-neutral

    ­­­­­­­­­­

  • Detective
  • 4964 сообщений
  

Отправлено 24 December 2016 - 16:17

Питон в PATH не добавлен.

Следуй 5 шагу

#48 koghs

koghs

    2D-космонавтик

  • Employee
  • 454 сообщений
  

Отправлено 26 December 2016 - 20:01

Эдитор, Таукиты спиздили твой конвертер и упаковали его в экзешник для жалких смертных.
http://tauceti.ru/wiki/Music_Creation

#49 Editor TEH Chaos-neutral

Editor TEH Chaos-neutral

    ­­­­­­­­­­

  • Detective
  • 4964 сообщений
  

Отправлено 27 December 2016 - 00:08

Это другой конвертор.

#50 koghs

koghs

    2D-космонавтик

  • Employee
  • 454 сообщений
  

Отправлено 27 December 2016 - 02:36

Просмотр сообщенияEditor TEH Chaos-neutral (27 December 2016 - 00:08) писал:

Это другой конвертор.
Точно, я распаковал его в ту же папку что и твоя прога, вот мне и показалось что её в экзешник запихнули.

#51 qed

qed

    2D-космонавтик

  • Employee
  • 254 сообщений

Отправлено 13 March 2017 - 18:24

Таки всё же можно mp3/ogg перевести в midi. Не успел погуглить, есть ли готовые программы для этого, но это вполне реально. Да, у midi меньше состояний системы, чем у mp3, однако есть достаточно обширный математический аппарат для решения многих задач. Запись звука ведь по сути ничто иное, как запись напряжения на катушке микрофона, умноженная на некий коэффицент. Уверен, что можно найти таблицу соответствия между звуком и получаемыми значениями напряжения. А затем и между напряжением и определённой нотой. Эти ноты уже можно будет запихнуть в midi файл.

А ещё можно получить весь спектр амплитуд(нот) звуковой волны, если применить к её функции преобразование Фурье. Таким образом можно будет выделить практически весь набор нот в конкретный момент времени.
God bless Animus!

#52 Editor TEH Chaos-neutral

Editor TEH Chaos-neutral

    ­­­­­­­­­­

  • Detective
  • 4964 сообщений
  

Отправлено 13 March 2017 - 22:36

TRIGGERED

Цитата

Запись звука ведь по сути ничто иное, как запись напряжения на катушке микрофона, умноженная на некий коэффицент

Во-первых, это зависит от микрофона.
Во-вторых, ты сосешь хуи.

Цитата

Уверен, что можно найти таблицу соответствия между звуком и получаемыми значениями напряжения.
Сделаю страшную подсказку: эта формула 16.35*2A/12 где A - порядковый номер ноты начиная с C0. (http://www.phy.mtu.e.../notefreqs.html)
Это все учитывая, что у нас равномерно темперированная система.
Нота A4 имеет частоту 440 гц, нота A3, например, 220 гг, A2 110 гц и так далее.

Есть только одна маленькая проблема: реальные инструменты (с тех, с которых записывают) выдают не идеальные волновые формы, а суперпозицию огромного числа волн. Если ещё аппроксимировать какая одна нота была воспроизведена на инструменте можно (то есть всего одна нота, что слабо реально если у тебя не электронный инструмент и/или идеальные условия), то вот несколько нот невозможно в принципе, потому что существует несколько способов их получить.
Если у тебя, допустим, есть число 15, то я тебе могу в натуральных числах написать огроменное количество разных способов его получить используя только неповторяющиеся натуральные числа и операцию сложения.
Так вот тут натуральные числа (что не имеет в данном смысле реального смысла) это для нас будут частоты волн (амплитуду и фазу брать не будем), а сложение - суперпозиция.

Если у нас есть конечная волна, например, частотой 440 гц, то я могу представить её как суперпозицию многих волн, причем вариантов бесконечно много (поскольку частота всегда положительна и является действительной).

Твоё преобразование Фурье действительно тебе позволит получить набор синусоидальных волн, которые в результате суперпозиции выдадут тебе конечную волну.
Только есть одна МААААЛЕНЬКАЯ проблема: в большинстве своем эти волны не будут соответствовать никакой ноте. То есть совсем.
Тебе нужно ограничить множество возможных частот до множества, где An = 16.35*2n/12 , где 0 <= n <= 123 и и теперь проблема становится гораздо веселее.

Даже если ты сможешь применить преобразование Фурье на твою конечную волну при таких условиях, это отнюдь не гарантирует, что конечная волна (нота) получилась именно таким образом. Не забывай, что преобразование Фурье не та вещь, которую ты применяешь, чтобы решить такую задачу. Суть его состоит как раз в том, чтобы некоторую периодическую функцию представить как сумму некоторого количества синусоидальных функций. Действительно ли эта волна получилась в результате сложения этих волн невозможно определить.

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

#53 Voldirs

Voldirs

    Ветеран космонавтики

  • Employee
  • 1722 сообщений

Отправлено 13 March 2017 - 23:13

Нихрена себе ты математику затянул.

#54 qed

qed

    2D-космонавтик

  • Employee
  • 254 сообщений

Отправлено 14 March 2017 - 13:15

Не всегда задачу можно решить красиво. Здесь определённо придётся использовать интерполяцию, мне показалось это слишком очевидным, чтобы что-то об этом написать. Ещё придётся выкинуть часть данных, которые не войдут в множество A. Да, это сильно скажется на точности результата, но высокая точность для этой задачи не нужна.

Я не спорю, что после преобразования Фурье в итоге будет огромное количество синусоидальных функций, суперпозиций которых может быть очень большое количество. Однако, во первых, midi нужны только целые ноты. Во вторых, при игре на реальных инструментах, в соответствии со сложившейся музыкальной традицией, люди играют также только целые ноты(если считать #/b за отдельные самостоятельные ноты). Из-за этого количество суперпозиций уменьшается, так как конкретный аккорд может быть составлен только из конкретного набора нот. Можно пойти ещё дальше и вспомнить, что в традиционной музыке считается, что аккорд всегда начинается с низкой и заканчивается высокой нотой.

Понятно, что даже со всем этим, результат перевода mp3 -> midi будет не очень точным. Но, это в любом случае быстрее и проще будет, чем самостоятельно в midi редакторе набирать какой-то трек. Допиливать всё равно придётся.
God bless Animus!

#55 98sec

98sec

    2D-космонавтик

  • Employee
  • 52 сообщений
  • Byond:98sec
  • Discord:NESecond
  • ГородМахачкала

Отправлено 14 March 2017 - 23:17

Всё было сделано до нас

#56 alkoz

alkoz

    Hevi

  • Employee
  • 6401 сообщений
  • Discord:alkoz
     

Отправлено 15 March 2017 - 00:35

Просмотр сообщения98sec (14 March 2017 - 23:17) писал:

Всё было сделано до нас

Мы тут не ОГГ в МИДИ конверить пытаемся, и не ноты из МИДИ рендерим. Читать оп надо. Алсо, некрофил.
Изображение
Скрытый текст

#57 98sec

98sec

    2D-космонавтик

  • Employee
  • 52 сообщений
  • Byond:98sec
  • Discord:NESecond
  • ГородМахачкала

Отправлено 15 March 2017 - 11:01

Просмотр сообщенияalkoz (15 March 2017 - 00:35) писал:



Мы тут не ОГГ в МИДИ конверить пытаемся, и не ноты из МИДИ рендерим. Читать оп надо. Алсо, некрофил.
Чуть выше обсуждали собственно конвертацию mp3(ogg)→midi

#58 Editor TEH Chaos-neutral

Editor TEH Chaos-neutral

    ­­­­­­­­­­

  • Detective
  • 4964 сообщений
  

Отправлено 15 March 2017 - 15:46

Цитата

Во вторых, при игре на реальных инструментах, в соответствии со сложившейся музыкальной традицией, люди играют также только целые ноты(если считать #/b за отдельные самостоятельные ноты).

Цитата

люди играют также только целые ноты
ТЫ ЧЕ БЛЯТЬ ЕБАНУТЫЙ?!

Цитата

Из-за этого количество суперпозиций уменьшается, так как конкретный аккорд может быть составлен только из конкретного набора нот.
А теперь смотри в чем проблема: 100% инструментов (за исключением виртуальных) не выдают звук используя идеальные ноты, которые можно легко сократить до синусоид. Каждая нота в реальном инструменте представляет собой суперпозицию очень большого количества волн. Например, в том же A4 может быть немного A3, ещё меньше A2, а ещё и в разных фазах и с разными амплитудами.
А теперь представь что происходит, когда сразу много нот играет: у тебя появляется серьезная неопределенность. Не имея технических данных по используемому инструменту у тебя нет простого способа разложить какой-то звук на составляющие ноты. Это вполне реально, но слишком дорого в плане реализации и отнюдь не гарантирует, что найдутся именно ноты, которые использовались.

Если у тебя есть некоторый инструмент, способный выдавать идеальные ноты и к тому же бесконечное их количество (условно говоря), то да, он может воспроизвести любой инструмент который может существовать, но эта задача является вычислительно сложной (по факту NP), не разрешимой в сколько-нибудь разумное время для почти любого звука.
Размер такого файла после такой обработки может запросто перевалить за не то, что размер оригинального файла, так и за все мыслимые рамки.

#59 alkoz

alkoz

    Hevi

  • Employee
  • 6401 сообщений
  • Discord:alkoz
     

Отправлено 15 March 2017 - 16:17

Просмотр сообщения98sec (15 March 2017 - 11:01) писал:

Чуть выше обсуждали собственно конвертацию mp3(ogg)→midi
Видишь, что ты наделал? Ты разбудил Эдитора.
Изображение
Скрытый текст

#60 98sec

98sec

    2D-космонавтик

  • Employee
  • 52 сообщений
  • Byond:98sec
  • Discord:NESecond
  • ГородМахачкала

Отправлено 15 March 2017 - 21:12

Просмотр сообщенияalkoz (15 March 2017 - 16:17) писал:


Видишь, что ты наделал? Ты разбудил Эдитора.
Да он и спал то не особо глубоко.


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных