diff --git a/backtransfer_notes.py b/backtransfer_notes.py new file mode 100644 index 0000000000000000000000000000000000000000..01fda019d0008db80eb13c67e0d6b49d403bd42a --- /dev/null +++ b/backtransfer_notes.py @@ -0,0 +1,140 @@ +import os +import pickle +from simfile.notes import NoteData +from simfile.notes.count import * +import simfile +import torch +from simfile.notes import Note, NoteType, NoteData +from simfile.timing import Beat + +# test load file +# decode whole chart +# maybe change up and downs, right lefts/mirror +# encode whole chart +# write back +from preprocess import process_chart + +test_file = 'C:/Users/cassi/OneDrive/Desktop/Master_Thesis/testing_sm_overwriting/test_pack/pkg1/110/110.sm' +#test_file_2 = 'C:/Users/cassi/OneDrive/Desktop/Master_Thesis/testing_sm_overwriting/test_pack/pkg1/110/110.ssc' +save_dir = 'C:/Users/cassi/OneDrive/Desktop/Master_Thesis/testing_sm_overwriting/test_pack/pkg_generated/110/' +save_file = f'{save_dir}110 (edit).sm' +#save_file_2 = f'{save_dir}110 (edit).ssc' + +os.makedirs(save_dir, exist_ok=True) +# indexed_vocabulary_path = 'C:/Users/cassi/OneDrive/Desktop/Master_Thesis/test_cluster/vocabulary.pkl' +# +# opened_file = simfile.open(f"{test_file}") +# +# with open(f"{test_file}", 'r', encoding="ISO-8859-1") as infile: +# sm_file = simfile.load(infile) +# +# with open(f'{indexed_vocabulary_path}', 'rb') as fp: +# indexed_vocabulary = pickle.load(fp) +# +# charts = sm_file.charts +# # get difficulty +# difficulties = [] +# # sample notes over time, return list of NoteData and [] if empy (for now) +# converted_charts = [] +# charts_per_song = len(charts) +# device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') +# max_len_charts = 0 +# +# for i, chart in enumerate(charts): +# notes_per_time = process_chart(opened_file, sm_file, chart, indexed_vocabulary, device) +# difficulty = chart.meter +# difficulties.append(int(difficulty)) +# if max_len_charts < len(notes_per_time): +# max_len_charts = len(notes_per_time) +# converted_charts.append(notes_per_time) +# +# assert (len(converted_charts) == len(difficulties)) +# +# # chart = sm_file.charts[0] +# for chart in charts: +# note_data = NoteData(chart) +# cols = note_data.columns +# +# def mirror(note, cols): +# return Note( +# beat=note.beat, +# column=cols - note.column - 1, +# note_type=note.note_type, +# ) +# +# mirrored_notes = (mirror(note, cols) for note in note_data) +# mirrored_note_data = NoteData.from_notes(mirrored_notes, cols) +# chart.notes = str(mirrored_note_data) +# +# save_sm_file = sm_file.copy() +# save_sm_file.charts = charts + +# with simfile.mutate( +# test_file, +# backup_filename=f'{test_file}.old', +# ) as sm_file: +# charts = sm_file.charts +# +# for chart in charts: +# note_data = NoteData(chart) +# cols = note_data.columns +# +# def mirror(note, cols): +# return Note( +# beat=note.beat, +# column=cols - note.column - 1, +# note_type=note.note_type, +# ) +# +# +# mirrored_notes = (mirror(note, cols) for note in note_data) +# mirrored_note_data = NoteData.from_notes(mirrored_notes, cols) +# chart.notes = str(mirrored_note_data) +# sm_file.charts = charts +# sm_file.subtitle += '(edited)' + +sm_file = simfile.open(test_file, strict=False) +charts = sm_file.charts +#print(charts) +sm_file.subtitle = '(edited)' +new_charts = '' +#sm_file.title = sm_file.title + '(edited)' + +print("Original first chart notes:") +print(sm_file.charts[0].notes[100:200]) + +for i, chart in enumerate(charts): + note_data = NoteData(chart) + cols = note_data.columns + + def mirror(note, cols): + return Note( + beat=note.beat, + column=cols - note.column - 1, + note_type=note.note_type, + ) + + mirrored_notes = (mirror(note, cols) for note in note_data) + mirrored_note_data = NoteData.from_notes(mirrored_notes, cols) + sm_file.charts[i].notes = str(mirrored_note_data) + +print("Updated first chart notes:") +print(sm_file.charts[0].notes[100:200]) + +with open(f'{save_file}', 'w', encoding='utf-8') as outfile: + sm_file.serialize(outfile) + + +new_sm_file = simfile.open(save_file, strict=False) +print("\n Loaded new first chart notes:") +print(new_sm_file.charts[0].notes[100:200]) + +# cols = 4 +# notes = [ +# Note(beat=Beat(i, 2), column=i%cols, note_type=NoteType.TAP) +# for i in range(8) +# ] +# +# note_data = NoteData.from_notes(notes, cols) +# +# print(str(note_data)) \ No newline at end of file