用作TXT格式的吉它谱等和弦谱的级数转换
通过列表对应的方式实现
# 原文件和弦
m_list = ['C', 'C#', 'D', 'D#', 'E', 'F',
'F#', 'G', 'G#', 'A', 'A#', 'B',
'C', 'C#', 'D', 'D#', 'E', 'F',
'F#', 'G', 'G#', 'A', 'A#', 'B']
# 过渡使用的和弦标记
c_list = ['#1#', '#1+#', '#2#', '#2+#', '#3#', '#4#',
'#4+#', '#5#', '#5+#', '#6#', '#6+#', '#7#',
'#1#', '#1+#', '#2#', '#2+#', '#3#', '#4#',
'#4+#', '#5#', '#5+#', '#6#', '#6+#', '#7#']
# 升降调对应列表
u_list = ['C#', 'D#', 'F#', 'G#', 'A#']
d_list = ['Db', 'Eb', 'Gb', 'Ab', 'Bb']
# 双升音阶的调整
a_list = ['C##', 'D##', 'F##', 'G##', 'A##']
b_list = ['D', 'E', 'G', 'A', 'B']
# 保留用作自动处理时使用
# filename = 'test.txt'
# new_filename = 'newtest.txt'
# add_num = int(input('请输入升几个半音:'))
print('本程序通过通过升半音的方法实现,降半音时请输入升(12-n)')
filename = input('请输入要转换的文件名(同目录):')
new_filename = input('请输入转换后的文件名(同目录):')
add_num = int(input('请输入升几个半音:'))
# 使用replace()方法进行替换
with open(filename, 'r') as file_object:
musicfile = file_object.read()
for i in range(12):
musicfile = musicfile.replace(m_list[i], c_list[i+add_num])
for i in range(12):
musicfile = musicfile.replace(c_list[i], m_list[i])
for i in range(5):
musicfile = musicfile.replace(a_list[i],b_list[i])
det = input('目前是升调表示方法,是否调整为降调表示方法?(Y/N):')
det = det.upper()
if det == 'Y':
for i in range(5):
musicfile = musicfile.replace(u_list[i], d_list[i])
with open(new_filename, 'w') as file_object:
file_object.write(f'本谱已经过和弦级数的转换,升高{add_num}个半音\n')
if det == 'Y':
file_object.write('本谱已由升调表示方法调整为降调表示方法\n')
file_object.write('\n\n')
file_object.write(musicfile)