Python:读取 GuitarPro (.gp5) 文件

Python: Reading GuitarPro (.gp5) files

我是新手在这里写题,所以请随时指出我如何提高未来问题的质量!

编辑:按照评论中的要求包含更多代码

我正在尝试将 GuitarPro 文件读入 python。这些文件基本上包含歌曲的 sheet 音乐,但包含比例如更多的信息。 MIDI 文件。

我想将音符和音符的持续时间解析为例如列表结构。此外,我希望也可以从 GuitarPro 文件中解析出其他效果器,例如弯曲、滑动、锤击等。

我一直在尝试使用库 PyGuitarPro,但卡住了:

import guitarpro
import os

# 'wet_sand.gp5' is the guitar pro file
parsed_song = guitarpro.parse('wet_sand.gp5')
song = guitarpro.gp5.GP5File(parsed_song,encoding='UTF-8')
song.readSong()

我从 ReadSong() (documentation here) 得到以下错误:

Traceback (most recent call last):

  File "<ipython-input-15-e1663229852d>", line 8, in <module>
    song.readSong()

  File "C:\Python27\lib\site-packages\guitarpro\gp5.py", line 62, in readSong
    song.version = self.readVersion()

  File "C:\Python27\lib\site-packages\guitarpro\iobase.py", line 114, in readVersion
    self.version = self.readByteSizeString(30)

  File "C:\Python27\lib\site-packages\guitarpro\iobase.py", line 97, in readByteSizeString
    return self.readString(size, self.readByte())

  File "C:\Python27\lib\site-packages\guitarpro\iobase.py", line 47, in readByte
    return (self.read(*args, default=default) if count == 1 else

  File "C:\Python27\lib\site-packages\guitarpro\iobase.py", line 35, in read
    data = self.data.read(count)

AttributeError: 'Song' object has no attribute 'read'

查看提供的示例,例如this一个。我认为你不需要这部分。

song = guitarpro.gp5.GP5File(parsed_song,encoding='UTF-8')

下面应该足够了,因为 parse 已经调用了 readSong here

song = guitarpro.parse('wet_sand.gp5')

最后看起来文件格式是由解析自动确定的 here

例如,您可以这样做。

import guitarpro
song = guitarpro.parse('test.gp5')

for track in song.tracks:
    for measure in track.measures:
        for voice in measure.voices:
            for beat in voice.beats:
                for note in beat.notes:
                    print(note.durationPercent)
                    print(note.effect)