簡體   English   中英

music21:從平面樂譜中獲取 midi 聲音的聲音/程序/樂器?

[英]music21: get the voice/program/instrument of midi voice from a flat score?

我有一個簡單的腳本,它使用 music21 來處理 midi 文件中的音符:

import music21

score = music21.converter.parse('www.vgmusic.com/music/console/nintendo/nes/zanac1a.mid')

for i in score.flat.notes:
  
  print(i.offset, i.quarterLength, i.pitch.midi)

有沒有辦法也可以使用平面樂譜獲得音符的發聲/midi 程序? 任何指針將不勝感激!

MIDI 通道和程序存儲在Instrument實例上,因此使用getContextByClass(instrument.Instrument)在 stream 中找到最近的 Instrument,然后訪問它的.midiProgram。

當心:

  • .midiChannel.midiProgram是 0 索引的,因此 MIDI 通道 10 在 music21 中將是 9 等,(我們正在討論在下一個版本中更改此行為)
  • 如果您沒有運行最前沿的版本(我們昨天在此主題上合並了一個補丁),一些信息可能會丟失,所以我建議從 git 中提取: pip install git+https://github.com/cuthbertLab/music21
  • 但是,如果文件是多軌的, .flat會殺了你。 如果你聽從我的建議,你就會得到每條軌道上的最后一種樂器。 90% 的人在做.flat實際上想要.recurse()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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