Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 16, 2017 13:15:21

Lainelir
Зарегистрирован: 2017-08-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Как из midi файла получить массив нот

Как из midi файла получить массив нот. Все имеющиеся библиотеки выдают массив типо [<meta message midi_port port=0 time=0>, <message sysex data126,127,9,1) time=0>, <meta message midi_port port=0 time=0>…
мне нужен массив без текста только числа.

Офлайн

#2 Сен. 16, 2017 13:40:53

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2842
Репутация: +  186  -
Профиль   Отправить e-mail  

Как из midi файла получить массив нот

Да всё очень просто

 # pip install python-midi
 import midi
>>> treki = midi.read_midifile("/home/rodegast/solaris.mid")
>>> [ [ x.data for x in e] for e in  treki ]
[[[73, 99, 104, 32, 114, 117, 102, 39, 32, 122, 117, 32, 100, 105, 114, 44, 32, 72, 101, 114, 114, 32, 74, 101, 115, 117, 32, 67, 104, 1
14, 105, 115, 116], [74, 46, 32, 83, 46, 32, 66, 97, 99, 104, 32, 47, 32, 84, 114, 97, 110, 115, 99, 105, 112, 116, 105, 111, 110, 32, 9
8, 121, 32, 74, 105, 109, 32, 71, 105, 108, 115, 105, 110, 97, 110, 32, 73, 86, 10], ......



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Сен. 16, 2017 14:35:55

Lainelir
Зарегистрирован: 2017-08-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Как из midi файла получить массив нот

(((у меня модуль midi не работает ругается на read_midifile.

Офлайн

#4 Сен. 16, 2017 23:21:32

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2842
Репутация: +  186  -
Профиль   Отправить e-mail  

Как из midi файла получить массив нот

Ну тогда вот вариант с mido

 >>> import mido
>>> mid = mido.MidiFile("/home/rodegast/solaris.mid")
>>> [ x.note for x in mid if x.type == "note_on" ]
[72, 56, 41, 29, 56, 60, 41, 29, 60, 65, 41, 29, 65, 64, 41, 29,.....



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Сен. 17, 2017 13:37:47

Lainelir
Зарегистрирован: 2017-08-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Как из midi файла получить массив нот

Вроде с mido работает. А можно массив со всей последовательностью нот времени каналов и так что бы потом его можно было обратно загрузить в миди файл?

Офлайн

#6 Сен. 17, 2017 14:09:33

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2842
Репутация: +  186  -
Профиль   Отправить e-mail  

Как из midi файла получить массив нот

Ты может быть и удивишся, но mido.MidiFile как раз такой объект и возвращает:

 >>> mid = mido.MidiFile("/home/rodegast/solaris.mid")
>>> m = list(mid)[25]
>>> m
<message note_on channel=2 note=41 velocity=80 time=0>
>>> m.channel
2
>>> m.note
41
>>> m.time
0
>>> m.velocity
80



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Сен. 17, 2017 14:56:49

Lainelir
Зарегистрирован: 2017-08-15
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Как из midi файла получить массив нот

<message note_on channel=2 note=41 velocity=80 time=0> этим меня не удивишь.
В общем очень признателен. Думаю дальше сам справлюсь.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version