簡體   English   中英

使用python-midi庫從midi-events獲取變量

[英]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對象包含事件列表。

每個事件將包含tickchanneldata屬性。

我猜想您可以像列表一樣切片一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM