PasteAll.org
#!/usr/bin/env python
# -*- coding: utf-8 -*-

class MThd:
format = 0
tracks = 0
division = 0

class MTrk:
text = ''
tempo = 0
size = 0
timesigneture = [0,0,0,0]
common = None
master = None
mixer = None
eventlist = None
pitchbendbplist = None
pitchbendsensbplist = None

def __init__(self):
self.common = []
self.master = []
self.mixer = []
self.eventlist = []
self.pitchbendbplist = []
self.pitchbendsensbplist = []

class Common:
version = ''
name = ''
color = [0,0,0]
dynamicsmode = 0
playmode = 0

class Master:
premesure = 0

class Mixer:
masterfeder = 0
masterpanpot = 0
mastermute = 0
mastersolo = 0
outputmode = 0
tracks = 0
track = None

def __init__(self):
self.track = []

class mixer_track:
feder = 0
panpot = 0
mute = 0
solo = 0

class EventList:
start = 0
id = ''
rec = None

class Singer:
type = 'Singer'
iconhandle = None

class Anote:
type = 'Anote'
length = 0
note = 0
dynamics = 0
pmbenddepth = 0
pmbendlength = 0
pmbportamentouse = 0
demdecgainrate = 0
demaccent = 0
lyrichandle = None
vibratohandle = None
vibratodelay = 0

class Voice:
id = ''
type = 'Voice'
char = ''
sign0 = ''
sign = ''
params = ''

class Icon:
id = ''
type = 'Icon'
iconid = ''
ids = ''
original = 0
caption = ''
length = 0
startdepth = 64
depthbpnum = 0
depthbpx = []
depthbpy = []
startrate = 50
ratebpnum = 0

class VSQ_Data:
mthd = None
mtrk = None
filepath = ''
text = []

__rec = []

def __init__(self):
self.filepath = ''
self.mthd = MThd
self.mtrk = []

def __remove_sep(self,rec):
r = ''
r0 = rec
r1 = rec
for t in rec:
r += chr(t)

if r.find('DM:')>=0:
s = -1 # 0xff
t = -1 # DM:
u = -1 # :
for i in range(len(r0)):
if t < 0 and r0[i]==0x00:
s = i
elif s >=0 and t <0 and chr(r0[i])==':':
if chr(r0[i-2]) + chr(r0[i-1])=='DM':
t = i
elif s>=0 and t>=0 and chr(r0[i])==':':
w = chr(r0[i-4]) + chr(r0[i-3]) + chr(r0[i-2]) + chr(r0[i-1])
if w.isdigit():
u = i
if s >=0 and t >=0 and u>=0:
r1 = []
for i in range(len(r0)):
if i < s or i > u:
r1.append(r0[i])
else:
r1 = r0

return(r1)

def __readfile(self):
r0 = []
r1 = []
cnt = 0
vsqfile = open(self.filepath,'rb')
for b in vsqfile.read():
if b==0x0a:
r1.append(self.__remove_sep(r0))
r0 = []
cnt += 1
else:
r0.append(b)
r1.append(self.__remove_sep(r0))
vsqfile.close()

return(r1)

def __read_text(self,rec):
r = rec
tex = ''
if chr(r[0])=='[' or chr(r[0]).isdigit() or chr(r[0])=='[':
for t in r:
tex += chr(t)
else:
# MTrk
for i in range(len(r)-8):
tex += chr(r[i])
if (r[i],r[i+1],r[i+2],r[i+3])==(0x4d,0x54,0x72,0x6b):
__mtrk = MTrk()
self.mtrk.append(__mtrk)
j = i + 4
l = r[j]*256**3 + r[j+1]*256**2 + r[j+2]*256 + r[j+3]
__mtrk.size = l
s = j + 4
t = s + l
m = r[s:t]
for j in range(len(m)-4):
if (m[j],m[j+1])==(0xff,0x03):
l = m[j+2]
t = ''
for k in range(l):
t += chr(m[j+3+k])
__mtrk.text = t
elif (m[j],m[j+1],m[j+2])==(0xff,0x51,0x03):
__mtrk.tempo = m[j+3]*256**2 + m[j+4]*256 + m[j+5]
elif (m[j],m[j+1],m[j+2])==(0xff,0x58,0x04):
__mtrk.timesigneture = [m[j+3],m[j+4],m[j+5],m[j+6]]
for i in range(8):
j = i + len(r) - 8
tex += chr(r[j])

return(tex)

def __make_text(self,rec):
# MThd
self.mthd.format = rec[0][9]
self.mthd.tracks = rec[0][10]*256 + rec[0][11]
self.mthd.division = rec[0][12]*256 + rec[0][13]

__section = ''
for r in rec:
t = self.__read_text(r)
n = len(self.mtrk)
if n > 0:
__mtrk = self.mtrk[n-1]
if t[0:1]=='[':
__section = t
elif t.endswith(']'):
i = t.rfind('[')
__section = t[i:len(t)]

# Append Records
if __section=='[Common]':
if len(__mtrk.common)==0:
s = Common()
__mtrk.common.append(s)
elif __section=='[Master]':
if len(__mtrk.master)==0:
s = Master()
__mtrk.master.append(s)
elif __section=='[Mixer]':
if len(__mtrk.mixer)==0:
s = Mixer()
__mtrk.mixer.append(s)


# Edit Records
if __section=='[Common]':
l = t.partition('=')
if l[0]=='Version': __mtrk.common[0].version = l[2]
elif l[0]=='Name': __mtrk.common[0].name = l[2]
elif l[0]=='Color':
c = l[2].split(',')
__mtrk.common[0].color = [int(c[0]),int(c[1]),int(c[2])]
elif l[0]=='DynamicsMode': __mtrk.common[0].dynamicsmode = int(l[2])
elif l[0]=='PlayMode': __mtrk.common[0].playmode = int(l[2])
elif __section=='[Master]':
l = t.partition('=')
if l[0]=='PreMeasure': __mtrk.master[0].premesure = int(l[2])
elif __section=='[Mixer]':
l = t.partition('=')
if l[0]=='MasterFeder': __mtrk.mixer[0].masterfeder = int(l[2])
elif l[0]=='MasterPanpot': __mtrk.mixer[0].masterpanpot = int(l[2])
elif l[0]=='MasterMute': __mtrk.mixer[0].mastermute = int(l[2])
elif l[0]=='OutputMode': __mtrk.mixer[0].outputmode = int(l[2])
elif l[0]=='Tracks':
__mtrk.mixer[0].tracks = int(l[2])
for i in range(2):
trk = mixer_track()
__mtrk.mixer[0].track.append(trk)
elif l[1]=='=':
k = len(l[0])
n = l[0][k-1:k]
if n.isdigit():
i = int(n)
trk = __mtrk.mixer[0].track[i]
if l[0].find('Feder')>=0 : trk.feder = int(l[2])
elif l[0].find('Panpot')>=0 : trk.panpot = int(l[2])
elif l[0].find('Mute')>=0 : trk.mute = int(l[2])
elif l[0].find('Solo')>=0 : trk.solo = int(l[2])
elif __section=='[EventList]':
l = t.partition('=')
if l[0].isdigit() and (l[2].startswith('ID#') or l[2]=='EOS'):
s = EventList()
s.start = int(l[0])
s.id = l[2]
__mtrk.eventlist.append(s)
elif __section.startswith('[ID#'):
for e in __mtrk.eventlist:
if '[' + e.id + ']'==__section:
l = t.partition('=')
if l[0]=='Type':
if l[2]=='Anote':
e0 = Anote()
elif l[2]=='Singer':
e0 = Singer()
e.rec = e0
elif l[0]=='Length':e.rec.length = int(l[2])
elif l[0]=='Note#':e.rec.note = int(l[2])
elif l[0]=='Dynamics':e.rec.dynamics = int(l[2])
elif l[0]=='PMBendDepth':e.rec.pmbenddepth = int(l[2])
elif l[0]=='PMBendLength':e.rec.pmbendlength = int(l[2])
elif l[0]=='PMbPortamentoUse':e.rec.pmbportamentouse = int(l[2])
elif l[0]=='DEMdecGainRate':e.rec.demdecgainrate = int(l[2])
elif l[0]=='DEMaccent':e.rec.demaccent = int(l[2])
elif l[0]=='IconHandle':
e.rec.iconhandle = Icon()
e.rec.iconhandle.id = l[2]
elif l[0]=='LyricHandle':
e.rec.lyrichandle = Voice()
e.rec.lyrichandle.id = l[2]
elif l[0]=='VibratoHandle':
e.rec.vibratohandle = Icon()
e.rec.vibratohandle.id = l[2]
e.rec.vibratohandle.type = 'Vibrato'
elif l[0]=='VibratoDelay':e.rec.vibratodelay = int(l[2])
elif __section.startswith('[h#'):
for e in __mtrk.eventlist:
l = t.partition('=')
if l[1]=='=':
h = None
ty = 0
if e.rec==None:
pass
elif e.rec.type=='Anote':
if '[' + e.rec.lyrichandle.id + ']' == __section:
h = e.rec.lyrichandle
ty = 1
elif e.rec.vibratohandle!=None:
if '[' + e.rec.vibratohandle.id + ']' == __section:
h = e.rec.vibratohandle
ty = 2
elif e.rec.type=='Singer':
if '[' + e.rec.iconhandle.id + ']' == __section:
h = e.rec.iconhandle
ty = 2
if ty==1:
l1 = l[2].split(',')
h.char = l1[0]
l1[1] = l1[1].replace('"','')
l2 = l1[1].rpartition(' ')
h.sign0 = l1[1]
h.sign = l2[2]
i = l[2].find(l1[1])
j = l[2].find(',',i)
if j>0:
h.params = l[2][j+1:len(l[2])]
elif ty==2:
if l[0]=='IconID':h.iconid = l[2]
elif l[0]=='IDS':h.ids = l[2]
elif l[0]=='Original':h.original = int(l[2])
elif l[0]=='Caption':h.caption = l[2]
elif l[0]=='Length':h.length = int(l[2])
elif l[0]=='StartDepth':h.startdepth = int(l[2])
elif l[0]=='DepthBPNum':h.depthbpnum = int(l[2])
elif l[0]=='StartRate':h.startrate = int(l[2])
elif l[0]=='RateBPNum':h.ratebpnum = int(l[2])
else:
__mtrk = None
t = ''


print('**** MThd ****')
print('format=',self.mthd.format)
print('tracks=',self.mthd.tracks)
print('division=',self.mthd.division)
i = 0
for __mtrk in self.mtrk:
print('**** MTrk (',i,')****')
print('text=',__mtrk.text)
print('tempo=',__mtrk.tempo)
print('timesigneture=',__mtrk.timesigneture)
print('track size=',__mtrk.size)
for x in __mtrk.common:
print(' [Common]')
print(' Version=',x.version)
print(' Name=',x.name)
print(' Color=',x.color)
print(' DynamicsMode=',x.dynamicsmode)
print(' PlayMode=',x.playmode)
for x in __mtrk.master:
print(' [Master]')
print(' PreMesure=',x.premesure)
for x in __mtrk.mixer:
print(' [Mixer]')
print(' MasterFader=',x.masterfeder)
print(' MasterPanpot=',x.masterpanpot)
print(' MasterMute=',x.mastermute)
print(' MasterSolo=',x.mastersolo)
for j in range(x.tracks):
print(' Fader' + str(j) + '=',x.track[j].feder)
print(' Panpot' + str(j) + '=',x.track[j].panpot)
print(' Mute' + str(j) + '=',x.track[j].mute)
print(' Solo' + str(j) + '=',x.track[j].solo)
print(' [EventList]')
for x in __mtrk.eventlist:
print(str(x.start).rjust(8),'=',x.id)
for x in __mtrk.eventlist:
print(' [' + x.id + ']')
if x.rec==None:
pass
elif x.rec.type == 'Anote':
print(' Type=',x.rec.type)
print(' Length=',x.rec.length)
print(' Dynamics=',x.rec.dynamics)
print(' PMBendDepth=',x.rec.pmbenddepth)
print(' PMBendLength=',x.rec.pmbendlength)
print(' PMbPortamentoUse=',x.rec.pmbportamentouse)
print(' DEMdecGainRate=',x.rec.demdecgainrate)
print(' DEMaccent=',x.rec.demaccent)
print(' LyricHandle=',x.rec.lyrichandle.id)
if x.rec.vibratohandle==None:
pass
else:
print(' VibratoHandle=',x.rec.vibratohandle.id)
print(' VibratoDelay=',x.rec.vibratodelay)
elif x.rec.type == 'Singer':
print(' Type=',x.rec.type)
print(' IconHandle=',x.rec.iconhandle.id)
for x in __mtrk.eventlist:
if x.rec==None:
pass
elif x.rec.type == 'Anote':
print(' [' + x.rec.lyrichandle.id + ']')
t = x.rec.lyrichandle.char + ' , ' + x.rec.lyrichandle.sign0 + ' , ' + x.rec.lyrichandle.sign + ' , ' + x.rec.lyrichandle.params
print(' L0=',t)
if x.rec.vibratohandle!=None:
h = x.rec.vibratohandle
print(' [' + h.id + ']')
print(' IconID=',h.iconid)
print(' IDS=',h.ids)
print(' Original=',h.original)
print(' Caption=',h.caption)
print(' Length=',h.length)
print(' StartDepth=',h.startdepth)
print(' DepthBPNum=',h.depthbpnum)
print(' StartRate=',h.startrate)
print(' RateBPNum=',h.ratebpnum)
elif x.rec.type == 'Singer':
h = x.rec.iconhandle
print(' [' + h.id + ']')
print(' IconID=',h.iconid)
print(' IDS=',h.ids)
print(' Original=',h.original)
print(' Caption=',h.caption)
print(' Length=',h.length)
print(' StartDepth=',h.startdepth)
print(' DepthBPNum=',h.depthbpnum)
print(' StartRate=',h.startrate)
print(' RateBPNum=',h.ratebpnum)

i +=1

def read(self):
file_rec = self.__readfile()
self.__make_text(file_rec)


vsq = VSQ_Data()
vsq.filepath = ' '
vsq.read()

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. class MThd:
  5.     format = 0
  6.     tracks = 0
  7.     division = 0
  8.  
  9. class MTrk:
  10.     text = ''
  11.     tempo = 0
  12.     size = 0
  13.     timesigneture = [0,0,0,0]
  14.     common = None
  15.     master = None
  16.     mixer = None
  17.     eventlist = None
  18.     pitchbendbplist = None
  19.     pitchbendsensbplist = None
  20.  
  21.     def __init__(self):
  22.         self.common = []
  23.         self.master = []
  24.         self.mixer = []
  25.         self.eventlist = []
  26.         self.pitchbendbplist = []
  27.         self.pitchbendsensbplist = []
  28.  
  29. class Common:
  30.     version = ''
  31.     name = ''
  32.     color = [0,0,0]
  33.     dynamicsmode = 0
  34.     playmode = 0
  35.  
  36. class Master:
  37.     premesure = 0
  38.  
  39. class Mixer:
  40.     masterfeder = 0
  41.     masterpanpot = 0
  42.     mastermute = 0
  43.     mastersolo = 0
  44.     outputmode = 0
  45.     tracks = 0
  46.     track = None
  47.  
  48.     def __init__(self):
  49.         self.track = []
  50.  
  51. class mixer_track:
  52.     feder = 0
  53.     panpot = 0
  54.     mute = 0
  55.     solo = 0
  56.  
  57. class EventList:
  58.     start = 0
  59.     id = ''
  60.     rec = None
  61.  
  62. class Singer:
  63.     type = 'Singer'
  64.     iconhandle = None
  65.  
  66. class Anote:
  67.     type = 'Anote'
  68.     length = 0
  69.     note = 0
  70.     dynamics = 0
  71.     pmbenddepth = 0
  72.     pmbendlength = 0
  73.     pmbportamentouse = 0
  74.     demdecgainrate = 0
  75.     demaccent = 0
  76.     lyrichandle = None
  77.     vibratohandle = None
  78.     vibratodelay = 0
  79.  
  80. class Voice:
  81.     id = ''
  82.     type = 'Voice'
  83.     char = ''
  84.     sign0 = ''
  85.     sign = ''
  86.     params = ''
  87.  
  88. class Icon:
  89.     id = ''
  90.     type = 'Icon'
  91.     iconid = ''
  92.     ids = ''
  93.     original = 0
  94.     caption = ''
  95.     length = 0
  96.     startdepth = 64
  97.     depthbpnum = 0
  98.     depthbpx = []
  99.     depthbpy = []
  100.     startrate = 50
  101.     ratebpnum = 0
  102.  
  103. class VSQ_Data:
  104.     mthd = None
  105.     mtrk = None
  106.     filepath = ''
  107.     text = []
  108.  
  109.     __rec = []
  110.  
  111.     def __init__(self):
  112.         self.filepath = ''
  113.         self.mthd = MThd
  114.         self.mtrk = []
  115.  
  116.     def __remove_sep(self,rec):
  117.         r = ''
  118.         r0 = rec
  119.         r1 = rec
  120.         for t in rec:
  121.            r += chr(t)
  122.  
  123.         if r.find('DM:')>=0:
  124.             s = -1 # 0xff
  125.             t = -1 # DM:
  126.             u = -1 # :
  127.             for i in range(len(r0)):
  128.                 if t < 0 and r0[i]==0x00:
  129.                     s = i
  130.                 elif s >=0 and t <0 and chr(r0[i])==':':
  131.                     if chr(r0[i-2]) + chr(r0[i-1])=='DM':
  132.                         t = i
  133.                 elif s>=0 and t>=0 and chr(r0[i])==':':
  134.                     w = chr(r0[i-4]) + chr(r0[i-3]) + chr(r0[i-2]) + chr(r0[i-1])
  135.                     if w.isdigit():
  136.                         u = i
  137.             if s >=0 and t >=0 and u>=0:
  138.                 r1 = []
  139.                 for i in range(len(r0)):
  140.                     if i < s or i > u:
  141.                         r1.append(r0[i])
  142.             else:
  143.                 r1 = r0
  144.  
  145.         return(r1)
  146.    
  147.     def __readfile(self):                
  148.         r0 = []
  149.         r1 = []
  150.         cnt = 0
  151.         vsqfile = open(self.filepath,'rb')
  152.         for b in vsqfile.read():
  153.             if b==0x0a:
  154.                 r1.append(self.__remove_sep(r0))
  155.                 r0 = []
  156.                 cnt += 1
  157.             else:
  158.                 r0.append(b)
  159.         r1.append(self.__remove_sep(r0))
  160.         vsqfile.close()
  161.  
  162.         return(r1)
  163.  
  164.     def __read_text(self,rec):
  165.         r = rec
  166.         tex = ''
  167.         if chr(r[0])=='[' or chr(r[0]).isdigit() or chr(r[0])=='[':
  168.             for t in r:
  169.                tex += chr(t)
  170.         else:
  171.             # MTrk
  172.             for i in range(len(r)-8):
  173.                 tex += chr(r[i])
  174.                 if (r[i],r[i+1],r[i+2],r[i+3])==(0x4d,0x54,0x72,0x6b):
  175.                     __mtrk = MTrk()
  176.                     self.mtrk.append(__mtrk)
  177.                     j = i + 4
  178.                     l = r[j]*256**3 + r[j+1]*256**2 + r[j+2]*256 + r[j+3]
  179.                     __mtrk.size = l
  180.                     s = j + 4
  181.                     t = s + l
  182.                     m = r[s:t]
  183.                     for j in range(len(m)-4):
  184.                         if (m[j],m[j+1])==(0xff,0x03):
  185.                             l = m[j+2]
  186.                             t = ''
  187.                             for k in range(l):
  188.                                 t += chr(m[j+3+k])
  189.                             __mtrk.text = t
  190.                         elif (m[j],m[j+1],m[j+2])==(0xff,0x51,0x03):
  191.                             __mtrk.tempo = m[j+3]*256**2 + m[j+4]*256 + m[j+5]
  192.                         elif (m[j],m[j+1],m[j+2])==(0xff,0x58,0x04):
  193.                             __mtrk.timesigneture = [m[j+3],m[j+4],m[j+5],m[j+6]]
  194.             for i in range(8):
  195.                 j = i + len(r) - 8
  196.                 tex += chr(r[j])
  197.  
  198.         return(tex)
  199.  
  200.     def __make_text(self,rec):
  201.         # MThd
  202.         self.mthd.format = rec[0][9]
  203.         self.mthd.tracks = rec[0][10]*256 + rec[0][11]
  204.         self.mthd.division = rec[0][12]*256 + rec[0][13]
  205.  
  206.         __section = ''
  207.         for r in rec:
  208.             t = self.__read_text(r)
  209.             n = len(self.mtrk)
  210.             if n > 0:
  211.                 __mtrk = self.mtrk[n-1]
  212.                 if t[0:1]=='[':
  213.                     __section = t
  214.                 elif t.endswith(']'):
  215.                     i = t.rfind('[')
  216.                     __section = t[i:len(t)]
  217.  
  218.                 # Append Records
  219.                 if __section=='[Common]':
  220.                     if len(__mtrk.common)==0:
  221.                         s = Common()
  222.                         __mtrk.common.append(s)
  223.                 elif __section=='[Master]':
  224.                     if len(__mtrk.master)==0:
  225.                         s = Master()
  226.                         __mtrk.master.append(s)
  227.                 elif __section=='[Mixer]':
  228.                     if len(__mtrk.mixer)==0:
  229.                         s = Mixer()
  230.                         __mtrk.mixer.append(s)
  231.  
  232.  
  233.                 # Edit Records
  234.                 if __section=='[Common]':
  235.                     l = t.partition('=')
  236.                     if l[0]=='Version': __mtrk.common[0].version = l[2]
  237.                     elif l[0]=='Name': __mtrk.common[0].name = l[2]
  238.                     elif l[0]=='Color':
  239.                         c = l[2].split(',')
  240.                         __mtrk.common[0].color = [int(c[0]),int(c[1]),int(c[2])]
  241.                     elif l[0]=='DynamicsMode': __mtrk.common[0].dynamicsmode = int(l[2])
  242.                     elif l[0]=='PlayMode': __mtrk.common[0].playmode = int(l[2])
  243.                 elif __section=='[Master]':
  244.                     l = t.partition('=')
  245.                     if l[0]=='PreMeasure': __mtrk.master[0].premesure = int(l[2])
  246.                 elif __section=='[Mixer]':
  247.                     l = t.partition('=')
  248.                     if l[0]=='MasterFeder': __mtrk.mixer[0].masterfeder = int(l[2])
  249.                     elif l[0]=='MasterPanpot': __mtrk.mixer[0].masterpanpot = int(l[2])
  250.                     elif l[0]=='MasterMute': __mtrk.mixer[0].mastermute = int(l[2])
  251.                     elif l[0]=='OutputMode': __mtrk.mixer[0].outputmode = int(l[2])
  252.                     elif l[0]=='Tracks':
  253.                         __mtrk.mixer[0].tracks = int(l[2])
  254.                         for i in range(2):
  255.                             trk = mixer_track()
  256.                             __mtrk.mixer[0].track.append(trk)
  257.                     elif l[1]=='=':
  258.                         k = len(l[0])
  259.                         n = l[0][k-1:k]
  260.                         if n.isdigit():
  261.                             i = int(n)
  262.                             trk = __mtrk.mixer[0].track[i]
  263.                             if l[0].find('Feder')>=0 : trk.feder = int(l[2])
  264.                             elif l[0].find('Panpot')>=0 : trk.panpot = int(l[2])
  265.                             elif l[0].find('Mute')>=0 : trk.mute = int(l[2])
  266.                             elif l[0].find('Solo')>=0 : trk.solo = int(l[2])
  267.                 elif __section=='[EventList]':
  268.                     l = t.partition('=')
  269.                     if l[0].isdigit() and (l[2].startswith('ID#') or l[2]=='EOS'):
  270.                         s = EventList()
  271.                         s.start = int(l[0])
  272.                         s.id = l[2]
  273.                         __mtrk.eventlist.append(s)
  274.                 elif __section.startswith('[ID#'):
  275.                     for e in __mtrk.eventlist:
  276.                         if '[' + e.id + ']'==__section:
  277.                             l = t.partition('=')
  278.                             if l[0]=='Type':
  279.                                 if l[2]=='Anote':
  280.                                     e0 = Anote()
  281.                                 elif l[2]=='Singer':
  282.                                     e0 = Singer()
  283.                                 e.rec = e0
  284.                             elif l[0]=='Length':e.rec.length = int(l[2])
  285.                             elif l[0]=='Note#':e.rec.note = int(l[2])
  286.                             elif l[0]=='Dynamics':e.rec.dynamics = int(l[2])
  287.                             elif l[0]=='PMBendDepth':e.rec.pmbenddepth = int(l[2])
  288.                             elif l[0]=='PMBendLength':e.rec.pmbendlength = int(l[2])
  289.                             elif l[0]=='PMbPortamentoUse':e.rec.pmbportamentouse = int(l[2])
  290.                             elif l[0]=='DEMdecGainRate':e.rec.demdecgainrate = int(l[2])
  291.                             elif l[0]=='DEMaccent':e.rec.demaccent = int(l[2])
  292.                             elif l[0]=='IconHandle':
  293.                                 e.rec.iconhandle = Icon()
  294.                                 e.rec.iconhandle.id = l[2]
  295.                             elif l[0]=='LyricHandle':
  296.                                 e.rec.lyrichandle = Voice()
  297.                                 e.rec.lyrichandle.id = l[2]
  298.                             elif l[0]=='VibratoHandle':
  299.                                 e.rec.vibratohandle = Icon()
  300.                                 e.rec.vibratohandle.id = l[2]
  301.                                 e.rec.vibratohandle.type = 'Vibrato'
  302.                             elif l[0]=='VibratoDelay':e.rec.vibratodelay = int(l[2])
  303.                 elif __section.startswith('[h#'):
  304.                     for e in __mtrk.eventlist:
  305.                         l = t.partition('=')
  306.                         if l[1]=='=':
  307.                             h = None
  308.                             ty = 0
  309.                             if e.rec==None:
  310.                                 pass
  311.                             elif e.rec.type=='Anote':
  312.                                 if '[' + e.rec.lyrichandle.id + ']' == __section:
  313.                                     h = e.rec.lyrichandle
  314.                                     ty = 1
  315.                                 elif e.rec.vibratohandle!=None:
  316.                                     if '[' + e.rec.vibratohandle.id + ']' == __section:
  317.                                         h = e.rec.vibratohandle
  318.                                         ty = 2
  319.                             elif e.rec.type=='Singer':
  320.                                 if '[' + e.rec.iconhandle.id + ']' == __section:
  321.                                     h = e.rec.iconhandle
  322.                                     ty = 2
  323.                             if ty==1:
  324.                                 l1 = l[2].split(',')
  325.                                 h.char = l1[0]
  326.                                 l1[1] = l1[1].replace('"','')
  327.                                 l2 = l1[1].rpartition(' ')
  328.                                 h.sign0 = l1[1]
  329.                                 h.sign = l2[2]
  330.                                 i = l[2].find(l1[1])
  331.                                 j = l[2].find(',',i)
  332.                                 if j>0:
  333.                                     h.params = l[2][j+1:len(l[2])]
  334.                             elif ty==2:
  335.                                 if l[0]=='IconID':h.iconid = l[2]
  336.                                 elif l[0]=='IDS':h.ids = l[2]
  337.                                 elif l[0]=='Original':h.original = int(l[2])
  338.                                 elif l[0]=='Caption':h.caption = l[2]
  339.                                 elif l[0]=='Length':h.length = int(l[2])
  340.                                 elif l[0]=='StartDepth':h.startdepth = int(l[2])
  341.                                 elif l[0]=='DepthBPNum':h.depthbpnum = int(l[2])
  342.                                 elif l[0]=='StartRate':h.startrate = int(l[2])
  343.                                 elif l[0]=='RateBPNum':h.ratebpnum = int(l[2])
  344.             else:
  345.                 __mtrk = None
  346.             t = ''
  347.  
  348.  
  349.         print('**** MThd ****')
  350.         print('format=',self.mthd.format)
  351.         print('tracks=',self.mthd.tracks)
  352.         print('division=',self.mthd.division)
  353.         i = 0
  354.         for __mtrk in self.mtrk:
  355.             print('**** MTrk (',i,')****')
  356.             print('text=',__mtrk.text)
  357.             print('tempo=',__mtrk.tempo)
  358.             print('timesigneture=',__mtrk.timesigneture)
  359.             print('track size=',__mtrk.size)
  360.             for x in __mtrk.common:
  361.                 print('  [Common]')
  362.                 print('  Version=',x.version)
  363.                 print('  Name=',x.name)
  364.                 print('  Color=',x.color)
  365.                 print('  DynamicsMode=',x.dynamicsmode)
  366.                 print('  PlayMode=',x.playmode)
  367.             for x in __mtrk.master:
  368.                 print('  [Master]')
  369.                 print('  PreMesure=',x.premesure)
  370.             for x in __mtrk.mixer:
  371.                 print('  [Mixer]')
  372.                 print('  MasterFader=',x.masterfeder)
  373.                 print('  MasterPanpot=',x.masterpanpot)
  374.                 print('  MasterMute=',x.mastermute)
  375.                 print('  MasterSolo=',x.mastersolo)
  376.                 for j in range(x.tracks):
  377.                     print('  Fader' + str(j) + '=',x.track[j].feder)
  378.                     print('  Panpot' + str(j) + '=',x.track[j].panpot)
  379.                     print('  Mute' + str(j) + '=',x.track[j].mute)
  380.                     print('  Solo' + str(j) + '=',x.track[j].solo)
  381.             print('  [EventList]')
  382.             for x in __mtrk.eventlist:
  383.                 print(str(x.start).rjust(8),'=',x.id)
  384.             for x in __mtrk.eventlist:
  385.                 print('  [' + x.id + ']')
  386.                 if x.rec==None:
  387.                     pass
  388.                 elif x.rec.type == 'Anote':
  389.                     print('   Type=',x.rec.type)
  390.                     print('   Length=',x.rec.length)
  391.                     print('   Dynamics=',x.rec.dynamics)
  392.                     print('   PMBendDepth=',x.rec.pmbenddepth)
  393.                     print('   PMBendLength=',x.rec.pmbendlength)
  394.                     print('   PMbPortamentoUse=',x.rec.pmbportamentouse)
  395.                     print('   DEMdecGainRate=',x.rec.demdecgainrate)
  396.                     print('   DEMaccent=',x.rec.demaccent)
  397.                     print('   LyricHandle=',x.rec.lyrichandle.id)
  398.                     if x.rec.vibratohandle==None:
  399.                         pass
  400.                     else:
  401.                         print('   VibratoHandle=',x.rec.vibratohandle.id)
  402.                         print('   VibratoDelay=',x.rec.vibratodelay)
  403.                 elif x.rec.type == 'Singer':
  404.                     print('   Type=',x.rec.type)
  405.                     print('   IconHandle=',x.rec.iconhandle.id)
  406.             for x in __mtrk.eventlist:
  407.                 if x.rec==None:
  408.                     pass
  409.                 elif x.rec.type == 'Anote':
  410.                     print('   [' + x.rec.lyrichandle.id + ']')
  411.                     t = x.rec.lyrichandle.char + ' , ' + x.rec.lyrichandle.sign0 + ' , ' + x.rec.lyrichandle.sign + ' , ' + x.rec.lyrichandle.params
  412.                     print('    L0=',t)
  413.                     if x.rec.vibratohandle!=None:
  414.                          h = x.rec.vibratohandle
  415.                          print('   [' + h.id + ']')
  416.                          print('    IconID=',h.iconid)
  417.                          print('    IDS=',h.ids)
  418.                          print('    Original=',h.original)
  419.                          print('    Caption=',h.caption)
  420.                          print('    Length=',h.length)
  421.                          print('    StartDepth=',h.startdepth)
  422.                          print('    DepthBPNum=',h.depthbpnum)
  423.                          print('    StartRate=',h.startrate)
  424.                          print('    RateBPNum=',h.ratebpnum)
  425.                 elif x.rec.type == 'Singer':
  426.                      h = x.rec.iconhandle
  427.                      print('   [' + h.id + ']')
  428.                      print('    IconID=',h.iconid)
  429.                      print('    IDS=',h.ids)
  430.                      print('    Original=',h.original)
  431.                      print('    Caption=',h.caption)
  432.                      print('    Length=',h.length)
  433.                      print('    StartDepth=',h.startdepth)
  434.                      print('    DepthBPNum=',h.depthbpnum)
  435.                      print('    StartRate=',h.startrate)
  436.                      print('    RateBPNum=',h.ratebpnum)
  437.                
  438.             i +=1
  439.  
  440.     def read(self):
  441.         file_rec = self.__readfile()
  442.         self.__make_text(file_rec)
  443.  
  444.  
  445. vsq = VSQ_Data()
  446. vsq.filepath = ' '
  447. vsq.read()
  448.  
  449.  
go to heaven