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)
我是新手在这里写题,所以请随时指出我如何提高未来问题的质量!
编辑:按照评论中的要求包含更多代码
我正在尝试将 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)