visakh7843 commited on
Commit
61aa7f2
1 Parent(s): c9dbbbe

Bug fixes and minor UI changes

Browse files
MC/__pycache__/markov_chain.cpython-39.pyc CHANGED
Binary files a/MC/__pycache__/markov_chain.cpython-39.pyc and b/MC/__pycache__/markov_chain.cpython-39.pyc differ
 
MC/markov_chain.py CHANGED
@@ -95,8 +95,8 @@ def generate_notes(csv_file):
95
  gen_notes.append(int(next_note))
96
  gen_durations.append(next_duration)
97
 
98
- start_notes.pop()
99
- start_durations.pop()
100
 
101
  start_notes.append(next_note)
102
  start_durations.append(next_duration)
@@ -218,7 +218,7 @@ def main_markov(time_sign):
218
 
219
  mid.tracks.append(track)
220
  print(mid)
221
- track.append((MetaMessage('time_signature', numerator=6, denominator=8)))
222
  # https://mido.readthedocs.io/en/latest/midi_files.html
223
  for i in range(num_notes):
224
  track.append(Message('note_on', channel=0, note=gen_notes[i], velocity=60, time=0))
 
95
  gen_notes.append(int(next_note))
96
  gen_durations.append(next_duration)
97
 
98
+ start_notes.pop(0)
99
+ start_durations.pop(0)
100
 
101
  start_notes.append(next_note)
102
  start_durations.append(next_duration)
 
218
 
219
  mid.tracks.append(track)
220
  print(mid)
221
+ track.append((MetaMessage('time_signature', numerator=int(time_signature[0]), denominator=int(time_signature[1]))))
222
  # https://mido.readthedocs.io/en/latest/midi_files.html
223
  for i in range(num_notes):
224
  track.append(Message('note_on', channel=0, note=gen_notes[i], velocity=60, time=0))
__pycache__/markov.cpython-39.pyc CHANGED
Binary files a/__pycache__/markov.cpython-39.pyc and b/__pycache__/markov.cpython-39.pyc differ
 
__pycache__/music.cpython-39.pyc CHANGED
Binary files a/__pycache__/music.cpython-39.pyc and b/__pycache__/music.cpython-39.pyc differ
 
app.py CHANGED
@@ -5,9 +5,9 @@ import gradio as gr
5
  import os
6
  from MC.markov_chain import main_markov #Function to generate music based on midi files
7
 
8
- keysignature = ["C","G","D","No selection"]
9
  difficulty = ["beginner","intermediate","expert"]
10
- timesignature = ['3/4','4/4','1/8','6/8']
11
 
12
  # output = gr.Gallery() if GlobalUIGallery else "image"
13
 
@@ -23,11 +23,13 @@ timesignature = ['3/4','4/4','1/8','6/8']
23
  with gr.Blocks() as demo:
24
 
25
  gr.Markdown("""
26
- ## Sheet Music Generation for Sight-Reading
 
 
27
  """)
28
  with gr.Tabs():
29
  with gr.TabItem("ABC Model"):
30
- gr.Markdown("ABC Model discription")
31
  with gr.Row():
32
  with gr.Column():
33
  difficulty_input_abc = gr.Radio(difficulty,label="Difficulty") #input
@@ -39,8 +41,8 @@ with gr.Blocks() as demo:
39
  with gr.Column():
40
  output_gallery_abc = gr.Gallery(label="Sheet Music")
41
  output_audio_abc = gr.Audio(label="Audio")
42
- with gr.TabItem("Midi Model"):
43
- gr.Markdown("ABC Model discription")
44
  with gr.Row():
45
  with gr.Column():
46
  # difficulty_input_midi = gr.Radio(difficulty,label="Difficulty") #input
 
5
  import os
6
  from MC.markov_chain import main_markov #Function to generate music based on midi files
7
 
8
+ keysignature = ["C","G","D","A","No selection"]
9
  difficulty = ["beginner","intermediate","expert"]
10
+ timesignature = ['3/4','4/4','2/2','2/4']
11
 
12
  # output = gr.Gallery() if GlobalUIGallery else "image"
13
 
 
23
  with gr.Blocks() as demo:
24
 
25
  gr.Markdown("""
26
+ ## Sight-reading generator for sheet music.
27
+ Markov models which generate sheet music based on different input
28
+ parameters given by the user.
29
  """)
30
  with gr.Tabs():
31
  with gr.TabItem("ABC Model"):
32
+ gr.Markdown("N-grams model using ABC data as training data.")
33
  with gr.Row():
34
  with gr.Column():
35
  difficulty_input_abc = gr.Radio(difficulty,label="Difficulty") #input
 
41
  with gr.Column():
42
  output_gallery_abc = gr.Gallery(label="Sheet Music")
43
  output_audio_abc = gr.Audio(label="Audio")
44
+ with gr.TabItem("MIDI Model"):
45
+ gr.Markdown("Markov model using MIDI fata as training data.")
46
  with gr.Row():
47
  with gr.Column():
48
  # difficulty_input_midi = gr.Radio(difficulty,label="Difficulty") #input
markov.py CHANGED
@@ -105,11 +105,11 @@ def generate_model_from_token_lists(token_lines, n, count=14, max_iterations=100
105
  It also builds a separate Markov model for each line, and then merges
106
  those models together, to ensure that lines end with n-grams statistically
107
  likely to end lines in the original text."""
108
- beginnings = list()
109
  models = list()
110
  for token_line in token_lines:
111
- beginning = token_line[:n]
112
- beginnings.append(beginning)
113
  line_model = build_model(token_line, n)
114
  models.append(line_model)
115
  combined_model = merge_models(models)
 
105
  It also builds a separate Markov model for each line, and then merges
106
  those models together, to ensure that lines end with n-grams statistically
107
  likely to end lines in the original text."""
108
+ # beginnings = list()
109
  models = list()
110
  for token_line in token_lines:
111
+ # beginning = token_line[:n]
112
+ # beginnings.append(beginning)
113
  line_model = build_model(token_line, n)
114
  models.append(line_model)
115
  combined_model = merge_models(models)
music.py CHANGED
@@ -55,6 +55,10 @@ def time_sigFinder(time_Signature):
55
  return 'M:2/4',2
56
  elif time_Signature == "1/8":
57
  pass
 
 
 
 
58
  # def get_pngs(path):
59
  # filelist=os.listdir(path)
60
  # for fichier in filelist[:]: # filelist[:] makes a copy of filelist.
@@ -100,6 +104,7 @@ def music_gen(difficulty,time_Signature, Key_Signature):
100
  last = index
101
  elif "M:" in line:
102
  #time signature
 
103
  if selected_timeSign == "4/4":
104
  if "4/4" in line or "C|" in line:
105
  accepted = True
@@ -107,6 +112,7 @@ def music_gen(difficulty,time_Signature, Key_Signature):
107
  accepted = True
108
  elif line.find("K:") and key_enforced:
109
  #key signature
 
110
  if selected_keySign in line:
111
  key_accepted = True
112
 
@@ -207,8 +213,4 @@ def music_gen(difficulty,time_Signature, Key_Signature):
207
  #Introduces this wait time as we were returning file path even before lilypond converted the abc file
208
  # final_path = os.path.abspath(song_path+".png")
209
  png_list = get_pngs(path)
210
- # if len(png_list)>1:
211
- # print("In HereEEEEEEEEEEEE")
212
- # GlobalUIGallery = True
213
- # return png_list,song_path+".wav"
214
  return png_list,song_path+".wav"
 
55
  return 'M:2/4',2
56
  elif time_Signature == "1/8":
57
  pass
58
+ elif time_Signature == "2/4":
59
+ return 'M:2/4',2
60
+ elif time_Signature == "2/2":
61
+ return 'M:2/2',2
62
  # def get_pngs(path):
63
  # filelist=os.listdir(path)
64
  # for fichier in filelist[:]: # filelist[:] makes a copy of filelist.
 
104
  last = index
105
  elif "M:" in line:
106
  #time signature
107
+ print(line)
108
  if selected_timeSign == "4/4":
109
  if "4/4" in line or "C|" in line:
110
  accepted = True
 
112
  accepted = True
113
  elif line.find("K:") and key_enforced:
114
  #key signature
115
+ print(line)
116
  if selected_keySign in line:
117
  key_accepted = True
118
 
 
213
  #Introduces this wait time as we were returning file path even before lilypond converted the abc file
214
  # final_path = os.path.abspath(song_path+".png")
215
  png_list = get_pngs(path)
 
 
 
 
216
  return png_list,song_path+".wav"