Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. from __future__ import print_function
  2.  
  3. import SharedArray as sa
  4. import numpy as np
  5. import os
  6. import json
  7. import random
  8. from sklearn.utils import shuffle
  9.  
  10. def split_file(path):
  11. base = os.path.basename(path)
  12. filename = base.split('.')[0]
  13. extension = base.split('.')[1]
  14. return path[:-len(base)-1], filename, extension
  15.  
  16. def save_on_sa(use_only_84_keys=True, rescale=True, postfix=''):
  17. print('Reading...')
  18.  
  19. root_dir = '../gdrive/My Drive/Lead Sheet DataSet'
  20. root_pianoroll = '../gdrive/My Drive/Lead Sheet DataSet/pianoroll'
  21. with open(os.path.join(root_dir, 'xml_list.json'), "r") as f:
  22. xml_list = json.load(f)
  23. num_xml = len(xml_list)
  24.  
  25. sa.delete("tra_X_phrs")
  26. sa.delete("val_X_phrs")
  27.  
  28. data = []
  29. concathelper = []
  30. for idx in range(num_xml):
  31. path, fn, _ = split_file(xml_list[idx])
  32. path_pianoroll = os.path.join(root_pianoroll, path)
  33. if os.path.exists(os.path.join(path_pianoroll, fn + '_nokey_melody.npy')) and os.path.exists(os.path.join(path_pianoroll, fn + '_nokey_chords.npy')):
  34. melody_file = os.path.join(path_pianoroll, fn + '_nokey_melody.npy')
  35. chords_file = os.path.join(path_pianoroll, fn + '_nokey_chords.npy')
  36.  
  37. melody = np.load (melody_file)
  38. chord = np.load(chords_file)
  39.  
  40. if melody.shape[1] < 96 or chord.shape[1] < 96:
  41. continue
  42. minLength = 0;
  43. if(melody.shape[1] < chord.shape[1]) :
  44. minLength = melody.shape[1]
  45. else:
  46. minLength = chord.shape[1]
  47. print(" meldy and chord length :::" , melody.shape, " ", chord.shape)
  48. print('minLength' , minLength)
  49. iterations = int(minLength // 96)
  50.  
  51. start = 0
  52. end = 96
  53. melody = melody.transpose()
  54. chord = chord.transpose()
  55.  
  56. print('itertions = ' , iterations)
  57. while(iterations > 0):
  58.  
  59. subMelody = melody[start : end]
  60. subChord = chord[start : end]
  61. print("sub meldy and subchord length :::" , len(subMelody), " ", len(subChord))
  62.  
  63.  
  64. subMelody_data = np.reshape(subMelody, (-1, 96, 128, 1)) # for 1bar
  65. subChord_data = np.reshape(subChord, (-1, 96, 128, 1))
  66.  
  67. if (use_only_84_keys):
  68. subMelody_data = subMelody_data[:, :, 24:108, :]
  69. subChord_data = subChord_data[:, :, 24:108, :]
  70. data.append(subMelody_data)
  71. data.append(subChord_data)
  72.  
  73. temp = np.concatenate(data, axis = 3)
  74. data = []
  75. #print("temp shape", temp.shape)
  76. concathelper.append(temp)
  77. temp = []
  78. #print("Helper shape ", concathelper[0])
  79. start = end
  80. end = end + 96
  81. iterations = iterations - 1
  82.  
  83. random.shuffle(concathelper)
  84. train = np.concatenate(concathelper [0:int(len(concathelper)*0.7)] , axis= 0)
  85. val = np.concatenate(concathelper [int(len(concathelper)*0.7) + 1 : len(concathelper)] , axis= 0)
  86.  
  87.  
  88. tmp_arr = sa.create("tra_X_phrs", train.shape, dtype='float64')
  89. np.copyto(tmp_arr, train)
  90. tmp_arr = sa.create("val_X_phrs", val.shape, dtype='float64')
  91. np.copyto(tmp_arr, val)
  92.  
  93. # print (len(train))
  94. # print (len(val))
  95.  
  96.  
  97. # x = np.delete(x, slice(0, x.shape[1] - 96), axis=1)
  98. # print(x.shape)
  99. # x = x.transpose()
  100. #print(os.path.join(data_dir, sd, x_name + str(i+1 ) + '.npy'))
  101. ##tmp_data = np.reshape(np.load(os.path.join(data_dir, sd , x_name+'.npy')),(-1,384,128, 1)) # for 4 dbar
  102.  
  103. # midi setting
  104. ##data_X = np.load(os.path.join(data_dir, sd, 'phr_chord_clean.npy'))
  105.  
  106. ##data_y = np.load(os.path.join(data_dir, sd , data_prefix[-1]+'.npy'))
  107. # data_X = np.concatenate(concathelper , axis= 0)
  108.  
  109. # print(data_X.dtype)
  110. # ##print(data_y.dtype)
  111. # if sd is 'tra':
  112. # print(sd)
  113. # print('Shuffling...')
  114. # ##data_X, data_y = shuffle(data_X, data_y, random_state=0)
  115. # data_X = shuffle(data_X, random_state=0)
  116. # else:
  117. # print(sd)
  118. # pass
  119. # name = sd + '_X_' + postfix
  120. # print(name, data_X.shape)
  121. # # sa.delete(name)
  122. # tmp_arr = sa.create(name, data_X.shape, dtype='float64')
  123. # np.copyto(tmp_arr, data_X)
  124.  
  125. ##name = sd + '_y_' + postfix
  126. ##print(name, data_y.shape)
  127. ##tmp_arr = sa.create(name, data_y.shape, dtype=bool)
  128. ##np.copyto(tmp_arr, data_y)
  129.  
  130.  
  131. if __name__ == '__main__':
  132. ##save_on_sa('../../wayne/v3.0/dataset/data_bar', postfix='bars')
  133. ##save_on_sa('../music/lpd_4dbar_12_C', postfix='phrs') # data_phr
  134. ##save_on_sa('./data_tab_4dbar_12', postfix='phrs')
  135. ##save_on_sa('./data_tab_1bar_12', postfix='phrs')
  136. ##save_on_sa('./data_tab_2bar_12', postfix='phrs')
  137. save_on_sa(postfix='phrs')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement