[英]How can I reference individual MIDI events using the python-midi module?
[英]Get variables from midi-events with the python-midi library
我使用python-midi庫將midi文件讀入列表。
variable = midi.read_midifile(source)
這些條目如下所示:
midi.NoteOffEvent(tick=2, channel=10, data=[48, 98]),
midi.NoteOnEvent(tick=46, channel=10, data=[48, 100]),
midi.NoteOffEvent(tick=12, channel=10, data=[48, 100]),
midi.NoteOnEvent(tick=36, channel=10, data=[48, 91]),
midi.NoteOffEvent(tick=14, channel=10, data=[48, 91]),
midi.NoteOnEvent(tick=34, channel=10, data=[48, 122]),
現在,我想獲取那些事件的參數,但是我不知道該怎么做。 我想計算所有的滴答聲,獲取所有不同的通道,並讀取數據(因此請注意音符和力度)。 我調查了Github存儲庫,但沒有找到問題的答案。 鏈接到存儲庫: https : //github.com/vishnubob/python-midi
可能是pyhton-midi並非真正用於讀取和操作midi文件嗎?
我對python-midi庫一無所知,但我從源代碼中猜測read_midifile()
方法返回Pattern對象。 Pattern對象包含事件列表。
每個事件將包含tick
, channel
和data
屬性。
我猜想您可以像列表一樣切片一個Pattern對象,因此您應該能夠做到這一點:
pattern = midi.read_midifile(source)
print pattern[0].tick
這將在Pattern中選擇第一個事件並打印其tick屬性。
然后,您可以通過執行以下操作來計算滴答聲:
pattern = midi.read_midifile(source)
tick_count = 0
# a unique list
channels = set()
for event in pattern:
tick_count += event.tick
channels.add(event.channel)
如果您需要了解對象中的內容,則可以始終使用dir()
函數。 例如
print dir(event)
祝您學習順利。 保持高目標!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.