diff --git a/AutoInstaller/MSCT Auto Installer b/AutoInstaller/MSCT Auto Installer deleted file mode 100755 index 31b5de4..0000000 Binary files a/AutoInstaller/MSCT Auto Installer and /dev/null differ diff --git a/AutoInstaller/MSCT Auto Installer.exe b/AutoInstaller/MSCT Auto Installer.exe deleted file mode 100644 index 08dc593..0000000 Binary files a/AutoInstaller/MSCT Auto Installer.exe and /dev/null differ diff --git a/AutoInstaller/MSCT Auto Installer.py b/AutoInstaller/MSCT Auto Installer.py deleted file mode 100644 index 7ae2148..0000000 --- a/AutoInstaller/MSCT Auto Installer.py +++ /dev/null @@ -1,221 +0,0 @@ -# -*- coding: utf-8 -*- - - -# W-YI 金羿 -# QQ 2647547478 -# 音·创 开发交流群 861684859 -# Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com -# 版权所有 Team-Ryoun 金羿("Eilles Wan") -# 若需转载或借鉴 请附作者 - - -""" -音·创自动安装器 (Musicreater Auto Installer) -对音·创的自动安装提供支持的独立软件 -Musicreater Auto Installer (音·创自动安装器) -A software that used for installing Musicreater automatically - - Copyright 2022 Team-Ryoun - - Licensed under the Apache License, Version 2.0 (the 'License'); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an 'AS IS' BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - -# 代码写的并非十分的漂亮,还请大佬多多包涵;本软件源代码依照Apache软件协议公开 - - -# 下面为正文 - - -from sys import platform -from platform import architecture -import urllib.request -import zipfile -from os import system as srun -from os import walk, rename, remove, path, chdir, listdir -from shutil import rmtree, move - - -if platform == "win32": - - nowpath = __file__[: len(__file__) - __file__[len(__file__) :: -1].index('\\')] - - if srun('python -V'): - - print('\033[7m{}\033[0m'.format("正在下载python\nDownloading Python")) - - try: - urllib.request.urlretrieve( - "https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe" - if architecture()[0] == "32bit" - else "https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe", - "./pythonInstaller.exe", - ) - # urllib.request.urlretrieve("https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe","./pythonInstaller.exe") - except Exception as E: - input(str(E) + "\n自动下载失败,按下回车取消") - exit() - - print('正在安装python\nInstalling Python') - - # open('install.bat','w').write(f'.\\pythonInstaller.exe /passive InstallAllUsers=0 TargetDir="{nowpath}python38" DefaultJustForMeTargetDir="{nowpath}python38" AssociateFiles=0 CompileAll=1 PrependPath=0 Shortcuts=0 Include_doc=0 Include_launcher=0 InstallLauncherAllUsers=0 Include_test=0 Include_tools=0') - - srun( - f'.\\pythonInstaller.exe /passive InstallAllUsers=1 AssociateFiles=1 CompileAll=1 PrependPath=1 Shortcuts=1 Include_doc=0 Include_exe=1 Include_pip=1 Include_lib=1 Include_tcltk=1 Include_launcher=1 InstallLauncherAllUsers=1 Include_test=0 Include_tools=0' - ) - - remove('./pythonInstaller.exe') - - # print('\033[7m{}\033[0m'.format("正在下载pip安装工具\nDownloading get-pip tool")) - - # try: - # urllib.request.urlretrieve( - # "https://bootstrap.pypa.io/get-pip.py", "./python38/get-pip.py" - # ) - # except Exception as E: - # input(str(E) + "\n自动下载失败,按下回车取消") - # exit() - - # print('\033[7m{}\033[0m'.format("正在下载pip\nDownloading pip")) - - # chdir('./python38') - # srun(r'".\python.exe get-pip.py') - - # print('\033[7m{}\033[0m'.format('正在安装pip\nInstalling pip')) - - # for dire in listdir('./Lib/site-packages/'): - # move('./Lib/site-packages/'+dire,'./'+dire) - - # print('\033[7m{}\033[0m'.format("完成!")) - - # chdir('../') - - try: - choseurl = int( - input( - '\033[7m{}\033[0m'.format( - """请选择 音·创 下载源,默认为0 -Please choose a download source of Musicreater(default 0) -[0] 私有服务器<暂无> | Private Server -[1] Gitee -[2] Github\n:""" - ) - ) - ) - except Exception as E: - print('\033[7m{}\033[0m'.format(str(E) + "\n将使用默认源\nUsing default source")) - choseurl = 0 - - myurl = "" - Giteeurl = "https://gitee.com/EillesWan/Musicreater/repository/blazearchive/master.zip?Expires=1647771436&Signature=%2BkqLHwmvzScCd4cPQDP0LHLpqeZUxOrOv17QpRy%2FTzs%3D" - Githuburl = ( - "https://codeload.github.com/EillesWan/Musicreater/zip/refs/heads/master" - ) - - url = ( - myurl - if choseurl == 0 - else Giteeurl - if choseurl == 1 - else Githuburl - if choseurl == 2 - else myurl - ) - - print('\033[7m{}\033[0m'.format("正在下载音·创\nDownloading Musicreater")) - - try: - urllib.request.urlretrieve(url, "./master.zip") - except Exception as E: - input('\033[0{}\033[0m'.format(str(E) + "\n自动下载失败,按下回车取消")) - exit() - - print('\033[7m{}\033[0m'.format("安装音·创\nInstalling Musicreater")) - - zipfile.ZipFile("./master.zip", "r").extractall() - - remove("./master.zip") - - try: - rmtree("./Musicreater") - except: - pass - - rename("./Musicreater-master/", "./Musicreater/") - -elif platform == 'linux': - srun("sudo apt-get install python3") - srun("sudo apt-get install python3-pip") - srun("sudo apt-get install git") - try: - choseurl = int( - input( - '\033[0{}\033[0m'.format( - """请选择 音·创 下载源,默认为1 -Please choose a download source of Musicreater(default 1) -[1] Gitee -[2] Github\n:""" - ) - ) - ) - except Exception as E: - print(str(E) + "\n将使用默认源\nUsing default source") - choseurl = 1 - - url = ( - "https://gitee.com/EillesWan/Musicreater.git" - if choseurl == 1 - else "https://github.com/EillesWan/Musicreater.git" - if choseurl == 2 - else "https://gitee.com/EillesWan/Musicreater.git" - ) - srun(f"sudo git clone {url}") - - -print('\033[7m{}\033[0m'.format("编译音·创\nCompiling Musicreater")) - -if platform == "linux": - srun("python3 -O -m compileall -b ./Musicreater/") -elif platform == "win32": - srun("python -O -m compileall -b ./Musicreater/") - -for parent, dirnames, filenames in walk("./Musicreater"): - for filename in filenames: - if filename[-3:] == ".py": - fn = path.join(parent, filename) - remove(fn) - print(f"删除文件 {fn}") - for dirname in dirnames: - if dirname == "__pycache__": - pn = path.join(parent, dirname) - rmtree(pn) - print(f"删除目录 {pn}") - - -print( - '\033[7m{}\033[0m'.format( - """您可以开始使用音·创了 -我们将在后台为您安装各项支持库 -您可以运行Musicreater文件夹中的Musicreater.pyc文件来运行音·创 - -You can use Musicreater now, -We will setup the libraries ineed for you in background, -You can now open Musicreater.PYC in the directory of ./Musicreater to run Musicreater -""" - ) -) - - -if platform == "linux": - srun("python3 ./Musicreater/补全库.pyc") -elif platform == "win32": - srun("python ./Musicreater/补全库.pyc") diff --git a/Musicreater.New.py b/Musicreater.New.py deleted file mode 100644 index ec75b8e..0000000 --- a/Musicreater.New.py +++ /dev/null @@ -1,98 +0,0 @@ -# -*- coding: utf-8 -*- - - -# W-YI 金羿 -# QQ 2647547478 -# 音·创 开发交流群 861684859 -# Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com -# 版权所有 Team-Ryoun 金羿("Eilles Wan") & 诸葛亮与八卦阵("bgArray") -# 若需转载或借鉴 请附作者 - - -""" -音·创 (Musicreater) -一款免费开源的 《我的世界:基岩版》 音乐制作软件 -Musicreater (音·创) -A free opensource software which is used for creating all kinds of musics in Minecraft - - Copyright 2022 Team-Ryoun - - Licensed under the Apache License, Version 2.0 (the 'License'); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an 'AS IS' BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - -# 代码写的并非十分的漂亮,还请大佬多多包涵;本软件源代码依照Apache软件协议公开 - - -# 下面为正文 - - - -from msctspt.bugReporter import version - -__ver__ = f'{version.version[1]} {version.version[0]}' -__author__ = '金羿Eilles' - -from msctLib.display import * - -from msctLib.function import * - -from msctLib.data import uniteIO - - -hb = r''' __ __ - /\ \/\ \ - \ \ \_\ \ __ _____ _____ __ __ - \ \ _ \ /'__`\ /\ '__`\ /\ '__`\ /\ \/\ \ - \ \ \ \ \ /\ \L\.\_\ \ \L\ \\ \ \L\ \\ \ \_\ \ - \ \_\ \_\\ \__/.\_\\ \ ,__/ \ \ ,__/ \/`____ \ - \/_/\/_/ \/__/\/_/ \ \ \/ \ \ \/ `/___/> \ - \ \_\ \ \_\ /\___/ - \/_/ \/_/ \/__/ - ____ __ __ __ - /\ _`\ __ /\ \__ /\ \ /\ \ - \ \ \L\ \ /\_\ _ __ \ \ ,_\\ \ \___ \_\ \ __ __ __ - \ \ _ <'\/\ \ /\`'__\\ \ \/ \ \ _ `\ /'_` \ /'__`\ /\ \/\ \ - \ \ \L\ \\ \ \\ \ \/ \ \ \_ \ \ \ \ \ /\ \L\ \ /\ \L\.\_\ \ \_\ \ - \ \____/ \ \_\\ \_\ \ \__\ \ \_\ \_\\ \___,_\\ \__/.\_\\/`____ \ - \/___/ \/_/ \/_/ \/__/ \/_/\/_/ \/__,_ / \/__/\/_/ `/___/> \ - /\___/ - \/__/ ''' - - - -def __main__(): - import datetime,time,random,os,sys,zhdate - if datetime.date.today().month == 4 and datetime.date.today().day == 3: - if sys.platform == 'win32': - os.system('color 4e') - os.system('cls') - for i in range(len(hb)): - print(hb[i], end='', flush=True) - time.sleep(random.random() * 0.001) - input("金羿 生日快乐!") - elif '三月初五' in zhdate.ZhDate.today().chinese(): - input('缅怀先祖 祭祀忠勇 勿忘国耻 振兴中华') - - else: - disp() - - - - - - - - - -if __name__ == '__main__': - __main__() \ No newline at end of file diff --git a/Musicreater.py b/Musicreater.py deleted file mode 100644 index b892c02..0000000 --- a/Musicreater.py +++ /dev/null @@ -1,2005 +0,0 @@ -# -*- coding: utf-8 -*- - - -# W-YI 金羿 -# QQ 2647547478 -# 音·创 开发交流群 861684859 -# Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com -# 版权所有 Team-Ryoun 金羿("Eilles Wan") & 诸葛亮与八卦阵("bgArray") -# 若需转载或借鉴 请附作者 - - -""" -音·创 (Musicreater) -一款免费开源的 《我的世界:基岩版》 音乐制作软件 -Musicreater (音·创) -A free opensource software which is used for creating all kinds of musics in Minecraft - - Copyright 2022 Team-Ryoun - - Licensed under the Apache License, Version 2.0 (the 'License'); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an 'AS IS' BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - -# 代码写的并非十分的漂亮,还请大佬多多包涵;本软件源代码依照Apache软件协议公开 - -# -----------------------------分割线----------------------------- -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:15个;语法(一级)错误:597个 -# 目前我的Pycharm并没有显示任何错误,有错误可以向 -# bgArray 诸葛亮与八卦阵 -# QQ 474037765 或最好加入:音·创 开发交流群 861684859 -# ------------------------- split line----------------------------- -# Zhuge Liang and Bagua array help to modify the grammar date: -- January 19, 2022 -# Statistics: fatal (Level 3) errors: 0; Warning (Level 2) errors: 15; Syntax (Level 1) error: 597 -# At present, my Pycham does not display any errors. If there are errors, you can report them to me -# Bgarray Zhuge Liang and Bagua array -# QQ 474037765 or better join: Musicreater development exchange group 861684859 -# ------------------------- split line----------------------------- - -# 下面为正文 - - -import json -import os -import shutil -import sys -import threading -import pickle -import tkinter as tk -import tkinter.filedialog -import tkinter.messagebox -import tkinter.simpledialog - -from languages.lang import * -from msctspt.threadOpera import NewThread -from nmcsup.vers import VER - -__version__ = VER[1] + VER[0] -__author__ = '金羿Eilles & 诸葛亮与八卦阵bgArray' - - -print('建立变量,存入内存,载入字典常量函数') - -# 主体部分 - -# 支持多文件同时操作 - -# dataset[{ 'mainset':{ 'x':'y' }, 'musics': [ { 'set' :{ 'A':'B' } , 'note' : [ [ 'a' , b ], ] }, ] }, ] - -# 编辑: -# 修改主设置: dataset[第几个项目]['mainset']['什么设置'] = '设置啥' -# 修改音乐: dataset[第几个项目]['musics'][第几个音轨]['notes'][第几个音符][音符还是时间(0,1)] = 改成啥 -# 修改音轨设置: dataset[第几个项目]['musics'][第几个音轨]['set']['什么设置'] = '设置啥' -# -# 新增音轨: dataset[第几个项目]['musics'].append(datasetmodelpart) -# - - -dataset = [ - { - 'mainset': { - 'ReadMethod': 'old', - 'PackName': 'Ryoun', - 'MusicTitle': 'Noname', - 'IsRepeat': False, - 'PlayerSelect': '' - }, - 'musics': [ - { - 'set': { - 'EntityName': 'MusicSupport', - 'ScoreboardName': 'MusicSupport', - 'Instrument': 'note.harp', - 'FileName': 'Music' - }, - 'notes': [ - - ] - }, - ], - }, -] -'''一个项目中的全部数据。格式参照: -[ - { - 'mainset':{ - 'PackName':'Ryoun', - 'MusicTitle':'Noname', - 'IsRepeat':False, - 'PlayerSelect':'' - }, - 'musics':[ - { - 'set':{ - 'EntityName':'music_support', - 'ScoreboardName':'music_support', - 'Instrument':'harp', - 'FileName':'Music' - }, - 'notes':[ - - Note对象 - 或 - - [MC音调, 持续时间(s)] - ] - }, - ], - }, -] -''' - -is_new_file = True -'''这是否是一个新建的项目?''' - -is_save = True -'''当前项目是否已保存?''' - -ProjectName = '' -'''项目名称,即打开的msct文件名''' - -clearLog = False -'''是否在程序结束时移除日志''' - -NowMusic = 0 -'''当前音轨''' - -root = tk.Tk() -'''主窗口''' - - -def DMM(): # 反回字典用于编辑 - datasetmodelpart = { - 'set': { - 'EntityName': 'MusicSupport', - 'ScoreboardName': 'MusicSupport', - 'Instrument': 'note.harp', - 'FileName': 'Music' - }, - 'notes': [] - } - return datasetmodelpart - - -print('完成') - - -def __main__(): - """音·创 本体\n - W-YI 金羿\n - QQ 2647547478\n - 音·创 开发交流群 861684859\n - Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com\n - 版权所有 Team-Ryoun 金羿\n - 代码根据Apache 2.0 协议开源\n - 若需转载或借鉴 请附作者\n - """ - - print('音·创 正在启动……') - - print('载入日志功能...') - from msctLib.log import log - from nmcsup.log import end - print('完成!') - - print('更新执行位置...') - if sys.platform == 'win32': - try: - os.chdir(__file__[:len(__file__) - __file__[len(__file__)::-1].index('\\')]) - log('更新执行位置,当前文件位置 {}'.format(__file__)) - except FileNotFoundError: # 程序规范修改:根据新的语法标准:except后面不能没有错误类型,所以既然是pass就随便填一个错误 - pass - else: - try: - os.chdir(__file__[:len(__file__) - __file__[len(__file__)::-1].index('/')]) - except Exception: - pass - log('其他平台:{} 更新执行位置,当前文件位置 {}'.format(sys.platform, __file__)) - print('完成!') - - # 读取文件 - - print('载入文件读取函数') - - def ReadFile(fn: str): # -> list - from nmcsup.nmcreader import ReadFile as fileRead - k = fileRead(fn) - if k is False: - tk.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[105].format(fn)) - return - else: - return k - - # 老的列表读取 - def ReadMidi(midfile: str): # -> str - from nmcsup.nmcreader import ReadMidi as midiRead - k = midiRead(midfile) - if k is False: - tk.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[105].format(midfile)) - return - else: - return k - - # 音色读取 - def LoadMidi(midfile: str): # -> str - from bgArrayLib.reader import midiNewReader - k = midiNewReader(midfile) - if k is False: - tk.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[105].format(midfile)) - return - else: - return k - - # 新的类读取 - def MidiAnalysisClass(midfile: str): - from bgArrayLib.reader import midiClassReader - k = midiClassReader(midfile) - if k is False: - tk.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[105].format(midfile)) - return - else: - return k - - print('完成!') - - # 菜单命令 - print('加载菜单命令...') - - def exitapp(): - global is_save - if is_save is not True: - if tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106]): - SaveProject() - log('程序正常退出') - - if os.path.isfile("1.pkl"): - os.remove("1.pkl") - - try: - global dataset - del dataset - global root - root.destroy() - del root - except tkinter.TclError: - pass - - if clearLog: - print(READABLETEXT[2]) - # err = True - # try: - end() - if os.path.exists('./log/'): - shutil.rmtree('./log/') - if os.path.exists('./logs/'): - shutil.rmtree('./logs/') - if os.path.exists('./cache/'): - shutil.rmtree('./cache/') - if os.path.exists('./nmcsup/log/'): - shutil.rmtree('./nmcsup/log/') - if os.path.exists('./nmcsup/logs/'): - shutil.rmtree('./nmcsup/logs/') - # err = False - # except: - # print(READABLETEXT[3]) - # - # finally: - # if err is True: - # print(READABLETEXT[3]) - - exit() - - print('退出命令加载完成!') - - def SaveProject(): - global is_save - if is_new_file: - # 新的项目相等于另存为 - SaveAsProject() - return - else: - if dataset[0].get('mainset').get('ReadMethod') == "old": - # 旧项目旧存着吧 - log('存储已有文件:{}'.format(ProjectName)) - with open(ProjectName, 'w', encoding='utf-8') as f: - json.dump(dataset[0], f) - tkinter.messagebox.showinfo(title=READABLETEXT[4], message=READABLETEXT[107].format(ProjectName)) - is_save = True - elif dataset[0].get('mainset').get('ReadMethod') == "class": # 这部分相当SaveClassProject()函数 - # if is_new_file: - # # 新的项目相等于另存为 - # SaveAsClassProject() - # return - # else: - with open(ProjectName, 'wb') as f: - pickle.dump(dataset, f) - tkinter.messagebox.showinfo(title=READABLETEXT[4], - message=READABLETEXT[107].format(ProjectName)) - is_save = True - # return - elif dataset[0].get('mainset').get('ReadMethod') == "new": # 这部分相当于SaveNewProject()函数 - # if is_new_file: # 这部分相当于SaveAsNewProject()函数 - # # 新的项目相等于另存为 - # SaveAsNewProject() - # return - # else: - save_list = [dataset] - try: - with open("1.pkl", 'rb') as r: - save_list.append(pickle.load(r)) - except FileNotFoundError: - pass - with open(ProjectName, 'wb') as f: - pickle.dump(save_list, f) - tkinter.messagebox.showinfo(title=READABLETEXT[4], - message=READABLETEXT[107].format(ProjectName)) - is_save = True - return - - print('保存项目命令加载完成!') - - def SaveAsProject(): - global is_save - if dataset[0].get('mainset').get('ReadMethod') == "old": - # 另存为项目 - fn = tkinter.filedialog.asksaveasfilename(title=READABLETEXT[5], initialdir=r'./', - filetypes=[(READABLETEXT[108][0], '.msct'), - (READABLETEXT[109], '*')], - defaultextension='Noname.msct') - if fn is None or fn == '': - return - try: - Project_Name = fn - with open(Project_Name, 'w', encoding='utf-8') as f: - json.dump(dataset[0], f) - tkinter.messagebox.showinfo(title=READABLETEXT[4], message=READABLETEXT[107].format(Project_Name)) - is_save = True - except TypeError: - Project_Name = fn - with open(Project_Name, 'wb') as f: - pickle.dump(dataset[0], f) - tkinter.messagebox.showinfo(title=READABLETEXT[4], message=READABLETEXT[107].format(Project_Name)) - is_save = True - elif dataset[0].get('mainset').get('ReadMethod') == "class": # 等于SaveAsNewProject()函数 - fn = tkinter.filedialog.asksaveasfilename(title=READABLETEXT[5], initialdir=r'./', - filetypes=[(READABLETEXT[108][1], '.msctn'), - (READABLETEXT[109], '*')], - defaultextension='Noname.msctn') - if fn is None or fn == '': - return - Project_Name = fn - with open(Project_Name, 'wb') as f: - pickle.dump(dataset, f) - tkinter.messagebox.showinfo(title=READABLETEXT[4], message=READABLETEXT[107].format(Project_Name)) - - is_save = True - elif dataset[0].get('mainset').get('ReadMethod') == "new": # 等于SaveAsClassProject()函数 - fn = tkinter.filedialog.asksaveasfilename(title=READABLETEXT[5], initialdir=r'./', - filetypes=[(READABLETEXT[108][2], '.msctx'), - (READABLETEXT[109], '*')], - defaultextension='Noname.msctx') - if fn is None or fn == '': - return - Project_Name = fn - save_list = [dataset] - try: - with open("1.pkl", 'rb') as r: - save_list.append(pickle.load(r)) - except FileNotFoundError: - pass - print(save_list) - with open(Project_Name, 'wb') as f: - pickle.dump(save_list, f) - tkinter.messagebox.showinfo(title=READABLETEXT[4], message=READABLETEXT[107].format(Project_Name)) - is_save = True - - print('另存项目命令加载完成!') - - def openOldProject(): - global is_save - if is_save is not True: - result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106]) - if result: - SaveProject() - fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[6], initialdir=r'./', - filetypes=[(READABLETEXT[110], '.ry.nfc'), - (READABLETEXT[111], '.ry.mfm'), (READABLETEXT[112], '*')], - multiple=True) - if fn is None or fn == '': - return - else: - fn = fn[0] - from nmcsup.nmcreader import ReadOldProject - dataset[0] = ReadOldProject(fn) - - def openProject(): - global is_save - global dataset - if is_save is not True: - result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106]) - if result: - SaveProject() - fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./', - filetypes=[(READABLETEXT[108][0], '.msct'), - (READABLETEXT[108][1], '.msctn'), # msctn: 音创新文件(用类方法解析) - (READABLETEXT[108][2], '.msctx'), # msctx: 音创测试文件(用来支持多乐器解析) - (READABLETEXT[112], '*')], - multiple=True) - if fn is None or fn == '': - return - else: - fn = fn[0] - log("尝试打开:" + fn) - if str(fn)[str(fn).rfind("."):] == ".msct": # str(fn)[str(fn).rfind("."):] ->文件格式返回".xxx" - try: - try: - with open(fn, 'r', encoding='UTF-8') as C: - dataset[0] = json.load(C) - log("读取工程文件成功") - except UnicodeDecodeError: - print(READABLETEXT[8].format(fn)) - log('无法打开{}'.format(fn)) - return - except json.decoder.JSONDecodeError: # 程序规范修改:根据新的语法标准:except后面不能没有错误类型,测试后改为: - # json.decoder.JSONDecodeError - print(READABLETEXT[8].format(fn)) - log('无法打开{}'.format(fn)) - return - elif str(fn)[str(fn).rfind("."):] == ".msctx": - try: - try: - with open(fn, 'rb') as C: - # print(pickle.load(C)) - read = pickle.load(C) # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # print(read) - dataset = read[0] - pkl1 = read[1] - log(f"读取新文件成功:\n{str(dataset[0])}") - with open("1.pkl", 'wb') as w: - pickle.dump(pkl1, w) - except KeyError: - with open(fn, 'rb') as C: - dataset[0] = pickle.load(C) - log(f"读取新文件成功:\n{str(dataset[0])}") - except pickle.UnpicklingError: # 程序规范修改:根据新的语法标准:except后面不能没有错误类型,测试后改为: - # pickle.UnpicklingError - print(READABLETEXT[8].format(fn)) - log('无法打开{}'.format(fn)) - return - elif str(fn)[str(fn).rfind("."):] == ".msctn": - try: - try: - with open(fn, 'rb') as C: - # print(pickle.load(C)) - read = pickle.load(C) # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # print(read) - dataset = read - log("读取新文件成功") - except KeyError: - with open(fn, 'rb') as C: - dataset[0] = pickle.load(C) - log("读取新文件成功") - except pickle.UnpicklingError: # 程序规范修改:根据新的语法标准:except后面不能没有错误类型,测试后改为: - # pickle.UnpicklingError - print(READABLETEXT[8].format(fn)) - log('无法打开{}'.format(fn)) - return - else: - return - global is_new_file - global ProjectName - is_new_file = False - ProjectName = fn - del fn - global NowMusic - RefreshMain() - RefreshMusic(NowMusic) - - print('打开项目命令加载完成!') - - def appabout(): - aabw = tk.Tk() - aabw.title(READABLETEXT[9]) - aabw.geometry('550x600') # 像素 - tk.Label(aabw, text='', font=('', 15)).pack() - tk.Label(aabw, text=READABLETEXT[10], font=('', 35)).pack() - tk.Label(aabw, text=READABLETEXT[11].format(VER[1] + VER[0]), font=('', 15)).pack() - # pack 的side可以赋值为LEFT RTGHT TOP BOTTOM - # grid 的row 是列数、column是行排,注意,这是针对空间控件本身大小来的,即是指向当前控件的第几个。 - # place的 x、y是(x,y)坐标 - # pic = tk.PhotoImage(file='./bin/pics/Ryoun_S.png') - # tk.Label(aabw, image=pic, width=200, height=200).pack() - # del pic - tk.Label(aabw, text='', font=('', 5)).pack() - tk.Label(aabw, text=READABLETEXT[12], font=('', 20)).pack() - tk.Label(aabw, text='', font=('', 15)).pack() - for i in READABLETEXT[15]: - tk.Label(aabw, text=i[0], font=('', 17 if i[1] else 15, 'bold' if i[1] else '')).pack() - tk.Label(aabw, text='', font=('', 5)).pack() - if DEFAULTLANGUAGE != 'zh-CN': - tk.Label(aabw, text=READABLETEXT[16], font=('', 15)).pack() - for i in READABLETEXT['Translator']: - tk.Label(aabw, text=i[0], font=('', 17 if i[1] else 15, 'bold' if i[1] else '')).pack() - - def exitAboutWindow(): - aabw.destroy() - - tk.Button(aabw, text=READABLETEXT[13], command=exitAboutWindow).pack() - - aabw.mainloop() - - print('关于命令加载完成!') - - def apphelp(): - def funcHelp(): - funTK = tk.Tk() - funTK.title("函数功能查询") - funTK.geometry('1200x1000') - thingLabel = tk.Label(funTK, text="函数功能查询", font=('', 20)) - thingLabel.pack() - aLabel = tk.Label(funTK, text="""文件:\n - 打开音·创项目...: 打开三种类型的音创文件(.msct, .msctn, .msctx)\n - 打开旧项目...: 打开两种类型的音创文件(.ry.nfc, .ry.mfm)\n - 保存项目: 自动选择保存类型,并保存为音创文件(.msct, .msctn, .msctx)\n - 另存为...: 自动选择另存为类型,并保存为音创文件(.msct, .msctn, .msctx)\n - 退出 : 退出程序\n\n - 编辑:\n - 从midi导入音轨: 以旧方法(列表方法)解析midi,如果你使用这个方法解析,意味着你选择.msct文件\n - 从midi导入音轨且用新方法解析: 以新方法(类方法)解析midi,并解析乐器信息,如果你使用这个方法解析,意味着你选择.msctx文件\n - 注意!!!这个功能暂时只用于支持雪莹乐器资源包,如果你不是为了这个,最好别用!\n - 从midi导入音轨且用类方法解析: 以类方法解析midi,如果你使用这个方法解析,意味着你选择.msctn文件\n - 注意!!!这个功能暂时在开发中!!!别用!\n - """, font=('宋体', 12)) - aLabel.pack() - - ahpw = tk.Tk() - ahpw.title(READABLETEXT[19]) - ahpw.geometry('400x600') # 像素 - tk.Label(ahpw, text="帮助", font=('楷体', 32)).grid(row=0, column=2) - tk.Button(ahpw, text="函数功能查询", command=funcHelp, font=('楷体', 20)).grid(row=1, column=1) - ahpw.mainloop() - - print('帮助命令加载完成!') - - def FromMP3(): - log('从MP3导入音乐') - mp3file = tkinter.filedialog.askopenfilename(title=READABLETEXT[20], initialdir=r'./', - filetypes=[(READABLETEXT[113], '.mp3 .m4a'), - (READABLETEXT[112], '*')], multiple=True) - if mp3file is None or mp3file == '': - log('取消') - return - else: - mp3file = mp3file[0] - from nmcsup.nmcreader import ReadMidi - from nmcsup.trans import Mp32Mid - if not os.path.exists('./Temp/'): - os.makedirs('./Temp/') - Mp32Mid(mp3file, './Temp/Trans.mid') - log('打开midi文件./Temp/Trans.mid') - th = NewThread(ReadMidi, ('./Temp/Trans.mid',)) - th.start() - del mp3file - - def midiSPT(th_): - for i in th_.getResult(): - datas = DMM() - datas['notes'] = i - dataset[0]['musics'].append(datas) - del th_ - global is_save - is_save = False - global NowMusic - RefreshMain() - RefreshMusic(NowMusic) - - threading.Thread(target=midiSPT, args=(th,)).start() - del th - - print('读MP3加载完成') - - def FromListMidi(): - log('从midi导入音乐') - midfile = tkinter.filedialog.askopenfilename(title=READABLETEXT[21], initialdir=r'./', - filetypes=[(READABLETEXT[114], '.mid .midi'), - (READABLETEXT[112], '*')], multiple=True) - if midfile is None or midfile == '': - log('取消') - return - else: - midfile = midfile[0] - th = NewThread(ReadMidi, (midfile,)) - th.start() - del midfile - - def midiSPT(th_): - try: - try: - for i in th_.getResult(): - datas = DMM() - datas['notes'] = i - dataset[0]['musics'].append(datas) - del th_ - global is_save - is_save = False - global NowMusic - RefreshMain() - RefreshMusic(NowMusic) - except OSError: - tkinter.messagebox.showerror(READABLETEXT[0], READABLETEXT[167]) - except AttributeError: - try: - tkinter.messagebox.showerror(READABLETEXT[0], READABLETEXT[167]) - except OSError: - tkinter.messagebox.showerror(READABLETEXT[0], READABLETEXT[167]) - - threading.Thread(target=midiSPT, args=(th,)).start() - del th - - def FromNewMidi(): - log('从midi导入音乐并采用新读取方式') - midfile = tkinter.filedialog.askopenfilename(title=READABLETEXT[21], initialdir=r'./', - filetypes=[(READABLETEXT[114], '.mid .midi'), - (READABLETEXT[112], '*')], multiple=True) - if midfile is None or midfile == '': - log('取消') - return - else: - midfile = midfile[0] - th = NewThread(LoadMidi, (midfile,)) - th.start() - del midfile - - def midiSPT(th_): - try: - try: - for i in th_.getResult(): - datas = DMM() - datas['notes'] = i - dataset[0]['musics'].append(datas) - del th_ - global is_save - is_save = False - global NowMusic - RefreshMain() - RefreshMusic(NowMusic) - except OSError: - tkinter.messagebox.showerror(READABLETEXT[0], READABLETEXT[167]) - except AttributeError: - try: - tkinter.messagebox.showerror(READABLETEXT[0], READABLETEXT[167]) - except OSError: - tkinter.messagebox.showerror(READABLETEXT[0], READABLETEXT[167]) - - threading.Thread(target=midiSPT, args=(th,)).start() - del th - dataset[0]['mainset']['ReadMethod'] = "new" - - def FromClassMidi(): - log('从midi导入音乐并采用类读取方式') - midfile = tkinter.filedialog.askopenfilename(title=READABLETEXT[21], initialdir=r'./', - filetypes=[(READABLETEXT[114], '.mid .midi'), - (READABLETEXT[112], '*')], multiple=True) - if midfile is None or midfile == '': - log('取消') - return - else: - midfile = midfile[0] - th = NewThread(MidiAnalysisClass, (midfile,)) - th.start() - del midfile - - def midiSPT(th_): - for i in th_.getResult(): - datas = DMM() - datas['notes'] = i - dataset[0]['musics'].append(datas) - del th_ - global is_save - is_save = False - global NowMusic - RefreshMain() - RefreshMusic(NowMusic) - threading.Thread(target=midiSPT, args=(th,)).start() - del th - dataset[0]['mainset']['ReadMethod'] = "class" - - print('读midi命令加载完成!') - - def FromForm(): - log('从文本读入音轨') - fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[22], initialdir=r'./', - filetypes=[(READABLETEXT[115], '.txt'), (READABLETEXT[112], '*')], - multiple=True) - if fn is None or fn == '': - log('取消') - return - else: - fn = fn[0] - th = NewThread(ReadFile, (fn,)) - th.start() - - def midiSPT(th_): - for i in th_.getResult(): - datas = DMM() - datas['notes'] = i - dataset[0]['musics'].append(datas) - del th_ - global is_save - is_save = False - global NowMusic - RefreshMain() - RefreshMusic(NowMusic) - - threading.Thread(target=midiSPT, args=(th,)).start() - - print('读txt命令加载完成!') - - def FromText(): - log('写入音符至音轨') - dat = tkinter.simpledialog.askstring(title=READABLETEXT[23], prompt=READABLETEXT[14], initialvalue='`1 .2 C') - if dat is None: - return - datas = [] - for i in dat.split(' '): - datas.append([str(i), 1.0]) - log(READABLETEXT[24].format(str(datas))) - from nmcsup.trans import note2list - datat = DMM() - datat['notes'] = note2list(datas) - dataset[0]['musics'].append(datat) - del datas, datat, dat - global is_save - is_save = False - global NowMusic - RefreshMain() - RefreshMusic(NowMusic) - - print('写入命令加载完成!') - print('开始加载列表生成函数函数。') - - def ShowCMD(): - log('展示指令') - global NowMusic - from nmcsup.trans import Note2Cmd - RefreshCMDList( - Note2Cmd(dataset[0]['musics'][NowMusic]['notes'], dataset[0]['musics'][NowMusic]['set']['ScoreboardName'], - dataset[0]['musics'][NowMusic]['set']['Instrument'], dataset[0]['mainset']['PlayerSelect'])) - - def MakeCMD(): - log('生成文件') - from msctspt.funcOpera import makeFuncFiles - file = tkinter.filedialog.askdirectory(title=READABLETEXT[25], initialdir=r'./') - if file is None or file == '': - log('取消') - return - else: - makeFuncFiles(dataset[0], file + '/') - - def MakeCMDdir(): - log('生成函数包') - from msctspt.funcOpera import makeFunDir - file = tkinter.filedialog.askdirectory(title=READABLETEXT[26], initialdir=r'./') - if file is None or file == '': - log('取消') - return - else: - makeFunDir(dataset[0], file + '/') - - def MakePackFile(): - file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./') - if file is None or file == '': - log('取消') - return - import zipfile - - from msctspt.funcOpera import makeFunDir - log('生成附加包文件') - if not os.path.exists('./temp/'): - os.makedirs('./temp/') - makeFunDir(dataset[0], './temp/') - - shutil.move('./temp/{}Pack/behavior_packs/{}/functions'.format(dataset[0]['mainset']['PackName'], - dataset[0]['mainset']['PackName']), './') - - shutil.move('./temp/{}Pack/behavior_packs/{}/manifest.json'.format(dataset[0]['mainset']['PackName'], - dataset[0]['mainset']['PackName']), './') - - with zipfile.ZipFile('{}/{}.mcpack'.format(file, dataset[0]['mainset']['PackName']), 'w') as zipobj: - for i in os.listdir('./functions/'): - zipobj.write('./functions/{}'.format(i)) - zipobj.write('./manifest.json') - shutil.move('./functions', './temp/') - shutil.move('./manifest.json', './temp/') - shutil.rmtree('./temp/') - - print('完成加载列表生成函数函数。') - print('开始加载乐器类生成函数函数。') - - def MakeNewCMD(): - log('生成新文件') - from msctspt.funcOpera import makeNewFuncFiles - file = tkinter.filedialog.askdirectory(title=READABLETEXT[25], initialdir=r'./') - if file is None or file == '': - log('取消') - return - else: - makeNewFuncFiles(dataset[0], file + '/') - - def MakeNewCMDdir(): - log('生成新函数包与材质包') - from msctspt.funcOpera import makeNewFunDir - file = tkinter.filedialog.askdirectory(title=READABLETEXT[26], initialdir=r'./') - if file is None or file == '': - log('取消') - return - else: - makeNewFunDir(dataset[0], file + '/') - - def MakeNewFunctionPackFile(): - file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./') - if file is None or file == '': - log('取消') - return - import zipfile - - from msctspt.funcOpera import makeNewFunDir - log('生成附加包文件') - if not os.path.exists('./temp/'): - os.makedirs('./temp/') - makeNewFunDir(dataset[0], './temp/') - - shutil.move('./temp/{}Pack/behavior_packs/{}/functions'.format(dataset[0]['mainset']['PackName'], - dataset[0]['mainset']['PackName']), './') - - shutil.move('./temp/{}Pack/behavior_packs/{}/manifest.json'.format(dataset[0]['mainset']['PackName'], - dataset[0]['mainset']['PackName']), './') - - with zipfile.ZipFile('{}/{}.mcpack'.format(file, dataset[0]['mainset']['PackName']), 'w') as zipobj: - for i in os.listdir('./functions/'): - zipobj.write('./functions/{}'.format(i)) - zipobj.write('./manifest.json') - shutil.move('./functions', './temp/') - shutil.move('./manifest.json', './temp/') - shutil.rmtree('./temp/') - - def MakeNewFunctionPack_ResourcesPacks_File(): # 这个是直接复制资源包(散包) - file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./') - if file is None or file == '': - log('取消') - return - from bgArrayLib.sy_resourcesPacker import resources_pathSetting - result = resources_pathSetting() - print(result) - if result[0] is False: - if result[1] == 1: - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[157]) - if result[1] == 2: - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[158]) - return - else: - import zipfile - - from msctspt.funcOpera import makeNewFunDir - log('生成附加包文件') - if not os.path.exists('./temp/'): - os.makedirs('./temp/') - makeNewFunDir(dataset[0], './temp/') - - shutil.move('./temp/{}Pack/behavior_packs/{}/functions'.format(dataset[0]['mainset']['PackName'], - dataset[0]['mainset']['PackName']), './') - - shutil.move('./temp/{}Pack/behavior_packs/{}/manifest.json'.format(dataset[0]['mainset']['PackName'], - dataset[0]['mainset']['PackName']), './') - - with zipfile.ZipFile('{}/{}.mcpack'.format(file, dataset[0]['mainset']['PackName']), 'w') as zipobj: - for i in os.listdir('./functions/'): - zipobj.write('./functions/{}'.format(i)) - zipobj.write('./manifest.json') - shutil.move('./functions', './temp/') - shutil.move('./manifest.json', './temp/') - shutil.rmtree('./temp/') - from bgArrayLib.sy_resourcesPacker import scatteredPack - scatteredPack(file) - - print('完成加载乐器类生成函数函数。') - print('开始加载乐器音色资源绑定函数。') - - def changeResourcesPath(): - file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./') - if file is None or file == '': - log('取消') - return - from bgArrayLib.sy_resourcesPacker import resources_pathSetting - result = resources_pathSetting(file) - print(result) - if result[0] is False: - if result[1] == 1: - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[157]) - if result[1] == 2: - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[158]) - else: - tkinter.messagebox.showinfo(title=READABLETEXT[1], message=READABLETEXT[159]) - - print('开始加载类生成函数函数。') - - def MakeClassCMD(): - log('生成类文件') - from msctspt.funcOpera import makeClassFuncFiles - file = tkinter.filedialog.askdirectory(title=READABLETEXT[25], initialdir=r'./') - if file is None or file == '': - log('取消') - return - else: - makeClassFuncFiles(dataset[0], file + '/') - - def MakeClassCMDdir(): - log('生成类函数包与材质包') - from msctspt.funcOpera import makeClassFunDir - file = tkinter.filedialog.askdirectory(title=READABLETEXT[26], initialdir=r'./') - if file is None or file == '': - log('取消') - return - else: - makeClassFunDir(dataset[0], file + '/') - - def MakeClassFunctionPackFile(): - file = tkinter.filedialog.askdirectory(title=READABLETEXT[27], initialdir=r'./') - if file is None or file == '': - log('取消') - return - import zipfile - - from msctspt.funcOpera import makeClassFunDir - log('生成附加包文件') - if not os.path.exists('./temp/'): - os.makedirs('./temp/') - makeClassFunDir(dataset[0], './temp/') - - shutil.move('./temp/{}Pack/behavior_packs/{}/functions'.format(dataset[0]['mainset']['PackName'], - dataset[0]['mainset']['PackName']), './') - - shutil.move('./temp/{}Pack/behavior_packs/{}/manifest.json'.format(dataset[0]['mainset']['PackName'], - dataset[0]['mainset']['PackName']), './') - - with zipfile.ZipFile('{}/{}.mcpack'.format(file, dataset[0]['mainset']['PackName']), 'w') as zipobj: - for i in os.listdir('./functions/'): - zipobj.write('./functions/{}'.format(i)) - zipobj.write('./manifest.json') - shutil.move('./functions', './temp/') - shutil.move('./manifest.json', './temp/') - shutil.rmtree('./temp/') - - print('完成加载类生成函数函数。') - print('开始加载地图函数。') - - # 转为空方块世界 - def ToBlockWorldEpt(): - import zipfile - global dire - - from nmcsup.trans import Cmd2World, Datas2BlkWorld, Notes2Player - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[116], - initialvalue='16 4 16') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - Outdire = tkinter.filedialog.askdirectory(title=READABLETEXT[29], initialdir=r'./') - if Outdire is None or Outdire == '': - log('取消') - return - else: - Outdire = '{}/{}/'.format(Outdire[0], dataset[0]['mainset']['PackName']) - with zipfile.ZipFile('./nmcsup/EptWorld.zip') as zipobj: # , 'r' (参数等于默认时不写) - zipobj.extractall(Outdire) - NoteData = [] - for i in dataset[0]['musics']: - NoteData.append(i['notes']) - Datas2BlkWorld(NoteData, Outdire, dire) - del NoteData - for i in range(len(dataset[0]['musics'])): - Cmd2World(Notes2Player(dataset[0]['musics'][i]['notes'], [dire[0], dire[1], dire[2] + i], - {'Ent': dataset[0]['musics'][i]['set']['EntityName'], - 'Pls': dataset[0]['mainset']['PlayerSelect'], - 'Ins': dataset[0]['musics'][i]['set']['Instrument']}), Outdire, - [dire[0] - 5 - i, dire[1], dire[2]]) - del dire, Outdire - - # 转为已存在的方块世界 - def ToBlockWorld(): - from nmcsup.trans import Cmd2World, Datas2BlkWorld, Notes2Player - global dire - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[116], - initialvalue='16 4 16') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - Outdire = tkinter.filedialog.askdirectory(title=READABLETEXT[29], initialdir=r'./') - if Outdire is None or Outdire == '': - log('取消') - return - else: - Outdire += '/' - NoteData = [] - for i in dataset[0]['musics']: - NoteData.append(i['notes']) - Datas2BlkWorld(NoteData, Outdire, dire) - del NoteData - for i in range(len(dataset[0]['musics'])): - Cmd2World(Notes2Player(dataset[0]['musics'][i]['notes'], [dire[0], dire[1], dire[2] + i], - {'Ent': dataset[0]['musics'][i]['set']['EntityName'], - 'Pls': dataset[0]['mainset']['PlayerSelect'], - 'Ins': dataset[0]['musics'][i]['set']['Instrument']}), Outdire, - [dire[0] - 5 - i, dire[1], dire[2]]) - del dire, Outdire - - # 生成函数播放器 - def MakeFuncPlayer(): - global dire - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[116], - initialvalue='16 4 16') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - Outdire = tkinter.filedialog.askdirectory(title=READABLETEXT[30], initialdir=r'./') - if Outdire is None or Outdire == '': - return - else: - Outdire = '{}/{}/'.format(Outdire, dataset[0]['mainset']['PackName']) - from nmcsup.trans import Notes2Player - for i in range(len(dataset[0]['musics'])): - open(Outdire + dataset[0]['musics'][i]['set']['FileName'] + '_' + str(i) + '.mcfunction', 'w', - encoding='utf-8').writelines( - Notes2Player(dataset[0]['musics'][i]['notes'], [dire[0], dire[1], dire[2] + i], - {'Ent': dataset[0]['musics'][i]['set']['EntityName'], - 'Pls': dataset[0]['mainset']['PlayerSelect'], - 'Ins': dataset[0]['musics'][i]['set']['Instrument']})) - - # 转为空指令世界 - def ToCmdWorldEpt(): - import zipfile - global dire - - from nmcsup.trans import Cmd2World, Note2Cmd - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[116], - initialvalue='16 4 16') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - Outdire = tkinter.filedialog.askdirectory(title=READABLETEXT[29], initialdir=r'./') - if Outdire is None or Outdire == '': - return - else: - Outdire += '/' + dataset[0]['mainset']['PackName'] + '/' - with zipfile.ZipFile('./nmcsup/EptWorld.zip') as zipobj: # , 'r' (默认参数不用设置) - zipobj.extractall(Outdire) - for i in range(len(dataset[0]['musics'])): - Cmd2World(Note2Cmd(dataset[0]['musics'][i]['notes'], dataset[0]['musics'][i]['set']['ScoreboardName'], - dataset[0]['musics'][i]['set']['Instrument'], dataset[0]['mainset']['PlayerSelect'], - True), Outdire, [dire[0], dire[1], dire[2] + i]) - del dire, Outdire - - # 转为已存在的指令世界 - def ToCmdWorld(): - global dire - from nmcsup.trans import Cmd2World, Note2Cmd - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[116], - initialvalue='16 4 16') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - Outdire = tkinter.filedialog.askdirectory(title=READABLETEXT[29], initialdir=r'./') - if Outdire is None or Outdire == '': - return - else: - Outdire += '/' - for i in range(len(dataset[0]['musics'])): - Cmd2World(Note2Cmd(dataset[0]['musics'][i]['notes'], dataset[0]['musics'][i]['set']['ScoreboardName'], - dataset[0]['musics'][i]['set']['Instrument'], dataset[0]['mainset']['PlayerSelect'], - True), Outdire, [dire[0], dire[1], dire[2] + i]) - del dire, Outdire - - # 函数输入指令块 - def func2World(): - from nmcsup.trans import Cmd2World - global dire - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[116], - initialvalue='16 4 16') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - Outdire = tkinter.filedialog.askdirectory(title=READABLETEXT[29], initialdir=r'./') - if Outdire is None or Outdire == '': - return - else: - Outdire += '/' - Cmd2World(open(tkinter.filedialog.askopenfilename(title=READABLETEXT[31], initialdir=r'./', - filetypes=[(READABLETEXT[118], '.mcfunction'), - (READABLETEXT[112], '*')], multiple=True)[0], 'r', - encoding='utf-8').readlines(), Outdire, dire) - - # 大函数分割并载入执行链 - def bigFunc2World(): - log('分割大函数') - global dire - import uuid - - from msctspt.funcOpera import funSplit - from msctspt.transfer import hans2pinyin - from nmcsup.trans import Cmd2World - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[119], - initialvalue='16 4 16') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - Outdire = tkinter.filedialog.askdirectory(title=READABLETEXT[29], initialdir=r'./') - if Outdire is None or Outdire == '': - log('取消') - return - else: - Outdire += '/' - log('获得地图地址:' + Outdire) - fileName = tkinter.filedialog.askopenfilename(title=READABLETEXT[31], initialdir=r'./', - filetypes=[(READABLETEXT[118], '.mcfunction'), - (READABLETEXT[112], '*')], multiple=True) - if fileName is None or fileName == '': - log('取消') - return - else: - fileName = fileName[0] - log('获得文件名:' + fileName) - bigFile = open(fileName, 'r', encoding='utf-8') - parts = funSplit(bigFile) - if parts == -1: - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[121]) - return - log('创建函数文件夹') - packName = fileName[len(fileName) - fileName[::-1].index('/'):fileName.index('.')] - packDire = hans2pinyin(packName) - try: - os.makedirs(Outdire + 'behavior_packs/' + packDire + '/functions/') - except FileExistsError: - log('已存在文件夹') - log('创建manifest.json以及world_behavior_packs.json') - behaviorUuid = uuid.uuid4() - if os.path.exists(Outdire + 'world_behavior_packs.json'): - with open(Outdire + 'world_behavior_packs.json', 'r') as f: - have = json.load(f) - have.append({'pack_id': str(behaviorUuid), 'version': [0, 0, 1]}) - with open(Outdire + 'world_behavior_packs.json', 'w', encoding='utf-8') as f: - json.dump(have, f) - del have - else: - with open(Outdire + 'world_behavior_packs.json', 'w', encoding='utf-8') as f: - f.write('[\n {\'pack_id\': \'' + str(behaviorUuid) + '\',\n \'version\': [ 0, 0, 1 ]}\n]') - with open(Outdire + 'behavior_packs/' + packDire + '/manifest.json', 'w') as f: - f.write( - '{\n \'format_version\': 1,\n \'header\': {\n \'description\': \'' + packName + - ' Pack : behavior pack\',\n \'version\': [ 0, 0, 1 ],\n \'name\': \'' + packName + - 'Pack\',\n \'uuid\': \'' + str( - behaviorUuid) + '\'\n },\n \'modules\': [\n {\n \'description\': \'' + packName + - ' Pack : behavior pack\',\n \'type\': ' - '\'data\',\n \'version\': [ 0, 0, 1 ],\n \'uuid\': \'' + str( - uuid.uuid4()) + '\'\n }\n ]\n}') # 要求文段不能过长 - cmdlist = [] - for i in parts: - open(Outdire + 'behavior_packs/' + packDire + '/functions/' + packDire + str( - parts.index(i) + 1) + '.mcfunction', 'w', encoding='utf-8').writelines(i) - cmdlist.append('function ' + packDire + str(parts.index(i) + 1)) - Cmd2World(cmdlist, Outdire, dire) - del cmdlist, behaviorUuid, Outdire, fileName, bigFile, parts, dire, packName, packDire - - def toScbBDXfile(): - log('单音轨转BDX') - from msctspt.transfer import note2bdx - global dire - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[122], - initialvalue='0 0 0') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - - fileName = tkinter.filedialog.asksaveasfilename(title=READABLETEXT[32], initialdir=r'./', - filetypes=[(READABLETEXT[123], '.bdx'), - (READABLETEXT[112], '*')], - defaultextension=dataset[0]['mainset']['PackName'] + '.bdx', - initialfile=dataset[0]['mainset']['PackName'] + '.bdx') - if fileName is None or fileName == '': - log('取消') - return - - log('获得文件名:' + fileName) - - res = note2bdx(fileName, dire, dataset[0]['musics'][NowMusic]['notes'], - dataset[0]['musics'][NowMusic]['set']['ScoreboardName'], - dataset[0]['musics'][NowMusic]['set']['Instrument'], dataset[0]['mainset']['PlayerSelect']) - log('转换结束!\n' + str(res)) - tkinter.messagebox.showinfo(READABLETEXT[33], READABLETEXT[124].format(str(res))) - - def toBDXfile(): - log('整首歌转BDX') - from msctspt.transfer import music2BDX - global dire - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[122], - initialvalue='0 0 0') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - - fileName = tkinter.filedialog.asksaveasfilename(title=READABLETEXT[32], initialdir=r'./', - filetypes=[(READABLETEXT[123], '.bdx'), - (READABLETEXT[112], '*')], - defaultextension=dataset[0]['mainset']['PackName'] + '.bdx', - initialfile=dataset[0]['mainset']['PackName'] + '.bdx') - - maxHeight = 200 - - while True: - maxHeight = tkinter.simpledialog.askinteger(title=READABLETEXT[28], - prompt=READABLETEXT[93], - initialvalue='200') - if maxHeight >= 5: - break - elif maxHeight is None: - log('取消') - return - else: - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[94]) - continue - - if fileName is None or fileName == '': - log('取消') - return - - log('获得文件名:' + fileName) - - res = music2BDX(fileName, dire, dataset[0], height = maxHeight ) - log('转换结束!\n' + str(res)) - tkinter.messagebox.showinfo(READABLETEXT[33], READABLETEXT[124].format(str(res))) - - def wsPlay(): - from msctspt.transfer import note2webs - spd = tkinter.simpledialog.askfloat(READABLETEXT[34], prompt=READABLETEXT[125], initialvalue='5.0') - tkinter.messagebox.showinfo(title=READABLETEXT[35], message=READABLETEXT[126]) - note2webs(dataset[0]['musics'][NowMusic]['notes'], dataset[0]['musics'][NowMusic]['set']['Instrument'], spd, - dataset[0]['mainset']['PlayerSelect']) - - def toRSworldEPT(): - import zipfile - global dire - dire = "" - - from msctspt.transfer import note2RSworld - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[116], - initialvalue='16 4 16') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - Outdire = tkinter.filedialog.askdirectory(title=READABLETEXT[29], initialdir=r'./') - if Outdire is None or Outdire == '': - return - else: - Outdire += '/' + dataset[0]['mainset']['PackName'] + '/' - with zipfile.ZipFile('./nmcsup/EptWorld.zip') as zipobj: # , 'r'(默认参数不用写) - zipobj.extractall(Outdire) - for i in range(len(dataset[0]['musics'])): - note2RSworld(Outdire, dire, dataset[0]['musics'][i]['notes'], dataset[0]['musics'][i]['set']['Instrument']) - - del dire, Outdire - - def toRSworld(): - from msctspt.transfer import note2RSworld - global dire - dire = "" - while True: - try: - dire = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[116], - initialvalue='16 4 16') - if dire is None or dire == '': - return - dire = [int(dire.split(' ')[0]), int(dire.split(' ')[1]), int(dire.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - Outdire = tkinter.filedialog.askdirectory(title=READABLETEXT[29], initialdir=r'./') - if Outdire is None or Outdire == '': - return - else: - Outdire += '/' - for i in range(len(dataset[0]['musics'])): - note2RSworld(Outdire, dire, dataset[0]['musics'][i]['notes'], dataset[0]['musics'][i]['set']['Instrument']) - del dire, Outdire - - def world2RyStruct(): - global begp - global endp - outdir = tkinter.filedialog.askdirectory(title=READABLETEXT[36], initialdir=r'./') - if outdir is None or outdir == '': - return - else: - outdir += '/' - while True: - try: - begp = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[127], - initialvalue='16 4 16') - if begp is None or begp == '': - return - begp = [int(begp.split(' ')[0]), int(begp.split(' ')[1]), int(begp.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - while True: - try: - endp = tkinter.simpledialog.askstring(title=READABLETEXT[28], prompt=READABLETEXT[128], - initialvalue='16 4 16') - if endp is None or endp == '': - return - endp = [int(endp.split(' ')[0]), int(endp.split(' ')[1]), int(endp.split(' ')[2])] - except ValueError: # 测试完为ValueError,故修改语法 - tkinter.messagebox.showerror(title=READABLETEXT[0], message=READABLETEXT[117]) - continue - break - isAir = tkinter.messagebox.askyesno(READABLETEXT[37], READABLETEXT[129]) - fileName = tkinter.filedialog.asksaveasfilename(title=READABLETEXT[38], initialdir=r'./', - filetypes=[(READABLETEXT[130], '.RyStruct'), - (READABLETEXT[112], '*')], - defaultextension='*.RyStruct', initialfile='*.RyStruct') - if fileName is None or fileName == '': - log('取消') - return - from msctspt.transfer import ryStruct - rys = ryStruct(outdir) - rys.world2Rys(begp, endp, isAir) - # error1 = True - try: - with open(fileName, 'w', encoding='utf-8') as f: - json.dump(rys.RyStruct, f, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False) - tkinter.messagebox.showinfo(READABLETEXT[33], READABLETEXT[131].format(fileName)) - # error1 = False - except: - tkinter.messagebox.showerror(READABLETEXT[39], READABLETEXT[132].format(fileName, str(rys.RyStruct))) - rys.closeLevel() - # finally: - # if error1 is True: - # tkinter.messagebox.showerror(READABLETEXT[39], READABLETEXT[132].format(fileName, str(rys.RyStruct))) - # rys.closeLevel() - - def world2BDX(): - tkinter.messagebox.showerror(READABLETEXT[0], READABLETEXT[133]) - - # 使用邮件反馈bug - def sendBugReport(): - from msctspt.bugReporter import report - name = tkinter.simpledialog.askstring(title=READABLETEXT[40], prompt=READABLETEXT[134]) - contact = tkinter.simpledialog.askstring(title=READABLETEXT[40], prompt=READABLETEXT[135]) - describetion = tkinter.simpledialog.askstring(title=READABLETEXT[40], prompt=READABLETEXT[136]) - report(name, contact, describetion).emailReport() - del name, contact, describetion - - def ClearLog(): - global clearLog - clearLog = not clearLog - if clearLog: - tkinter.messagebox.showinfo(READABLETEXT[33], READABLETEXT[137]) - else: - tkinter.messagebox.showinfo(READABLETEXT[33], READABLETEXT[138]) - - print('生成部分及其余命令加载完成!') - - print('完成!') - - # 窗口部分 - print('增加窗口元素...') - global root - global __version__ - - root.title(READABLETEXT[41].format(__version__)) - root.geometry('900x900') # 像素 - try: - root.iconbitmap(bitmap='./resources/musicreater.ico', default='./resources/musicreater.ico') - except: - pass - - print('完成!') - - print('加载点击与页面更新命令...') - - # 音轨菜单被点击 - - def MusicList_selected(event): - global NowMusic - NowMusic = ListMusicList.get(ListMusicList.curselection()) - log('刷新音轨' + str(NowMusic)) - RefreshMusic(NowMusic) - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - - # 音符菜单被点击 - def NoteList_selected(event): - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - pass # 编辑音符操作 - - def CMDList_selected(event): - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - pass # 命令编辑操作 - - CMDList_selected("") # 保证函数使用 - # !!!!!上面这行在写完这个函数之后记得删!!!! - - print('菜单点击命令加载完成!') - - # 刷新音轨部分 - def RefreshMusic(Music=0): - LabelEntityName['text'] = READABLETEXT[42].format(dataset[0]['musics'][Music]['set']['EntityName']) - LabelScoreboardName['text'] = READABLETEXT[43].format(dataset[0]['musics'][Music]['set']['ScoreboardName']) - LabelInstrument['text'] = READABLETEXT[44].format(dataset[0]['musics'][Music]['set']['Instrument']) - LabelFileName['text'] = READABLETEXT[45].format(dataset[0]['musics'][Music]['set']['FileName']) - NoteList_var.set(()) # 为列表框设置新值 - for i in dataset[0]['musics'][Music]['notes']: - ListNoteList.insert(tk.END, str(i)) - - # 刷新主要部分 - def RefreshMain(): - LabelPackName['text'] = READABLETEXT[46].format(str(dataset[0]['mainset']['PackName'])) - # print(LabelPackName) - LabelMusicTitle['text'] = READABLETEXT[47].format(str(dataset[0]['mainset']['MusicTitle'])) - LabelIsRepeat['text'] = READABLETEXT[48].format(str(dataset[0]['mainset']['IsRepeat'])) - LabelPlayerSelect['text'] = READABLETEXT[49].format(str(dataset[0]['mainset']['PlayerSelect'])) - MusicList_var.set(()) # 为列表框设置新值 - for i in range(len(dataset[0]['musics'])): - ListMusicList.insert(tk.END, i) - global NowMusic - NowMusic = 0 - - def RefreshCMDList(CMDList): - ListCMDList.delete(tk.END) - for i in CMDList: - ListCMDList.insert(tk.END, str(i)) - - print('页面刷新函数加载完成!') - - def changePackName(event): - a = tkinter.simpledialog.askstring(title=READABLETEXT[50], prompt=READABLETEXT[139], initialvalue='Ryoun') - if a is None: - return - dataset[0]['mainset']['PackName'] = a - del a - RefreshMain() - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - - def changeMusicTitle(event): - a = tkinter.simpledialog.askstring(title=READABLETEXT[50], prompt=READABLETEXT[140], initialvalue='Noname') - if a is None: - return - dataset[0]['mainset']['MusicTitle'] = a - RefreshMain() - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - - def changeIsRepeat(event): - dataset[0]['mainset']['IsRepeat'] = not dataset[0]['mainset']['IsRepeat'] - RefreshMain() - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - - def changePlayerSelect(event): - dataset[0]['mainset']['PlayerSelect'] = tkinter.simpledialog.askstring(title=READABLETEXT[50], - prompt=READABLETEXT[141], - initialvalue='') - if dataset[0]['mainset']['PlayerSelect'] is None: - dataset[0]['mainset']['PlayerSelect'] = '' - RefreshMain() - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - - def changeEntityName(event): - global NowMusic - a = tkinter.simpledialog.askstring(title=READABLETEXT[51], prompt=READABLETEXT[142], - initialvalue='musicSupport') - if a is None: - return - dataset[0]['musics'][NowMusic]['set']['EntityName'] = a - RefreshMusic(NowMusic) - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - - def changeScoreboardName(event): - global NowMusic - a = tkinter.simpledialog.askstring(title=READABLETEXT[51], prompt=READABLETEXT[143], - initialvalue='musicSupport') - if a is None: - return - dataset[0]['musics'][NowMusic]['set']['ScoreboardName'] = a - RefreshMusic(NowMusic) - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - - def changeInstrument(event): - from nmcsup.const import Instuments as inst - global NowMusic - while True: # 改正:(True) - instemp = tkinter.simpledialog.askstring(title=READABLETEXT[51], prompt=READABLETEXT[144], - initialvalue='note.harp') - if instemp not in inst.keys(): # 改正:not instemp in inst.keys() ,not in 为固定写法 - if tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[145]): - dataset[0]['musics'][NowMusic]['set']['Instrument'] = instemp - del instemp - break - else: - smsg = READABLETEXT[52] - for i, j in inst.items(): - smsg += i + ' : ' + j + '\n' - tkinter.messagebox.showinfo(title=READABLETEXT[1], message=smsg) - del smsg - else: - dataset[0]['musics'][NowMusic]['set']['Instrument'] = instemp - del instemp - break - RefreshMusic(NowMusic) - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - - def changeFileName(event): - global NowMusic - a = tkinter.simpledialog.askstring(title=READABLETEXT[51], prompt=READABLETEXT[146], initialvalue='Music') - if a is None: - return - dataset[0]['musics'][NowMusic]['set']['FileName'] = a - RefreshMusic(NowMusic) - print(event) # 保证变量使用(虽然我不清楚金羿这为啥不调用要写个event) - # 滚滚滚,这个函数不能无参! ——金羿 - - print('标签点击命令加载完成!') - - def ResetSetting(): - global dataset - dataset[0]['mainset'] = {'PackName': 'Ryoun', 'MusicTitle': 'Noname', 'IsRepeat': False, 'PlayerSelect': ''} - RefreshMain() - - def DelNowMusic(): - global NowMusic - del dataset[0]['musics'][NowMusic] - NowMusic -= 1 - RefreshMain() - RefreshMusic(NowMusic) - - from nmcsup.vers import resetver - - print('按钮点击命令加载完成!') - print('完成!') - print('加载菜单与页面...') - - # 创建一个菜单 - main_menu_bar = tk.Menu(root) - - # 创建文件菜单 - filemenu = tk.Menu(main_menu_bar, tearoff=0) - - filemenu.add_command(label=READABLETEXT[53], command=openProject) - filemenu.add_command(label=READABLETEXT[54], command=openOldProject) - filemenu.add_command(label=READABLETEXT[55], command=SaveProject) - filemenu.add_command(label=READABLETEXT[56], command=SaveAsProject) - - filemenu.add_separator() # 分隔符 - - filemenu.add_command(label=READABLETEXT[57], command=exitapp) - - # 将子菜单加入到菜单条中 - main_menu_bar.add_cascade(label=READABLETEXT[58], menu=filemenu) - - # 创建编辑菜单 - editmenu = tk.Menu(main_menu_bar, tearoff=0) - editmenu.add_command(label=READABLETEXT[59], command=FromMP3) - editmenu.add_command(label=READABLETEXT[60], command=FromListMidi) - editmenu.add_command(label=READABLETEXT[61], command=FromForm) - editmenu.add_command(label=READABLETEXT[62], command=FromText) - editmenu.add_separator() - editmenu.add_command(label=READABLETEXT[160], command=FromClassMidi) - editmenu.add_command(label=READABLETEXT[148], command=FromNewMidi) - # 将子菜单加入到菜单条中 - main_menu_bar.add_cascade(label=READABLETEXT[63], menu=editmenu) - - # 创建函数菜单 - funcmenu = tk.Menu(main_menu_bar, tearoff=0) - funcmenu.add_command(label=READABLETEXT[64], command=MakeCMD) - funcmenu.add_command(label=READABLETEXT[65], command=MakeCMDdir) - funcmenu.add_command(label=READABLETEXT[66], command=MakePackFile) - funcmenu.add_separator() - funcmenu.add_command(label=READABLETEXT[147], command=MakeNewCMD) - funcmenu.add_command(label=READABLETEXT[153], command=MakeNewCMDdir) - funcmenu.add_command(label=READABLETEXT[154], command=MakeNewFunctionPackFile) - funcmenu.add_command(label=READABLETEXT[155], command=MakeNewFunctionPack_ResourcesPacks_File) - funcmenu.add_separator() - funcmenu.add_command(label=READABLETEXT[164], command=MakeClassCMD) - funcmenu.add_command(label=READABLETEXT[165], command=MakeClassCMDdir) - funcmenu.add_command(label=READABLETEXT[166], command=MakeClassFunctionPackFile) - - # 将子菜单加入到菜单条中 - main_menu_bar.add_cascade(label=READABLETEXT[67], menu=funcmenu) - - # 创建世界菜单 - worldmenu = tk.Menu(main_menu_bar, tearoff=0) - worldmenu.add_command(label=READABLETEXT[68], command=ToBlockWorldEpt) - worldmenu.add_command(label=READABLETEXT[69], command=ToBlockWorld) - worldmenu.add_separator() - worldmenu.add_command(label=READABLETEXT[70], command=ToCmdWorldEpt) - worldmenu.add_command(label=READABLETEXT[71], command=ToCmdWorld) - worldmenu.add_separator() - worldmenu.add_command(label=READABLETEXT[72], command=toRSworldEPT) - worldmenu.add_command(label=READABLETEXT[73], command=toRSworld) - # 将子菜单加入到菜单条中 - main_menu_bar.add_cascade(label=READABLETEXT[74], menu=worldmenu) - - # 创建结构功能菜单 - structureMenu = tk.Menu(main_menu_bar, tearoff=0) - structureMenu.add_command(label=READABLETEXT[92], command=toBDXfile) - structureMenu.add_command(label=READABLETEXT[76], command=toScbBDXfile) - structureMenu.add_command(label=READABLETEXT[77], command=world2BDX) - structureMenu.add_separator() - structureMenu.add_command(label=READABLETEXT[78], command=world2RyStruct) - - main_menu_bar.add_cascade(label=READABLETEXT[95], menu=structureMenu) - - # 创建辅助功能菜单 - otherMenu = tk.Menu(main_menu_bar, tearoff=0) - otherMenu.add_command(label=READABLETEXT[75], command=MakeFuncPlayer) - otherMenu.add_separator() - otherMenu.add_command(label=READABLETEXT[79], command=func2World) - otherMenu.add_command(label=READABLETEXT[80], command=bigFunc2World) - - main_menu_bar.add_cascade(label=READABLETEXT[81], menu=otherMenu) - - # 创建实验功能菜单 - trymenu = tk.Menu(main_menu_bar, tearoff=0) - trymenu.add_command(label=READABLETEXT[82], command=ShowCMD) - trymenu.add_command(label=READABLETEXT[83], command=wsPlay) - # 将子菜单加入到菜单条中 - main_menu_bar.add_cascade(label=READABLETEXT[84], menu=trymenu) - - # 创建帮助菜单 - helpmenu = tk.Menu(main_menu_bar, tearoff=0) - helpmenu.add_command(label=READABLETEXT[85], command=ClearLog) - helpmenu.add_command(label=READABLETEXT[86], command=resetver) - helpmenu.add_command(label=READABLETEXT[152], command=end) - helpmenu.add_command(label=READABLETEXT[156], command=changeResourcesPath) - - helpmenu.add_separator() # 分隔符 - - helpmenu.add_command(label=READABLETEXT[87], command=apphelp) - helpmenu.add_command(label=READABLETEXT[88], command=appabout) - helpmenu.add_command(label=READABLETEXT[89], command=sendBugReport) - # 将子菜单加入到菜单条中 - main_menu_bar.add_cascade(label=READABLETEXT[90], menu=helpmenu) - - # 窗口内容 - - # 上半部分框 - UpFrame = tk.Frame(root) - - # 左边的框(音乐总设置) - UpLeftFrame = tk.Frame(UpFrame, bg='white') - # 大标题 - tk.Label(UpLeftFrame, text=READABLETEXT[91], font=('', 20)).pack() - # 按钮式文本 - LabelPackName = tk.Label(UpLeftFrame, bg='white', - text=READABLETEXT[46].format(str(dataset[0]['mainset']['PackName'])), font=('', 15)) - LabelMusicTitle = tk.Label(UpLeftFrame, bg='white', - text=READABLETEXT[47].format(str(dataset[0]['mainset']['MusicTitle'])), font=('', 15)) - LabelIsRepeat = tk.Label(UpLeftFrame, bg='white', - text=READABLETEXT[48].format(str(dataset[0]['mainset']['IsRepeat'])), font=('', 15)) - LabelPlayerSelect = tk.Label(UpLeftFrame, bg='white', - text=READABLETEXT[49].format(str(dataset[0]['mainset']['PlayerSelect'])), - font=('', 15)) - # 绑定按钮 - LabelPackName.bind('', changePackName) - LabelMusicTitle.bind('', changeMusicTitle) - LabelIsRepeat.bind('', changeIsRepeat) - LabelPlayerSelect.bind('', changePlayerSelect) - # 装入容器 - LabelPackName.pack() - LabelMusicTitle.pack() - LabelIsRepeat.pack() - LabelPlayerSelect.pack() - # 按钮:重置项目设置 - tk.Button(UpLeftFrame, text=READABLETEXT[96], command=ResetSetting).pack() - # 装入窗口 - UpLeftFrame.pack(side='left') - - # 中间的框容器 - UpMidleFrame = tk.Frame(UpFrame, bg='blue') - # 列表 - MusicList_var = tk.StringVar() - ListMusicList = tk.Listbox(UpMidleFrame, listvariable=MusicList_var) - ListMusicList.bind('', MusicList_selected) # 设置选中响应函数 - ListMusicList.pack(side='left') - # 滑块 - tk.Scrollbar(UpMidleFrame, command=ListMusicList.yview).pack(side='left', fill='y') - # 装入窗口 - UpMidleFrame.pack(side='left') - - # 右边的框容器 - UpRightFrame = tk.Frame(UpFrame, bg='white') - # 大标题 - tk.Label(UpRightFrame, text=READABLETEXT[97], font=('', 20)).pack() - # 按钮式文本 - LabelEntityName = tk.Label(UpRightFrame, bg='white', - text=READABLETEXT[42].format(dataset[0]['musics'][NowMusic]['set']['EntityName']), - font=('', 15)) - LabelScoreboardName = tk.Label(UpRightFrame, bg='white', text=READABLETEXT[43].format( - dataset[0]['musics'][NowMusic]['set']['ScoreboardName']), font=('', 15)) - LabelInstrument = tk.Label(UpRightFrame, bg='white', - text=READABLETEXT[44].format(dataset[0]['musics'][NowMusic]['set']['Instrument']), - font=('', 15)) - LabelFileName = tk.Label(UpRightFrame, bg='white', - text=READABLETEXT[45].format(dataset[0]['musics'][NowMusic]['set']['FileName']), - font=('', 15)) - # 绑定按钮 - LabelEntityName.bind('', changeEntityName) - LabelScoreboardName.bind('', changeScoreboardName) - LabelInstrument.bind('', changeInstrument) - LabelFileName.bind('', changeFileName) - # 装入框容器 - LabelEntityName.pack() - LabelScoreboardName.pack() - LabelInstrument.pack() - LabelFileName.pack() - # 按钮:删除选中音轨 - tk.Button(UpRightFrame, text=READABLETEXT[102], command=DelNowMusic).pack() - # 装入窗口 - UpRightFrame.pack(side='left') - - # 上半部分框容器装入窗口 - UpFrame.pack() - - # 下半部分框容器 - DownFrame = tk.Frame(root, bg='blue') - - # 经典名言语录 - import datetime - - if datetime.date.today().month == 4 and datetime.date.today().day == 3: - tk.Label(DownFrame, text='金羿生日快乐!!',fg='yellow', bg='red', font=('DengXian', 20, 'bold')).pack(fill='x') - else: - import random - texts = open('./resources/myWords.txt', 'r', encoding='utf-8').readlines() - tk.Label(DownFrame, text=texts[random.randint(0, len(texts) - 1)].replace('\n', '').replace('\\n', '\n'), - fg='white', bg='black', font=('DengXian Light', 20)).pack(fill='x') - del texts - - # 音符列表菜单 - NoteList_var = tk.StringVar() - ListNoteList = tk.Listbox(DownFrame, listvariable=NoteList_var, width=40, height=30) - ListNoteList.bind('', NoteList_selected) # 设置选中响应函数 - ListNoteList.pack(side='left') - # 音符列表滑块 - tk.Scrollbar(DownFrame, command=ListNoteList.yview).pack(side='left', fill='y') - - # 指令列表菜单 - ListCMDList = tk.Text(DownFrame, height=37, width=40) - ListCMDList.pack(side='left') - # 指令列表滑块 - tk.Scrollbar(DownFrame, command=ListCMDList.yview).pack(fill='y', side='left') - - # 下半部分容器载入窗口 - DownFrame.pack() - - RefreshMain() - - # 将菜单添加到主窗口中 - root.config(menu=main_menu_bar) - - print('完成!') - - log('启动root.mainloop(窗口)') - - if len(sys.argv) != 1: - log('初始化打开音·创项目' + sys.argv[1]) - global is_save - is_save = True - error = True - try: - with open(sys.argv[1], 'r', encoding='UTF-8') as c: - dataset[0] = json.load(c) - error = False - except OSError: - print(READABLETEXT[8].format(sys.argv[1])) - log('无法打开' + sys.argv[1]) - return - finally: - if error is True: - print(READABLETEXT[8].format(sys.argv[1])) - log('无法打开' + sys.argv[1]) - return - global is_new_file - global ProjectName - is_new_file = False - ProjectName = sys.argv[1] - RefreshMain() - RefreshMusic(NowMusic) - - # 进入窗口消息循环 - root.mainloop() - log('退出') - del filemenu, editmenu, helpmenu, otherMenu - - exitapp() - - -if __name__ == '__main__': - __main__() - -################## - - # def openNewProject(): - # global is_save - # if is_save is not True: - # result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106]) - # if result: - # SaveProject() - # fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./', - # filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[112], '*')], - # multiple=True) - # if fn is None or fn == '': - # return - # else: - # # print(fn) - # fn = fn[0] - # # print(fn) - # log("尝试打开:" + fn) - # try: - # try: - # with open(fn, 'rb') as C: - # global dataset - # # print(pickle.load(C)) - # read = pickle.load(C) # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # print(read) - # dataset = read[0] - # pkl1 = read[1] - # log("读取新文件成功") - # with open("1.pkl", 'wb') as w: - # pickle.dump(pkl1, w) - # except KeyError: - # with open(fn, 'rb') as C: - # dataset[0] = pickle.load(C) - # log("读取新文件成功") - # except pickle.UnpicklingError: # 程序规范修改:根据新的语法标准:except后面不能没有错误类型,测试后改为: - # # pickle.UnpicklingError - # print(READABLETEXT[8].format(fn)) - # log('无法打开{}'.format(fn)) - # return - # global is_new_file - # global ProjectName - # is_new_file = False - # ProjectName = fn - # del fn - # global NowMusic - # RefreshMain() - # RefreshMusic(NowMusic) - - # def openClassProject(): - # global is_save - # if is_save is not True: - # result = tkinter.messagebox.askyesno(title=READABLETEXT[1], message=READABLETEXT[106]) - # if result: - # SaveProject() - # fn = tkinter.filedialog.askopenfilename(title=READABLETEXT[7], initialdir=r'./', - # filetypes=[(READABLETEXT[108], '.msct'), (READABLETEXT[112], '*')], - # multiple=True) - # if fn is None or fn == '': - # return - # else: - # # print(fn) - # fn = fn[0] - # # print(fn) - # log("尝试打开:" + fn) - # try: - # try: - # with open(fn, 'rb') as C: - # global dataset - # # print(pickle.load(C)) - # read = pickle.load(C) # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # 重要的事情说三遍!!!pickle.load只能load一次,所以多load几次就有bug,要一次读完! - # # print(read) - # dataset = read - # log("读取新文件成功") - # except KeyError: - # with open(fn, 'rb') as C: - # dataset[0] = pickle.load(C) - # log("读取新文件成功") - # except pickle.UnpicklingError: # 程序规范修改:根据新的语法标准:except后面不能没有错误类型,测试后改为: - # # pickle.UnpicklingError - # print(READABLETEXT[8].format(fn)) - # log('无法打开{}'.format(fn)) - # return - # global is_new_file - # global ProjectName - # is_new_file = False - # ProjectName = fn - # del fn - # global NowMusic - # RefreshMain() - # RefreshMusic(NowMusic) - - -# ------------------ - # filemenu.add_separator() - # - # filemenu.add_command(label=READABLETEXT[149], command=openNewProject) - # filemenu.add_command(label=READABLETEXT[150], command=SaveNewProject) - # filemenu.add_command(label=READABLETEXT[151], command=SaveAsNewProject) - - # filemenu.add_separator() - # - # filemenu.add_command(label=READABLETEXT[161], command=openClassProject) - # filemenu.add_command(label=READABLETEXT[162], command=SaveClassProject) - # filemenu.add_command(label=READABLETEXT[163], command=SaveAsClassProject) diff --git a/README.md b/README.md index f0065dc..3c63b26 100644 --- a/README.md +++ b/README.md @@ -17,13 +17,13 @@ 简体中文🇨🇳 | [English🇬🇧](README_EN.md) -## 软件介绍🚀 +## 介绍🚀 音·创 Musicreater 是一款免费开源的 **《我的世界:基岩版》** 音乐制作软件 欢迎加群:[861684859](https://jq.qq.com/?_wv=1027&k=hpeRxrYr) -**注意注意注意!!!本程序尚在测试与开发阶段,且代码重构未完成,请自行定夺使用。** +**此分支为音·创的包版本,即便于其他软件使用的可被import版本** ## 软件作者✒ @@ -33,86 +33,23 @@ ## 软件架构🏢 -软件采用 *Python* 作为第一语言,目前还没有使用其他语言辅助。使用可更换的UI结构库,即开发人员可以通过更换display.py文件随心所欲地切换UI库;后期将支持插件自加载。 - -支持 Windows7+ 以及各个支持 Python3.6+ 的 Linux - -***各位开发人员注意!!!多语言支持请使用函数`_`加载文字!!!如需补充,请在简体中文的语言文件(zh-CN.lang)中补充!!!*** +这是一个简单的Python包 ## 使用教程📕 -### 安装教程 - -下载[音·创自动安装器](https://gitee.com/EillesWan/Musicreater/releases/v0.2.0.0-Delta),将其放在你希望安装音·创的位置,运行后将自动安装。 - -提示:下载源最好选择\"2 GitHub\"。 - -### 从源代码运行教程 - -#### Windows7+ - -0. [Gitee下载(需要登陆)](https://gitee.com/EillesWan/Musicreater) - [Github下载(慢)](https://github.com/EillesWan/Musicreater)本程序源代码 -1. 安装Python 3.8.10 - [下载64位Python安装包](https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe) - [下载32位Python安装包](https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe) -2. 以管理员身份运行 补全库.py : - - 点击 “开始” 菜单,搜索 `命令提示符` - - 右键点击 `命令提示符` 左键点击 “以管理员身份运行” - - 将 “补全库.py” 拖拽入开启的窗口,按下回车 -3. 等待安装完成后,双击运行 Musicreater.py - -#### Linux - -0. 若你没有足够优秀的环境,推荐先在终端敲: -```bash -sudo apt-get update -sudo apt-get upgrade -sudo apt-get install python3 -sudo apt-get install python3-pip -sudo apt-get install git -``` -1. 若你足够自信,该整的都整了,就在你想下载此程序的地方打开终端,敲: -```bash -sudo git clone https://gitee.com/EillesWan/Musicreater.git -cd Musicreater -python3 补全库.py -python3 Musicreater.py -``` - -### 使用说明 - -1. 直接运行就好 -2. 后期会出详细的使用教程 -3. 如果在使用过程中发现了bug拜托请上报给我,详见下方联系方式 - -## 诸葛亮与八卦阵的关于羽音缭绕资源包应用地说明(不必要)📖 - -1. 首先!这里的提示是给想使用多音色资源包的人的,如果你想用就请下载 [神羽资源包(神羽自己的链接)](https://pan.baidu.com/s/11uoq5zwN7c3rX-98DqVpJg)提取码:ek3t -2. 下载到你自己电脑上某个位置,可以不放置于本项目下。音色资源包较大,可以选取只下载: - `神羽资源包_乐器、音源的资源包\羽音缭绕-midiout_25.0` 这个文件夹,再嫌麻烦的话,也可以只下载其中的: - `神羽资源包_乐器\音源的资源包\羽音缭绕-midiout_25.0\mcpack(国际版推荐)格式_25.0` 或者: - `神羽资源包_乐器\音源的资源包\羽音缭绕-midiout_25.0\zip格式_25.0` -4. 接下来就是关键了:在*音创*中绑定资源包 - 首先,先打开 *音创*->帮助与疑问->\[神羽资源包位置选择\]:选择文件夹... 这时候,会跳出选择框 - 关键来了,选择:***您下载的`羽音缭绕-midiout_25.0`文件夹,或者`mcpack(国际版推荐)格式_25.0`或`zip格式_25.0`的上级目录*** - 举个例子:我的文件路径是这样的: - `L:\shenyu\音源的资源包\羽音缭绕-midiout_25.0`这里面有:`神羽资源包_25.0_使用方法.xls`、 - `mcpack(国际版推荐)格式_25.0`、`zip格式_25.0`两个文件夹和一个.xls文件,而你在音创中 - 也应该选择这个文件夹:**L:\shenyu\音源的资源包\羽音缭绕-midiout_25.0** -6. 如果你想使用音色资源包来制作函数,那么解析时你应该用 *音创*->编辑->从midi导入音轨且用新方法解析, - 然后再使用 *音创*->函数(包)->下面的四个新函数 +> 正在到来 ## 致谢🙏 -1. 感谢由 [Fuckcraft](https://github.com/fuckcraft) “鸣凤鸽子”等 带来的我的世界websocket服务器功能 -2. 感谢 昀梦\ 找出指令生成错误bug并指正 -3. 感谢由 Charlie_Ping “查理平” 带来的bdx转换功能 -4. 感谢由 CMA_2401PT 带来的 BDXWorkShop 供本程序对于bdx操作的指导 -5. 感谢由 Miracle Plume “神羽” \带来的羽音缭绕基岩版音色资源包 -6. 感谢 Arthur Morgan 对本程序的排错提出了最大的支持 -7. 感谢广大群友为此程序提供的测试等支持 -8. 若您对我们有所贡献但您的名字没有显示在此列表中,请联系我! +- 感谢由 [Fuckcraft](https://github.com/fuckcraft) “鸣凤鸽子”等 带来的我的世界websocket服务器功能 +- 感谢 昀梦\ 找出指令生成错误bug并指正 +- 感谢由 Charlie_Ping “查理平” 带来的bdx转换功能 +- 感谢由 CMA_2401PT 带来的 BDXWorkShop 供本程序对于bdx操作的指导 +- 感谢由 Miracle Plume “神羽” \带来的羽音缭绕基岩版音色资源包 +- 感谢由 Dislink Sforza \带来的midi转换算法,我们将其加入了我们众多算法之一 +- 感谢 Arthur Morgan 对本程序的排错提出了最大的支持 +- 感谢广大群友为此程序提供的测试等支持 +- 若您对我们有所贡献但您的名字没有显示在此列表中,请联系我! ## 联系我们📞 @@ -126,31 +63,6 @@ python3 Musicreater.py 1. QQ 4740437765 -## 待办事项 - -* - [x] 可以使用由神羽提供的音乐资源包 -* - [x] 支持多语言 -* - [x] 支持创建可被Fastbuilder导入的.BDX文件支持 -* - [ ] 1.可以导出自定义的结构文件用于存储要导入地图中的结构 -* - [ ] 2.进度条 -* - [ ] 3.可以将音乐写入音符盒(红乐) -* - [ ] 4.修改UI界面使之适应当前功能 -* - [ ] 5.支持自动给音符盒绑定更多的音色 -* - [ ] 6.可以由.schematic文件导入地图,亦可反向处理 -* - [x] 7.制作软件下载器使用户更直观地操作 -* - [x] 8.支持自定义创建websockeet服务器播放音乐 -* - [ ] 9.支持使用红石播放音乐 -* - [ ] 10.支持采用延时的播放器 -* - [ ] 11.支持使用bdx导出结构 -* - [ ] 12.支持采用tp的方法播放 -* - [ ] 13.支持识别曲谱(简谱)图片解析音乐 -* - [ ] 14.支持使用瀑布流的方式播放音乐 -* - [ ] 15.支持读入Everyone Piano的曲谱文件(.eop) -* - [ ] 16.支持读入Musescore的通用曲谱文件,即musicXML(.mscz、.mscx) -* - [ ] 17.支持自动搜寻地图目录位置(网易&微软) -* - [ ] 18.支持读入JPword曲谱文件(.jpd) -* - [ ] 19.新的UI设计,以及UI主题文件 -* - [ ] 20.以小节为单位做音符播放时间对标 [Bilibili: 凌云金羿]: https://img.shields.io/badge/Bilibili-%E5%87%8C%E4%BA%91%E9%87%91%E7%BE%BF-00A1E7?style=for-the-badge diff --git a/README_EN.md b/README_EN.md index a6c82a3..c07a952 100644 --- a/README_EN.md +++ b/README_EN.md @@ -25,7 +25,7 @@ Musicreater(音·创) is an free open source software which is used for making a Welcome to join our QQ group: [861684859](https://jq.qq.com/?_wv=1027&k=hpeRxrYr) -**ATTENTION!** This software is under testing and developing, there is still a lot of bugs needed to be fixed. Please use it wisely. +>>>>> ### Authors✒ @@ -35,86 +35,24 @@ bgArray "诸葛亮与八卦阵": Fix bugs, improve code aesthetics, add new func ### Framework🏢 -Developed under *Python3.8 3.9*. However, theoretically support Python3.6+. - -Support Windows7+ && Linux (that supports Python3.6+) - -***ATTENTION TO DEVELOPERS!!! TO SUPPORT DIFFERENT LANGUAGES, PLEASE USE FUNCTION(METHOD) `_` TO LOAD TEXTs!!! IF YOU NEED TO SUPPLEMENT, PLEASE ADD THEM IN SIMPLEFIED CHINESE\'S LANGUAGE FILE(zh-CN.lang), WHEATHER WHAT LANGUAGE YOU USE!!!*** +>>>>> ## Instructions📕 -### Installation - -Download the *[MSCT Auto Installer](https://github.com/EillesWan/Musicreater/releases/tag/v0.2.0.0-Delta)*, put it in a directory that you want to install *Musicreater* into. Then run the auto installer and it will help you to install the *Musicreator* as well as Python3.8(if you haven\'t install it) - -Tips: You'd better choose the \"2 GitHub\" download source - -### Run with Source Code - -#### Windows7+ - -0. First, download the source code pack of Musicreater. - [Download from Gitee (Need to Login)](https://gitee.com/EillesWan/Musicreater/repository/archive/master.zip) - [Download from Github](https://github.com/EillesWan/Musicreater/archive/refs/heads/master.zip) -1. Install Python 3.8.10 - [Download the 64-bit Python Installer](https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe) - [Download the 32-bit Python Installer](https://www.python.org/ftp/python/3.8.10/python-3.8.10.exe) -2. After completing installation, we need to install the libraries : - - Open "Start Menu" and find `cmd` - - Run `cmd` as Administrator - - Drag "补全库.py" into the opened window and press Enter -3. After completing installation,double click Musicreater.py to run - -#### Linux - -0. If you 're not sure whether your environment is good enough, please run these commands on Terminal -```bash -sudo apt-get update -sudo apt-get upgrade -sudo apt-get install python3 -sudo apt-get install python3-pip -sudo apt-get install git -``` -1. Now if you are confident enough about your runtime environment, open Terminal on the place which you want to download Musicreater, and run these -```bash -sudo git clone https://gitee.com/EillesWan/Musicreater.git -cd Musicreater -python3 补全库.py -python3 Musicreater.py -``` - -### Instructions of Using - -1. Just run Musicreater.pyc(or .py) if you have installed well -2. Detailed instructions is coming soon -3. If you find a bug, could you please report it to me? My contact info is right below. - -## Explanation of the use of *PlumeAudioSurrounding Resource Pack* by bgArray (unnecessary)📖 - -1. First! The tips here are for those who want to use the multi tone resource package, [Shenyu resource package (Shenyu's own link)](https://pan.baidu.com/s/11uoq5zwN7c3rX-98DqVpJg) \(Extraction code: `ek3t`\) -2. Download it to any location on your PC. Note that it does ***not*** need to be placed in the directory where *Musicreater* are. The audio resource package is large, so you can choose to download only:`神羽资源包_乐器、音源的资源包\羽音缭绕-midiout_25.0`. - Also, you can download only `神羽资源包_乐器\音源的资源包\羽音缭绕-midiout_25.0\mcpack(国际版推荐)格式_25.0` or - `神羽资源包_乐器\音源的资源包\羽音缭绕-midiout_25.0\zip格式_25.0`. -4. The next step is the most IMPORTANT: to bind the resource package to *Musicreater* - First, open *Musicreater*->Q&A->Select \[MiraclePlumeResourcePack\]... .At this time, in the selection box, - the IMPORTANT step comes, select: ***The directory you downloaded: `羽音缭绕-midiout_25.0`, or also the parent directory `mcpack(国际版推荐)格式_25.0`or`zip格式_25.0`*** - For example, my file path is as follows: - `L:\shenyu\音源的资源包\羽音缭绕-midiout_25.0` and in the directory, there are two folders and one .xls file: - `神羽资源包_25.0_使用方法.xls`, `mcpack(国际版推荐)格式_25.0` and `zip格式_25.0`, so in *Musicreater* you should also select this folder: **L:\shenyu\音源的资源包\羽音缭绕-midiout_25.0** -6. If you want to use the Miracle Plume Bedrock Edition Audio Resource Pack to make .mcfunction s, you should use Musicreater -> Edit - > Import audio tracks from MIDI and parse them with a new method, and then use it -Musicreater - > function (package) - > the following four new functions +>>>>> ## Thanks🙏 -1. Thank [Fuckcraft](https://github.com/fuckcraft) *(“鸣凤鸽子” ,etc)* for the function of Creating the Websocket Server for Minecraft: Bedrock Edition. + Thank [Fuckcraft](https://github.com/fuckcraft) *(“鸣凤鸽子” ,etc)* for the function of Creating the Websocket Server for Minecraft: Bedrock Edition. - *!! They have given me the rights to directly copy the lib into Musicreater* -2. Thank *昀梦*\ for finding and correcting the bugs in the commands that *Musicreater* Created. -3. Thank *Charlie_Ping “查理平”* for bdx convert funtion. -4. Thank *CMA_2401PT* for BDXWorkShop as the .bdx structure's operation guide. -5. Thank *Miracle Plume “神羽”* \ for the Miracle Plume Bedrock Edition Audio Resource Pack -6. Thank *Arthur Morgan* for his/her biggest support for the debugging of Musicreater -7. Thanks for a lot of groupmates who support me and help me to test the program. -8. If you have give me some help but u haven't been in the list, please contact me. + Thank *昀梦*\ for finding and correcting the bugs in the commands that *Musicreater* Created. + Thank *Charlie_Ping “查理平”* for bdx convert funtion. + Thank *CMA_2401PT* for BDXWorkShop as the .bdx structure's operation guide. + Thank *Miracle Plume “神羽”* \ for the Miracle Plume Bedrock Edition Audio Resource Pack + 感谢由 Dislink Sforza \带来的midi转换算法,我们将其加入了我们众多算法之一 + Thank *Arthur Morgan* for his/her biggest support for the debugging of Musicreater + Thanks for a lot of groupmates who support me and help me to test the program. + If you have give me some help but u haven't been in the list, please contact me. ## Contact Information📞 @@ -130,8 +68,6 @@ Musicreater - > function (package) - > the following four new functions - - [Bilibili: Eilles]: https://img.shields.io/badge/Bilibili-%E5%87%8C%E4%BA%91%E9%87%91%E7%BE%BF-00A1E7?style=for-the-badge [Bilibili: bgArray]: https://img.shields.io/badge/Bilibili-%E8%AF%B8%E8%91%9B%E4%BA%AE%E4%B8%8E%E5%85%AB%E5%8D%A6%E9%98%B5-00A1E7?style=for-the-badge [CodeStyle: black]: https://img.shields.io/badge/code%20style-black-121110.svg?style=for-the-badge diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..0c080fe --- /dev/null +++ b/__init__.py @@ -0,0 +1,31 @@ +#-*- coding:utf-8 -*- +'''一个简单的基于音·创的我的世界音频操作工具''' + + + +__version__ = '0.0.1' +__all__ = [] +__author__ = (('金羿','Eilles Wan'),('诸葛亮与八卦阵','bgArray'),('鸣凤鸽子','MingFengPigeon')) + + + +""" + Copyright © 2022 Team-Ryoun + + Licensed under the Apache License, Version 2.0 (the 'License'); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an 'AS IS' BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +""" + +print('此工具由凌天之云创新团队开发,版权归本团队参与开发的人员共同所有。') +print('This tool is developed by Team-Ryoun, copyright belongs to the team members who developed the tool.') + +from main import * diff --git a/__pycache__/__init__.cpython-38.pyc b/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000..8e439b0 Binary files /dev/null and b/__pycache__/__init__.cpython-38.pyc differ diff --git a/__pycache__/main.cpython-38.pyc b/__pycache__/main.cpython-38.pyc new file mode 100644 index 0000000..25db3d0 Binary files /dev/null and b/__pycache__/main.cpython-38.pyc differ diff --git a/bgArrayLib/__init__.py b/bgArrayLib/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/bgArrayLib/__pycache__/__init__.cpython-38.pyc b/bgArrayLib/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index a20f449..0000000 Binary files a/bgArrayLib/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/__init__.cpython-39.pyc b/bgArrayLib/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index a1ce7c6..0000000 Binary files a/bgArrayLib/__pycache__/__init__.cpython-39.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/bpm.cpython-38.pyc b/bgArrayLib/__pycache__/bpm.cpython-38.pyc deleted file mode 100644 index a0ea2eb..0000000 Binary files a/bgArrayLib/__pycache__/bpm.cpython-38.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/bpm.cpython-39.pyc b/bgArrayLib/__pycache__/bpm.cpython-39.pyc deleted file mode 100644 index 7905da2..0000000 Binary files a/bgArrayLib/__pycache__/bpm.cpython-39.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/compute.cpython-38.pyc b/bgArrayLib/__pycache__/compute.cpython-38.pyc deleted file mode 100644 index b99c0f7..0000000 Binary files a/bgArrayLib/__pycache__/compute.cpython-38.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/compute.cpython-39.pyc b/bgArrayLib/__pycache__/compute.cpython-39.pyc deleted file mode 100644 index d7ff321..0000000 Binary files a/bgArrayLib/__pycache__/compute.cpython-39.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/instrumentConstant.cpython-38.pyc b/bgArrayLib/__pycache__/instrumentConstant.cpython-38.pyc deleted file mode 100644 index 9f05e01..0000000 Binary files a/bgArrayLib/__pycache__/instrumentConstant.cpython-38.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/instrumentConstant.cpython-39.pyc b/bgArrayLib/__pycache__/instrumentConstant.cpython-39.pyc deleted file mode 100644 index aef6de6..0000000 Binary files a/bgArrayLib/__pycache__/instrumentConstant.cpython-39.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/namesConstant.cpython-39.pyc b/bgArrayLib/__pycache__/namesConstant.cpython-39.pyc deleted file mode 100644 index 05e1498..0000000 Binary files a/bgArrayLib/__pycache__/namesConstant.cpython-39.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/pitchStrConstant.cpython-38.pyc b/bgArrayLib/__pycache__/pitchStrConstant.cpython-38.pyc deleted file mode 100644 index eb8c937..0000000 Binary files a/bgArrayLib/__pycache__/pitchStrConstant.cpython-38.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/pitchStrConstant.cpython-39.pyc b/bgArrayLib/__pycache__/pitchStrConstant.cpython-39.pyc deleted file mode 100644 index 1c762fe..0000000 Binary files a/bgArrayLib/__pycache__/pitchStrConstant.cpython-39.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/reader.cpython-38.pyc b/bgArrayLib/__pycache__/reader.cpython-38.pyc deleted file mode 100644 index 2907da1..0000000 Binary files a/bgArrayLib/__pycache__/reader.cpython-38.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/reader.cpython-39.pyc b/bgArrayLib/__pycache__/reader.cpython-39.pyc deleted file mode 100644 index 13359ec..0000000 Binary files a/bgArrayLib/__pycache__/reader.cpython-39.pyc and /dev/null differ diff --git a/bgArrayLib/__pycache__/sy_resourcesPacker.cpython-39.pyc b/bgArrayLib/__pycache__/sy_resourcesPacker.cpython-39.pyc deleted file mode 100644 index 399eeb7..0000000 Binary files a/bgArrayLib/__pycache__/sy_resourcesPacker.cpython-39.pyc and /dev/null differ diff --git a/bgArrayLib/bpm.py b/bgArrayLib/bpm.py deleted file mode 100644 index b6fdc30..0000000 --- a/bgArrayLib/bpm.py +++ /dev/null @@ -1,67 +0,0 @@ -import mido -import numpy - -''' -bpm -bites per minutes -每分钟的拍数 -''' - -def mt2gt(mt, tpb_a, bpm_a): - return round(mt / tpb_a / bpm_a * 60) - - -def get(mid:mido.MidiFile) -> int: - '''传入一个 MidiFile, 返回其音乐的bpm - :param mid : mido.MidFile - mido库识别的midi文件数据 - :return bpm : int - ''' - # mid = mido.MidiFile(mf) - long = mid.length - tpb = mid.ticks_per_beat - bpm = 20 - gotV = 0 - - for track in mid.tracks: - global_time = 0 - for msg in track: - global_time += msg.time - if msg.type == "note_on" and msg.velocity > 0: - gotV = mt2gt(global_time, tpb, bpm) - errorV = numpy.fabs(gotV - long) - last_dic = {bpm: errorV} - if last_dic.get(bpm) > errorV: - last_dic = {bpm: errorV} - bpm += 2 - - while True: - for track in mid.tracks: - global_time = 0 - for msg in track: - global_time += msg.time - if msg.type == "note_on" and msg.velocity > 0: - gotV = mt2gt(global_time, tpb, bpm) - errorV = numpy.fabs(gotV - long) - try: - if last_dic.get(bpm - 2) > errorV: - last_dic = {bpm: errorV} - except TypeError: - pass - bpm += 2 - if bpm >= 252: - break - print(list(last_dic.keys())[0]) - return list(last_dic.keys())[0] - - -def compute(mid:mido.MidiFile): - answer = 60000000/mid.ticks_per_beat - print(answer) - return answer - - -if __name__ == '__main__': - mid = mido.MidiFile(r"C:\Users\lc\Documents\MuseScore3\乐谱\乐谱\Bad style - Time back.mid") - get(mid) - compute(mid) diff --git a/bgArrayLib/compute.py b/bgArrayLib/compute.py deleted file mode 100644 index 47a0296..0000000 --- a/bgArrayLib/compute.py +++ /dev/null @@ -1,40 +0,0 @@ -def round_up(num, power=0): - """ - 实现精确四舍五入,包含正、负小数多种场景 - :param num: 需要四舍五入的小数 - :param power: 四舍五入位数,支持0-∞ - :return: 返回四舍五入后的结果 - """ - try: - print(1 / 0) - except ZeroDivisionError: - digit = 10 ** power - num2 = float(int(num * digit)) - # 处理正数,power不为0的情况 - if num >= 0 and power != 0: - tag = num * digit - num2 + 1 / (digit * 10) - if tag >= 0.5: - return (num2 + 1) / digit - else: - return num2 / digit - # 处理正数,power为0取整的情况 - elif num >= 0 and power == 0: - tag = num * digit - int(num) - if tag >= 0.5: - return (num2 + 1) / digit - else: - return num2 / digit - # 处理负数,power为0取整的情况 - elif power == 0 and num < 0: - tag = num * digit - int(num) - if tag <= -0.5: - return (num2 - 1) / digit - else: - return num2 / digit - # 处理负数,power不为0的情况 - else: - tag = num * digit - num2 - 1 / (digit * 10) - if tag <= -0.5: - return (num2 - 1) / digit - else: - return num2 / digit diff --git a/bgArrayLib/instrumentConstant.py b/bgArrayLib/instrumentConstant.py deleted file mode 100644 index 924b4e2..0000000 --- a/bgArrayLib/instrumentConstant.py +++ /dev/null @@ -1,24 +0,0 @@ -instrument_list = {'0': 'harp', '1': 'harp', '2': 'pling', '3': 'harp', '4': 'pling', '5': 'pling', '6': 'harp', - '7': 'harp', - '8': 'share', '9': 'harp', '10': 'didgeridoo', '11': 'harp', '12': 'xylophone', '13': 'chime', - '14': 'harp', '15': 'harp', '16': 'bass', '17': 'harp', '18': 'harp', '19': 'harp', '20': 'harp', - '21': 'harp', '22': 'harp', '23': 'guitar', '24': 'guitar', '25': 'guitar', '26': 'guitar', - '27': 'guitar', '28': 'guitar', '29': 'guitar', '30': 'guitar', '31': 'bass', '32': 'bass', - '33': 'bass', - '34': 'bass', '35': 'bass', '36': 'bass', '37': 'bass', '38': 'bass', '39': 'bass', '40': 'harp', - '41': 'harp', '42': 'harp', '43': 'harp', '44': 'iron_xylophone', '45': 'guitar', '46': 'harp', - '47': 'harp', '48': 'guitar', '49': 'guitar', '50': 'bit', '51': 'bit', '52': 'harp', '53': 'harp', - '54': 'bit', '55': 'flute', '56': 'flute', '57': 'flute', '58': 'flute', '59': 'flute', - '60': 'flute', - '61': 'flute', '62': 'flute', '63': 'flute', '64': 'bit', '65': 'bit', '66': 'bit', '67': 'bit', - '68': 'flute', '69': 'harp', '70': 'harp', '71': 'flute', '72': 'flute', '73': 'flute', '74': 'harp', - '75': 'flute', '76': 'harp', '77': 'harp', '78': 'harp', '79': 'harp', '80': 'bit', '81': 'bit', - '82': 'bit', '83': 'bit', '84': 'bit', '85': 'bit', '86': 'bit', '87': 'bit', '88': 'bit', - '89': 'bit', - '90': 'bit', '91': 'bit', '92': 'bit', '93': 'bit', '94': 'bit', '95': 'bit', '96': 'bit', - '97': 'bit', - '98': 'bit', '99': 'bit', '100': 'bit', '101': 'bit', '102': 'bit', '103': 'bit', '104': 'harp', - '105': 'banjo', '106': 'harp', '107': 'harp', '108': 'harp', '109': 'harp', '110': 'harp', - '111': 'guitar', '112': 'harp', '113': 'bell', '114': 'harp', '115': 'cow_bell', '116': 'basedrum', - '117': 'bass', '118': 'bit', '119': 'basedrum', '120': 'guitar', '121': 'harp', '122': 'harp', - '123': 'harp', '124': 'harp', '125': 'hat', '126': 'basedrum', '127': 'snare'} diff --git a/bgArrayLib/namesConstant.py b/bgArrayLib/namesConstant.py deleted file mode 100644 index 32fd831..0000000 --- a/bgArrayLib/namesConstant.py +++ /dev/null @@ -1,92 +0,0 @@ -zip_name = {-1: '-1.Acoustic_Kit_打击乐.zip', 0: '0.Acoustic_Grand_Piano_大钢琴.zip', 1: '1.Bright_Acoustic_Piano_亮音大钢琴.zip', - 10: '10.Music_Box_八音盒.zip', 100: '100.FX_brightness_合成特效-亮音.zip', 101: '101.FX_goblins_合成特效-小妖.zip', - 102: '102.FX_echoes_合成特效-回声.zip', 103: '103.FX_sci-fi_合成特效-科幻.zip', 104: '104.Sitar_锡塔尔.zip', - 105: '105.Banjo_班卓.zip', 106: '106.Shamisen_三味线.zip', 107: '107.Koto_筝.zip', 108: '108.Kalimba_卡林巴.zip', - 109: '109.Bagpipe_风笛.zip', 11: '11.Vibraphone_电颤琴.zip', 110: '110.Fiddle_古提琴.zip', 111: '111.Shanai_唢呐.zip', - 112: '112.Tinkle_Bell_铃铛.zip', 113: '113.Agogo_拉丁打铃.zip', 114: '114.Steel_Drums_钢鼓.zip', - 115: '115.Woodblock_木块.zip', 116: '116.Taiko_Drum_太鼓.zip', 117: '117.Melodic_Tom_嗵鼓.zip', - 118: '118.Synth_Drum_合成鼓.zip', 119: '119.Reverse_Cymbal_镲波形反转.zip', 12: '12.Marimba_马林巴.zip', - 13: '13.Xylophone_木琴.zip', 14: '14.Tubular_Bells_管钟.zip', 15: '15.Dulcimer_扬琴.zip', - 16: '16.Drawbar_Organ_击杆风琴.zip', 17: '17.Percussive_Organ_打击型风琴.zip', 18: '18.Rock_Organ_摇滚风琴.zip', - 19: '19.Church_Organ_管风琴.zip', 2: '2.Electric_Grand_Piano_电子大钢琴.zip', 20: '20.Reed_Organ_簧风琴.zip', - 21: '21.Accordion_手风琴.zip', 22: '22.Harmonica_口琴.zip', 23: '23.Tango_Accordian_探戈手风琴.zip', - 24: '24.Acoustic_Guitar_(nylon)_尼龙弦吉他.zip', 25: '25.Acoustic_Guitar(steel)_钢弦吉他.zip', - 26: '26.Electric_Guitar_(jazz)_爵士乐电吉他.zip', 27: '27.Electric_Guitar_(clean)_清音电吉他.zip', - 28: '28.Electric_Guitar_(muted)_弱音电吉他.zip', 29: '29.Overdriven_Guitar_驱动音效吉他.zip', - 3: '3.Honky-Tonk_Piano_酒吧钢琴.zip', 30: '30.Distortion_Guitar_失真音效吉他.zip', 31: '31.Guitar_Harmonics_吉他泛音.zip', - 32: '32.Acoustic_Bass_原声贝司.zip', 33: '33.Electric_Bass(finger)_指拨电贝司.zip', - 34: '34.Electric_Bass(pick)_拨片拨电贝司.zip', 35: '35.Fretless_Bass_无品贝司.zip', 36: '36.Slap_Bass_A_击弦贝司A.zip', - 37: '37.Slap_Bass_B_击弦贝司B.zip', 38: '38.Synth_Bass_A_合成贝司A.zip', 39: '39.Synth_Bass_B_合成贝司B.zip', - 4: '4.Electric_Piano_1_电钢琴A.zip', 40: '40.Violin_小提琴.zip', 41: '41.Viola_中提琴.zip', 42: '42.Cello_大提琴.zip', - 43: '43.Contrabass_低音提琴.zip', 44: '44.Tremolo_Strings_弦乐震音.zip', 45: '45.Pizzicato_Strings_弦乐拨奏.zip', - 46: '46.Orchestral_Harp_竖琴.zip', 47: '47.Timpani_定音鼓.zip', 48: '48.String_Ensemble_A_弦乐合奏A.zip', - 49: '49.String_Ensemble_B_弦乐合奏B.zip', 5: '5.Electric_Piano_2_电钢琴B.zip', 50: '50.SynthStrings_A_合成弦乐A.zip', - 51: '51.SynthStrings_B_合成弦乐B.zip', 52: '52.Choir_Aahs_合唱“啊”音.zip', 53: '53.Voice_Oohs_人声“哦”音.zip', - 54: '54.Synth_Voice_合成人声.zip', 55: '55.Orchestra_Hit_乐队打击乐.zip', 56: '56.Trumpet_小号.zip', - 57: '57.Trombone_长号.zip', 58: '58.Tuba_大号.zip', 59: '59.Muted_Trumpet_弱音小号.zip', - 6: '6.Harpsichord_拨弦古钢琴.zip', 60: '60.French_Horn_圆号.zip', 61: '61.Brass_Section_铜管组.zip', - 62: '62.Synth_Brass_A_合成铜管A.zip', 63: '63.Synth_Brass_A_合成铜管B.zip', 64: '64.Soprano_Sax_高音萨克斯.zip', - 65: '65.Alto_Sax_中音萨克斯.zip', 66: '66.Tenor_Sax_次中音萨克斯.zip', 67: '67.Baritone_Sax_上低音萨克斯.zip', - 68: '68.Oboe_双簧管.zip', 69: '69.English_Horn_英国管.zip', 7: '7.Clavinet_击弦古钢琴.zip', 70: '70.Bassoon_大管.zip', - 71: '71.Clarinet_单簧管.zip', 72: '72.Piccolo_短笛.zip', 73: '73.Flute_长笛.zip', 74: '74.Recorder_竖笛.zip', - 75: '75.Pan_Flute_排笛.zip', 76: '76.Bottle_Blow_吹瓶口.zip', 77: '77.Skakuhachi_尺八.zip', 78: '78.Whistle_哨.zip', - 79: '79.Ocarina_洋埙.zip', 8: '8.Celesta_钢片琴.zip', 80: '80.Lead_square_合成主音-方波.zip', - 81: '81.Lead_sawtooth_合成主音-锯齿波.zip', 82: '82.Lead_calliope_lead_合成主音-汽笛风琴.zip', - 83: '83.Lead_chiff_lead_合成主音-吹管.zip', 84: '84.Lead_charang_合成主音5-吉他.zip', 85: '85.Lead_voice_合成主音-人声.zip', - 86: '86.Lead_fifths_合成主音-五度.zip', 87: '87.Lead_bass+lead_合成主音-低音加主音.zip', 88: '88.Pad_new_age_合成柔音-新时代.zip', - 89: '89.Pad_warm_合成柔音-暖音.zip', 9: '9.Glockenspiel_钟琴.zip', 90: '90.Pad_polysynth_合成柔音-复合成.zip', - 91: '91.Pad_choir_合成柔音-合唱.zip', 92: '92.Pad_bowed_合成柔音-弓弦.zip', 93: '93.Pad_metallic_合成柔音-金属.zip', - 94: '94.Pad_halo_合成柔音-光环.zip', 95: '95.Pad_sweep_合成柔音-扫弦.zip', 96: '96.FX_rain_合成特效-雨.zip', - 97: '97.FX_soundtrack_合成特效-音轨.zip', 98: '98.FX_crystal_合成特效-水晶.zip', 99: '99.FX_atmosphere_合成特效-大气.zip'} - -mcpack_name = {-1: '-1.Acoustic_Kit_打击乐.mcpack', 0: '0.Acoustic_Grand_Piano_大钢琴.mcpack', - 1: '1.Bright_Acoustic_Piano_亮音大钢琴.mcpack', 10: '10.Music_Box_八音盒.mcpack', - 100: '100.FX_brightness_合成特效-亮音.mcpack', 101: '101.FX_goblins_合成特效-小妖.mcpack', - 102: '102.FX_echoes_合成特效-回声.mcpack', 103: '103.FX_sci-fi_合成特效-科幻.mcpack', 104: '104.Sitar_锡塔尔.mcpack', - 105: '105.Banjo_班卓.mcpack', 106: '106.Shamisen_三味线.mcpack', 107: '107.Koto_筝.mcpack', - 108: '108.Kalimba_卡林巴.mcpack', 109: '109.Bagpipe_风笛.mcpack', 11: '11.Vibraphone_电颤琴.mcpack', - 110: '110.Fiddle_古提琴.mcpack', 111: '111.Shanai_唢呐.mcpack', 112: '112.Tinkle_Bell_铃铛.mcpack', - 113: '113.Agogo_拉丁打铃.mcpack', 114: '114.Steel_Drums_钢鼓.mcpack', 115: '115.Woodblock_木块.mcpack', - 116: '116.Taiko_Drum_太鼓.mcpack', 117: '117.Melodic_Tom_嗵鼓.mcpack', 118: '118.Synth_Drum_合成鼓.mcpack', - 119: '119.Reverse_Cymbal_镲波形反转.mcpack', 12: '12.Marimba_马林巴.mcpack', 13: '13.Xylophone_木琴.mcpack', - 14: '14.Tubular_Bells_管钟.mcpack', 15: '15.Dulcimer_扬琴.mcpack', 16: '16.Drawbar_Organ_击杆风琴.mcpack', - 17: '17.Percussive_Organ_打击型风琴.mcpack', 18: '18.Rock_Organ_摇滚风琴.mcpack', - 19: '19.Church_Organ_管风琴.mcpack', 2: '2.Electric_Grand_Piano_电子大钢琴.mcpack', - 20: '20.Reed_Organ_簧风琴.mcpack', 21: '21.Accordion_手风琴.mcpack', 22: '22.Harmonica_口琴.mcpack', - 23: '23.Tango_Accordian_探戈手风琴.mcpack', 24: '24.Acoustic_Guitar_(nylon)_尼龙弦吉他.mcpack', - 25: '25.Acoustic_Guitar(steel)_钢弦吉他.mcpack', 26: '26.Electric_Guitar_(jazz)_爵士乐电吉他.mcpack', - 27: '27.Electric_Guitar_(clean)_清音电吉他.mcpack', 28: '28.Electric_Guitar_(muted)_弱音电吉他.mcpack', - 29: '29.Overdriven_Guitar_驱动音效吉他.mcpack', 3: '3.Honky-Tonk_Piano_酒吧钢琴.mcpack', - 30: '30.Distortion_Guitar_失真音效吉他.mcpack', 31: '31.Guitar_Harmonics_吉他泛音.mcpack', - 32: '32.Acoustic_Bass_原声贝司.mcpack', 33: '33.Electric_Bass(finger)_指拨电贝司.mcpack', - 34: '34.Electric_Bass(pick)_拨片拨电贝司.mcpack', 35: '35.Fretless_Bass_无品贝司.mcpack', - 36: '36.Slap_Bass_A_击弦贝司A.mcpack', 37: '37.Slap_Bass_B_击弦贝司B.mcpack', 38: '38.Synth_Bass_A_合成贝司A.mcpack', - 39: '39.Synth_Bass_B_合成贝司B.mcpack', 4: '4.Electric_Piano_1_电钢琴A.mcpack', 40: '40.Violin_小提琴.mcpack', - 41: '41.Viola_中提琴.mcpack', 42: '42.Cello_大提琴.mcpack', 43: '43.Contrabass_低音提琴.mcpack', - 44: '44.Tremolo_Strings_弦乐震音.mcpack', 45: '45.Pizzicato_Strings_弦乐拨奏.mcpack', - 46: '46.Orchestral_Harp_竖琴.mcpack', 47: '47.Timpani_定音鼓.mcpack', 48: '48.String_Ensemble_A_弦乐合奏A.mcpack', - 49: '49.String_Ensemble_B_弦乐合奏B.mcpack', 5: '5.Electric_Piano_2_电钢琴B.mcpack', - 50: '50.SynthStrings_A_合成弦乐A.mcpack', 51: '51.SynthStrings_B_合成弦乐B.mcpack', - 52: '52.Choir_Aahs_合唱“啊”音.mcpack', 53: '53.Voice_Oohs_人声“哦”音.mcpack', 54: '54.Synth_Voice_合成人声.mcpack', - 55: '55.Orchestra_Hit_乐队打击乐.mcpack', 56: '56.Trumpet_小号.mcpack', 57: '57.Trombone_长号.mcpack', - 58: '58.Tuba_大号.mcpack', 59: '59.Muted_Trumpet_弱音小号.mcpack', 6: '6.Harpsichord_拨弦古钢琴.mcpack', - 60: '60.French_Horn_圆号.mcpack', 61: '61.Brass_Section_铜管组.mcpack', 62: '62.Synth_Brass_A_合成铜管A.mcpack', - 63: '63.Synth_Brass_A_合成铜管B.mcpack', 64: '64.Soprano_Sax_高音萨克斯.mcpack', 65: '65.Alto_Sax_中音萨克斯.mcpack', - 66: '66.Tenor_Sax_次中音萨克斯.mcpack', 67: '67.Baritone_Sax_上低音萨克斯.mcpack', 68: '68.Oboe_双簧管.mcpack', - 69: '69.English_Horn_英国管.mcpack', 7: '7.Clavinet_击弦古钢琴.mcpack', 70: '70.Bassoon_大管.mcpack', - 71: '71.Clarinet_单簧管.mcpack', 72: '72.Piccolo_短笛.mcpack', 73: '73.Flute_长笛.mcpack', - 74: '74.Recorder_竖笛.mcpack', 75: '75.Pan_Flute_排笛.mcpack', 76: '76.Bottle_Blow_吹瓶口.mcpack', - 77: '77.Skakuhachi_尺八.mcpack', 78: '78.Whistle_哨.mcpack', 79: '79.Ocarina_洋埙.mcpack', - 8: '8.Celesta_钢片琴.mcpack', 80: '80.Lead_square_合成主音-方波.mcpack', 81: '81.Lead_sawtooth_合成主音-锯齿波.mcpack', - 82: '82.Lead_calliope_lead_合成主音-汽笛风琴.mcpack', 83: '83.Lead_chiff_lead_合成主音-吹管.mcpack', - 84: '84.Lead_charang_合成主音5-吉他.mcpack', 85: '85.Lead_voice_合成主音-人声.mcpack', - 86: '86.Lead_fifths_合成主音-五度.mcpack', 87: '87.Lead_bass+lead_合成主音-低音加主音.mcpack', - 88: '88.Pad_new_age_合成柔音-新时代.mcpack', 89: '89.Pad_warm_合成柔音-暖音.mcpack', 9: '9.Glockenspiel_钟琴.mcpack', - 90: '90.Pad_polysynth_合成柔音-复合成.mcpack', 91: '91.Pad_choir_合成柔音-合唱.mcpack', - 92: '92.Pad_bowed_合成柔音-弓弦.mcpack', 93: '93.Pad_metallic_合成柔音-金属.mcpack', - 94: '94.Pad_halo_合成柔音-光环.mcpack', 95: '95.Pad_sweep_合成柔音-扫弦.mcpack', 96: '96.FX_rain_合成特效-雨.mcpack', - 97: '97.FX_soundtrack_合成特效-音轨.mcpack', 98: '98.FX_crystal_合成特效-水晶.mcpack', - 99: '99.FX_atmosphere_合成特效-大气.mcpack'} - -if __name__ == '__main__': - print(zip_name[0]) diff --git a/bgArrayLib/pitchStrConstant.py b/bgArrayLib/pitchStrConstant.py deleted file mode 100644 index 701da2a..0000000 --- a/bgArrayLib/pitchStrConstant.py +++ /dev/null @@ -1,133 +0,0 @@ -pitch = { - '0': '0.0220970869120796', - '1': '0.0234110480761981', - '2': '0.0248031414370031', - '3': '0.0262780129766786', - '4': '0.0278405849418856', - '5': '0.0294960722713029', - '6': '0.03125', - '7': '0.033108221698728', - '8': '0.0350769390096679', - '9': '0.037162722343835', - '10': '0.0393725328092148', - '11': '0.0417137454428136', - '12': '0.0441941738241592', - '13': '0.0468220961523963', - '14': '0.0496062828740062', - '15': '0.0525560259533572', - '16': '0.0556811698837712', - '17': '0.0589921445426059', - '18': '0.0625', - '19': '0.066216443397456', - '20': '0.0701538780193358', - '21': '0.0743254446876701', - '22': '0.0787450656184296', - '23': '0.0834274908856271', - '24': '0.0883883476483184', - '25': '0.0936441923047926', - '26': '0.0992125657480125', - '27': '0.105112051906714', - '28': '0.111362339767542', - '29': '0.117984289085212', - '30': '0.125', - '31': '0.132432886794912', - '32': '0.140307756038672', - '33': '0.14865088937534', - '34': '0.157490131236859', - '35': '0.166854981771254', - '36': '0.176776695296637', - '37': '0.187288384609585', - '38': '0.198425131496025', - '39': '0.210224103813429', - '40': '0.222724679535085', - '41': '0.235968578170423', - '42': '0.25', - '43': '0.264865773589824', - '44': '0.280615512077343', - '45': '0.29730177875068', - '46': '0.314980262473718', - '47': '0.333709963542509', - '48': '0.353553390593274', - '49': '0.37457676921917', - '50': '0.39685026299205', - '51': '0.420448207626857', - '52': '0.44544935907017', - '53': '0.471937156340847', - '54': '0.5', - '55': '0.529731547179648', - '56': '0.561231024154687', - '57': '0.594603557501361', - '58': '0.629960524947437', - '59': '0.667419927085017', - '60': '0.707106781186548', - '61': '0.749153538438341', - '62': '0.7937005259841', - '63': '0.840896415253715', - '64': '0.890898718140339', - '65': '0.943874312681694', - '66': '1', - '67': '1.0594630943593', - '68': '1.12246204830937', - '69': '1.18920711500272', - '70': '1.25992104989487', - '71': '1.33483985417003', - '72': '1.4142135623731', - '73': '1.49830707687668', - '74': '1.5874010519682', - '75': '1.68179283050743', - '76': '1.78179743628068', - '77': '1.88774862536339', - '78': '2', - '79': '2.11892618871859', - '80': '2.24492409661875', - '81': '2.37841423000544', - '82': '2.51984209978975', - '83': '2.66967970834007', - '84': '2.82842712474619', - '85': '2.99661415375336', - '86': '3.1748021039364', - '87': '3.36358566101486', - '88': '3.56359487256136', - '89': '3.77549725072677', - '90': '4', - '91': '4.23785237743718', - '92': '4.48984819323749', - '93': '4.75682846001088', - '94': '5.03968419957949', - '95': '5.33935941668014', - '96': '5.65685424949238', - '97': '5.99322830750673', - '98': '6.3496042078728', - '99': '6.72717132202972', - '100': '7.12718974512272', - '101': '7.55099450145355', - '102': '8', - '103': '8.47570475487436', - '104': '8.97969638647498', - '105': '9.51365692002177', - '106': '10.079368399159', - '107': '10.6787188333603', - '108': '11.3137084989848', - '109': '11.9864566150135', - '110': '12.6992084157456', - '111': '13.4543426440594', - '112': '14.2543794902454', - '113': '15.1019890029071', - '114': '16', - '115': '16.9514095097487', - '116': '17.95939277295', - '117': '19.0273138400435', - '118': '20.158736798318', - '119': '21.3574376667206', - '120': '22.6274169979695', - '121': '23.9729132300269', - '122': '25.3984168314912', - '123': '26.9086852881189', - '124': '28.5087589804909', - '125': '30.2039780058142', - '126': '32', - '127': '33.9028190194974', - '128': '35.9187855458999', - '129': '38.0546276800871', - '130': '40.3174735966359', - '131': '42.7148753334411'} diff --git a/bgArrayLib/reader.py b/bgArrayLib/reader.py deleted file mode 100644 index 094db70..0000000 --- a/bgArrayLib/reader.py +++ /dev/null @@ -1,148 +0,0 @@ -# -*- coding: utf-8 -*- - - -from nmcsup.log import log -import pickle - - -class Note: - def __init__(self, channel, pitch, velocity, time, time_position, instrument): - self.channel = channel - self.pitch = pitch - self.velocity = velocity - self.delay = time - self.time_position = time_position - self.instrument = instrument - self.CD = "d" - - def get_CD(self, start, end): - if end - start > 1.00: - self.CD = "c" - else: - self.CD = "d" - - -def midiNewReader(midfile: str): - import mido - # from msctspt.threadOpera import NewThread - from bgArrayLib.bpm import get - - def Time(mt, tpb_a, bpm_a): - return round(mt / tpb_a / bpm_a * 60 * 20) - - Notes = [] - tracks = [] - note_list = [] - close = [] - on = [] - off = [] - instruments = [] - isPercussion = False - try: - mid = mido.MidiFile(midfile) - except Exception: - log("找不到文件或无法读取文件" + midfile) - return False - tpb = mid.ticks_per_beat - bpm = get(mid) - # 解析 - # def loadMidi(track1): - for track in mid.tracks: - overallTime = 0.0 - instrument = 0 - for i in track: - overallTime += i.time - try: - if i.channel != 9: - # try: - # log("event_type(事件): " + str(i.type) + " channel(音轨): " + str(i.channel) + - # " note/pitch(音高): " + - # str(i[2]) + - # " velocity(力度): " + str(i.velocity) + " time(间隔时间): " + str(i.time) + - # " overallTime/globalTime/timePosition: " + str(overallTime) + " \n") - # except AttributeError: - # log("event_type(事件): " + str(i.type) + " thing(内容):" + str(i) + " \n") - if 'program_change' in str(i): - instrument = i.program - if instrument > 119: # 音色不够 - pass - else: - instruments.append(i.program) - if 'note_on' in str(i) and i.velocity > 0: - print(i) - # print(i.note) - # print([Note(i.channel, i.note, i.velocity, i.time, Time(overallTime, tpb, bpm), instrument)]) - tracks.append( - [Note(i.channel, i.note, i.velocity, i.time, Time(overallTime, tpb, bpm), instrument)]) - note_list.append( - [i.channel, i.note, i.velocity, i.time, Time(overallTime, tpb, bpm), instrument]) - on.append([i.note, Time(overallTime, tpb, bpm)]) - # return [Note(i.channel, i, i.velocity, i.time, Time(overallTime, tpb, bpm))] - if 'note_off' in str(i) or 'note_on' in str(i) and i.velocity == 0: - # print(i) - # print([Note(i.channel, i.note, i.velocity, i.time, Time(overallTime, tpb, bpm))]) - close.append( - [Note(i.channel, i.note, i.velocity, i.time, Time(overallTime, tpb, bpm), instrument)]) - off.append([i.note, Time(overallTime, tpb, bpm)]) - # return [Note(i.channel, i, i.velocity, i.time, Time(overallTime, tpb, bpm))] - except AttributeError: - pass - if 'note_on' in str(i) and i.channel == 9: - if 'note_on' in str(i) and i.velocity > 0: - print(i) - # print(i.note) - # print([Note(i.channel, i.note, i.velocity, i.time, Time(overallTime, tpb, bpm), -1)]) - tracks.append([Note(i.channel, i.note, i.velocity, i.time, Time(overallTime, tpb, bpm), -1)]) - note_list.append([i.channel, i.note, i.velocity, i.time, Time(overallTime, tpb, bpm), -1]) - on.append([i.note, Time(overallTime, tpb, bpm)]) - isPercussion = True - # return [Note(i.channel, i, i.velocity, i.time, Time(overallTime, tpb, bpm))] - Notes.append(tracks) - if instruments is []: - instruments.append(0) - instruments = list(set(instruments)) - with open("1.pkl", 'wb') as b: - pickle.dump([instruments, isPercussion], b) - - # for j, track in enumerate(mid.tracks): - # th = NewThread(loadMidi, (track,)) - # th.start() - # Notes.append(th.getResult()) - - # print(Notes) - print(Notes.__len__()) - # print(note_list) - print(instruments) - return Notes - # return [Notes, note_list] - - -def midiClassReader(midfile: str): - import mido - from bgArrayLib.bpm import get - - def Time(mt, tpb_a, bpm_a): - return round(mt / tpb_a / bpm_a * 60 * 20) - - Notes = [] - tracks = [] - try: - mid = mido.MidiFile(filename=midfile,clip=True) - except Exception: - log("找不到文件或无法读取文件" + midfile) - return False - log("midi已经载入了。") - tpb = mid.ticks_per_beat - bpm = get(mid) - for track in mid.tracks: - overallTime = 0.0 - instrument = 0 - for i in track: - overallTime += i.time - if 'note_on' in str(i) and i.velocity > 0: - print(i) - tracks.append( - [Note(i.channel, i.note, i.velocity, i.time, Time(overallTime, tpb, bpm), instrument)]) - Notes.append(tracks) - print(Notes.__len__()) - return Notes diff --git a/bgArrayLib/sy_resourcesPacker.py b/bgArrayLib/sy_resourcesPacker.py deleted file mode 100644 index 0feb22c..0000000 --- a/bgArrayLib/sy_resourcesPacker.py +++ /dev/null @@ -1,131 +0,0 @@ -import os -import pickle -# import tkinter.filedialog -# from namesConstant import zip_name -# from namesConstant import mcpack_name -import bgArrayLib.namesConstant -import shutil -zipN = bgArrayLib.namesConstant.zip_name -mpN = bgArrayLib.namesConstant.mcpack_name - -manifest = { - "format_version": 1, - "header": { - "name": "羽音缭绕-midiout_25.5--音创使用", - "description": "羽音缭绕-midiout_25.0--音创使用", - "uuid": "c1adbda4-3b3e-4e5b-a57e-cde8ac80ee19", - "version": [25, 5, 0] - }, - "modules": [ - { - "description": "羽音缭绕-midiout_25.0--音创使用", - "type": "resources", - "uuid": "c13455d5-b9f3-47f2-9706-c05ad86b3180 ", - "version": [25, 5, 0] - } - ] -} - - -def resources_pathSetting(newPath: str = ""): - if not os.path.isfile("./bgArrayLib/resourcesPath.rpposi") and newPath == "": - return [False, 1] # 1:没有路径文件 - elif newPath != "": # not os.path.isfile("./bgArrayLib/resourcesPath.rpposi") and - path = newPath - print(path) - with open("./bgArrayLib/resourcesPath.rpposi", 'w') as w: - w.write(path) - if "mcpack(国际版推荐)格式_25.0" in os.listdir(path) and "zip格式_25.0" in os.listdir(path): - return [True, path, 1] # 1:都有 - elif "mcpack(国际版推荐)格式_25.0" in os.listdir(path) and "zip格式_25.0" not in os.listdir(path): - return [True, path, 2] # 2:有pack - elif "mcpack(国际版推荐)格式_25.0" not in os.listdir(path) and "zip格式_25.0" in os.listdir(path): - return [True, path, 3] # 3:有zip - else: - return [False, 2] # 2:路径文件指示错误 - if os.path.isfile("./bgArrayLib/resourcesPath.rpposi") and newPath == "": - with open("./bgArrayLib/resourcesPath.rpposi", 'r') as f: - path = f.read() - if "mcpack(国际版推荐)格式_25.0" in os.listdir(path) and "zip格式_25.0" in os.listdir(path): - return [True, path, 1] # 1:都有 - elif "mcpack(国际版推荐)格式_25.0" in os.listdir(path) and "zip格式_25.0" not in os.listdir(path): - return [True, path, 2] # 2:有pack - elif "mcpack(国际版推荐)格式_25.0" not in os.listdir(path) and "zip格式_25.0" in os.listdir(path): - return [True, path, 3] # 3:有zip - else: - return [False, 2] # 2:路径文件指示错误 - - -def choose_resources(): - global zipN - global mpN - back_list = [] - try: - with open(r"1.pkl", 'rb') as rb: - instrument = list(pickle.load(rb)) - print(instrument) - except FileNotFoundError: - try: - with open(r"./nmcsup/1.pkl", 'rb') as rb: - instrument = list(pickle.load(rb)) - print(instrument) - except FileNotFoundError: - return False - path = resources_pathSetting() - if path.__len__() == 2: - return path - else: - dataT = path[2] - pathT = path[1] - if dataT == 1: - if instrument[1] is True: - index = zipN.get(-1) - percussion_instrument = str(pathT) + "\\zip格式_25.0\\" + index - # print(percussion_instrument) - back_list.append(percussion_instrument) - for i in instrument[0]: - ins_p = str(pathT) + "\\zip格式_25.0\\" + str(zipN.get(i)) - # print(ins_p) - back_list.append(ins_p) - print(back_list) - return back_list - elif dataT == 2: - if instrument[1] is True: - index = mpN.get(-1) - percussion_instrument = str(pathT) + "\\mcpack(国际版推荐)格式_25.0\\" + index - # print(percussion_instrument) - back_list.append(percussion_instrument) - for i in instrument[0]: - ins_p = str(pathT) + "\\mcpack(国际版推荐)格式_25.0\\" + str(mpN.get(i)) - # print(ins_p) - back_list.append(ins_p) - print(back_list) - return back_list - elif dataT == 3: - if instrument[1] is True: - index = zipN.get(-1) - percussion_instrument = str(pathT) + "\\zip格式_25.0\\" + index - # print(percussion_instrument) - back_list.append(percussion_instrument) - for i in instrument[0]: - ins_p = str(pathT) + "\\zip格式_25.0\\" + str(zipN.get(i)) - # print(ins_p) - back_list.append(ins_p) - print(back_list) - return back_list - - -def scatteredPack(path): - pack_list = choose_resources() - print(pack_list) - print(path) - # os.close("L:/0WorldMusicCreater-MFMS new edition") - # shutil.copy("L:\\shenyu\\音源的资源包\\羽音缭绕-midiout_25.0\\mcpack(国际版推荐)格式_25.0\\0.Acoustic_Grand_Piano_大钢琴.mcpack", - # "L:/0WorldMusicCreater-MFMS new edition") - for i in pack_list: - shutil.copy(i, path) - - -if __name__ == '__main__': - # print(resources_pathSetting(r"L:\shenyu\音源的资源包\羽音缭绕-midiout_25.0")) - choose_resources() diff --git a/example_convert.py b/example_convert.py new file mode 100644 index 0000000..e36e4a1 --- /dev/null +++ b/example_convert.py @@ -0,0 +1,9 @@ + + + +# THIS PROGRAM IS ONLY A TEST EXAMPLE + + +from main import * + +midiConvert(input('请输入midi文件路径:'), input('请输入输出路径:')).tomcpack(1,'mscplay',1.0,1.0) \ No newline at end of file diff --git a/fcwslib/__init__.py b/fcwslib/__init__.py deleted file mode 100644 index 19a8fdf..0000000 --- a/fcwslib/__init__.py +++ /dev/null @@ -1,170 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:2个---未解决;警告(二级)错误:2个;语法(一级)错误:17个 - - -__version__ = '0.0.1' -__all__ = [] -__author__ = 'Fuckcraft ' - -''' -Fuckcraft Websocket Library (FCWSLIB) -A library to develop minecraft websocket server easily. - - Copyright (C) 2021 Fuckcraft - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. -''' - -from main import * - -# import os -import json -import uuid -# import logging -import asyncio -import time -import websockets - - -# 写这段代码的时候,只有我和上帝知道这段代码是干什么的。 -# 现在只有上帝知道。 -# ---- -# 没毛病,我讨厌两种人:一种是要我写注释的人,一种是给我代码看但没有写注释的人。 - -# 此函数用于向 Minecraft 订阅请求 -async def subscribe(websocket, event_name): - """ - 参数: - : websocket : websocket 对象 : - : event_name : 需要订阅的请求 : - - 返回: - None - """ - - response = { - 'body': { - 'eventName': str(event_name) # 示例:PlayerMessage - }, - 'header': { - 'requestId': str(uuid.uuid4()), - 'messagePurpose': 'subscribe', - 'version': 1, - 'messageType': 'commandRequest' - } - } - - # 增加 json 的可读性 - # response = json.dumps(response, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False) - response = json.dumps(response) - - await websocket.send(response) - - -# 此函数用于向 Minecraft 消除订阅请求 -async def unsubscribe(webscket): - """ - 参数: - : websocket : websocket 对象 : - : event_name : 需要消除订阅的请求 : - - 返回: - None - """ - print(webscket) - - response = { - "body": { - "eventName": str(event_name) # PlayerMessage - }, - "header": { - "requestId": str(uuid.uuid4()), - "messagePurpose": "unsubscribe", - "version": 1, - "messageType": "commandRequest" - } - } - - # 增加 json 的可读性 - # response = json.dumps(response, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False) - response = json.dumps(response) - - await websocket.send(response) - - -# 此函数用于向 Minecraft 执行命令 -async def send_command(websocket, command): - """ - 参数: - : websocket : websocket 对象 : - : command : 执行的命令 : - - 返回: - None - """ - - response = { - 'body': { - 'origin': { - 'type': 'player' - }, - 'commandLine': str(command), - 'version': 1 - }, - 'header': { - 'requestId': str(uuid.uuid4()), - 'messagePurpose': 'commandRequest', - 'version': 1, - 'messageType': 'commandRequest' - } - } - - # 增加 json 的可读性 - # response = json.dumps(response, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False) - response = json.dumps(response) - - await websocket.send(response) - - -# 此函数用于向 Minecraft 发送消息 -async def tellraw(websocket, message): - """ - 参数: - : websocket : websocket 对象 : - : message : 发送的消息 : - - 返回: - None - """ - - command = { - 'rawtext': [ - { - 'text': '[{}] {}'.format(time.asctime(), message) - } - ] - } - - # 增加 json 可读性 - # command = json.dumps(command, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False) - command = json.dumps(command) - command = 'tellraw @a {}'.format(command) - - await send_command(websocket, command) - - -def run_server(function): - # 修改 ip 地址和端口 - start_server = websockets.serve(function, 'localhost', 8080) - asyncio.get_event_loop().run_until_complete(start_server) - asyncio.get_event_loop().run_forever() diff --git a/fcwslib/main.py b/fcwslib/main.py deleted file mode 100644 index a0f8b76..0000000 --- a/fcwslib/main.py +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -__version__ = '0.0.1' -__all__ = ['run_server', 'subscribe', 'unsubscribe', 'send_command', 'tellraw'] -__author__ = 'Fuckcraft ' - -''' -Fuckcraft Websocket Library (FCWSLIB) -A library to develop minecraft websocket server easily. - - Copyright (C) 2021 Fuckcraft - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. -''' - -import os -import json -import uuid -import logging -import asyncio -import time -import websockets - -# 写这段代码的时候,只有我和上帝知道这段代码是干什么的。 -# 现在只有上帝知道。 - -# 此函数用于向 Minecraft 订阅请求 -async def subscribe(websocket, event_name): - ''' - 输入: - : websocket : websocket 对象 : - : event_name : 需要订阅的请求 : - - 输出: - None - ''' - - response = { - 'body': { - 'eventName': str(event_name) # 示例:PlayerMessage - }, - 'header': { - 'requestId': str(uuid.uuid4()), - 'messagePurpose': 'subscribe', - 'version': 1, - 'messageType': 'commandRequest' - } - } - - # 增加 json 的可读性 - # response = json.dumps(response, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False) - response = json.dumps(response) - - await websocket.send(response) - -# 此函数用于向 Minecraft 消除订阅请求 -async def unsubscribe(webscket): - ''' - 输入: - : websocket : websocket 对象 : - : event_name : 需要消除订阅的请求 : - - 输出: - None - ''' - - response = { - "body": { - "eventName": str(event_name) # 示例:PlayerMessage - }, - "header": { - "requestId": str(uuid.uuid4()), - "messagePurpose": "unsubscribe", - "version": 1, - "messageType": "commandRequest" - } - } - - # 增加 json 的可读性 - # response = json.dumps(response, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False) - response = json.dumps(response) - - await websocket.send(response) - -# 我个人不负责这块的质量,因为他们逼迫我违心的写了这段代码 - -# 此函数用于向 Minecraft 执行命令 -async def send_command(websocket, command): - ''' - 输入: - : websocket : websocket 对象 : - : command : 执行的命令 : - - 输出: - None - ''' - - response = { - 'body': { - 'origin': { - 'type': 'player' - }, - 'commandLine': str(command), - 'version': 1 - }, - 'header': { - 'requestId': str(uuid.uuid4()), - 'messagePurpose': 'commandRequest', - 'version': 1, - 'messageType': 'commandRequest' - } - } - - # 增加 json 的可读性 - # response = json.dumps(response, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False) - response = json.dumps(response) - - await websocket.send(response) - -# 此函数用于向 Minecraft 发送消息 -async def tellraw(websocket, message): - ''' - 输入: - : websocket : websocket 对象 : - : message : 发送的消息 : - - 输出: - None - ''' - - command = { - 'rawtext':[ - { - 'text':'[{}] {}'.format(time.asctime(), message) - } - ] - } - - # 增加 json 可读性 - # command = json.dumps(command, sort_keys=True, indent=4, separators=(', ', ': '), ensure_ascii=False) - command = json.dumps(command) - command = 'tellraw @a {}'.format(command) - - await send_command(websocket, command) - -def run_server(function): - # 修改 ip 地址和端口 - start_server = websockets.serve(function, 'localhost', 8080) - asyncio.get_event_loop().run_until_complete(start_server) - asyncio.get_event_loop().run_forever() - diff --git a/fcwslib/版权声明.png b/fcwslib/版权声明.png deleted file mode 100644 index 05ebcf5..0000000 Binary files a/fcwslib/版权声明.png and /dev/null differ diff --git a/languages/__init__.py b/languages/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/languages/__pycache__/__init__.cpython-37.pyc b/languages/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index 3affb8f..0000000 Binary files a/languages/__pycache__/__init__.cpython-37.pyc and /dev/null differ diff --git a/languages/__pycache__/__init__.cpython-38.pyc b/languages/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 729cc47..0000000 Binary files a/languages/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/languages/__pycache__/__init__.cpython-39.pyc b/languages/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index eb9b629..0000000 Binary files a/languages/__pycache__/__init__.cpython-39.pyc and /dev/null differ diff --git a/languages/__pycache__/enGB.cpython-38.pyc b/languages/__pycache__/enGB.cpython-38.pyc deleted file mode 100644 index aa07c80..0000000 Binary files a/languages/__pycache__/enGB.cpython-38.pyc and /dev/null differ diff --git a/languages/__pycache__/lang.cpython-37.pyc b/languages/__pycache__/lang.cpython-37.pyc deleted file mode 100644 index 8c90446..0000000 Binary files a/languages/__pycache__/lang.cpython-37.pyc and /dev/null differ diff --git a/languages/__pycache__/lang.cpython-38.pyc b/languages/__pycache__/lang.cpython-38.pyc deleted file mode 100644 index f5aba45..0000000 Binary files a/languages/__pycache__/lang.cpython-38.pyc and /dev/null differ diff --git a/languages/__pycache__/lang.cpython-39.pyc b/languages/__pycache__/lang.cpython-39.pyc deleted file mode 100644 index fa65b1c..0000000 Binary files a/languages/__pycache__/lang.cpython-39.pyc and /dev/null differ diff --git a/languages/__pycache__/zhCN.cpython-37.pyc b/languages/__pycache__/zhCN.cpython-37.pyc deleted file mode 100644 index 2612ad5..0000000 Binary files a/languages/__pycache__/zhCN.cpython-37.pyc and /dev/null differ diff --git a/languages/__pycache__/zhCN.cpython-38.pyc b/languages/__pycache__/zhCN.cpython-38.pyc deleted file mode 100644 index 5aa6360..0000000 Binary files a/languages/__pycache__/zhCN.cpython-38.pyc and /dev/null differ diff --git a/languages/__pycache__/zhCN.cpython-39.pyc b/languages/__pycache__/zhCN.cpython-39.pyc deleted file mode 100644 index 4da8852..0000000 Binary files a/languages/__pycache__/zhCN.cpython-39.pyc and /dev/null differ diff --git a/languages/autosave.tmp.txt b/languages/autosave.tmp.txt deleted file mode 100644 index 874d3f8..0000000 --- a/languages/autosave.tmp.txt +++ /dev/null @@ -1,13 +0,0 @@ -zh-ME -喵喵文 中国大陆 -Meow Catsese, China Mainland -喵喵喵~ 祖国喵~ -金羿,Email EillesWan@outlook.com,QQ 2647547478 -音创创喵~ -音·创 Musicreater -音创创喵的主人们 -凌天之云创新我的世界开发团队\n×\n凌天之云创新计算机应用软件开发团队 -~ 主人们 ~ -~ 爸爸妈妈们 ~ -好哒~ - diff --git a/languages/const2string.py b/languages/const2string.py deleted file mode 100644 index 53a2e5c..0000000 --- a/languages/const2string.py +++ /dev/null @@ -1,99 +0,0 @@ -# -*- coding:utf-8 -*- -'''此功能已废弃''' - - - - -# W-YI 金羿 -# QQ 2647547478 -# 音·创 开发交流群 861684859 -# Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com -# 版权所有 Team-Ryoun 金羿("Eilles Wan") & 诸葛亮与八卦阵("bgArray") -# 若需转载或借鉴 请附作者 - - -""" - Copyright 2022 Team-Ryoun 金羿("Eilles Wan") & 诸葛亮与八卦阵("bgArray") - - Licensed under the Apache License, Version 2.0 (the 'License'); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an 'AS IS' BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - -# 代码写的并非十分的漂亮,还请大佬多多包涵;本软件源代码依照Apache软件协议公开 - -# -----------------------------分割线----------------------------- -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:0个;语法(一级)错误:12个 -# 目前我的Pycharm并没有显示任何错误,有错误可以向: -# bgArray 诸葛亮与八卦阵 -# QQ 474037765 或最好加入:音·创 开发交流群 861684859 -# ------------------------- split line----------------------------- -# Zhuge Liang and Bagua array help to modify the grammar date: -- January 19, 2022 -# Statistics: fatal (Level 3) errors: 0; Warning (Level 2) errors: 15; Syntax (Level 1) error: 597 -# At present, my Pycham does not display any errors. If there are errors, you can report them to me -# Bgarray Zhuge Liang and Bagua array -# QQ 474037765 or better join: Musicreater development exchange group 861684859 -# ------------------------- split line----------------------------- - -# 下面为正文 - - -# 将程序中用双引号""括起来的字符串 -# 转为字符串列表 list[str, str, ...] -# 方便进行语言翻译支持。 - -import sys -startWith = 0 - - -def __main__(): - textList = [] - for fileName in sys.argv[1:]: - print('读取文件: {}'.format(fileName)) - fileText = [] - for line in open(fileName, 'r', encoding='utf-8'): - while line.count('"') >= 2: - # 只有上帝看得懂我在写什么。 - if line[ - line.index('"'):2 + line[line.index('"') + 1:].index('"') + len(line[:line.index('"')])] in textList: - thisText = textList.index( - line[line.index('"'):2 + line[line.index('"') + 1:].index('"') + len(line[:line.index('"')])]) - else: - thisText = len(textList) - textList.append( - line[line.index('"'):2 + line[line.index('"') + 1:].index('"') + len(line[:line.index('"')])]) - line = line.replace( - line[line.index('"'):2 + line[line.index('"') + 1:].index('"') + len(line[:line.index('"')])], - 'READABLETEXT[{}]'.format(thisText + startWith) - ) - fileText.append(line) - - open(fileName + '_C', 'w', encoding='utf-8').writelines(fileText) - - outFile = open('lang__.py', 'w', encoding='utf-8') - outFile.write('''# -*- coding:utf-8 -*- - -# 由金羿翻译工具生成字符串列表 -# 请在所需翻译文件前from 此文件 import READABLETEXT - - - -READABLETEXT = { -''') - for i in range(len(textList)): - outFile.write(" {}:{},\n".format(i + startWith, textList[i])) - outFile.write('}') - outFile.close() - - -if __name__ == '__main__': - __main__() diff --git a/languages/enGB.py b/languages/enGB.py deleted file mode 100644 index f9d466a..0000000 --- a/languages/enGB.py +++ /dev/null @@ -1,180 +0,0 @@ -# -*- coding:utf-8 -*- - -# 由金羿翻译工具生成字符串列表 -# 请在所需翻译的文件前from 此文件 import READABLETEXT - - -READABLETEXT = { - 'Translator': (("Eilles Wan (金羿)", True),), - # 此处是语言翻译者列表,其中每个元组第一项为显示文本,第二项为此文本是否为开发者名字 - 0: "ERROR❌", - 1: "TIPS❗", - 2: "Clearing log(this wont be in the file)", - 3: "Could not clear the temporary files or logs", - 4: "saved", - 5: "New Musicreater Project", - 6: "Select old-type project", - 7: "Select Musicreater Project", - 8: "Cant open:{}, please check if youve entered the right name", - 9: "Musicreat - About", - 10: "Musicreater", - 11: "Ver. {}", - 12: """Team-Ryoun for Minecraft\n×\nTeam-Ryoun for Software Development""", - 13: "OK", - 14: "Inpute Notes", - 15: (("- Developers -", False), - ("Eilles Wan (金羿)", True), ("EillesWan@outlook.com", False), ("QQ 2647547478", False), - ("bgArray “诸葛亮与八卦阵”", True), ("QQ 474037765", False)), - # 此处是开发者列表,其中每个元组第一项为显示文本,第二项为此文本是否为开发者名字 - 16: "- Translators -", - # 17:"", - 18: "QQ Group: 861684859", - 19: "Musicreater - Help", - 20: "Select sound file", - 21: "Select MIDI file", - 22: "Select NoteText file", - 23: "Get Note info", - 24: "Write in Note info: {}", - 25: "Select generating file", - 26: "Select generating folder", - 27: "Select generating .mcpack file", - 28: "Input position info", - 29: "Select generating world folder", - 30: "Select generating Function Pack", - 31: "Select .mcfunction file ", - 32: "Select .bdx file ", - 33: "DONE✔", - 34: "Input playing rate", - 35: "Generating", - 36: "Select a world folder", - 37: "Make sure", - 38: "Generate .RyStruct file", - 39: "FAILED❌", - 40: "Report message inpution", - 41: "Musicreater - {}", - 42: "ExecutingEntityName: {}", - 43: "ScoreboardName: {}", - 44: "Instrument: {}", - 45: "TrackName: {}", - 46: "PackName: {}", - 47: "MusicTitle: {}", - 48: "IsRepeat?: {}", - 49: "Player'sTargetSelector: {}", - 50: "Modify Main Option", - 51: "Modify Track Option", - 52: "Default Instrument: Enter English\n", - 53: "Open...", - 54: "Open Old Project...", - 55: "Save", - 56: "Save as...", - 57: "Exit", - 58: "File", - 59: "Load tracks from sound", - 60: "Load tracks from Midi", - 61: "Load tracks from Text", - 62: "Input notes to track", - 63: "Edit", - 64: "Generate file...", - 65: "Generate function pack...", - 66: "Generate .mcpack file...", - 67: "Functions(Pack)", - 68: "Save music as blocks into a map", - 69: "Save music as blocks into a exist map...", - 70: "Save music as commands into a map", - 71: "Save music as commands into a exist map...", - 72: "Save music as notebox into a map", - 73: "Save music as notebox into a exist map...", - 74: "World", - 75: "Generate a function that fits current music...", - 76: "Export selected track as commands in .bdx...", - 77: "Export .bdx file from map...", - 78: "Export .RyStruct file from map...", - 79: "Load functions into a world...", - 80: "Separate long .mcfunction file into small ones and set them into a world as a chain...", - 81: "Additional Functions", - 82: "Show generating result", - 83: "Set a websocket server on localhost:8080 and play the selected track", - 84: "Experimental Functions", - 85: "Clear log file", - 86: "Clear save file(obsolete)", - 87: "Help", - 88: "About", - 89: "Send a bug report", - 90: "Q&A", - 91: "Main Options", - 92: "Export music as .BDX...", - 93: "请输入指令链生成最高相对高度(≥5)", - 94: "❌You should input a number which is not lower then 4, please reinput again.", - 95: "Structure", - 96: "Reset Main Options", - 97: "Track Options", - # 98:"", - # 99:"", - # 100:"", - # 101:"", - 102: "Delete Selected Track", - # 103:"", - # 104:"", - - 105: "Error with finding or reading file😢:{}", - 106: "Project is unsaved, save before close?", - 107: "Saved in: {}", - 108: ("Musicreater 0.0.X Project","Musicreater 0.1+ Project","Musicreater 0.1+ TESTver Project"), - 109: "Any Type", - 110: "NoteFunCreater Project", - 111: "MMFM (V0.0.6) Project", - 112: "All Types", - 113: ".MP3 file(piano sound)", - 114: "Midi file", - 115: "Text file", - 116: "Position Inpution", - 117: "Format Error❌, please Reinput!", - 118: ".MCFUNCTION", - 119: "The position of the ChainCB for execution:", - # 120: "", - 121: "您的函数文件不大于一万条指令,无需进行分割操作。", - 122: "请输入执行链生成相对坐标:", - 123: "FastBuilder Structure", - 124: "Done!\n{}", - 125: "一秒,音乐走几拍?", - 126: "按下确认后,在游戏中使用connect指令连接localhost:8080,即可播放", - 127: "请输入区域选择的开始坐标:", - 128: "请输入区域选择的结束坐标:", - 129: "Whether air block remain when export?", - 130: "Musicreater Structure", - 131: "Done😃\n{}", - 132: "Failed❌\n{}\n{}", - 133: "Have not developed yet...", - 134: "Your name", - 135: "Your contact", - 136: "Your description of Problem", - 137: "Log file will be cleared when you exit.", - 138: "Log file will NOT be cleared when you exit.", - 139: "修改包名", - 140: "修改音乐标题", - 141: "修改玩家选择器\n注意!要加上中括号“[]”", - 142: "修改本音轨的执行实体名", - 143: "修改本音轨所用的积分板", - 144: "修改本音轨所用乐器", - 145: "您输入的乐器并非游戏内置乐器,是否继续用您输入的字符作为乐器?", - 146: "修改本音轨生成的文件名", - # -----2022.1.25更新 - 147: "生成新文件至...", - 148: "从midi导入音轨且用新方法解析", - 149: "Open New: Musicreater Project...", - 150: "保存为新项目", - 151: "另存为新项...", - 152: "(开发调试)关闭本次日志记录", - 153: "生成新函数包至...", - 154: "生成新函数附加包文件至...", - 155: "生成新函数附加包文件,并将神羽资源包以散包形式放置至...", - 156: "Select [MiraclePlumeResourcePack]...", - 157: "没有路径文件(.rpposi文件),请仔细阅读Readme或先试用:帮助与疑问->[神羽资源包位置选择]:选择文件夹... 方法添加路径文件吧!", - 158: "有路径文件(.rpposi文件),但路径指示错误,请仔细阅读Readme或先用:帮助与疑问->[神羽资源包位置选择]:选择文件夹... 更改路径!", - 159: "更改路径文件(.rpposi文件)成功!!", - 160: "从midi导入音轨且用类方法解析", - 161: "打开 类方法: 音·创项目...", - 162: "保存为类方法项目", - 163: "另存为类方法项...", - -} diff --git a/languages/lang.py b/languages/lang.py deleted file mode 100644 index e78dd08..0000000 --- a/languages/lang.py +++ /dev/null @@ -1,206 +0,0 @@ -# -*- coding:utf-8 -*- -'''对于音·创的语言支持兼语言文件编辑器''' - -""" - Copyright 2022 Team-Ryoun - - Licensed under the Apache License, Version 2.0 (the 'License'); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an 'AS IS' BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - -DEFAULTLANGUAGE = 'zh-CN' - -LANGUAGELIST = { - # 第一个是语言的中文名称和地区 - # 第二个是语言的英文名称和地区 - # 第三个是语言的本地名称和地区 - 'zh-CN': ( - "简体中文 中国大陆", - "Simplified Chinese - China Mainland", - "简体中文 中国大陆", - ), - 'zh-TW': ( - "繁体中文 中国台湾省", - "Traditional Chinese - Taiwan, China", - "正體中文,中国台灣省", - ), - # 'zh-HK': ( - # "繁体中文 香港", - # "Traditional Chinese - the Hong Kong Special Administrative Region", - # "繁體中文,香港特別行政區", - # ), - # 'zh-MO': ( - # "繁体中文 澳门", - # "Traditional Chinese - the Macao Special Administrative Region", - # "繁體中文,澳門特別行政區", - # ), - 'en-GB': ( - "英语 英国", - "British English - the United Kingdom", - "British English - the United Kingdom", - ), - 'zh-ME' : ( - "喵喵文 中国大陆", - "Meow Catsese - China Mainland" - "喵喵喵~ 祖国喵~" - ) -} - -# 对于旧版本音·创的语言支持 -# 重构之后将停止使用 -try: - from languages.zhCN import READABLETEXT -except: - pass - - -from msctLib.log import log - -def __loadLanguage(languageFilename: str): - with open(languageFilename, 'r', encoding='utf-8') as languageFile: - _text = {} - for line in languageFile: - if line.startswith('#'): - continue - line = line.split(' ', 1) - _text[line[0]] = line[1].replace('\n', '') - langkeys = _text.keys() - with open(languageFilename.replace(languageFilename[-10:-5], 'zh-CN'), 'r', encoding='utf-8') as defaultLangFile: - for line in defaultLangFile: - if line.startswith('#'): - continue - line = line.split(' ', 1) - if not line[0] in langkeys: - _text[line[0]] = line[1].replace('\n', '') - from msctLib.log import log - log(f'丢失对于 {line[0]} 的本地化文本', 'WARRING') - langkeys = _text.keys() - # print(_text) - return _text - - -if not DEFAULTLANGUAGE == 'zh-CN': - if DEFAULTLANGUAGE in LANGUAGELIST.keys(): - _TEXT = __loadLanguage('./languages/' + DEFAULTLANGUAGE + '.lang') - else: - raise KeyError(f'无法打开默认语言{DEFAULTLANGUAGE}') - - -def wordTranslate(singleWord: str, debug: bool = False): - import requests - try: - return \ - requests.post('https://fanyi.baidu.com/sug', data={'kw': f'{singleWord}'}).json()['data'][0]['v'].split( - '; ')[0] - except: - log(f"无法翻译文本{singleWord}", level='WARRING', isPrinted=debug) - return None - - -def _(text: str, debug: bool = False): - try: - return _TEXT[text] - except: - if debug: - raise KeyError(f'无法找到翻译文本{text}') - else: - log(f'无法找到本地化文本{text}','ERROR') - return '' - - -if __name__ == '__main__': - # 启动语言编辑器 - import tkinter as tk - from tkinter.filedialog import askopenfilename as askfilen - - LANGNAME = _('LANGLOCALNAME') - - - def _changeDefaultLang(): - global _TEXT - global DEFAULTLANGUAGE - - fileName = askfilen(title='选择所翻译的语言文件', initialdir=r'./', - filetypes=[('音·创语言文件', '.lang'), ('所有文件', '*')], - defaultextension='.lang', - initialfile='.lang') - _TEXT = __loadLanguage(fileName) - DEFAULTLANGUAGE = _('LANGKEY') - LANGNAME = _('LANGLOCALNAME') - - orignText = '' - transText = '' - for i, j in _TEXT.items(): - orignText += i + '\n' - transText += j + '\n' - - Origntextbar.insert('end', orignText) - Translatetextbar.insert('end', transText) - - global setlangbutton - setlangbutton['text'] = f'对标语言{LANGNAME}' - - - def _autoSave(event=None): - with open('autosave.tmp.txt', 'w', encoding='utf-8') as f: - f.write(Translatetextbar.get(1.0, 'end')) - print(str(event)) - - - root = tk.Tk() - - root.geometry('600x500') - - root.bind("", _autoSave) - - nowText = '' - - Orignrame = tk.Frame(root, bd=2) - Translaterame = tk.Frame(root, bd=2) - - Orignscrollbar = tk.Scrollbar(Orignrame) - Origntextbar = tk.Text(Orignrame, width=35, height=40) - - Translatetextbar = tk.Text(Translaterame, width=40, height=37, undo=True) - Translatescrollbar = tk.Scrollbar(Translaterame) - - def ctrlZ(): - Translatetextbar.edit_undo() - Translatetextbar.bind("", ctrlZ) - - def ctrlY(): - Translatetextbar.edit_redo() - Translatetextbar.bind("", ctrlY) - - Translatetextbar.bind("", _autoSave) - - tk.Button(Translaterame, text='保存', command=_autoSave).pack(side='bottom', fill='x') - - tk.Label(Orignrame, text='中文原文').pack(side='top') - Origntextbar.pack(side='left', fill='y') - Orignscrollbar.pack(side='left', fill='y') - - setlangbutton = tk.Button(Translaterame, text=f'对标语言{LANGNAME}', command=_changeDefaultLang) - setlangbutton.pack(side='top') - Translatescrollbar.pack(side='right', fill='y') - Translatetextbar.pack(side='right', fill='y') - - Orignscrollbar.config(command=Origntextbar.yview) - Origntextbar.config(yscrollcommand=Orignscrollbar.set) - - Translatescrollbar.config(command=Translatetextbar.yview) - Translatetextbar.config(yscrollcommand=Translatescrollbar.set) - - Orignrame.pack(side='left') - Translaterame.pack(side='right') - - tk.mainloop() diff --git a/languages/zh-CN.lang b/languages/zh-CN.lang deleted file mode 100644 index 1a260fb..0000000 --- a/languages/zh-CN.lang +++ /dev/null @@ -1,16 +0,0 @@ -# 音·创 本地化语言文件 -# 使用 空格 把键与对应文本隔开 -# 使用 井字符 在每一行的开头编写注释 -# 注意!井字符请开头放,切勿含有空格 -# 也切勿在正文结尾放! -LANGKEY zh-CN -LANGCHINESENAME 简体中文 中国大陆 -LANGENGLIFHNAME Simplified Chinese, Chinese Mainland -LANGLOCALNAME 简体中文 中国大陆 -MSCT 音·创 -F音创 音·创 Musicreater -关于 音·创 - 关于 -凌云pairs 凌天之云创新我的世界开发团队\n×\n凌天之云创新计算机应用软件开发团队 -开发者 - 开发人员 - -译者 - 翻译人员 - -确定 确定 \ No newline at end of file diff --git a/languages/zh-ME.lang b/languages/zh-ME.lang deleted file mode 100644 index 614cb97..0000000 --- a/languages/zh-ME.lang +++ /dev/null @@ -1,17 +0,0 @@ -# 音创创喵的 本地化语言文件 -# 使用 空格 把键与对应文本隔开 -# 使用 井字符 在每一行的开头编写注释 -# 注意!井字符请开头放,切勿含有空格 -# 也切勿在正文结尾放! -LANGKEY zh-ME -LANGCHINESENAME 喵喵文 中国大陆 -LANGENGLIFHNAME Meow Catsese, China Mainland -LANGLOCALNAME 喵喵喵~ 祖国喵~ -TRANSLATERS 金羿,Email EillesWan@outlook.com,QQ 2647547478 -MSCT 音创创喵~ -F音创 音·创 Musicreater -关于 音创创喵的主人们 -凌云pairs 凌天之云创新我的世界开发团队\n×\n凌天之云创新计算机应用软件开发团队 -开发者 ~ 主人们 ~ -译者 ~ 爸爸妈妈们 ~ -确定 好哒~ diff --git a/languages/zhCN.py b/languages/zhCN.py deleted file mode 100644 index 8fdbec4..0000000 --- a/languages/zhCN.py +++ /dev/null @@ -1,185 +0,0 @@ -# -*- coding:utf-8 -*- - -# 由金羿翻译工具生成字符串列表 -# 请在所需翻译文件前from 此文件 import READABLETEXT - - -READABLETEXT = { - 'Translator': (("金羿 Eilles 原稿", True),), - # 此处是语言翻译者列表,其中每个元组第一项为显示文本,第二项为此文本是否为开发者名字 - 0: "错误❌", - 1: "提示❗", - 2: "清除log(此句不载入日志)", - 3: "无法清除日志及临时文件", - 4: "已存储", - 5: "新建 音·创 项目", - 6: "请选择旧类型的项目", - 7: "请选择 音·创 项目", - 8: "无法打开文件:{},请查看您是否输入正确", - 9: "音·创 - 关于", - 10: "音·创 Musicreater", - 11: "当前版本:{}", - 12: """凌云我的世界开发团队\n×\n凌云计算机应用软件开发团队""", - 13: "确定", - 14: "请输入音符", - 15: (("- 开发者 -", False), - ("金羿 Eilles", True), ("EillesWan@outlook.com", False), ("QQ 2647547478", False), - ("bgArray “诸葛亮与八卦阵”", True), ("QQ 474037765", False), - ), - # 此处是开发者列表,其中每个元组第一项为显示文本,第二项为此文本是否为开发者名字 - 16: "- 翻译者 -", - # 17:"", - 18: "讨论群: 861684859", - 19: "音·创 - 帮助", - 20: "请选择钢琴声音的音乐文件", - 21: "请选择 MIDI 文件", - 22: "请选择 音符文本 文件", - 23: "获取音符信息", - 24: "音符数据写入{}", - 25: "请选择文件生成的位置", - 26: "请选择文件夹生成的位置", - 27: "请选择.mcpack文件生成的位置", - 28: "坐标信息输入", - 29: "请选择世界文件夹生成的位置", - 30: "请选择函数包生成的位置", - 31: "请选择 .mcfunction 文件", - 32: "请选择需要生成的.bdx文件", - 33: "完成✔", - 34: "输入播放速度", - 35: "创建中", - 36: "请选择世界文件夹所在的位置", - 37: "请确认", - 38: "生成.RyStruct文件", - 39: "失败❌", - 40: "邮件反馈信息输入", - 41: "音·创 - {}", - 42: "执行实体名:{}", - 43: "使用计分板:{}", - 44: "所用的乐器:{}", - 45: "当前音轨名:{}", - 46: "包名:{}", - 47: "音乐标题:{}", - 48: "是否重复:{}", - 49: "玩家选择器:{}", - 50: "修改主设置", - 51: "修改节设置", - 52: "游戏内置乐器如下:请输入英文\n", - 53: "打开音·创项目...", - 54: "打开旧项目...", - 55: "保存项目", - 56: "另存为...", - 57: "退出", - 58: "文件", - 59: "从钢琴MP3导入音轨", - 60: "从midi导入音轨", - 61: "从文本文件导入音轨", - 62: "输入音符至音轨", - 63: "编辑", - 64: "生成文件至...", - 65: "生成函数包至...", - 66: "生成附加包文件至...", - 67: "函数(包)", - 68: "将音乐以方块存储生成地图", - 69: "将音乐以方块存储载入地图…", - 70: "将音乐以指令存储生成地图", - 71: "将音乐以指令存储载入地图…", - 72: "将音乐以音符盒存储生成地图", - 73: "将音乐以音符盒存储载入地图…", - 74: "世界", - 75: "生成符合当前音乐的函数播放器…", - 76: "将选中音轨以指令存储生成.bdx文件…", - 77: "由地图导出至.bdx文件…", - 78: "由地图导出至.RyStruct文件…", - 79: "将函数载入世界…", - 80: "将大函数分割并建立执行链…", - 81: "辅助功能", - 82: "展示生成结果", - 83: "建立位于localhost:8080上的websocket服务器播放选中音轨", - 84: "实验性功能", - 85: "清除日志文件", - 86: "清除早期版本的存储文件", - 87: "帮助", - 88: "关于", - 89: "发送错误日志反馈", - 90: "帮助与疑问", - 91: "音乐总设置(项目设置)", - # =============================================================此处有新增 - 92: "将音乐导出为BDX", - 93: "请输入指令链生成最高相对高度(≥5)", - 94: "您输入的数据有误❌,相对高度请输入一个不小于4的值,请重新输入。", - 95: "结构操作", - 96: "重置项目设置", - 97: "当前音轨设置(段落设置)", - # 98:"", - # 99:"", - # 100:"", - # 101:"", - 102: "删除选中音轨", - # 103:"", - # 104:"", - 105: "找不到或无法读取文件😢:{}", - 106: "您当前的项目已修改但未存储,是否先保存当前项目?", - 107: "项目已经存储至:{}", - 108: ("音·创0.0.X工程文件", "音·创0.1+工程文件", "音·创0.1+TEST工程文件"), - 109: "任意类型", - 110: "函数音创工程文件", - 111: "MMFM0.0.6版本工程文件", - 112: "全部类型", - 113: "钢琴声音的音频文件", - 114: "Midi文件", - 115: "文本文件", - 116: "请输入坐标:", - 117: "您输入的格式有误❌,请重新输入。", - 118: "我的世界指令函数文件", - 119: "请输入执行链生成坐标:", - # 120: "", - 121: "您的函数文件不大于一万条指令,无需进行分割操作。", - 122: "请输入执行链生成相对坐标:", - 123: "FastBuilder结构文件", - 124: "转换结束!\n{}", - 125: "一秒,音乐走几拍?", - 126: "按下确认后,在游戏中使用connect指令连接localhost:8080,即可播放", - 127: "请输入区域选择的开始坐标:", - 128: "请输入区域选择的结束坐标:", - 129: "所选区块导出时是否需要保留空气方块?", - 130: "音·创结构文件", - 131: "文件已生成\n{}", - 132: "文件无法生成\n{}\n{}", - 133: "本功能尚未开发。", - 134: "您的称呼", - 135: "您的联系方式", - 136: "您对问题的描述", - 137: "在程序结束后将清除日志及临时文件信息。", - 138: "在程序结束后将不会清除日志及临时文件信息。", - 139: "修改包名", - 140: "修改音乐标题", - 141: "修改玩家选择器\n注意!要加上中括号“[]”", - 142: "修改本音轨的执行实体名", - 143: "修改本音轨所用的积分板", - 144: "修改本音轨所用乐器", - 145: "您输入的乐器并非游戏内置乐器,是否继续用您输入的字符作为乐器?", - 146: "修改本音轨生成的文件名", - # -----2022.1.25更新 - 147: "生成乐器文件至...", - 148: "从midi导入音轨且用新方法解析", - # 149: "打开 新: 音·创项目...", - # 150: "保存为新项目", - # 151: "另存为新项...", - 152: "(开发调试)关闭本次日志记录", - 153: "生成乐器函数包至...", - 154: "生成乐器函数附加包文件至...", - 155: "生成乐器函数附加包文件,并将神羽资源包以散包形式放置至...", - 156: "[神羽资源包位置选择]:选择文件夹...", - 157: "没有路径文件(.rpposi文件),请仔细阅读Readme或先试用:帮助与疑问->[神羽资源包位置选择]:选择文件夹... 方法添加路径文件吧!", - 158: "有路径文件(.rpposi文件),但路径指示错误,请仔细阅读Readme或先用:帮助与疑问->[神羽资源包位置选择]:选择文件夹... 更改路径!", - 159: "更改路径文件(.rpposi文件)成功!!", - 160: "从midi导入音轨且用类方法解析", - # 161: "打开 类方法: 音·创项目...", - # 162: "保存为类方法项目", - # 163: "另存为类方法项...", - 164: "生成新文件至...", - 165: "生成新函数包至...", - 166: "生成新函数附加包文件至...", - 167: "!!!这个midi文件读取不了,mido解析报错!!!" - -} diff --git a/main.py b/main.py new file mode 100644 index 0000000..9a6783d --- /dev/null +++ b/main.py @@ -0,0 +1,169 @@ +# -*- coding:utf-8 -*- + +import mido +import os +import json +import uuid +import zipfile +import shutil +import zipfile + + + +def makeZip(sourceDir, outFilename, compression=8, exceptFile=None): + """使用compression指定的算法打包目录为zip文件\n + 默认算法为DEFLATED(8),可用算法如下:\n + STORED = 0\n + DEFLATED = 8\n + BZIP2 = 12\n + LZMA = 14\n + """ + zipf = zipfile.ZipFile(outFilename, 'w', compression) + pre_len = len(os.path.dirname(sourceDir)) + for parent, dirnames, filenames in os.walk(sourceDir): + for filename in filenames: + if filename == exceptFile: + continue + pathfile = os.path.join(parent, filename) + arcname = pathfile[pre_len:].strip(os.path.sep) # 相对路径 + zipf.write(pathfile, arcname) + zipf.close() + + + +class midiConvert: + def __init__(self, midiFile: str, outputPath: str): + '''简单的midi转换类,将midi文件转换为我的世界结构或者包''' + self.midiFile = midiFile + '''midi文件路径''' + self.midi = mido.MidiFile(self.midiFile) + '''MidiFile对象''' + self.outputPath = outputPath + '''输出路径''' + # 将self.midiFile的文件名,不含路径且不含后缀存入self.midiFileName + self.midFileName = os.path.splitext(os.path.basename(self.midiFile))[0] + '''文件名,不含路径且不含后缀''' + + + + + def __Inst2SoundID(self,instrumentID, default='note.harp'): + '''返回midi的乐器ID对应的我的世界乐器名 + :param instrumentID: midi的乐器ID + :param default: 如果instrumentID不在范围内,返回的默认我的世界乐器名称 + :return: 我的世界乐器名 str''' + if instrumentID == 105: + return 'note.banjo' + if instrumentID in range(32, 40): + return 'note.bass' + if instrumentID in range(115, 119): + return 'note.basedrum' + if instrumentID == 9 or instrumentID == 14: + return 'note.bell' + if instrumentID == 80 or instrumentID == 81: + return 'note.bit' + if instrumentID == 112: + return 'note.cow_bell' + if instrumentID == -1: + return 'note.didgeridoo' # 这是什么?我看不懂,但我大受震撼 + if instrumentID in range(72, 80): + return 'note.flute' + if instrumentID in range(24, 32): + return 'note.guitar' + if instrumentID == -2: + return 'note.hat' + if instrumentID == 14: + return 'note.chime' + if instrumentID == 8 or instrumentID == 11: + return 'iron_xylophone' + if instrumentID == 2: + return 'note.pling' + if instrumentID == 114: + return 'note.snare' + if instrumentID == 13: + return 'note.xylophone' + return default + + + def _toCmdList_m1(self,scoreboardname : str = 'mscplay',volume:float = 1.0, speed:float = 1.0) -> list: + '''使用Dislink Sforza的转换算法,将midi转换为我的世界命令列表 + :param scoreboardname: 我的世界的计分板名称 + :param volume: 音量,注意:这里的音量范围为(0,1],如果超出将被处理为正确值,其原理为在距离玩家 (1 / volume -1) 的地方播放音频 + :param speed: 速度,注意:这里的速度指的是播放倍率,其原理为在播放音频的时候,每个音符的播放时间除以 speed + :return: 我的世界命令列表''' + tracks = [] + if volume > 1: + volume = 1 + if volume <= 0: + volume = 0.001 + + for i, track in enumerate(self.midi.tracks): + + ticks=0 + commands=0 + instrumentID=0 + singleTrack = [] + + for msg in track: + if msg.is_meta: + if msg.type == 'set_tempo': + tempo=msg.tempo + if msg.type == 'program_change': + instrumentID=msg.program + else: + ticks+=msg.time + if msg.type == 'note_on' and msg.velocity != 0: + singleTrack.append('execute @a[scores={'+scoreboardname+'='+str(round((ticks*tempo)/((self.midi.ticks_per_beat*float(speed))*50000)))+'}'+f'] ~~~ playsound {self.__Inst2SoundID(instrumentID)} @s ~~{1/volume-1}~ {msg.velocity*(0.7 if msg.channel == 0 else 0.9)} {2**((msg.note-66)/12)}') + commands+=1 + + tracks.append(singleTrack) + + return tracks + + def tomcpack(self,method:int = 1,scoreboardname : str = 'mscplay',volume:float = 1.0, speed:float = 1.0) -> bool: + '''使用method指定的转换算法,将midi转换为我的世界mcpack格式的包 + :param method: 转换算法 + :param scoreboardname: 我的世界的计分板名称 + :param volume: 音量,注意:这里的音量范围为(0,1],其原理为在距离玩家 (1 / volume -1) 的地方播放音频 + :param speed: 速度,注意:这里的速度指的是播放倍率,其原理为在播放音频的时候,每个音符的播放时间除以 speed + :return 成功与否,成功返回(True,True),失败返回(False,str失败原因)''' + if method == 1: + cmdlist = self._toCmdList_m1(scoreboardname,volume,speed) + else: + return (False,f'无法找到算法ID{method}对应的转换算法') + + + # 当文件f夹{self.outputPath}/temp/functions存在时清空其下所有项目,若其不存在则创建 + if os.path.exists(f'{self.outputPath}/temp/functions/'): + shutil.rmtree(f'{self.outputPath}/temp/functions/') + os.makedirs(f'{self.outputPath}/temp/functions/mscplay') + + # 写入manifest.json + if not os.path.exists(f'{self.outputPath}/temp/manifest.json'): + with open(f"{self.outputPath}/temp/manifest.json", "w") as f: + f.write("{\n \"format_version\": 1,\n \"header\": {\n \"description\": \"" + self.midFileName + " Pack : behavior pack\",\n \"version\": [ 0, 0, 1 ],\n \"name\": \"" + self.midFileName + "Pack\",\n \"uuid\": \"" + str(uuid.uuid4()) + "\"\n },\n \"modules\": [\n {\n \"description\": \"" + f"the Player of the Music {self.midFileName}" + "\",\n \"type\": \"data\",\n \"version\": [ 0, 0, 1 ],\n \"uuid\": \"" + str(uuid.uuid4()) + "\"\n }\n ]\n}") + else: + with open(f'{self.outputPath}/temp/manifest.json', 'r') as manifest: + data=json.loads(manifest.read()) + data['header']['description']=f"the Player of the Music {self.midFileName}" + data['header']['name']=self.midFileName + data['header']['uuid']=str(uuid.uuid4()) + data['modules'][0]['description']='None' + data['modules'][0]['uuid']=str(uuid.uuid4()) + manifest.close() + open(f'{self.outputPath}/temp/manifest.json','w').write(json.dumps(data)) + + # 将命令列表写入文件 + indexfile = open(f'{self.outputPath}/temp/functions/index.mcfunction', 'w', encoding='utf-8') + for track in cmdlist: + indexfile.write('function mscplay/track'+str(cmdlist.index(track)+1)+'\n') + with open(f'{self.outputPath}/temp/functions/mscplay/track{cmdlist.index(track)+1}.mcfunction','w',encoding='utf-8') as f: + f.write('\n'.join(track)) + indexfile.write('scoreboard players add @a[scores={'+scoreboardname+'=1..}] '+scoreboardname+' 1\n') + indexfile.close() + + makeZip(f'{self.outputPath}/temp/',self.outputPath+f'/{self.midFileName}.mcpack') + + shutil.rmtree(f'{self.outputPath}/temp/') + + \ No newline at end of file diff --git a/msctLib/UI设计图.pdn b/msctLib/UI设计图.pdn deleted file mode 100644 index 6ff3a9c..0000000 Binary files a/msctLib/UI设计图.pdn and /dev/null differ diff --git a/msctLib/UI设计图.png b/msctLib/UI设计图.png deleted file mode 100644 index 9ccf849..0000000 Binary files a/msctLib/UI设计图.png and /dev/null differ diff --git a/msctLib/__init__.py b/msctLib/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/msctLib/__pycache__/__init__.cpython-37.pyc b/msctLib/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index a2a7a65..0000000 Binary files a/msctLib/__pycache__/__init__.cpython-37.pyc and /dev/null differ diff --git a/msctLib/__pycache__/__init__.cpython-38.pyc b/msctLib/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 81572fd..0000000 Binary files a/msctLib/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/msctLib/__pycache__/__init__.cpython-39.pyc b/msctLib/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 033498f..0000000 Binary files a/msctLib/__pycache__/__init__.cpython-39.pyc and /dev/null differ diff --git a/msctLib/__pycache__/data.cpython-38.pyc b/msctLib/__pycache__/data.cpython-38.pyc deleted file mode 100644 index bc038db..0000000 Binary files a/msctLib/__pycache__/data.cpython-38.pyc and /dev/null differ diff --git a/msctLib/__pycache__/display.cpython-38.pyc b/msctLib/__pycache__/display.cpython-38.pyc deleted file mode 100644 index 9fadcc9..0000000 Binary files a/msctLib/__pycache__/display.cpython-38.pyc and /dev/null differ diff --git a/msctLib/__pycache__/function.cpython-38.pyc b/msctLib/__pycache__/function.cpython-38.pyc deleted file mode 100644 index 2987cdb..0000000 Binary files a/msctLib/__pycache__/function.cpython-38.pyc and /dev/null differ diff --git a/msctLib/__pycache__/log.cpython-37.pyc b/msctLib/__pycache__/log.cpython-37.pyc deleted file mode 100644 index 68fedbe..0000000 Binary files a/msctLib/__pycache__/log.cpython-37.pyc and /dev/null differ diff --git a/msctLib/__pycache__/log.cpython-38.pyc b/msctLib/__pycache__/log.cpython-38.pyc deleted file mode 100644 index a7e7571..0000000 Binary files a/msctLib/__pycache__/log.cpython-38.pyc and /dev/null differ diff --git a/msctLib/__pycache__/log.cpython-39.pyc b/msctLib/__pycache__/log.cpython-39.pyc deleted file mode 100644 index 26b6f31..0000000 Binary files a/msctLib/__pycache__/log.cpython-39.pyc and /dev/null differ diff --git a/msctLib/bugExecution.exe b/msctLib/bugExecution.exe deleted file mode 100644 index 99ba600..0000000 Binary files a/msctLib/bugExecution.exe and /dev/null differ diff --git a/msctLib/buildIN.py b/msctLib/buildIN.py deleted file mode 100644 index 3bcf8a8..0000000 --- a/msctLib/buildIN.py +++ /dev/null @@ -1,50 +0,0 @@ -# -*- coding: UTF-8 -*- -"""音·创的核心内置组件功能集合""" - - - -class version: - libraries = ( - 'mido', 'amulet', 'amulet-core', 'amulet-nbt', 'piano_transcription_inference', 'pypinyin', - 'pyinstaller', 'py7zr','websockets', 'torch', 'requests' - ) - """当前所需库""" - - version = ('0.2.0', 'Delta',) - """当前版本""" - - def __init__(self) -> None: - - self.libraries = version.libraries - """当前所需库""" - - self.version = version.version - """当前版本""" - - - def installLibraries(self,index:str = 'https://pypi.tuna.tsinghua.edu.cn/simple'): - """安装全部开发用库""" - from sys import platform - import os - if platform == 'win32': - import shutil - try: - shutil.rmtree(os.getenv('APPDATA') + '\\Musicreater\\') - except FileNotFoundError: - pass - for i in self.libraries: - print("安装库:" + i) - os.system(f"python -m pip install {i} -i {index}") - elif platform == 'linux': - os.system("sudo apt-get install python3-pip") - os.system("sudo apt-get install python3-tk") - os.system("sudo apt-get install python3-tkinter") - for i in self.libraries: - print("安装库:" + i) - os.system(f"sudo python3 -m pip install {i} -i {index}") - - - def __call__(self): - '''直接安装库,顺便返回一下当前版本''' - self.installLibraries() - return self.version diff --git a/msctLib/data.py b/msctLib/data.py deleted file mode 100644 index f22cea4..0000000 --- a/msctLib/data.py +++ /dev/null @@ -1,151 +0,0 @@ -# -*- coding:utf-8 -*- - - -import pickle -import json -from typing import Any, Iterable - - - - -class pickleIO: - - def __init__(self,fileName:str,data: Any = None) -> None: - '''简单的pickle操作功能''' - self.file = fileName - if data: - self._data = data - else: - with open (self.file, 'rb') as f: - self._data = pickle.load(f) - - def __call__(self, *args: Any, **kwds: Any) -> Any: - return self.data - - def write(self): - '''将数据写入pickle''' - with open (self.file, 'wb') as f: - pickle.dump(self._data, f) - - - def load(self) -> Any: - '''从文件读取数据''' - with open (self.file, 'rb') as f: - self._data = pickle.load(f) - return self.data - - @property - def data(self): - '''返回数据值''' - if self._data is None: - raise ValueError('无可用值载入或值为None') - else: - return self._data - - - -class jsonIO: - - def __init__(self,fileName:str,data: Any = None) -> None: - '''简单的json操作功能''' - self.file = fileName - if data: - self._data = data - else: - with open (self.file, 'r', encoding='utf-8') as f: - self._data = json.load(f) - - def __call__(self, *args: Any, **kwds: Any) -> Any: - return self.data - - def write(self): - '''将数据写入json''' - with open (self.file, 'w', encoding='utf-8') as f: - json.dump(self._data, f) - - - def load(self) -> Any: - '''从文件读取数据''' - with open (self.file, 'r', encoding='utf-8') as f: - self._data = json.load(f) - return self.data - - @property - def data(self): - '''返回数据值''' - return self._data - - -class uniteIO: - - def __init__(self,fileName:str,fileType = None,data: Any = None) -> None: - '''简单的文件数据IO操作功能''' - self.filename = fileName - if not fileType is None: - self._type = fileType - else: - try: - with open (self.filename, 'r', encoding='utf-8') as f: - self._type = json - except: - with open (self.file, 'rb') as f: - self._type = pickle - - - - if not data is None: - self._data = data - else: - self._data = self.load() - - - def __call__(self, *args: Any, **kwds: Any) -> Any: - return self.data - - def write(self): - '''将数据写入文件''' - if self._type == json: - self._wfile = open(self.filename, 'w', encoding='utf-8') - elif self._type == pickle: - self._wfile = open(self.file, 'wb') - self._type.dump(self._data, self._wfile) - - - def load(self) -> Any: - '''从文件读取数据''' - if self._type == json: - self._rfile = open(self.filename, 'r', encoding='utf-8') - elif self._type == pickle: - self._rfile = open(self.file, 'rb') - self._data = self._type.load(self._rfile) - return self.data - - @property - def data(self): - '''返回数据值''' - return self._data - - - - - - - - - - - - - - - - - - - - -if __name__ == '__main__': - from sys import argv - - if argv[1]: - input(uniteIO(argv[1]).data) \ No newline at end of file diff --git a/msctLib/display.py b/msctLib/display.py deleted file mode 100644 index fc3710e..0000000 --- a/msctLib/display.py +++ /dev/null @@ -1,326 +0,0 @@ -# -*- coding: utf-8 -*- -'''音·创的GUI窗口界面显示库 -:若要使用其他界面显示,请详见: -:开发说明|指南''' - - -import tkinter as tk -import tkinter.simpledialog as sdialog -import tkinter.filedialog as fdialog -from msctLib.log import log - - -DEFAULTBLUE = (0, 137, 242) -# 0089F2 - -WEAKBLUE = (0, 161, 231) -LIGHTBLUE = (38, 226, 255) -# 26E2FF - -RED = (255, 52, 50) -PURPLE = (171, 112, 255) -GREEN = (0, 255, 33) -WHITE = (242, 244, 246) -BLACK = (18, 17, 16) - - -backgroundColor = WHITE -frontgroundColor = BLACK -loadingColor = DEFAULTBLUE -errorColor = RED -okColor = GREEN -tipsColor = PURPLE - -# 注:UI界面字体、代码字体 -fontPattern = ('DengXian Light', 'Fira Code') - - -class disp: - '''音·创 的基本Tk窗口显示库''' - - def __init__( - self, - root: tk.Tk = tk.Tk(), - debug: bool = False, - title: str = '音·创', - geometry: str = '0x0', - iconbitmap: tuple = ('', ''), - menuWidget: dict = {}, - wordView: str = '音·创 Musicreater', - buttons: list = [], - settingBox: list = [], - notemap: list = [], - infobar:str = '就绪', - ) -> None: - '''使用参数建立基本的 音·创 窗口 - :param root 根窗口 - :param debug 是否将日志输出到控制台 - :param title 窗口标题 - wordview: str #言论部分显示的字样 - button: list = [ # 操作按钮部分 - dict = { - 按钮名称 : tuple(按钮图标,执行函数) - }, - ], - settingbox: list = [ # 设置部分显示的字样及其对应的设置函数 - ( - 设置名称:str, - 值类型:tuple, - 显示内容:str, - 设置操作函数:, - ) - ], - map: list = [ # 一首曲目的音符数据 - 音符数据 - ] - :param infobar 显示信息用 - ''' - - # 载入参量 注意!图标将不被载入参数 - self.__root = root - '''窗口根''' - - self.title = title - '''窗口标题''' - - self.menuWidgets = menuWidget - '''菜单设定项''' - - self.wordView = wordView - '''言·论''' - - self.buttons = buttons - '''快捷功能按钮''' - - self.settingBox = settingBox - '''设置框''' - - self.notemap = notemap - '''音符列表''' - - self.infoBar = infobar - '''信息显示版''' - - - - self.debug = debug - '''是否打开调试模式''' - - self.setTitle() - self.setGeometry(geometry) - self.setIcon(*iconbitmap) - - self.setMenu() - - self.initWidget() - - # ========================================================= - # 设定函数部分 - # ========================================================= - - def setTitle(self) -> None: - '''设置窗口标题''' - self.__root.title = self.title - if self.debug: - log(f"设置窗口标题{self.title}") - - def setGeometry(self,geometry:str = '0x0') -> None: - '''设置窗口大小''' - self.__root.geometry(geometry) - if self.debug: - log(f"设置窗口大小{geometry}") - - def setIcon( - self, bitmap: str = './musicreater.ico', default: str = '' - ) -> None: - '''设置窗口图标 - 注意,default参数仅在Windows下有效,其意为将所有没有图标的窗口设置默认图标 - 如果在非Windows环境使用default参数,一个Error将被升起''' - if not self.debug: - try: - if default: - self.__root.iconbitmap(bitmap, default) - log(f'设置图标为{bitmap},默认为{default}') - else: - self.__root.iconbitmap(bitmap) - log(f'设置图标为{bitmap}') - return True - except Exception as e: - log(str(e), 'ERROR') - return False - else: - self.__root.iconbitmap(bitmap, default) - return - - def setMenu(self) -> None: - '''设置根菜单''' - if not self.menuWidgets: - # 如果传入空参数则返回当前菜单 - try: - return self.RootMenu - except Exception as E: - if self.debug: - raise E - else: - log('无法读取菜单信息', 'WARRING') - # 如果不是空参数则新建菜单 - self.RootMenu = {} - self.mainMenuBar = tk.Menu(self.__root) - for menuName, menuCmd in self.menuWidgets.items(): - # 取得一个菜单名和一堆菜单函数及其显示名称 - menu = tk.Menu(self.mainMenuBar, tearoff=0) - for cmdName, cmdFunc in menuCmd.items(): - if cmdName: - menu.add_command(label=cmdName, command=cmdFunc) - else: - menu.add_separator() - self.mainMenuBar.add_cascade(label=menuName, menu=menu) - self.RootMenu[menuName] = menu - self.__root.config(menu=self.mainMenuBar) - - def addMenu(self, menuRoot: str = '', menuLabel: str = '', menuCommand=None): - '''增加一个菜单项 - :param menuRoot : str - 菜单的根菜单,即所属的菜单上的文字 - :param menuLabel : str - 所需要增加的项目显示的文字 - :param menuCommand : - ''' - if menuRoot in self.RootMenu.keys: - # 如果已经有父菜单 - if menuLabel: - # 增加菜单指令 - self.RootMenu[menuRoot].add_command( - label=menuLabel, command=menuCommand - ) - else: - # 增加分隔栏 - self.RootMenu[menuRoot].add_separator() - else: - # 没有父菜单则新增一个父菜单 - menu = tk.Menu(self.mainMenuBar, tearoff=False) - if menuLabel: - menu.add_command(label=menuLabel, command=menuCommand) - else: - menu.add_separator() - self.mainMenuBar.add_cascade(label=menuRoot, menu=menu) - self.RootMenu[menuRoot] = menu - - def initWidget(self,) -> None: - '''设置窗口小部件,分为: - :言·论 WordView - :快捷按钮面板 ButtonBar - :设置框 SettingBar - :音轨框 TrackBar - :各个音轨的显示框 TrackFrame - :信息显示版 InfoBar - ''' - self._wordviewBar = tk.Label( - self.__root, bg='white', fg='black', text=self.wordView, font=(fontPattern[0], 30) - ) - - self.setWordView(self.wordView) - - def setWordView(self, text: str) -> None: - self._wordviewBar['text'] = text - - - # ========================================================= - # 预置函数部分 - # ========================================================= - - def authorWindowStarter( - authors: tuple = ( - ('金羿', 'Email EillesWan@outlook.com', 'QQ 2647547478'), - ('诸葛亮与八卦阵', 'QQ 474037765'), - ) - ): - '''自定义作者界面''' - from languages.lang import _ - from languages.lang import DEFAULTLANGUAGE - from msctLib.buildIN import version - - authorWindow = tk.Tk() - authorWindow.title(_('关于')) - authorWindow.geometry('550x600') # 像素 - tk.Label(authorWindow, text='', font=('', 15)).pack() - tk.Label(authorWindow, text=_('F音创'), font=('', 35)).pack() - tk.Label( - authorWindow, - text='{} {}'.format(version.version[1] + version.version[0]), - font=('', 15), - ).pack() - # pack 的side可以赋值为LEFT RTGHT TOP BOTTOM - # grid 的row 是列数、column是行排,注意,这是针对空间控件本身大小来的,即是指向当前控件的第几个。 - # place的 x、y是(x,y)坐标 - tk.Label( - authorWindow, - image=tk.PhotoImage(file='./resources/RyounLogo.png'), - width=200, - height=200, - ).pack() - tk.Label(authorWindow, text=_('凌云pairs'), font=('', 20)).pack() - tk.Label(authorWindow, text='', font=('', 15)).pack() - tk.Label(authorWindow, text=_('开发者'), font=('', 15)).pack() - for i in authors: - for j in i: - tk.Label( - authorWindow, - text=j, - font=( - '', - 17 if i.index(j) == 0 else 15, - 'bold' if i.index(j) == 0 else '', - ), - ).pack() - tk.Label(authorWindow, text='', font=('', 5)).pack() - if DEFAULTLANGUAGE != 'zh-CN': - tk.Label(authorWindow, text=_('译者'), font=('', 15)).pack() - for i in _('TRANSLATERS').split(';'): - for j in i.split(','): - tk.Label( - authorWindow, - text=j, - font=( - '', - 17 if i.split(',').index(j) == 0 else 15, - 'bold' if i.split(',').index(j) == 0 else '', - ), - ).pack() - - def exitAboutWindow(): - authorWindow.destroy() - - tk.Button(authorWindow, text=_('确定'), command=exitAboutWindow).pack() - - authorWindow.mainloop() - - -class ProgressBar: - def __init__( - self, - root: tk.Tk = tk.Tk(), - style: tuple = (DEFAULTBLUE, BLACK, WHITE), - type: bool = False, - info: str = '', - debug: bool = False, - ) -> None: - '''建立一个进度条或者加载等待界面 - :param root : tk.Tk - 建立进度条的根窗口 - :param style : tuple - 设置主题颜色,第一个参数为进度条或者等待转圈圈的颜色,第二个参数为前景色,第三个是背景色 - :param type : bool - 类型,为 False 时为进度条,为 True 时为等待板 - :param info : str - 显示的附加信息 - :param debug : bool - 是否输出日志到控制台''' - self.root = root - - -if __name__ == '__mian__': - import os - - os.chdir('../') - disp.authorMenu() diff --git a/msctLib/function.py b/msctLib/function.py deleted file mode 100644 index 88cafaa..0000000 --- a/msctLib/function.py +++ /dev/null @@ -1,6 +0,0 @@ -# -*- coding: utf-8 -*- -'''音·创的内置功能库 -:若要加入其他功能,详见: -:开发说明|指南''' - - diff --git a/msctLib/log.py b/msctLib/log.py deleted file mode 100644 index 3352f13..0000000 --- a/msctLib/log.py +++ /dev/null @@ -1,82 +0,0 @@ -"""音·创的日志消息处理""" -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:0个;语法(一级)错误:9个 - -# 对开发者说的话: -# -# 请不要修改这里的日志,日志是给开发者和专业人士看的 -# 而不是给普通用户看的,因此,没必要使用开发者自己也 -# 不习惯的日志系统,比如说,之前诸葛亮与八卦阵 (bgArray) -# 用了 logging 库来改写我原来的日志支持,但是我反 -# 而找不到我想要的信息了,所以,日志系统给我们开发者 -# 自己看得好就可以了昂,真的别改了。而且,诸葛八卦改 -# 了之后并没有多好,喵喵喵,所以我就换回来了。我知道 -# logging 库比较常用,而且功能也好,但是我们毕竟没 -# 这个必要,就别用那个库了昂,球球了~ -# ——金羿 Eilles -# 2022 03 09 - -# To ALL the developers who will change this part: -# -# Please do NOT change anything in this file! -# The log file is only for developers or -# someone who knows a lot about our program -# to see, but not the common users. So it -# is NOT NECESSARY to use a logging system -# that we do not familiar or we do not like. -# Take bgAray “诸葛亮与八卦阵” as a example, -# he once change this `log.py` into -# logging-library-based log support system. -# But after the change had done, I could NOT -# find useful infomation according to the -# log file... So use this file but not to -# make changes PLEASE!!! I know some libraries -# like logging is usually better than the -# simple system in this file and it is normal -# to use but, I think it is not necessery, -# so PLEASE DO NOT USE OTHER LIBs TO -# OVERWRITE MY LIBRARY, THANKS. -# ——Eilles 金羿 -# 03/09/2022 - - - -import datetime,os - -#载入日志功能 -StrStartTime = str(datetime.datetime.now()).replace(':', '_')[:-7] -'''字符串型的程序开始时间''' - - -def log(info:str = '',level : str = 'INFO', isPrinted:bool = True): - '''将信息连同当前时间载入日志 - :param info : str - 日志信息 - :param level : str['INFO','WARRING','ERROR','CRASH'] - 或 int[ 1, 2, 3, 4 ] - 信息等级 - :param isPrinted : bool - 是否在控制台打印 - - :return bool - 表示是否完成任务''' - - if type(level) == type(1): - level = ['INFO','WARRING','ERROR','CRASH'][level-1] - - try: - - if not os.path.exists('./logs/'): - os.makedirs('./logs/') - - outputinfo = f'{str(datetime.datetime.now())[11:19]}-[{level}] {info}' - - with open('./logs/'+StrStartTime+'.msct.log', 'a',encoding='UTF-8') as f: - f.write(outputinfo+'\n') - - if isPrinted: - print(outputinfo) - - return True - except: - return False diff --git a/msctLib/settings.py b/msctLib/settings.py deleted file mode 100644 index ac9b306..0000000 --- a/msctLib/settings.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding:utf-8 -*- - - -DEFAULTBLUE = (0, 137, 242) -WEAKBLUE = (0, 161, 231) -LIGHTBLUE = (38, 226, 255) -RED = (255, 52, 50) -PURPLE = (171, 112, 255) -GREEN = (0, 255, 33) -WHITE = (242, 244, 246) -BLACK = (18, 17, 16) - -settings = { - 'language' : 'zh-CN', - 'theme' : { - '' : '', - }, -} - -class msctSetting: - def __init__(self,**settings) -> None: - pass - - def __call__(self, **kwds): - pass \ No newline at end of file diff --git a/msctLib/开发说明兼指南.md b/msctLib/开发说明兼指南.md deleted file mode 100644 index 5c51d48..0000000 --- a/msctLib/开发说明兼指南.md +++ /dev/null @@ -1,243 +0,0 @@ -开发说明\|指南 -============== - -此文件旨在使后期欲参与开发之人员减轻其开发负担,同时也为了我们正在开发的人员详细说明功能与用法 -掌握开发指南之后,在调用函数等的过程中将会更加方便 - -文件结构 --------- - -从主文件调用display.py以实现显示,调用functions.py以使用功能 - -functions.py中会调取./addon/目录下的全部功能文件,这些功能文件必须先由./addon/addons.pkl来预先定义好 - -详细说明 --------- - -### msctLib - -用于支持主要功能 - -#### display.py - -1. class disp - - - 参数 - - 1. `**kwgs`对窗口的基础设定 `{ '组件名称' : 函数自设定 }` 例如: - - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ python - { - 'version': '0.0.1', # version指的是当前配置格式的版本 - 'title': "音·创", - 'geometry': '1200x900', - 'iconbitmap': ('./resources/musicreater.ico', './resources/musicreater.ico'), - 'menu' : { #对setMenu有特殊说明 - '文件': { - '新建': , - '打开': , - }, - }, - 'widget': { #对窗口部件又详细说明 - 'wordview':{ - 'text':'言·论', - }, - 'settingbox':{}, #后文详细说明 - 'tracklist':{}, - 'operation':{}, - 'map':{}, - }, - } - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - - - 变量 - - 1. `infoBar` - - 信息显示栏,一个字符串,用于显示一些信息。 - - - 2. `title` - - 窗口标题,字符串 - - - 3. `menuWidgets` - - 对于窗口菜单的设定,其格式如下: - ```python - menuWidgets: dist = { # 菜单项目 - str"菜单名" : dict{ - str"选项名"|None : 选项函数 - }, - ... - } - ``` - - 注: - `菜单名` : `str` 显示在菜单上的字符串 - `选项名` : `str` 显示在菜单选项上的字符串 - `选项函数` : `function` 菜单调取的函数(无返回值,无入参) - 当 `选项名` 的布尔值判定为 `False` 的时候,无论 `选项函数` 为何,皆插入一段分割线,但 `选项函数` 不得为空 - - - 4. `wordView` - - 显示在言论上的文字,字符串 - - - 5. `buttons` - - 快捷功能按钮的列表,列表的元素为字典,字典的键是按钮的名称,值为一个元组,元组中含有两个元素,其中元组的第1个元素为按钮图标,是一个图片的路径;第2个元素为执行的函数,其值应当是一个函数对象。 - - ```python - button: list = [ # 操作按钮部分 - dict{ - str"按钮名称" : tuple( - 按钮图标, - 执行函数 - ) - }, - ... - ], - ``` - - - 6. `settingBox` - - 设置框,用于设置音乐的基本属性,例如词作者,曲作者等,设置格式如下: - - ```python - settingbox: list = [ #设置部分显示的字样及其对应的设置函数 - tuple( - 设置名称:str, - 值类型:tuple, - 显示内容:str, - 设置操作函数:, - ), - ... - ] - ``` - - 其中,值类型可以是如下几个项 - 1. `('str',)` 字符串类型,使用文本框输入数据 - 2. `('bool',)` 布尔类型,使用复选框输入数据 - 3. `('num',最小值:float,最大值:float,步长:float = 1)` 数值类型,使用数值滑动条输入数据 - 4. `('list',列表项:list)` 单选类型,即列表中多选一,使用单选框输入数据 - - 其中,值操作函数需要有一个参数,用于传递用户提供的设置值。 - - - 7. `notemap` - - 音符数据表,用于存储曲谱信息,存储格式如下 - ```python - notemap: list = [ # 音轨列表 - dict{ # 单个音轨 - 'instrument' : str"乐器", - 'velocity' : int 响度, - # 这里理论上需要写一个小节多少个X分音符 - # 以及小节里的都是几分音符 - # 但是这个留给以后来支持 - int 小节编号 : [ # 一个小节 - tuple( # 一个音符 - 时间 : int, - 持续 : int, - 乐器 : str, - 采样 : float, - 响度 : int, - ), - ... - ], - ... - }, - ... - ] - ``` - - 其中,对于每个音符: - 1. 时间 单位:帧 当前音符开始时,距离当前小节开始所经过的帧数 - 2. 持续 单位:帧 当前音符持续的帧数 - 3. 乐器 当前音符使用的乐器,需要在乐器列表中有所注册 - 4. 采样 当前音符在MC的采样音高(不含打击乐器) - 5. 响度 单位:格的-1次方 音符播放源距离播放者的距离的倒数 - - - - 函数 - - 1. `setMenu`对菜单的基础设定 - - ```python - { - 菜单名 : { - 选项名 : 选项函数 - } - } - ``` - - 注: - `菜单名` : `str` 显示在菜单上的字符串 - `选项名` : `str` 显示在菜单选项上的字符串 - `选项函数` : `function` 菜单调取的函数(无返回值,无入参) - 当 `选项名` 的布尔值判定为 `False` 的时候,无论 `选项函数` 为何,皆插入一段分割线,但 `选项函数` 不得为空 - - 2. `setWidget`对窗口部件的放置 - ```python - wordview: dict = { #言论部分显示的字样 - 'text': str = 显示内容, - # ... 即可用 tk.Label 的参数 - }, - button: list = [ - dict = { - 按钮名称 : tuple(按钮图标,执行函数) - }, - ], - settingbox: list = [ #设置部分显示的字样及其对应的设置函数 - ( - 设置名称:str, - 值类型:tuple, - 显示内容:str, - 设置操作函数:, - ) - ], - map: list = [ - 音符数据 - ] - ``` - 注: - - 上文中,值类型可以是如下几个项 - 1. `('str',)` 字符串类型,使用文本框输入数据 - 2. `('bool',)` 布尔类型,使用复选框输入数据 - 3. `('num',最小值:int,最大值:int,步长:int = 1)` 数值类型,使用数值滑动条输入数据 - 4. `('list',列表项:list)` 单选类型,即列表中多选一,使用单选框输入数据 - - 值得注意的是,在kwgs中修改的部件设置,可以在其变量中读取或热修改,对应的变量如下 - - | 参数 | 对应类中的变量 | 变量类型 | 说明 | - |------------|------------------|---------------------------|---------------------| - | wordview | wordview | str | 显示在 言·论 区域的文字 | - | button | button | list[dict{}] | 操作按钮 | - | settingbox | settings | list[ Any ] | 设置项目中的值 | - | tracklist | tracknum | tuple(int,int) | 当前选择到的音轨与音轨总数| - | map | notes | list[ class Note ] | 当前的音符列表 | - - - - - - - -#### ??? - -全曲的设置应该如下: -```python -标题 : str = '无名' -副标题 : str = '' -作曲 : str = '佚名' -作词 : str = '' -歌曲版权信息 : str = '' -# bpm 暂时不需要 - - -``` \ No newline at end of file diff --git a/msctplugin/pluginLoader.py b/msctplugin/pluginLoader.py deleted file mode 100644 index e0163d5..0000000 --- a/msctplugin/pluginLoader.py +++ /dev/null @@ -1,49 +0,0 @@ -# -*- coding: utf-8 -*- -'''此文件为音·创的插件加载程序,为了满足各平台需求,使用的是CLI界面''' - -# W-YI 金羿 -# QQ 2647547478 -# 音·创 开发交流群 861684859 -# Email EillesWan2006@163.com W-YI_DoctorYI@outlook.com EillesWan@outlook.com -# 版权所有 Team-Ryoun 金羿 -# 若需转载或借鉴 请附作者 - - -""" - Copyright 2022 Eilles Wan (金羿) - - Licensed under the Apache License, Version 2.0 (the 'License'); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an 'AS IS' BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -""" - -# 代码写的并非十分的漂亮,还请大佬多多包涵;本软件源代码依照Apache软件协议公开 - - -# 下面为正文 - - -print(""" -音·创 插件管理 -Musicreater PLUGINS Management -""") - - - - - - - - - - - - diff --git a/msctspt/__init__.py b/msctspt/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/msctspt/__pycache__/__init__.cpython-37.pyc b/msctspt/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index 7947236..0000000 Binary files a/msctspt/__pycache__/__init__.cpython-37.pyc and /dev/null differ diff --git a/msctspt/__pycache__/__init__.cpython-38.pyc b/msctspt/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 5a4a934..0000000 Binary files a/msctspt/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/msctspt/__pycache__/__init__.cpython-39.pyc b/msctspt/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index f9a75f1..0000000 Binary files a/msctspt/__pycache__/__init__.cpython-39.pyc and /dev/null differ diff --git a/msctspt/__pycache__/bdxOpera_CP.cpython-38.pyc b/msctspt/__pycache__/bdxOpera_CP.cpython-38.pyc deleted file mode 100644 index ab55042..0000000 Binary files a/msctspt/__pycache__/bdxOpera_CP.cpython-38.pyc and /dev/null differ diff --git a/msctspt/__pycache__/bdxOpera_CP.cpython-39.pyc b/msctspt/__pycache__/bdxOpera_CP.cpython-39.pyc deleted file mode 100644 index 20a1808..0000000 Binary files a/msctspt/__pycache__/bdxOpera_CP.cpython-39.pyc and /dev/null differ diff --git a/msctspt/__pycache__/bugReporter.cpython-37.pyc b/msctspt/__pycache__/bugReporter.cpython-37.pyc deleted file mode 100644 index 93eef16..0000000 Binary files a/msctspt/__pycache__/bugReporter.cpython-37.pyc and /dev/null differ diff --git a/msctspt/__pycache__/bugReporter.cpython-38.pyc b/msctspt/__pycache__/bugReporter.cpython-38.pyc deleted file mode 100644 index cb5547d..0000000 Binary files a/msctspt/__pycache__/bugReporter.cpython-38.pyc and /dev/null differ diff --git a/msctspt/__pycache__/bugReporter.cpython-39.pyc b/msctspt/__pycache__/bugReporter.cpython-39.pyc deleted file mode 100644 index 746c2af..0000000 Binary files a/msctspt/__pycache__/bugReporter.cpython-39.pyc and /dev/null differ diff --git a/msctspt/__pycache__/funcOpera.cpython-38.pyc b/msctspt/__pycache__/funcOpera.cpython-38.pyc deleted file mode 100644 index c131e41..0000000 Binary files a/msctspt/__pycache__/funcOpera.cpython-38.pyc and /dev/null differ diff --git a/msctspt/__pycache__/funcOpera.cpython-39.pyc b/msctspt/__pycache__/funcOpera.cpython-39.pyc deleted file mode 100644 index 6ac59d7..0000000 Binary files a/msctspt/__pycache__/funcOpera.cpython-39.pyc and /dev/null differ diff --git a/msctspt/__pycache__/threadOpera.cpython-37.pyc b/msctspt/__pycache__/threadOpera.cpython-37.pyc deleted file mode 100644 index 4d8a08f..0000000 Binary files a/msctspt/__pycache__/threadOpera.cpython-37.pyc and /dev/null differ diff --git a/msctspt/__pycache__/threadOpera.cpython-38.pyc b/msctspt/__pycache__/threadOpera.cpython-38.pyc deleted file mode 100644 index 61df044..0000000 Binary files a/msctspt/__pycache__/threadOpera.cpython-38.pyc and /dev/null differ diff --git a/msctspt/__pycache__/threadOpera.cpython-39.pyc b/msctspt/__pycache__/threadOpera.cpython-39.pyc deleted file mode 100644 index 81edf5c..0000000 Binary files a/msctspt/__pycache__/threadOpera.cpython-39.pyc and /dev/null differ diff --git a/msctspt/__pycache__/transfer.cpython-38.pyc b/msctspt/__pycache__/transfer.cpython-38.pyc deleted file mode 100644 index 284e02d..0000000 Binary files a/msctspt/__pycache__/transfer.cpython-38.pyc and /dev/null differ diff --git a/msctspt/__pycache__/transfer.cpython-39.pyc b/msctspt/__pycache__/transfer.cpython-39.pyc deleted file mode 100644 index fabe34b..0000000 Binary files a/msctspt/__pycache__/transfer.cpython-39.pyc and /dev/null differ diff --git a/msctspt/__pycache__/values.cpython-38.pyc b/msctspt/__pycache__/values.cpython-38.pyc deleted file mode 100644 index 5c9dc42..0000000 Binary files a/msctspt/__pycache__/values.cpython-38.pyc and /dev/null differ diff --git a/msctspt/bdxOpera_CP.py b/msctspt/bdxOpera_CP.py deleted file mode 100644 index 7f00c39..0000000 --- a/msctspt/bdxOpera_CP.py +++ /dev/null @@ -1,218 +0,0 @@ -import os -import brotli - -'''感谢由 Charlie_Ping “查理平” 带来的bdx转换代码''' - - -class BdxConverter: - __header = "BD@" - __bin_header = b"BDX" - __generator_author = b"&Musicreater" - - keys = { - # x--, x++, addSmallX(-128~127), addX(-32768~32767), addBigX(-2147483648~2147483647) - "x": [b"\x0f", b"\x0e", b"\x1c", b"\x14", b"\x15"], - "y": [b"\x11", b"\x10", b"\x1d", b"\x16", b"\x17"], - "z": [b"\x13", b"\x12", b"\x1e", b"\x18", b"\x19"], - "end": b"\x58", - "isSigned": b"\x5a", - "placeCommandBlockWithData": b"\x1b", - "placeBlock": b"\x07" - } - - def __init__(self, file_path: str, author: str, blocks): - self.author = author - self.blocks = blocks - self.file_path = file_path - self.direction = [0, 0, 0] - self.block_type = self.get_block_type - self.__file = self.create_and_upload_file - - @property - def get_block_type(self): - """ - blocks - [ - { - "direction": [x: int, y: int, z: int], - block_name: str, - particular_value: int, - } - ] - :return: list 给出的所有方块种类名称 - """ - block_type = set() - for block in self.blocks: - block_type.add(block["block_name"]) - block_type = list(block_type) - return block_type - - @property - def create_and_upload_file(self): - """ - 创建一个bdx文件 - :return: 一个文件对象 - """ - _dir = os.path.dirname(self.file_path) - if not os.path.isdir(_dir): - os.makedirs(_dir) - _bytes = self.__bin_header - _bytes += b"\x00" - _bytes += self.author.encode("utf-8") + self.__generator_author - for i in self.block_type: - _bytes += b"\x00\x01" - _bytes += bytes(i, encoding="utf-8") - _bytes += b"\x00" - _bytes += self.upload_blocks() - _bytes += b"X" - with open(self.file_path, "w+") as f: - f.write("BD@") - f.close() - with open(self.file_path, "ab+") as f: - f.write(brotli.compress(_bytes)) - f.close() - return open(self.file_path,'a+') - - def upload_blocks(self): - """ - 计算差值 - 写入移动过程 - 写入方块 - 更新差值 - :return: - """ - _types = b"" - - - for block in self.blocks: - # print(f"当前方块:{block['block_name']}, 位置: {block['direction']}]") - diff = self.move_pointer(self.direction, block["direction"]) - _types += diff - if block["block_name"] in ["command_block", - "chain_command_block", - "repeating_command_block"]: - _types += self.obtain_command_block(block) - else: - _types += self.obtain_universal_block(block) - self.direction = block["direction"] - - - return _types - - def move_pointer(self, direction: list, new_direction): - """ - 给出 两个[x, y, z]坐标,返回pointer的移动过程 - :param direction: 坐标 1 - :param new_direction: 坐标 2 - :return: bytes - """ - _bytes = b"" - for i, sign in enumerate(["x", "y", "z"]): - # print(f"<{sign}> 新-旧={new_direction[i]-direction[i]}") - distance = new_direction[i] - direction[i] - if distance == 0: - # print("距离是0?跳过了") - continue - _bytes += self.obtain_pointer_type(distance, sign) - # print(f"向 {sign} 运动了 {distance} 格子") - return _bytes - - @classmethod - def obtain_pointer_type(cls, num: int, coordinate: str): - """ - - 用于确定辅助玩家以某一数据类型走指定长度 - - -1 -> 0 - 1 -> 1 - [128, 127] -> 2 - [-32768, 32767] -> 3 - [-2147483648, 2147483647] -> 4 - :param num: - :param coordinate: 坐标轴种类,x y 或 z - :return: - """ - if num == 0: - return - pointer = 0 - condition = (num != -1, # byte=0, pointer=1 - num < -1 or num > 1, # byte=1, pointer=2 - num < -128 or num > 127, # byte=2, pointer=3 - num < -32768 or num > 32767, # byte=4, pointer=4 - ) - for i in condition: - if i: - pointer += 1 - pointer_type = cls.keys[coordinate][pointer] - - byte_len = 2 ** (pointer - 2) - if byte_len >= 1: - num_byte = num.to_bytes(byte_len, byteorder="big", signed=True) - return pointer_type + num_byte - return pointer_type - - def obtain_universal_block(self, block): - """ - 给定一个方块, 返回此方块在这个bdx中的id和方块data - :param block: {block_name: str,particular_value: int} - :return: bytes - """ - block_id = b"\x07" + self.block_type.index(block["block_name"]).to_bytes(2, byteorder="big", signed=False) - particular_value = block["particular_value"].to_bytes(2, byteorder="big", signed=False) - block_header = block_id + particular_value - return block_header - - def obtain_command_block(self, block): - """ - 给定一个命令方块,返回命令方块各种数据 - :param block: { - "direction": [x: int, y: int, z: int] - "block_name": str, - "particular_value": int, - "impluse": int, # unsigned_int32 - "command": str, - "customName": str, - "lastOutput": str, # 没特殊要求写个\x00就得了 - "tickdelay": int, # int32 - "executeOnFirstTick": int, # 1 bytes - "trackOutput": int, # 1 bytes - "conditional": int, # 1 bytes - "needRedstone": int # 1 bytes - } - :return: bytes of command_block - """ - - block_id = b"\x1b" + self.block_type.index(block["block_name"]).to_bytes(2, byteorder="big", signed=False) - particular_value = block["particular_value"].to_bytes(2, byteorder="big", signed=False) - block_header = block_id + particular_value - for i in [ - block["impluse"].to_bytes(4, byteorder="big", signed=False), - bytes(block["command"], encoding="utf-8") + b"\x00", - bytes(block["customName"], encoding="utf-8") + b"\x00", - bytes(block["lastOutput"], encoding="utf-8") + b"\x00", - block["tickdelay"].to_bytes(4, byteorder="big", signed=True), - block["executeOnFirstTick"].to_bytes(1, byteorder="big"), - block["trackOutput"].to_bytes(1, byteorder="big"), - block["conditional"].to_bytes(1, byteorder="big"), - block["needRedstone"].to_bytes(1, byteorder="big") - ]: - block_header += i - return block_header - -if __name__ == '__main__': - block = [{"direction": [-1, -1, -1], "block_name": "concrete", "particular_value": 5}, - {"direction": [1, 5, 1], "block_name": "stained_glass", "particular_value": 7}, - {"direction": [2, 4, 1], "block_name": "command_block", "particular_value": 3, - "impluse": 0, - "command": "say A generator test", - "customName": "test", - "lastOutput": "", - "tickdelay": 24, - "executeOnFirstTick": 0, - "trackOutput": 0, - "conditional": 0, - "needRedstone": 1 - }, - {"direction": [3, 4, 1], "block_name": "concrete", "particular_value": 6}, - {"direction": [-123412133, 4, 1], "block_name": "concrete", "particular_value": 7}] - bdx = BdxConverter("./test02.bdx", "Charlie_Ping",block) diff --git a/msctspt/bugReporter.py b/msctspt/bugReporter.py deleted file mode 100644 index 03cf602..0000000 --- a/msctspt/bugReporter.py +++ /dev/null @@ -1,137 +0,0 @@ -# -*- coding: UTF-8 -*- -"""提供错误报告的基本操作及方法 顺便提供版本更新、安装库等功能""" - -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:1个;语法(一级)错误:72个 -import os - - -def makeZip(sourceDir, outFilename, compression=8, exceptFile=None): - import zipfile - """使用compression指定的算法打包目录为zip文件\n - 默认算法为DEFLATED(8),可用算法如下:\n - STORED = 0\n - DEFLATED = 8\n - BZIP2 = 12\n - LZMA = 14\n - """ - zipf = zipfile.ZipFile(outFilename, 'w', compression) - pre_len = len(os.path.dirname(sourceDir)) - for parent, dirnames, filenames in os.walk(sourceDir): - for filename in filenames: - if filename == exceptFile: - continue - print(filename) - pathfile = os.path.join(parent, filename) - arcname = pathfile[pre_len:].strip(os.path.sep) # 相对路径 - zipf.write(pathfile, arcname) - - zipf.close() - del zipf, pre_len - - -# 以上函数节选并修改自 正在攀登的小蜗牛 的博客:https://blog.csdn.net/qq_21127151/article/details/107503942 - - -class report: - """发送报告以及相应的任务处理""" - - def __init__(self, senderName: str = 'Unknown', senderContact: str = 'None', describetion: str = ''): - """:param senderName 发送者名称 - :param senderContact 发送者联系方式 - :param describetion 问题描述""" - self.senderName = senderName - self.senderContact = senderContact - self.describetion = describetion - if not self.senderName: - self.senderName = 'Unknown' - if not self.senderContact: - self.senderContact = 'None' - - def emailReport(self): - """使用E-mail方法发送当前的日志和临时文件等""" - import smtplib - from email.mime.text import MIMEText - from email.mime.multipart import MIMEMultipart - from email.header import Header - from nmcsup.log import log - log("发送错误报告") - import os - log("添加标题与正文") - msg = MIMEMultipart() - # 发送者与接收者显示名称 - msg["From"] = Header(self.senderName, 'utf-8') - msg["To"] = Header("W-YI (QQ2647547478)", 'utf-8') - # 标题 - msg["Subject"] = '音·创 - 来自 ' + self.senderName + ' 的错误报告' - # 正文 - msg.attach( - MIMEText("来自" + self.senderName + "( " + self.senderContact + " )的错误描述:\n" + self.describetion, - 'utf-8')) - log("添加完毕,正在生成压缩包...") - makeZip("./", "Temps&Logs.zip", exceptFile="Temps&Logs.zip") - attafile = MIMEText(str(open("Temps&Logs.zip", 'rb').read()), "base64", 'gb2312') - attafile["Content-Type"] = 'application/octet-stream' - attafile["Content-Disposition"] = 'attachmentfilename="BugReport_from_' + self.senderName + '.zip"' - msg.attach(attafile) - log("完毕,准备发送") - try: - smtp = smtplib.SMTP() - smtp.connect("smtp.163.com") - # smtp.login("RyounDevTeam@163.com","RyounDaiYi99") - # SIQQKQQYCZRVIDFJ是授权密码 - smtp.login("RyounDevTeam@163.com", "SIQQKQQYCZRVIDFJ") - smtp.sendmail("RyounDevTeam@163.com", ["RyounDevTeam@163.com", ], msg.as_string()) - log("错误汇报邮件已发送") - except smtplib.SMTPException as e: - log("错误汇报邮件发送失败:\n" + str(e)) - log("清空内存和临时文件") - del msg, attafile - os.remove("./Temps&Logs.zip") - - -class version: - libraries = ( - 'mido', 'amulet', 'amulet-core', 'amulet-nbt', 'piano_transcription_inference', 'pypinyin', - 'pyinstaller', 'py7zr','websockets', 'torch', 'requests', 'zhdate' - ) - """当前所需库""" - - version = ('0.1.6', 'Delta',) - """当前版本""" - - def __init__(self) -> None: - - self.libraries = version.libraries - """当前所需库""" - - self.version = version.version - """当前版本""" - - - def installLibraries(self,index:str = 'https://pypi.tuna.tsinghua.edu.cn/simple'): - """安装全部开发用库""" - from sys import platform - import os - if platform == 'win32': - import shutil - try: - shutil.rmtree(os.getenv('APPDATA') + '\\Musicreater\\') - except FileNotFoundError: - pass - for i in self.libraries: - print("安装库:" + i) - os.system(f"python -m pip install {i} -i {index}") - elif platform == 'linux': - os.system("sudo apt-get install python3-pip") - os.system("sudo apt-get install python3-tk") - os.system("sudo apt-get install python3-tkinter") - for i in self.libraries: - print("安装库:" + i) - os.system(f"sudo python3 -m pip install {i} -i {index}") - - - def __call__(self): - '''直接安装库,顺便返回一下当前版本''' - self.installLibraries() - return self.version diff --git a/msctspt/funcOpera.py b/msctspt/funcOpera.py deleted file mode 100644 index ef71f6b..0000000 --- a/msctspt/funcOpera.py +++ /dev/null @@ -1,422 +0,0 @@ -# -*- coding: utf-8 -*- -"""音·创 的函数操作和一些其他功能""" -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:0个;语法(一级)错误:91个 - - -from nmcsup.log import log - - -def delPart(Data, starter, ender, includeStart: bool = True, includend: bool = True): - """删除序列从starter物件到ender物件之间的部分\n - includeStart与inclodend分别控制此函数是否包括starter和ender物件所在部分,默认为真\n - starter与ender若为None则默认从首或尾开始""" - try: - if starter is None: - includeStart = True - starter = Data[0] - if ender is None: - includend = True - ender = Data[len(Data) - 1] - if includend: - if includeStart: - return Data[Data.index(starter):len(Data) - Data[len(Data)::-1].index(ender)] - else: - return Data[Data.index(starter) + 1:len(Data) - Data[len(Data)::-1].index(ender)] - else: - if includeStart: - return Data[Data.index(starter):len(Data) - Data[len(Data)::-1].index(ender) - 1] - else: - return Data[Data.index(starter) + 1:len(Data) - Data[len(Data)::-1].index(ender) - 1] - except: - return 0 - - -def keepart(Data, starter, ender, includeStart: bool = True, includend: bool = True): - """保留序列从starter物件到ender物件之间的部分\n - includeStart与inclodend分别控制此函数是否包括starter和ender物件所在部分,默认为真\n - starter与ender若为None则默认从首或尾开始""" - try: - if starter is None: - includeStart = True - starter = Data[0] - if ender is None: - includend = True - ender = Data[len(Data) - 1] - if includend: - if includeStart: - return Data[Data.index(starter):Data.index(ender) + 1] - else: - return Data[Data.index(starter) + 1:Data.index(ender) + 1] - else: - if includeStart: - return Data[Data.index(starter):Data.index(ender)] - else: - return Data[Data.index(starter) + 1:Data.index(ender)] - except: - return 0 - - -def lenFunction(fun) -> int: - """取得函数指令部分长度,即忽略#开头的注释""" - try: - f = 0 - for i in fun: - if i.replace(" ", '')[0] == '#': - f += 1 - return len(fun) - f - except: - return -1 - - -def funSplit(bigFile, maxCmdLen: int = 10000): - """分割bigFile大的函数文件,bigFile需要读入文件流\n - 返回的部分,每行指令皆带有行尾换行符\\n\n - 返回-1为大小低于maxCmdLen最长函数指令长度""" - bigFile = bigFile.readlines() - if lenFunction(bigFile) < maxCmdLen: - return -1 - part = [] - parts = [] - h = 0 - for i in bigFile: - if i.replace(" ", '')[0] == '#': - part.append(i + '\n') - else: - part.append(i + '\n') - h += 1 - if h >= 10000: - parts.append(part) - part = [] - h = 0 - return parts - - -def makeFuncFiles(musicset, path='./'): - """在指定目录下生成函数文件""" - from nmcsup.trans import Note2Cmd - commands = [] - starts = [] - log("=========================正在在此处生成文件:" + path) - maxlen = -1 - for i in range(len(musicset['musics'])): - log('写入第' + str(i) + '个数据') - commands.append("scoreboard players add @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\"] " + - musicset['musics'][i]['set']['ScoreboardName'] + " 1\n") - commands.append("execute @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\",scores={" + - musicset['musics'][i]['set']['ScoreboardName'] + "=1..10}] ~~~ title @a" + musicset['mainset'][ - 'PlayerSelect'] + " title " + musicset['mainset']['MusicTitle'] + "\n") - commands.append("execute @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\",scores={" + - musicset['musics'][i]['set']['ScoreboardName'] + "=1..10}] ~~~ title @a" + musicset['mainset'][ - 'PlayerSelect'] + " subtitle 本函数乐曲由§b§l凌云§r§3函数音乐创建§r生成\n") - if len(musicset['musics'][i]['notes']) > maxlen: - maxlen = len(musicset['musics'][i]['notes']) - starts.append("scoreboard objectives add " + musicset['musics'][i]['set']['ScoreboardName'] + " dummy\n") - starts.append("summon armor_stand " + musicset['musics'][i]['set']['EntityName'] + '\n') - with open(path + musicset['mainset']['MusicTitle'] + '_Part' + str(i) + '.mcfunction', 'w', - encoding='UTF-8') as f: - f.writelines(Note2Cmd(musicset['musics'][i]['notes'], musicset['musics'][i]['set']['ScoreboardName'], - musicset['musics'][i]['set']['Instrument'], musicset['mainset']['PlayerSelect'], - True)) - if musicset['mainset']['IsRepeat']: - log("增加重复语句") - for i in range(len(musicset['musics'])): - commands.append("execute @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\",scores={" + - musicset['musics'][i]['set']['ScoreboardName'] + "=" + str( - (maxlen + 2) * 10) + "}] ~~~ scoreboard players set @e[name=\"" + musicset['musics'][i]['set'][ - 'EntityName'] + "\"] " + musicset['musics'][i]['set']['ScoreboardName'] + " -1\n") - log("增加版权语句") - commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿)\n") - starts.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿)\n") - log("写入支持文件") - with open(path + musicset['mainset']['MusicTitle'] + '_Support.mcfunction', 'w', encoding='UTF-8') as f: - f.writelines(commands) - log("写入开始文件") - with open(path + 'Start_' + musicset['mainset']['MusicTitle'] + '.mcfunction', 'w', encoding='UTF-8') as f: - f.writelines(starts) - del commands, starts, maxlen - log("完成============================") - - - - - - - - - - - - - - - - -def makeFunDir(musicset, path='./'): - """在指定目录下生成函数包文件夹""" - import os - import uuid - log("=============================生成函数包文件夹") - # note,packname="Ryoun",FileName="Music",EntityName_='music_support',ScoreboardName_='music_support', - # MusicTitle_='Noname',PlayerSelect_='',Repeat_=False,Instrument_='harp' - try: - os.makedirs(path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/functions") - log("已创建目录" + path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/functions") - except FileExistsError: - log("目录已有无需创建") - pass - # 判断文件皆存在 - if not (os.path.exists( - path + musicset['mainset']['PackName'] + "Pack/world_behavior_packs.json") and os.path.exists( - path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/manifest.json")): - log("创建manifest.json以及world_behavior_packs.json") - behaviorUuid = uuid.uuid4() - with open(path + musicset['mainset']['PackName'] + "Pack/world_behavior_packs.json", "w") as f: - f.write("[\n {\"pack_id\": \"" + str(behaviorUuid) + "\",\n \"version\": [ 0, 0, 1 ]}\n]") - p = path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset']['PackName'] + \ - "/manifest.json" - with open(p, "w") as f: - f.write("{\n \"format_version\": 1,\n \"header\": {\n \"description\": \"" + musicset['mainset'][ - 'PackName'] + " Pack : behavior pack\",\n \"version\": [ 0, 0, 1 ],\n \"name\": \"" + - musicset['mainset']['PackName'] + "Pack\",\n \"uuid\": \"" + str( - behaviorUuid) + "\"\n },\n \"modules\": [\n {\n \"description\": \"" + musicset['mainset'][ - 'PackName'] + " Pack : behavior pack\",\n \"type\": \"data\",\n \"version\":" - " [ 0, 0, 1 ],\n \"uuid\": \"" + str( - uuid.uuid4()) + "\"\n }\n ]\n}") - makeFuncFiles(musicset, path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/functions/") - log("完成============================") - - - - - - - - - -def makeNewFuncFiles(musicset, path='./', isProsess:bool = False): - """在指定目录下生成函数文件""" - from msctspt.transfer import newList_conversion_SinglePlayer - commands = [] - starts = [] - starts.__len__() - starts.append("scoreboard objectives add " + musicset['musics'][0]['set']['ScoreboardName'] + " dummy\n") - # starts.append("summon armor_stand " + musicset['musics'][0]['set']['EntityName'] + '\n') - # starts.append("scoreboard objectives setdisplay sidebar " + musicset['musics'][0]['set']['ScoreboardName'] + '\n') - # starts.append("scoreboard players set @e[type=armor_stand, name=\"" + musicset['musics'][0]['set']['EntityName'] +"\"] " + musicset['musics'][0]['set']['ScoreboardName'] + " 0" + '\n') - - log("=========================正在在此处生成文件:" + path) - - # commands.append("scoreboard players add @e[name=\"" + musicset['musics'][0]['set']['EntityName'] + "\"] " + musicset['musics'][0]['set']['ScoreboardName'] + " 1\n") - maxlen = -1 - for i in range(len(musicset['musics'])): - log('写入第' + str(i) + '个数据') - - if len(musicset['musics'][i]['notes']) > maxlen: - maxlen = len(musicset['musics'][i]['notes']) - with open(path + musicset['mainset']['MusicTitle'] + '_Part' + str(i) + '.mcfunction', 'w', - encoding='UTF-8') as f: - f.writelines(newList_conversion_SinglePlayer(musicset['musics'][i]['notes'], - musicset['musics'][i]['set']['ScoreboardName'], - musicset['musics'][i]['set']['Instrument'])) - if musicset['mainset']['IsRepeat']: - log("增加重复语句") - for i in range(len(musicset['musics'])): - commands.append("execute @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\",scores={" + - musicset['musics'][i]['set']['ScoreboardName'] + "=" + str( - (maxlen + 2) * 10) + "}] ~~~ scoreboard players set @e[name=\"" + musicset['musics'][i]['set'][ - 'EntityName'] + "\"] " + musicset['musics'][i]['set']['ScoreboardName'] + " -1\n") - log("增加版权语句") - commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿),bgArray(诸葛亮与八卦阵)\n") - starts.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿),bgArray(诸葛亮与八卦阵)\n") - log("写入支持文件") - with open(path + musicset['mainset']['MusicTitle'] + '_Support.mcfunction', 'w', encoding='UTF-8') as f: - f.writelines(commands) - log("写入开始文件") - with open(path + 'Start_' + musicset['mainset']['MusicTitle'] + '.mcfunction', 'w', encoding='UTF-8') as f: - f.writelines(starts) - del commands, starts, maxlen - log("完成============================") - - - - - - - - - - - - - - - -def makeNewFunDir(musicset, path='./'): - """在指定目录下生成函数包文件夹""" - import os - import uuid - log("=============================生成函数包文件夹") - # note,packname="Ryoun",FileName="Music",EntityName_='music_support',ScoreboardName_='music_support', - # MusicTitle_='Noname',PlayerSelect_='',Repeat_=False,Instrument_='harp' - try: - os.makedirs(path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/functions") - log("已创建目录" + path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/functions") - except FileExistsError: - log("目录已有无需创建") - pass - # 判断文件皆存在 - if not (os.path.exists( - path + musicset['mainset']['PackName'] + "Pack/world_behavior_packs.json") and os.path.exists( - path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/manifest.json")): - log("创建manifest.json以及world_behavior_packs.json") - behaviorUuid = uuid.uuid4() - with open(path + musicset['mainset']['PackName'] + "Pack/world_behavior_packs.json", "w") as f: - f.write("[\n {\"pack_id\": \"" + str(behaviorUuid) + "\",\n \"version\": [ 0, 0, 1 ]}\n]") - p = path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset']['PackName'] + \ - "/manifest.json" - with open(p, "w") as f: - f.write("{\n \"format_version\": 1,\n \"header\": {\n \"description\": \"" + musicset['mainset'][ - 'PackName'] + " Pack : behavior pack\",\n \"version\": [ 0, 0, 1 ],\n \"name\": \"" + - musicset['mainset']['PackName'] + "Pack\",\n \"uuid\": \"" + str( - behaviorUuid) + "\"\n },\n \"modules\": [\n {\n \"description\": \"" + musicset['mainset'][ - 'PackName'] + " Pack : behavior pack\",\n \"type\": \"data\",\n \"version\":" - " [ 0, 0, 1 ],\n \"uuid\": \"" + str( - uuid.uuid4()) + "\"\n }\n ]\n}") - makeNewFuncFiles(musicset, path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/functions/") - log("完成============================") - - -def makeClassFuncFiles(musicset, path='./'): - """在指定目录下生成函数文件""" - from msctspt.transfer import classList_conversion_SinglePlayer - commands = [] - starts = [] - starts.__len__() - starts.append("scoreboard objectives add " + musicset['musics'][0]['set']['ScoreboardName'] + " dummy\n") - starts.append("summon armor_stand " + musicset['musics'][0]['set']['EntityName'] + '\n') - starts.append("scoreboard objectives setdisplay sidebar " + musicset['musics'][0]['set']['ScoreboardName'] + '\n') - starts.append("scoreboard players set @e[type=armor_stand, name=\"" + musicset['musics'][0]['set']['EntityName'] + - "\"] " + musicset['musics'][0]['set']['ScoreboardName'] + " 0" + '\n') - log("=========================正在在此处生成文件:" + path) - commands.append("scoreboard players add @e[name=\"" + musicset['musics'][0]['set']['EntityName'] + "\"] " + - musicset['musics'][0]['set']['ScoreboardName'] + " 1\n") - maxlen = -1 - for i in range(len(musicset['musics'])): - log('写入第' + str(i) + '个数据') - # commands.append("execute @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\",scores={" + - # musicset['musics'][i]['set']['ScoreboardName'] + "=1..10}] ~~~ title @a" + musicset['mainset'] - # [ - # 'PlayerSelect'] + " title " + musicset['mainset']['MusicTitle'] + "\n") - # commands.append("execute @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\",scores={" + - # musicset['musics'][i]['set']['ScoreboardName'] + "=1..10}] ~~~ title @a" + musicset['mainset'] - # [ - # 'PlayerSelect'] + " subtitle 本函数乐曲由§b§l凌云§r§3函数音乐创建§r生成\n") - if len(musicset['musics'][i]['notes']) > maxlen: - maxlen = len(musicset['musics'][i]['notes']) - with open(path + musicset['mainset']['MusicTitle'] + '_Part' + str(i) + '.mcfunction', 'w', - encoding='UTF-8') as f: - f.writelines(classList_conversion_SinglePlayer(musicset['musics'][i]['notes'], - musicset['musics'][i]['set']['ScoreboardName'], - musicset['mainset']['PlayerSelect'], - True)) - if musicset['mainset']['IsRepeat']: - log("增加重复语句") - for i in range(len(musicset['musics'])): - commands.append("execute @e[name=\"" + musicset['musics'][i]['set']['EntityName'] + "\",scores={" + - musicset['musics'][i]['set']['ScoreboardName'] + "=" + str( - (maxlen + 2) * 10) + "}] ~~~ scoreboard players set @e[name=\"" + musicset['musics'][i]['set'][ - 'EntityName'] + "\"] " + musicset['musics'][i]['set']['ScoreboardName'] + " -1\n") - log("增加版权语句") - commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿),bgArray(诸葛亮与八卦阵)\n") - starts.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿),bgArray(诸葛亮与八卦阵)\n") - log("写入支持文件") - with open(path + musicset['mainset']['MusicTitle'] + '_Support.mcfunction', 'w', encoding='UTF-8') as f: - f.writelines(commands) - log("写入开始文件") - with open(path + 'Start_' + musicset['mainset']['MusicTitle'] + '.mcfunction', 'w', encoding='UTF-8') as f: - f.writelines(starts) - del commands, starts, maxlen - log("完成============================") - - -def makeClassFunDir(musicset, path='./'): - """在指定目录下生成函数包文件夹""" - import os - import uuid - log("=============================生成函数包文件夹") - # note,packname="Ryoun",FileName="Music",EntityName_='music_support',ScoreboardName_='music_support', - # MusicTitle_='Noname',PlayerSelect_='',Repeat_=False,Instrument_='harp' - try: - os.makedirs(path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/functions") - log("已创建目录" + path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/functions") - except FileExistsError: - log("目录已有无需创建") - pass - # 判断文件皆存在 - if not (os.path.exists( - path + musicset['mainset']['PackName'] + "Pack/world_behavior_packs.json") and os.path.exists( - path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/manifest.json")): - log("创建manifest.json以及world_behavior_packs.json") - behaviorUuid = uuid.uuid4() - with open(path + musicset['mainset']['PackName'] + "Pack/world_behavior_packs.json", "w") as f: - f.write("[\n {\"pack_id\": \"" + str(behaviorUuid) + "\",\n \"version\": [ 0, 0, 1 ]}\n]") - p = path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset']['PackName'] + \ - "/manifest.json" - with open(p, "w") as f: - f.write("{\n \"format_version\": 1,\n \"header\": {\n \"description\": \"" + musicset['mainset'][ - 'PackName'] + " Pack : behavior pack\",\n \"version\": [ 0, 0, 1 ],\n \"name\": \"" + - musicset['mainset']['PackName'] + "Pack\",\n \"uuid\": \"" + str( - behaviorUuid) + "\"\n },\n \"modules\": [\n {\n \"description\": \"" + musicset['mainset'][ - 'PackName'] + " Pack : behavior pack\",\n \"type\": \"data\",\n \"version\":" - " [ 0, 0, 1 ],\n \"uuid\": \"" + str( - uuid.uuid4()) + "\"\n }\n ]\n}") - makeClassFuncFiles(musicset, path + musicset['mainset']['PackName'] + "Pack/behavior_packs/" + musicset['mainset'][ - 'PackName'] + "/functions/") - log("完成============================") - - -""" -这里是往事,用于记载一些用不到的功能 - -#存在于 Musicreater.py 播放(试听)音乐 -def PlayNote(Notes, t=480): # Notes是音符列表,t是一拍占有的毫秒数 - tkinter.messagebox.showinfo(title='提示!', message="播放发音不一定标准\n说不定还会坏音响/(ㄒoㄒ)/~~qwq\n请注意。") - import winsound - import time - from nmcsup.trans import mcnote2freq - Notes = mcnote2freq(Notes) - for frequency, duration in Notes: - log("播放:"+str([int(frequency), int(duration*t)])) - if int(frequency) != 0: - winsound.Beep(int(frequency), int(duration*t)) - elif int(frequency) == 0: - time.sleep(duration*t/1000) - -#同上,执行播放命令 -def PlayOne(): - log("试听") - tkinter.messagebox.showwarning(title="警告⚠", message="试听音质可能引起您的不适,更可能引起您的扬声器的不适,请酌情播放。") - global NowMusic - PlayNote(dataset[0]['musics'][NowMusic]['notes']) - - - -#同上,是早期 MinecraftMusicFunctionMaker.py (函数音创)的代码转移至音·创时的注解 -n2c(dataset[0]['musics'][i]['notes'],EntityName=dataset[0]['musics'][i]['set']['EntityName'],ScoreboardName=dataset[0][' -musics'][i]['set']['ScoreboardName'],PlayerSelect=dataset[0]['mainset']['PlayerSelect'],Instrument=dataset[0]['musics'] -i]['set']["Instrument"]) - - -""" diff --git a/msctspt/threadOpera.py b/msctspt/threadOpera.py deleted file mode 100644 index f18f14c..0000000 --- a/msctspt/threadOpera.py +++ /dev/null @@ -1,27 +0,0 @@ - - - -import threading - - -class NewThread(threading.Thread): - '''新建一个进程来运行函数,函数运行完毕后可以使用.getResult方法获取其返回值''' - def __init__(self, func, args=()): - super(NewThread, self).__init__() - self.func = func - self.args = args - self.result = None - - def run(self): - self.result = self.func(*self.args) - - def getResult(self): - threading.Thread.join(self) # 等待线程执行完毕 - return self.result - -# -# ———————————————— -# 版权声明:上面的类NewThread修改自CSDN博主「星火燎愿」的原创文章中的内容,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 -# 原文链接:https://blog.csdn.net/xpt211314/article/details/109543014 -# ———————————————— -# \ No newline at end of file diff --git a/msctspt/transfer.py b/msctspt/transfer.py deleted file mode 100644 index 28df32c..0000000 --- a/msctspt/transfer.py +++ /dev/null @@ -1,566 +0,0 @@ -"""音·创 的转换工具库""" - -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:4个--未解决1个;语法(一级)错误:302个 - - -# 可序列化对象,即可迭代对象 -from typing import Iterable - -import amulet - -from amulet.api.block import Block -from amulet.utils.world_utils import block_coords_to_chunk_coords as bc2cc -from amulet_nbt import TAG_String as ts -from msctLib.log import log - - -def hans2pinyin(hans, style=3): - """将汉字字符串转化为拼音字符串""" - from pypinyin import lazy_pinyin - result = lazy_pinyin(hans=hans, style=style) - final = '' - for i in result: - final += i - return final - - -def classList_conversion_SinglePlayer(List: list, ScoreboardName: str, playerSelection: str = '', - isProsess: bool = False) -> list: - from bgArrayLib.compute import round_up - from bgArrayLib.pitchStrConstant import pitch - from bgArrayLib.instrumentConstant import instrument_list - commands = [] - length = len(List) - j = 1 - for k in range(len(List)): - i = List[k][0] - try: - commands.append( - f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}=" - f"{str(round_up(i.time_position)).replace('.0', '')}}}] ~ ~{127 - i.velocity} " - f"~ playsound note.{instrument_list.get(str(i.instrument))} @s ~ ~ ~ " - f"1000 {pitch.get(str(i.pitch))} 1000\n") - if isProsess: - commands.append( - f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}=" - f"{str(round_up(i.time_position)).replace('.0', '')}}}] ~ ~ ~ " - f"title @s actionbar §e▶ 播放中: §a{j}/{length} || {int(j / length * 1000) / 10}\n") - j += 1 - except Exception: - pass - # a += List[i][1] - # commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿)\n") - return commands - - -def newList_conversion_SinglePlayer(List: list, ScoreboardName: str, playerSelection: str = '', - isProsess: bool = False) -> list: - from bgArrayLib.compute import round_up - commands = [] - length = len(List) - j = 1 - print(List) - for k in range(len(List)): - i = List[k][0] - print(i) - print(type(i)) - try: - if i.instrument > 119: - pass - else: - commands.append( - f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}=" - f"{str(round_up(i.time_position)).replace('.0', '')}}}] ~ ~{127 - i.velocity} " - f"~ playsound {i.instrument}{i.CD}.{i.pitch} @s ~ ~ ~ 1000 1.0 1000\n") - if isProsess: - commands.append( - f"execute @a{playerSelection} ~ ~ ~ execute @s[scores={{{ScoreboardName}=" - f"{str(round_up(i.time_position)).replace('.0', '')}}}] ~ ~ ~ " - f"title @s actionbar §e▶ 播放中: §a{j}/{length} || {int(j / length * 1000) / 10}\n") - j += 1 - except: - pass - # a += List[i][1] - # commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿)\n") - print(commands) - return commands - - -def classList_conversion(List: list, ScoreboardName: str, isProsess: bool = False) -> list: - from bgArrayLib.compute import round_up - commands = [] - length = len(List) - j = 1 - print(List) - for k in range(len(List)): - i = List[k][0] - print(i) - print(type(i)) - try: - if i.instrument > 119: - pass - else: - commands.append("execute @e[scores={" + - ScoreboardName + "=" + str(round_up(i.time_position)).replace(".0", "") + "}] ~ ~" + - str(127 - i.velocity) + - " ~ playsound " + - str(i.instrument) + - str(i.CD) + "." + - str(i.pitch) - + " @a ~ ~ ~ 1000 1.0 1000\n") - if isProsess: - commands.append("execute @a"" ~ ~ ~ execute @s[scores={" + ScoreboardName + "=" + - str(round_up(i.time_position)).replace(".0", "") + - "}] ~ ~ ~ title @s actionbar §e▶ 播放中: §a" + - str(j) + "/" + str(length) + " || " + str(int(j / length * 1000) / 10) + "\n") - j += 1 - except AttributeError: - pass - # a += List[i][1] - # commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿)\n") - print(commands) - return commands - - -def formCmdBlock(direction: Iterable, command: str, particularValue: int, impluse: int = 0, condition: bool = False, - needRedstone: bool = True, tickDelay: int = 0, customName: str = '', lastOutput: str = '', - executeOnFirstTick: bool = False, trackOutput: bool = True): - """ - 使用指定项目返回指定的指令方块格式字典 - :param direction: `list[x: int, y: int, z: int]` - 方块位置 - :param command: `str` - 指令 - :param particularValue: - 方块特殊值,即朝向 - :0 下 无条件 - :1 上 无条件 - :2 z轴负方向 无条件 - :3 z轴正方向 无条件 - :4 x轴负方向 无条件 - :5 x轴正方向 无条件 - :6 下 无条件 - :7 下 无条件 - - :8 下 有条件 - :9 上 有条件 - :10 z轴负方向 有条件 - :11 z轴正方向 有条件 - :12 x轴负方向 有条件 - :13 x轴正方向 有条件 - :14 下 有条件 - :14 下 有条件 - 注意!此处特殊值中的条件会被下面condition参数覆写 - :param impluse: `int 0|1|2` - 方块类型 - 0脉冲 1循环 2连锁 - :param condition: `bool` - 是否有条件 - :param needRedstone: `bool` - 是否需要红石 - :param tickDelay: `int` - 执行延时 - :param customName: `str` - 悬浮字 - :param lastOutput: `str` - 上次输出字符串,注意此处需要留空 - :param executeOnFirstTick: `bool` - 执行第一个已选项(循环指令方块是否激活后立即执行,若为False,则从激活时起延迟后第一次执行) - :param trackOutput: `bool` - 是否输出 - - :return: 指令方块字典结构,如下 - """ - ''' - :param block: { - "direction": [x: int, y: int, z: int] #方块位置 - "block_name": str, #方块名称(无需指定,默认为command_block) - "particular_value": int, #方块特殊值 - "impluse": int, #方块类型0脉冲 1循环 2连锁 unsigned_int32 - "command": str, #指令 - "customName": str, #悬浮字 - "lastOutput": str, #上次输出 - "tickdelay": int, #方块延时 int32 - "executeOnFirstTick": int, #执行第一个选项 1 bytes - "trackOutput": int, #是否输出 1 bytes - "conditional": int, #是否有条件 1 bytes - "needRedstone": int #是否需要红石 1 bytes - } - ''' - return {"direction": direction, - "block_name": "command_block", - "particular_value": particularValue, - "impluse": impluse, - "command": command, - "customName": customName, - "lastOutput": lastOutput, - "tickdelay": tickDelay, - "executeOnFirstTick": executeOnFirstTick, - "trackOutput": trackOutput, - "conditional": condition, - "needRedstone": needRedstone - } - - -def note2bdx(filePath: str, dire: list, Notes: list, ScoreboardName: str, Instrument: str, - PlayerSelect: str = '', isProsess: bool = False, height: int = 200): - """使用方法同Note2Cmd - :param 参数说明: - filePath: 生成.bdx文件的位置 - dire: 指令方块在地图中生成的起始位置(相对位置) - Notes: 以 list[ list[ float我的世界playsound指令音调 , float延续时常(单位s) ] ] 格式存储的音符列表 - 例如Musicreater.py的(dataset[0]['musics'][NowMusic]['notes']) - ScoreboardName: 用于执行的计分板名称 - Instrument: 播放的乐器 - PlayerSelect: 执行的玩家选择器 - isProsess: 是否显示进度条(会很卡) - height: 生成结构的最高高度 - :return 返回一个BdxConverter类,同时在指定位置生成.bdx文件""" - - from nmcsup.trans import Note2Cmd - from msctspt.bdxOpera_CP import BdxConverter - cmd = Note2Cmd(Notes, ScoreboardName, Instrument, PlayerSelect, isProsess) - cdl = [] - - for i in cmd: - if '#' in i: - if (i[:i.index('#')].replace(' ', '') != '\n') and (i[:i.index('#')].replace(' ', '') != ''): - cdl.append(i[:i.index('#')]) - else: - cdl.append(i) - i = 0 - down = False - blocks = [formCmdBlock(dire, cdl.pop(0), 1, 1)] - dire[1] += 1 - for j in cdl: - if dire[1] + i > height: - dire[0] += 1 - i = 0 - down = not down - if dire[1] + i == height: - blocks.append(formCmdBlock([dire[0], dire[1] + i, dire[2]], j, 5, 2, False, False)) - else: - if down: - blocks.append(formCmdBlock([dire[0], dire[1] + i, dire[2]], j, 0, 2, False, False)) - else: - blocks.append(formCmdBlock([dire[0], dire[1] + i, dire[2]], j, 1, 2, False, False)) - i += 1 - del i, cdl, down, cmd - return BdxConverter(filePath, 'Build by RyounMusicreater', blocks) - - - -def music2cmdBlocks(direction: Iterable, music: dict, isProsess: bool = False, height: int = 200, - isSquare: bool = False): - """使用方法同Note2Cmd - :param 参数说明: - filePath: 生成.bdx文件的位置 - dire: 指令方块在地图中生成的起始位置(相对位置) - music: 详见 Musicreater.py - dataset[0] - isProsess: 是否显示进度条(会很卡) - height: 生成结构的最高高度 - isSquare: 生成的结构是否需要遵循生成正方形原则 - :return 返回一个列表,其中包含了音乐生成的所有的指令方块数据""" - from msctspt.threadOpera import NewThread - - - allblocks = [] - '''需要放置的方块''' - baseDire = direction - - direction = list(direction) - - def trackDealing(direction,track): - blocks = [] - cmdList = classList_conversion_SinglePlayer(track['notes'], track['set']['ScoreboardName'], - music['mainset']['PlayerSelect'], isProsess) - if len(cmdList) == 0: - return [] - elif cmdList is []: - return [] - dire = direction - down = False - '''当前是否为向下的阶段?''' - # 开头的指令方块 - blocks.append(formCmdBlock(dire, - f"scoreboard players add @a{music['mainset']['PlayerSelect']} " - f"{track['set']['ScoreboardName']} 1", - 1, 1)) - dire[1] += 1 - blocks.append(formCmdBlock(dire, cmdList.pop(0), 2, needRedstone=False)) - dire[1] += 1 - # :0 下 无条件 - # :1 上 无条件 - # :2 z轴负方向 无条件 - # :3 z轴正方向 无条件 - # :4 x轴负方向 无条件 - # :5 x轴正方向 无条件 - for cmd in cmdList: - blocks.append(formCmdBlock(dire, cmd, 5 if (down is False and dire[1] == height + direction[1]) or ( - down and dire[1] == direction + 1) else 0 if down else 1, 2, needRedstone=False)) - if down: - if dire[1] > direction[1] + 1: - dire[1] -= 1 - else: - if dire[1] < height + direction[1]: - dire[1] += 1 - - if (down is False and dire[1] == height + direction[1]) or (down and dire[1] == direction + 1): - down = not down - dire[0] += 1 - return blocks - - threads = [] - for track in music['musics']: - threads.append(NewThread(trackDealing,(direction,track))) - threads[-1].start() - direction[2] += 2 - - for th in threads: - allblocks += th.getResult() - - return allblocks - - - - - - - - - - - -def music2BDX(filePath: str, direction: Iterable, music: dict, isProsess: bool = False, height: int = 200, - isSquare: bool = False): - """使用方法同Note2Cmd - :param 参数说明: - filePath: 生成.bdx文件的位置 - dire: 指令方块在地图中生成的起始位置(相对位置) - music: 详见 Musicreater.py - dataset[0] - isProsess: 是否显示进度条(会很卡) - height: 生成结构的最高高度 - isSquare: 生成的结构是否需要遵循生成正方形原则 - :return 返回一个BdxConverter类,同时在指定位置生成.bdx文件""" - from msctspt.bdxOpera_CP import BdxConverter - return BdxConverter(filePath, 'Build by Ryoun Musicreater', music2cmdBlocks(direction,music,isProsess,height,isSquare) -) - - -def note2webs(Notes: list, Instrument: str, speed: float = 5.0, PlayerSelect: str = '', isProsess: bool = False): - """传入音符,在oaclhost:8080上建立websocket服务器以供我的世界connect/wssever指令连接 - :param 参数说明: - Notes: 以 list[ list[ float我的世界playsound指令音调 , float延续时常(单位s) ] ] 格式存储的音符列表 - 例如Musicreater.py的(dataset[0]['musics'][NowMusic]['notes']) - Instrument: 播放的乐器 - speed: 用于控制播放速度,数值越大,播放速度越快,相当于把一秒变为几拍 - PlayerSelect: 执行的玩家选择器 - isProsess: 是否显示进度条 - :return None""" - - import time - import fcwslib - # import asyncio - from nmcsup.log import log - from nmcsup.vers import VER - - async def run_server(websocket): # , path - log('服务器连接创建') - await fcwslib.tellraw(websocket, '已连接服务器——音·创' + VER[1] + VER[0] + ' 作者:金羿(W-YI)') - length = len(Notes) - j = 1 - for i in range(len(Notes)): - await fcwslib.send_command(websocket, - f'execute @a{PlayerSelect} ~ ~ ~ playsound {Instrument} @s ~ ~ ~ 1000 ' - f'{Notes[i][0]} 1000') - if isProsess: - await fcwslib.send_command(websocket, - 'execute @a' + PlayerSelect + ' ~ ~ ~ title @s actionbar §e▶ 播放中: §a' + - str( - j) + '/' + str(length) + ' || ' + str(int(j / length * 1000) / 10)) - j += 1 - time.sleep(Notes[i][1] / speed) - - fcwslib.run_server(run_server) - - -def note2RSworld(world: str, startpos: list, notes: list, instrument: str, speed: float = 2.5, - posadder: Iterable = (1, 0, 0), baseblock: str = 'stone'): # -> bool - """传入音符,生成以音符盒存储的红石音乐 - :param 参数说明: - world: 地图文件的路径 - startpos: list[int,int,int] 开始生成的坐标 - notes: list[list[float,float]] 以 list[ list[ float我的世界playsound指令音调 , float延续时常(单位s) ] ] - 格式存储的音符列表 例如Musicreater.py的dataset[0]['musics'][NowMusic]['notes'] - instrument: 播放的乐器 - speed: 一拍占多少个中继器延迟(红石刻/rt) - posadder: list[int,int,int] 坐标增加规律,即红石的延长时按照此增加规律增加坐标 - baseblock: 在中继器下垫着啥方块呢~ - :return 是否生成成功 - """ - - from msctspt.values import height2note, instuments - - def formNoteBlock(note: int, instrument1: str = 'note.harp', powered: bool = False): - """生成音符盒方块 - :param powered: - :param instrument1: - :param note: 0~24 - :return Block()""" - if powered: - powered = 'true' - else: - powered = 'false' - return Block('universal_minecraft', 'notebooks', - {"instrument": ts(instrument1.replace("note.", '')), 'note': ts(str(note)), - 'powered': ts(powered)}) - - def formRepeater(delay: int, facing: str, locked: bool = False, powered: bool = False): - """生成中继器方块 - :param powered: - :param locked: - :param facing: - :param delay: 1~4 - :return Block()""" - if powered: - powered = 'true' - else: - powered = 'false' - if locked: - locked = 'true' - else: - locked = 'false' - return Block('universal_minecraft', 'repeater', - {"delay": ts(str(delay)), 'facing': ts(facing), 'locked': ts(locked), 'powered': ts(powered)}) - - level = amulet.load_level(world) - - def setblock(block: Block, pos: list): - """pos : list[int,int,int]""" - cx, cz = bc2cc(pos[0], pos[2]) - chunk = level.get_chunk(cx, cz, "minecraft:overworld") - offset_x, offset_z = pos[0] - 16 * cx, pos[2] - 16 * cz - chunk.blocks[offset_x, pos[1], offset_z] = level.block_palette.get_add_block(block) - chunk.changed = True - - # 1拍 x 2.5 rt - def placeNoteBlock(): - for i in notes: - error = True - try: - setblock(formNoteBlock(height2note[i[0]], instrument), [startpos[0], startpos[1] + 1, startpos[2]]) - setblock(Block("universal_minecraft", instuments[i[0]][1]), startpos) - error = False - except ValueError: - log("无法放置音符:" + str(i) + '于' + str(startpos)) - setblock(Block("universal_minecraft", baseblock), startpos) - setblock(Block("universal_minecraft", baseblock), [startpos[0], startpos[1] + 1, startpos[2]]) - finally: - if error is True: - log("无法放置音符:" + str(i) + '于' + str(startpos)) - setblock(Block("universal_minecraft", baseblock), startpos) - setblock(Block("universal_minecraft", baseblock), [startpos[0], startpos[1] + 1, startpos[2]]) - delay = int(i[1] * speed + 0.5) - if delay <= 4: - startpos[0] += 1 - setblock(formRepeater(delay, 'west'), [startpos[0], startpos[1] + 1, startpos[2]]) - setblock(Block("universal_minecraft", baseblock), startpos) - else: - for j in range(int(delay / 4)): - startpos[0] += 1 - setblock(formRepeater(4, 'west'), [startpos[0], startpos[1] + 1, startpos[2]]) - setblock(Block("universal_minecraft", baseblock), startpos) - if delay % 4 != 0: - startpos[0] += 1 - setblock(formRepeater(delay % 4, 'west'), [startpos[0], startpos[1] + 1, startpos[2]]) - setblock(Block("universal_minecraft", baseblock), startpos) - startpos[0] += posadder[0] - startpos[1] += posadder[1] - startpos[2] += posadder[2] - - # e = True - try: - placeNoteBlock() - # e = False - except: # ValueError - log("无法放置方块了,可能是因为区块未加载叭") - # finally: - # if e: - # log("无法放置方块了,可能是因为区块未加载叭") - level.save() - level.close() - - -class ryStruct: - - def __init__(self, world: str) -> None: - - self.RyStruct = dict() - self._world = world - self._level = amulet.load_level(world) - - def reloadLevel(self): - # e = True - try: - self._level = amulet.load_level(self.world) - # e = False - except: # ValueError - log("无法重载地图") - # finally: - # if e: - # log("无法重载地图") - - def closeLevel(self): - # e = True - try: - self._level.close() - # e = False - except: # ValueError - log("无法关闭地图") - # finally: - # if e: - # log("无法重载地图") - - def world2Rys(self, startp: list, endp: list, includeAir: bool = False): - """将世界转换为RyStruct字典,注意,此函数运行成功后将关闭地图,若要打开需要运行 reloadLevel - :param startp: [x,y,z] 转化的起始坐标 - :param endp : [x,y,z] 转换的终止坐标,注意,终止坐标需要大于起始坐标,且最终结果包含终止坐标 - :param includeAir : bool = False 是否包含空气,即空气是否在生成之时覆盖地图内容 - :return dict RyStruct """ - - level = self._level - - for x in range(startp[0], endp[0] + 1): - for y in range(startp[1], endp[1] + 1): - for z in range(startp[2], endp[2] + 1): - - RyStructBlock = dict() - - cx, cz = bc2cc(x, z) - chunk = level.get_chunk(cx, cz, "minecraft:overworld") - universal_block = chunk.block_palette[chunk.blocks[x - 16 * cx, y, z - 16 * cz]] - if universal_block == Block("universal_minecraft", "air") and includeAir: - continue - universal_block_entity = chunk.block_entities.get((x, y, z), None) - - RyStructBlock["block"] = str(universal_block) - RyStructBlock["blockEntity"] = str(universal_block_entity) - - log("载入方块数据" + str(RyStructBlock)) - - self.RyStruct[(x, y, z)] = RyStructBlock - - level.close() - - return self.RyStruct - - -""" -RyStruct = { - (0,0,0) = { - "block": str 完整的方块结构 - "blockEntity": str | 'None' - } -} -""" diff --git a/msctspt/values.py b/msctspt/values.py deleted file mode 100644 index 8a7bfc5..0000000 --- a/msctspt/values.py +++ /dev/null @@ -1,56 +0,0 @@ -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:0个;语法(一级)错误:40个 - -instuments = { - 'note.banjo': ['班卓琴', 'hay_block'], - 'note.bass': ['贝斯', 'planks'], - 'note.bassattack': ['低音鼓/贝斯', 'log'], - 'note.bd': ['底鼓', 'stone'], # 即basedrum - 'note.bell': ['铃铛/钟琴', 'gold_block'], - 'note.bit': ['比特/“芯片”(方波)', 'emerald_block'], - 'note.chime': ['管钟', 'packed_ice'], - 'note.cow_bell': ['牛铃', 'soul_sand'], - 'note.didgeridoo': ['迪吉里杜管', 'pumpkin'], - 'note.flute': ['长笛', 'clay'], - 'note.guitar': ['吉他', 'wool'], - 'note.harp': ['竖琴/钢琴', 'concrete'], # 任意其他类型的方块皆可 - 'note.hat': ['击鼓沿/架子鼓', 'glass'], - 'note.iron_xylophone': ['“铁木琴”(颤音琴)', 'iron_block'], - 'note.pling': ['“扣弦”(电钢琴)', 'glowstone'], - 'note.snare': ['小军鼓', 'sand'], - 'note.xylophone': ['木琴', 'bone_block'] -} -'''乐器对照表\n -乐器英文:[中文, 对应音符盒下方块名称] -注:方块仅取一个''' - -height2note = { - 0.5: 0, - 0.53: 1, - 0.56: 2, - 0.6: 3, - 0.63: 4, - 0.67: 5, - 0.7: 6, - 0.75: 7, - 0.8: 8, - 0.84: 9, - 0.9: 10, - 0.94: 11, - 1.0: 12, - - 1.05: 13, - 1.12: 14, - 1.2: 15, - 1.25: 16, - 1.33: 17, - 1.4: 18, - 1.5: 19, - 1.6: 20, - 1.7: 21, - 1.8: 22, - 1.9: 23, - 2.0: 24, -} -'''音高对照表\n -MC音高:音符盒音调''' diff --git a/nmcsup/EptWorld.zip b/nmcsup/EptWorld.zip deleted file mode 100644 index 4a075aa..0000000 Binary files a/nmcsup/EptWorld.zip and /dev/null differ diff --git a/nmcsup/MMFM Cpp E Develop Log.txt b/nmcsup/MMFM Cpp E Develop Log.txt deleted file mode 100644 index 0ec7376..0000000 --- a/nmcsup/MMFM Cpp E Develop Log.txt +++ /dev/null @@ -1,62 +0,0 @@ -ҵ硷 -C++汾־ - -ڱ˼ƻѧҵԭ򣬱ӳټƻʼд롣 - - Beta V0.1 - 20200920 -0.help -1.make -2.form -3.exit -4.ܹCDEFGABת.mcfunction -5.н - - Beta V0.2 - 20200921 -0.޸makeΪwrite -1.ôʵ -2.üƷְ -3.趨 -4.ѭģʽ趨 -5.""һֱ,޸ijΪ"ҵ纯" - - Beta V0.3 - 20200922 -0.޸writeΪmake -1.ʵ趨 -2.Ʒְ趨 -3.趨 - - Beta V0.4 - 20200923 -0.ļ趨 -1.bug:ָдļ(DE001) -2.verʾ汾Ϣ - - Beta V0.5 - 20200925 -0.޸makeΪwrite -1.趨ļ· -2.֧ɼ1234567ʾ -3.ֹ֧0 - - Beta V0.6 - 20200926 -0.޸writeΪmake -1.޸bug:ָдļ(DE001) -2.buld -3.comd -4.help򿪵İ˵һҳΪҳ -5.дڴСԶ - - Beta V0.7 - 20200927 -0.mdir,ֱ -1.ldir,Բ鿴ǰĿ¼Ϣ -3.ָlook,ʾָıļ -4.ɾ˳ʱĵȴʾ -5.bug:ʹlook鿴ļмʿ޷ʾʾ">>>"(DE002DE003) -6.bug:mdir޷ʹ(DE004) - -TO-DO Beta V0.8_ - 20200929 -0.ʵ,ڹڼԵõһйַ -1.ʵ,ڼԵõһַ -˰汾ֱ - - Beta V0.9 - 20201224 -0.޸bug:mdir޷ʹ(DE004) -1.bug:mdirһֹͣ(DE005) \ No newline at end of file diff --git a/nmcsup/MMFM Py E Development Log.txt b/nmcsup/MMFM Py E Development Log.txt deleted file mode 100644 index 00eaba5..0000000 --- a/nmcsup/MMFM Py E Development Log.txt +++ /dev/null @@ -1,126 +0,0 @@ -这是MMFM(我的世界函数音乐生成器)的Python版本日志 -我从2021年5月移植,中间停更了一段时间。 - - Beta V 0.0.0 -2021 5 ?15 - 2021 5 23 -1.将C++版本全部有用的功能移植至Python版本 -2.新增了可更改的音乐乐器 -3.新增了可更改的语言包Chinese -4.附带应用"jsonread - lang"可用于新增语言文本 -5.支持全部音阶,但不支持附点、X分音符等 - - Beta V 0.0.1 -2021 6 5 -1.可读取不同的语言文件,通过lang指令完成 -2.新增English语言包 -3.在输入非内部指令时以命令行运行 - - Beta V 0.0.2 -2021 6 13 -1.支持设置项保存 -2.语言设置移至设置项中 -3.新增RESET命令以重置所有设置项至默认 -4.支持休止符(“0”) -5.设置项更加人性化 - - Beta V 0.0.3 -2021 6 14 -1.支持全平台(能运行Python的平台) -2.安卓系统下不需要从源地址运行 -3.设置中给出乐器列表并需要使用在列表内的乐器 - - Beta V 0.0.4 -2021 6 14 -1.新增win指令支持窗口化输入 -2.语言包English停止支持 -3.停止支持的语言包部分将使用Chinese语言包 -4.输出结果更加人性化 -5.停止支持输入非内部命令以系统指令运行 - - Formal V 0.0.1 -2021 6 21 - 2021 6 22 -1*.支持附点、延音等时间延长谱号 -2*.支持X分音符等时间缩短谱号 -3.删除win指令支持的窗口化输入,即禁止窗口运行 -4.新增日志系统,程序运行将载入日志以便检查 -*实际上输入的时候是不支持的,只是支持了修改音符延长时间而已 - - - Formal V 0.0.2 -2121 6 22 -1.解决了字符串解析为列表时出现的问题 -2.停止调整命令行窗口大小 -3.解决了输入的音符被除重的问题 -4.buld指令建立的附加包中新增startXXX函数用于初始设定 - - - Formal V 0.0.3 -2021 6 29 -1.新增save、load指令支持工程文件存取 -2.新增default指令存储默认设置 -3.输入exit指令退出时不会保存为默认设置 -4.新增delog指令在Windows系统下删除日志文件 - - - Formal V 0.0.4 ~ 0.0.4.2 -2021 6 30 -1.支持midi解析,能够通过midi文件解析音符,且仅支持打击乐器,即音长为0的声音,不能解析音的长度,解析仅包含note_on消息而不包含note_off消息,且暂时不能解析音乐附带的其他信息 -2.新增彩蛋指令TAFTCPC(the Anniversary of the Founding of The Communist Party of China) -(0.0.4.1) -3.修复读取文件时读取内容不正确的问题 -(0.0.4.2) - - - Formal V0.0.4.3 -2021 7 1 -1.内部代码优化,更加模块化,便于以后窗口化调用 - - - Formal V0.0.5 ~ 0.0.5.2 -2021 7 3 ~ 2021 7 4 -1.支持同时编辑、生成多个音乐函数 -2.支持一个项目中保存多个文件 -3.支持同一函数中出现不同的乐器 -(0.0.5.1) -4.读取midi文件时支持音长的自动解析读取,并支持选择音轨 -(0.0.5.2) -5.修复了编辑不同乐器时出现闪退的问题 -(0.0.5.2) - - - Formal V0.0.5.3 -2021 7 5 -1.修复了存储工程文件时的崩溃问题 -2.读取midi时支持通过音轨自动生成不同的函数文件 -3.修复了生成函数文件中计分板为浮点数的问题 -4.修复文件路径不正确的问题 -5.新增应用bat脚本(仅Windows):可以快速启动、可以清除日志 -6.新增开发bat脚本(仅Windows):可以快速编译文件并启动测试、可以快速编译文件、可以快速启动测试 - - - Formal V0.0.6 -2021 7 8 - 2021 7 9 -1.停止对非Windows系统环境的支持 -2.支持预听生成的函数,即音乐试听 -3.乐曲修改设置:单个乐曲可包含多个文件序列(多个乐器),歌曲可以有自己单独的曲名、执行实体、执行计分板等独立设置;同时,每个歌曲可包含不同的乐器序列等等 -4.读取的音频格式更新:音符、我的世界音调、频率(Hz),仍是字典:'str' : [ float , float ] -5.单个项目内不包含多首歌曲,但是做了预制功能:可以编辑多个项目(现在暂时不行) -6.不可单独编辑单个音符的乐器 -7.放弃对语言文件的读取的支持 -8.停止支持对已读取的音轨的编辑(即删除edit指令) -9.停止支持全局设置的修改,以及其相关支持(即删除当前的set、reset、default指令) -10.预制支持对于单个音轨设置的修改以及音乐主设置的修改(现在暂时不行) -11.存储的项目结构变为json文件结构,则无需zipfile库 -12.生成的文件包含:支持函数(1个、循环执行)、音乐函数(多个、循环执行)、启动函数(1个、执行一次) -13.发现并修改错误:遇到休止符0时,播放会报错并停止 -14.新增彩蛋指令:RYOUN,生成团队队歌文件及项目 -15.项目更名为“我的世界函数音乐构建” - - - - - - - TO-DO -1.支持从midi文件的元信息中收取音符信息并自动生成 -2.Windows平台下支持窗口化 -3.支持使用WebSocket接口自动播放已编辑的音乐 -4.可以编辑多个项目 -5.能够自动将一个长串的音乐分成多个函数文件 -6.对于单个音轨设置的修改以及音乐主设置的修改 -7.支持汇报崩溃记录(通过邮件附件的方式) \ No newline at end of file diff --git a/nmcsup/NFC Dev Log.txt b/nmcsup/NFC Dev Log.txt deleted file mode 100644 index 87a6740..0000000 --- a/nmcsup/NFC Dev Log.txt +++ /dev/null @@ -1,72 +0,0 @@ -从此日志开始,我的世界函数音乐构建更名为 函数音创 NoteFunCreater(谐音NotFun[狗头]),版本号更为0.1.0开始 - -注意,运行此文件需要第三方库: -1. mido 用于对midi文件的解码 -2. py7zr 用于对7z压缩包的压缩与解压等(需pycparser, cffi, texttable, pyzstd, pyppmd, pycryptodomex, multivolumefile, brotli, bcj-cffi支持) -(从0.1.3开始不需要) -3. zipfile 用于自动生成函数包的压缩 -4. pystray 用于支持窗口任务栏 -5. pillow (相当于Python2的PIL)用于绘图 - - - 0.1.0 -2021 7 10 - 2021 7 12 -1.程序窗口化 -2.仅支持基本的菜单操作 -3.程序文件皆储存至其相应目录下 -4.程序./bin/目录下文件将会自动防修改 -5.删除了彩蛋 - - - 0.1.1 -2021 7 14 -1.新增版本辨别的提示 -2.窗口中显示歌曲信息 - - - 0.1.2 -2021 7 14 - 2021 7 15 -1.在没运行过的机器上会自动安装库 -2.从midi导入时不会删除其他音轨 -3.改进UI样式 -4.支持对于单个音轨设置的修改以及音乐主设置的修改 -5.当未保存便退出时,会询问存储 -6.新增加载进度提示 - - - 0.1.3 -2021 7 15 - 2021 7 19 -1.不再从文件中读取音符及乐器信息(所以包更小了) -2.改进UI -3.修复了修改玩家选择器时变更了音乐标题的bug -4.新增删除当前选定音轨按钮 -5.新增重置设置按钮(将音乐总设置设置为开始时的设置) -6.运用多线程加载函数与文件等,程序运行效率更高 -7.修复变量作用域混淆问题 - - - 0.1.3.1 -2021 7 19 -1.修复了菜单中无法退出程序的问题 - - - 0.1.4 -2021 7 22 -1.支持显示指令于列表中 - - - - - - - TO-DO -1.支持从midi文件的元信息中收取音符信息并自动生成 -2.支持生成zip函数包 -3.支持使用WebSocket接口自动播放已编辑的音乐 -4.可以编辑多个项目 -5.能够自动将一个长串的音乐分成多个函数文件 -6.支持用户导入自己的乐器 -7.支持汇报崩溃记录(通过邮件附件的方式) -8.支持播放字幕 -9.支持任务栏角标与通知 -10.将控制台版本的彩蛋移植到此版本,开启了任务栏 -11.可编辑音符 \ No newline at end of file diff --git a/nmcsup/NMC Dev Log.txt b/nmcsup/NMC Dev Log.txt deleted file mode 100644 index 1c8a675..0000000 --- a/nmcsup/NMC Dev Log.txt +++ /dev/null @@ -1,36 +0,0 @@ -世界音创(NoteMapCreater)是金羿开发的一款用于生成我的世界中各类有关音乐的物件的软件 -软件禁止商用,源代码始终公开,如使用未经授权的音乐经过此软件生成的任何物件侵犯了他人权利与本软件及其作者无关 - -Copyright © W-YI 2021 - -开头,特别感谢: -KCINE:提供Cinemusicedit函数包(虽然函数包没怎么用过) -Charlie_Ping:提供MusiCreaterBot(音乐地图生成QQ机器人)源码核心以及时不时的催更(虽然源码没有抄) -金羿(作者本人):提供NoteFunCreater(函数音创)的制作经验以及时不时的摸鱼(虽然不是很支持函数音创) -广大群友:高效的催更作业让我以蜗牛的速度前进 - - Alpha 0.0.0 -2021 8 1 - 2021 8 10 -1.确定了大概的功能 -2.不支持无参数传入 -3.可以查看帮助,但是帮助大多功能没实现 -4.可以从格式文本、midi文件、钢琴声音MP3导入音轨 -5.可以生成一些方块到世界里,但是没有播放器(半支持bw开关) -5.提供了修改文件地址的方法,但是不能修改 - - Alpha 0.0.1 -2021 8 10 -1.可以从函数音创的工程文件读取音轨 -2.可以新建一个空白世界来生成 -3.支持修改输出文件地址 -4.支持修改输出方块起始位置 -5.支持指定播放乐器,执行实体,执行积分板,播放玩家选择器 -6.可以生成指令音乐地图(完全支持-w开关) - - Beta 0.0.0 -2021 8 X? -1.除了-nw 和 -f 开关不支持以外都支持了 - - Beta 0.0.1 -2021 8 19 -1.修复了大量bug diff --git a/nmcsup/__init__.py b/nmcsup/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/nmcsup/__pycache__/__init__.cpython-37.pyc b/nmcsup/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index 2871e42..0000000 Binary files a/nmcsup/__pycache__/__init__.cpython-37.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/__init__.cpython-38.pyc b/nmcsup/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index 72fc2b6..0000000 Binary files a/nmcsup/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/__init__.cpython-39.pyc b/nmcsup/__pycache__/__init__.cpython-39.pyc deleted file mode 100644 index 4cd082f..0000000 Binary files a/nmcsup/__pycache__/__init__.cpython-39.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/const.cpython-38.pyc b/nmcsup/__pycache__/const.cpython-38.pyc deleted file mode 100644 index 54f49db..0000000 Binary files a/nmcsup/__pycache__/const.cpython-38.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/const.cpython-39.pyc b/nmcsup/__pycache__/const.cpython-39.pyc deleted file mode 100644 index afdce5e..0000000 Binary files a/nmcsup/__pycache__/const.cpython-39.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/log.cpython-37.pyc b/nmcsup/__pycache__/log.cpython-37.pyc deleted file mode 100644 index 41528fa..0000000 Binary files a/nmcsup/__pycache__/log.cpython-37.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/log.cpython-38.pyc b/nmcsup/__pycache__/log.cpython-38.pyc deleted file mode 100644 index 779deb3..0000000 Binary files a/nmcsup/__pycache__/log.cpython-38.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/log.cpython-39.pyc b/nmcsup/__pycache__/log.cpython-39.pyc deleted file mode 100644 index bab3350..0000000 Binary files a/nmcsup/__pycache__/log.cpython-39.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/nmcreader.cpython-38.pyc b/nmcsup/__pycache__/nmcreader.cpython-38.pyc deleted file mode 100644 index 3d6a0a7..0000000 Binary files a/nmcsup/__pycache__/nmcreader.cpython-38.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/nmcreader.cpython-39.pyc b/nmcsup/__pycache__/nmcreader.cpython-39.pyc deleted file mode 100644 index 4b9ea62..0000000 Binary files a/nmcsup/__pycache__/nmcreader.cpython-39.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/trans.cpython-38.pyc b/nmcsup/__pycache__/trans.cpython-38.pyc deleted file mode 100644 index 37eb2de..0000000 Binary files a/nmcsup/__pycache__/trans.cpython-38.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/vers.cpython-37.pyc b/nmcsup/__pycache__/vers.cpython-37.pyc deleted file mode 100644 index d65d352..0000000 Binary files a/nmcsup/__pycache__/vers.cpython-37.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/vers.cpython-38.pyc b/nmcsup/__pycache__/vers.cpython-38.pyc deleted file mode 100644 index 465dd05..0000000 Binary files a/nmcsup/__pycache__/vers.cpython-38.pyc and /dev/null differ diff --git a/nmcsup/__pycache__/vers.cpython-39.pyc b/nmcsup/__pycache__/vers.cpython-39.pyc deleted file mode 100644 index 7b200d9..0000000 Binary files a/nmcsup/__pycache__/vers.cpython-39.pyc and /dev/null differ diff --git a/nmcsup/const.py b/nmcsup/const.py deleted file mode 100644 index 817047e..0000000 --- a/nmcsup/const.py +++ /dev/null @@ -1,312 +0,0 @@ -"""音创系列的音符对照表 以及一系列常数""" -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:0个;语法(一级)错误:109个 - - -notes = { - '....A': [0.074, 27.5, 'wood', 8], - '....A#': [0.0787, 29.135, 'wood', 9], - '....B': [0.083, 30.868, 'wood', 10], - '...C': [0.088, 32.703, 'wood', 11], - '...C#': [0.094, 34.648, 'wood', 12], - '...D': [0.1, 36.708, 'wood', 13], - '...D#': [0.105, 38.891, 'log', 0], - '...E': [0.11, 41.203, 'log', 1], - '...F': [0.12, 43.654, 'log', 2], - '...F#': [0.125, 46.249, 'wood', 0], - '...G': [0.13, 48.999, 'wood', 1], - '...G#': [0.14, 51.913, 'wood', 2], - '...A': [0.15, 55.0, 'wood', 3], - '...A#': [0.16, 58.27, 'wood', 4], - '...B': [0.17, 61.735, 'wood', 5], - '..C': [0.18, 65.406, 'wool', 0], - '..C#': [0.19, 69.296, 'wool', 1], - '..D': [0.2, 73.416, 'wool', 2], - '..D#': [0.21, 77.782, 'wool', 3], - '..E': [0.22, 82.407, 'wool', 4], - '..F': [0.235, 87.307, 'wool', 5], - '..F#': [0.25, 92.499, 'concretepowder', 0], - '..G': [0.26, 97.999, 'concretepowder', 1], - '..G#': [0.28, 103.826, 'concretepowder', 2], - '..A': [0.3, 110.0, 'concretepowder', 3], - '..A#': [0.31, 116.541, 'concretepowder', 4], - '..B': [0.33, 123.471, 'concretepowder', 5], - '.C': [0.35, 130.813, 'concretepowder', 6], - '.C#': [0.37, 138.591, 'concretepowder', 7], - '.D': [0.4, 146.832, 'concretepowder', 8], - '.D#': [0.42, 155.563, 'concretepowder', 9], - '.E': [0.44, 164.814, 'concretepowder', 10], - '.F': [0.47, 174.614, 'concretepowder', 11], - '.F#': [0.5, 184.997, 'concretepowder', 12], - '.G': [0.53, 195.998, 'concretepowder', 13], - '.G#': [0.56, 207.652, 'concretepowder', 14], - '.A': [0.6, 220.0, 'concretepowder', 15], - '.A#': [0.63, 233.082, 'concrete', 0], - '.B': [0.67, 246.942, 'concrete', 1], - 'C': [0.7, 261.626, 'concrete', 2], - 'C#': [0.75, 277.183, 'concrete', 3], - 'D': [0.8, 293.665, 'concrete', 4], - 'D#': [0.84, 311.127, 'concrete', 5], - 'E': [0.9, 329.628, 'concrete', 6], - 'F': [0.94, 349.228, 'concrete', 7], - 'F#': [1.0, 369.994, 'concrete', 8], - 'G': [1.05, 391.995, 'concrete', 9], - 'G#': [1.12, 415.305, 'concrete', 10], - 'A': [1.2, 440.0, 'concrete', 11], - 'A#': [1.25, 466.164, 'concrete', 12], - 'B': [1.33, 493.883, 'concrete', 13], - '`C': [1.4, 523.251, 'concrete', 14], - '`C#': [1.5, 554.365, 'concrete', 15], - '`D': [1.6, 587.33, 'stained_hardened_clay', 0], - '`D#': [1.7, 622.254, 'stained_hardened_clay', 1], - '`E': [1.8, 659.255, 'stained_hardened_clay', 2], - '`F': [1.9, 698.456, 'stained_hardened_clay', 3], - '`F#': [2.0, 739.989, 'stained_hardened_clay', 4], - '`G': [2.1, 783.991, 'stained_hardened_clay', 5], - '`G#': [2.24, 830.609, 'stained_hardened_clay', 6], - '`A': [2.4, 880.0, 'stained_hardened_clay', 7], - '`A#': [2.5, 932.328, 'stained_hardened_clay', 8], - '`B': [2.67, 987.767, 'stained_hardened_clay', 9], - '``C': [2.83, 1046.502, 'stained_hardened_clay', 10], - '``C#': [3.0, 1108.731, 'stained_hardened_clay', 11], - '``D': [3.17, 1174.659, 'stained_hardened_clay', 12], - '``D#': [3.36, 1244.508, 'stained_hardened_clay', 13], - '``E': [3.56, 1318.51, 'stained_hardened_clay', 14], - '``F': [3.78, 1396.913, 'stained_hardened_clay', 15], - '``F#': [4.0, 1479.978, 'white_glazed_terracotta', 0], - '``G': [4.24, 1567.982, 'orange_glazed_terracotta', 0], - '``G#': [4.5, 1661.219, 'magenta_glazed_terracotta', 0], - '``A': [4.76, 1760.0, 'light_blue_glazed_terracotta', 0], - '``A#': [5.04, 1864.655, 'yellow_glazed_terracotta', 0], - '``B': [5.34, 1975.533, 'lime_glazed_terracotta', 0], - '```C': [5.66, 2093.005, 'pink_glazed_terracotta', 0], - '```C#': [6.0, 2217.461, 'gray_glazed_terracotta', 0], - '```D': [6.35, 2349.318, 'silver_glazed_terracotta', 0], - '```D#': [6.73, 2489.016, 'cyan_glazed_terracotta', 0], - '```E': [7.13, 2637.02, 'purple_glazed_terracotta', 0], - '```F': [7.55, 2793.826, 'blue_glazed_terracotta', 0], - '```F#': [8.0, 2959.955, 'brown_glazed_terracotta', 0], - '```G': [8.47, 3135.963, 'green_glazed_terracotta', 0], - '```G#': [8.98, 3322.438, 'red_glazed_terracotta', 0], - '```A': [9.51, 3520.0, 'black_glazed_terracotta', 0], - '```A#': [10.08, 3729.31, 'stained_glass', 0], - '```B': [10.68, 3951.066, 'stained_glass', 1], - '````C': [11.31, 4186.009, 'stained_glass', 2], - '0': [0.0, 0.0, 'glass', 0] -} -'''音符对照表\n -音符:[MC音调, 声音频率, 方块名称, 数据值]''' - -# 方块 -''' -blocks = { - 0.074 : ['stained_glass', 3], - 0.0787 : ['stained_glass', 4], - 0.083 : ['stained_glass', 5], - 0.088 : ['stained_glass', 6], - 0.094 : ['stained_glass', 7], - 0.1 : ['stained_glass', 8], - 0.105 : ['stained_glass', 9], - 0.11 : ['stained_glass', 10], - 0.12 : ['stained_glass', 11], - 0.125 : ['stained_glass', 12], - 0.13 : ['stained_glass', 13], - 0.14 : ['stained_glass', 14], - 0.15 : ['stained_glass', 15], - 0.16 : ['wool', 0], - 0.17 : ['wool', 1], - 0.18 : ['wool', 2], - 0.19 : ['wool', 3], - 0.2 : ['wool', 4], - 0.21 : ['wool', 5], - 0.22 : ['wool', 6], - 0.235 : ['wool', 7], - 0.25 : ['concretepowder', 0], - 0.26 : ['concretepowder', 1], - 0.28 : ['concretepowder', 2], - 0.3 : ['concretepowder', 3], - 0.31 : ['concretepowder', 4], - 0.33 : ['concretepowder', 5], - 0.35 : ['concretepowder', 6], - 0.37 : ['concretepowder', 7], - 0.4 : ['concretepowder', 8], - 0.42 : ['concretepowder', 9], - 0.44 : ['concretepowder', 10], - 0.47 : ['concretepowder', 11], - 0.5 : ['concretepowder', 12], - 0.53 : ['concretepowder', 13], - 0.56 : ['concretepowder', 14], - 0.6 : ['concretepowder', 15], - 0.63 : ['concrete', 0], - 0.67 : ['concrete', 1], - 0.7 : ['concrete', 2], - 0.75 : ['concrete', 3], - 0.8 : ['concrete', 4], - 0.84 : ['concrete', 5], - 0.9 : ['concrete', 6], - 0.94 : ['concrete', 7], - 1.0 : ['concrete', 8], - 1.05 : ['concrete', 9], - 1.12 : ['concrete', 10], - 1.2 : ['concrete', 11], - 1.25 : ['concrete', 12], - 1.33 : ['concrete', 13], - 1.4 : ['concrete', 14], - 1.5 : ['concrete', 15], - 1.6 : ['stained_hardened_clay', 0], - 1.7 : ['stained_hardened_clay', 1], - 1.8 : ['stained_hardened_clay', 2], - 1.9 : ['stained_hardened_clay', 3], - 2.0 : ['stained_hardened_clay', 4], - 2.1 : ['stained_hardened_clay', 5], - 2.24 : ['stained_hardened_clay', 6], - 2.4 : ['stained_hardened_clay', 7], - 2.5 : ['stained_hardened_clay', 8], - 2.67 : ['stained_hardened_clay', 9], - 2.83 : ['stained_hardened_clay', 10], - 3.0 : ['stained_hardened_clay', 11], - 3.17 : ['stained_hardened_clay', 12], - 3.36 : ['stained_hardened_clay', 13], - 3.56 : ['stained_hardened_clay', 14], - 3.78 : ['stained_hardened_clay', 15], - 4.0 : ['stained_glass_pane', 0], - 4.24 : ['stained_glass_pane', 1], - 4.5 : ['stained_glass_pane', 2], - 4.76 : ['stained_glass_pane', 3], - 5.04 : ['stained_glass_pane', 4], - 5.34 : ['stained_glass_pane', 5], - 5.66 : ['stained_glass_pane', 6], - 6.0 : ['stained_glass_pane', 7], - 6.35 : ['stained_glass_pane', 8], - 6.73 : ['stained_glass_pane', 9], - 7.13 : ['stained_glass_pane', 10], - 7.55 : ['stained_glass_pane', 11], - 8.0 : ['stained_glass_pane', 12], - 8.47 : ['stained_glass_pane', 13], - 8.98 : ['stained_glass_pane', 14], - 9.51 : ['stained_glass_pane', 15], - 10.08 : ['stained_glass', 0], - 10.68 : ['stained_glass', 1], - 11.31 : ['stained_glass', 2], - 0.0 : ['glass', 0] -} -#向查理平致敬!!!!! -''' - -Blocks = { - 0.074: 'barrel', - 0.0787: 'beacon', - 0.083: 'bedrock', - 0.088: 'black_glazed_terracotta', - 0.094: 'blast_furnace', - 0.1: 'blue_glazed_terracotta', - 0.105: 'blue_ice', - 0.11: 'bone_block', - 0.12: 'bookshelf', - 0.125: 'brick_block', - 0.13: 'brown_glazed_terracotta', - 0.14: 'cartography_table', - 0.15: 'carved_pumpkin', - 0.16: 'clay', - 0.17: 'coal_block', - 0.18: 'coal_ore', - 0.19: 'cobblestone', - 0.2: 'concrete', - 0.21: 'crafting_table', - 0.22: 'cyan_glazed_terracotta', - 0.235: 'diamond_block', - 0.25: 'diamond_ore', - 0.26: 'white_glazed_terracotta', - 0.28: 'dispenser', - 0.3: 'dried_kelp_block', - 0.31: 'dropper', - 0.33: 'emerald_block', - 0.35: 'emerald_ore', - 0.37: 'end_bricks', - 0.4: 'end_stone', - 0.42: 'fletching_table', - 0.44: 'furnace', - 0.47: 'glass', - 0.5: 'glowingobsidian', - 0.53: 'glowstone', - 0.56: 'gold_block', - 0.6: 'gold_ore', - 0.63: 'grass', - 0.67: 'gray_glazed_terracotta', - 0.7: 'green_glazed_terracotta', - 0.75: 'hardened_clay', - 0.8: 'hay_block', - 0.84: 'iron_block', - 0.9: 'iron_ore', - 0.94: 'jukebox', - 1.0: 'lapis_block', - 1.05: 'lapis_ore', - 1.12: 'light_blue_glazed_terracotta', - 1.2: 'lime_glazed_terracotta', - 1.25: 'lit_pumpkin', - 1.33: 'log', - 1.4: 'loom', - 1.5: 'magenta_glazed_terracotta', - 1.6: 'magma', - 1.7: 'melon_block', - 1.8: 'web', - 1.9: 'mossy_cobblestone', - 2.0: 'nether_brick', - 2.1: 'nether_wart_block', - 2.24: 'netherrack', - 2.4: 'noteblock', - 2.5: 'observer', - 2.67: 'obsidian', - 2.83: 'orange_glazed_terracotta', - 3.0: 'pink_glazed_terracotta', - 3.17: 'piston', - 3.36: 'planks', - 3.56: 'prismarine', - 3.78: 'pumpkin', - 4.0: 'purple_glazed_terracotta', - 4.24: 'purpur_block', - 4.5: 'quartz_block', - 4.76: 'quartz_ore', - 5.04: 'red_glazed_terracotta', - 5.34: 'red_nether_brick', - 5.66: 'red_sandstone', - 6.0: 'redstone_block', - 6.35: 'yellow_glazed_terracotta', - 6.73: 'sandstone', - 7.13: 'stonebrick', - 7.55: 'silver_glazed_terracotta', - 8.0: 'slime', - 8.47: 'smithing_table', - 8.98: 'smoker', - 9.51: 'smooth_stone', - 10.08: 'snow', - 10.68: 'soul_sand', - 11.31: 'sponge', - 0.0: 'stone' -} -'''频率对照表\n -MC音调:方块名称''' - -# 乐器 -Instuments = { - 'note.banjo': '班卓', - 'note.bass': '低音', - 'note.bassattack': '贝斯', - 'note.bd': '鼓声', - 'note.bell': '铃声', - 'note.bit': '比特', - 'note.cow_bell': '牛铃', - 'note.didgeridoo': '迪吉', - 'note.flute': '长笛', - 'note.guitar': '吉他', - 'note.harp': '竖琴', - 'note.hat': '架鼓', - 'note.chime': '钟声', - 'note.iron_xylophone': '铁琴', - 'note.pling': '叮叮', - 'note.snare': '响弦', - 'note.xylophone': '木琴' -} -'''乐器对照表\n -乐器英文:中文 -翻译:雪莹工坊Fun-Fer''' diff --git a/nmcsup/log.py b/nmcsup/log.py deleted file mode 100644 index a509a44..0000000 --- a/nmcsup/log.py +++ /dev/null @@ -1,71 +0,0 @@ -"""提供对于音创系列的日志""" -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:0个;语法(一级)错误:9个 - -import logging -import os -import datetime - -StrStartTime = str(datetime.datetime.now()).replace(':', '_')[:-7] -time = StrStartTime - -main_path = './log/' - -position = main_path + time - -logger = logging.getLogger(__name__) -logger.setLevel(level=logging.INFO) - -if not os.path.exists('./log/'): - os.makedirs('./log/') - -# try: -# handler = logging.FileHandler(position + ".logger") -# except FileNotFoundError: -# os.makedirs('./log/') -handler = logging.FileHandler(position + ".logger") -print(position + ".logger") - -handler.setLevel(logging.INFO) -formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') -handler.setFormatter(formatter) - -console = logging.StreamHandler() -console.setLevel(logging.INFO) - -logger.addHandler(handler) -logger.addHandler(console) - -# import logger - -# 载入日志功能 -StrStartTime = str(datetime.datetime.now()).replace(':', '_')[:-7] -# logger.setting(StrStartTime) -"""字符串型的程序开始时间""" - - -def log(info: str = '', isWrite: bool = True, isPrinted: bool = False, isLoggerLibRecord: bool = True): - """ - info: 信息 - isPrinted: 是否print(仅限金羿log,python官方的logging照常输出) - isLoggerLibRecord: 是否同时在logger库中记录 - isWrite: 是否write(仅限金羿log,python官方的logging照常输出) - """ - """将信息连同当前时间载入日志""" - # 致后来的开发者:请让金羿的log存在吧,不然他自己都看不懂你们写了什么了 - # 我指的是程序内部 - # ——金羿 - if not os.path.exists('./log/'): - os.makedirs('./log/') - if isWrite: - with open('./log/' + StrStartTime + '.msct.log', 'a', encoding='UTF-8') as f: - f.write(str(datetime.datetime.now())[11:19] + ' ' + info + '\n') - if isPrinted: - print(str(datetime.datetime.now())[11:19] + ' ' + info) - if isLoggerLibRecord: - logger.info(info) - - -def end(): - logging.disable(logging.INFO) - logging.shutdown() diff --git a/nmcsup/nmcreader.py b/nmcsup/nmcreader.py deleted file mode 100644 index ffefe49..0000000 --- a/nmcsup/nmcreader.py +++ /dev/null @@ -1,128 +0,0 @@ -"""音创系列的文件读取功能""" - -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:3个;语法(一级)错误:22个 - - -from nmcsup.log import log -from nmcsup.const import notes - - - -# 从格式文本文件读入一个音轨并存入一个列表 -def ReadFile(fn: str): # -> list - from nmcsup.trans import note2list - log('打开' + fn + "并读取音符") - try: - nat = open(fn, 'r', encoding='UTF-8').read().split(" ") - del fn - except FileNotFoundError: - log("找不到读取目标文件") - return False - Notes = [] - log(str(nat) + "已读取") - for i in range(int(len(nat) / 2)): - Notes.append([nat[i * 2], float(nat[i * 2 + 1])]) - Notes = note2list(Notes) - log('音符数据更新' + str(Notes)) - return [Notes, ] - - -# 从midi读入多个音轨,返回多个音轨列表 -def ReadMidi(midfile: str): # -> list - import mido - from msctspt.threadOpera import NewThread - Notes = [] - try: - mid = mido.MidiFile(midfile) - except FileNotFoundError: - log("找不到文件或无法读取文件" + midfile) - return False - # 解析 - ks = list(notes.values()) - - def loadMidi(track1): - datas = [] - for i in track1: - if i.is_meta: - log('元信息' + str(i)) - pass # 不处理元信息 - elif 'note_on' in str(i): - msg = str(i).replace("note=", '').replace("time=", '').split(" ") - log('音符on消息,处理后:' + str(msg)) - if msg[4] == '0': - datas.append([ks[int(msg[2]) - 20][0], 1.0]) - log('延续时间0tick--:添加音符' + str([ks[int(msg[2]) - 20][0], 1.0])) - else: - datas.append([ks[int(msg[2]) - 20][0], float(msg[4]) / 480]) - log('延续时间' + msg[4] + 'tick--:添加音符' + str([ks[int(msg[2]) - 20][0], float(msg[4]) / 480])) - del msg - log('音符增加' + str(datas)) - return datas - - for j, track in enumerate(mid.tracks): - th = NewThread(loadMidi, (track,)) - th.start() - Notes.append(th.getResult()) - del ks - return Notes - - - - - -def ReadOldProject(fn: str): # -> list - import json - from nmcsup.trans import note2list - log("读取文件:" + fn) - try: - with open(fn, 'r', encoding='UTF-8') as c: - dataset = json.load(c) - except FileNotFoundError: - print('找不到文件:' + fn + ",请查看您是否输入正确") - log("丢失" + fn) - return False - for i in range(len(dataset['musics'])): - dataset['musics'][i]['notes'] = note2list(dataset['musics'][i]['notes']) - # 返回 音轨列表 选择器 - return dataset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == '__main__': - # a = midi_conversion("L:\\0WorldMusicCreater-MFMS new edition\\框架\\v0.3.2\\Musicreater\\测试用\\同道殊途标准.mid") - # midi_conversion("L:\\0WorldMusicCreater-MFMS new edition\\框架\\v0.3.2\\Musicreater\\测试用\\" - # "Illusionary_Daytime_--------幻昼.mid") - # a = midi_conversion(r"C:\Users\lc\Documents\MuseScore3\乐谱\架子鼓.mid") - from bgArrayLib.reader import midi_conversion - a = midi_conversion(r"C:\Users\lc\Documents\MuseScore3\乐谱\stay2.mid") - # print(a) diff --git a/nmcsup/trans.py b/nmcsup/trans.py deleted file mode 100644 index adc532c..0000000 --- a/nmcsup/trans.py +++ /dev/null @@ -1,246 +0,0 @@ -"""音创系列的转换功能""" -# 诸葛亮与八卦阵帮忙修改语法 日期:---2022年1月19日 -# 统计:致命(三级)错误:0个;警告(二级)错误:2个;语法(一级)错误:192个 - - -from nmcsup.log import log - -import amulet -import amulet_nbt -from amulet.api.block import Block -from amulet.api.block_entity import BlockEntity -from amulet.utils.world_utils import block_coords_to_chunk_coords -from amulet_nbt import TAG_String, TAG_Compound, TAG_Byte - - -# 输入一个列表 [ [str, float ], [], ... ] 音符str 值为持续时间float -def note2list(Notes: list) -> list: - from nmcsup.const import notes - - def change(base): - enwo = { - 'a': 'A', - 'b': 'B', - 'c': 'C', - 'd': "D", - "e": "E", - 'f': 'F', - 'g': "G" - } - nuwo = { - '6': 'A', - '7': 'B', - '1': 'C', - '2': "D", - "3": "E", - '4': 'F', - '5': "G" - } - for k, v in enwo.items(): - if k in base: - base = base.replace(k, v) - for k, v in nuwo.items(): - if k in base: - base = base.replace(k, v) - return base - - res = [] - log(" === 音符列表=>音调列表") - for i in Notes: - s2 = change(i[0]) - log(' === 正在操作音符' + i[0] + '->' + s2) - if s2 in notes.keys(): - log(" === 找到此音符,加入:" + str(notes[s2][0])) - res.append([notes[s2][0], float(i[1])]) - else: - log(' === ' + s2 + '不在音符表内,此处自动替换为 休止符0 ') - res.append(['0', float(i[1])]) - log(' === 最终反回' + str(res)) - return res - - -def mcnote2freq(Notes): - from nmcsup.const import notes - mcnback = {} - for i, j in notes.items(): - mcnback[j[0]] = i - res = [] - log(" === 我的世界音调表=>频率列表") - for i in Notes: - log(' === 正在操作音符' + i[0] + '->' + mcnback[i[0]]) - res.append([notes[mcnback[i[0]]][1], float(i[1])]) - log(' === 最终反回' + str(res)) - return res - - -# MP3文件转midi文件 -def Mp32Mid(mp3File, midFile): - from piano_transcription_inference import PianoTranscription, sample_rate, load_audio - # 加载 - (audio, _) = load_audio(mp3File, sr=sample_rate) # , mono=True - # 实例化并转换 - PianoTranscription(device="cpu").transcribe(audio, midFile) - - -# 传入一个音符列表转为指令列表 -def Note2Cmd(Notes: list, ScoreboardName: str, Instrument: str, PlayerSelect: str = '', - isProsess: bool = False) -> list: - commands = [] - a = 0.0 - length = len(Notes) - j = 1 - for i in range(len(Notes)): - commands.append("execute @a" + PlayerSelect + " ~ ~ ~ execute @s[scores={" + ScoreboardName + "=" + str( - int((a + 2) * 5 + int(Notes[i][1] * 5))) + "}] ~ ~ ~ playsound " + Instrument + " @s ~ ~ ~ 1000 " + str( - Notes[i][0]) + " 1000\n") - a += Notes[i][1] - if isProsess: - commands.append("execute @a" + PlayerSelect + " ~ ~ ~ execute @s[scores={" + ScoreboardName + "=" + str( - int((a + 2) * 5 + int(Notes[i][1] * 5))) + "}] ~ ~ ~ title @s actionbar §e▶ 播放中: §a" + str( - j) + "/" + str(length) + " || " + str(int(j / length * 1000) / 10) + "\n") - j += 1 - commands.append("\n\n# 凌云我的世界开发团队 x 凌云软件开发团队 : W-YI(金羿)\n") - return commands - - -# def newDataStructureCounterChange(): - - -# 简单载入方块 -# level.set_version_block(posx,posy,posz,"minecraft:overworld",("bedrock", (1, 16, 20)),Block(namespace, name)) - - -# 转入指令列表与位置信息转至世界 -def Cmd2World(cmd: list, world: str, dire: list): - """将指令以命令链的形式载入世界\n - cmd指令列表位为一个序列,中包含指令字符串\n - world为地图所在位置,需要指向文件夹,dire为指令方块生成之位置""" - level = amulet.load_level(world) - cdl = [] - for i in cmd: - # e = True - try: - if (i[:i.index('#')].replace(' ', '') != '\n') and (i[:i.index('#')].replace(' ', '') != ''): - cdl.append(i[:i.index('#')]) - # e = False - except: - cdl.append(i) - # finally: - # if e is True: - # cdl.append(i) - i = 0 - # 第一个是特殊 - universal_block = Block('universal_minecraft', 'command_block', - {'conditional': TAG_String("false"), 'facing': TAG_String('up'), - 'mode': TAG_String("repeating")}) - cx, cz = block_coords_to_chunk_coords(dire[0], dire[2]) - chunk = level.get_chunk(cx, cz, "minecraft:overworld") - offset_x, offset_z = dire[0] - 16 * cx, dire[2] - 16 * cz - universal_block_entity = BlockEntity('universal_minecraft', 'command_block', dire[0], dire[1], dire[2], - amulet_nbt.NBTFile(TAG_Compound({'utags': TAG_Compound( - {'auto': TAG_Byte(0), 'Command': TAG_String(cdl.pop(0))})}))) - chunk.blocks[offset_x, dire[1], offset_z] = level.block_palette.get_add_block(universal_block) - chunk.block_entities[(dire[0], dire[1], dire[2])] = universal_block_entity - chunk.changed = True - # 集体上移 - dire[1] += 1 - # 真正开始 - down = False - for j in cdl: - if dire[1] + i >= 255: - dire[0] += 1 - i = 0 - down = not down - # 定义此方块 - if dire[1] + i == 254: - universal_block = Block('universal_minecraft', 'command_block', - {'conditional': TAG_String("false"), 'facing': TAG_String('east'), - 'mode': TAG_String("chain")}) - else: - if down: - universal_block = Block('universal_minecraft', 'command_block', - {'conditional': TAG_String("false"), 'facing': TAG_String('down'), - 'mode': TAG_String("chain")}) - else: - universal_block = Block('universal_minecraft', 'command_block', - {'conditional': TAG_String("false"), 'facing': TAG_String('up'), - 'mode': TAG_String("chain")}) - cx, cz = block_coords_to_chunk_coords(dire[0], dire[2]) - # 获取区块 - chunk = level.get_chunk(cx, cz, "minecraft:overworld") - offset_x, offset_z = dire[0] - 16 * cx, dire[2] - 16 * cz - if down: - # 定义方块实体 - universal_block_entity = BlockEntity('universal_minecraft', 'command_block', dire[0], 254 - i, dire[2], - amulet_nbt.NBTFile(TAG_Compound({'utags': TAG_Compound( - {'auto': TAG_Byte(1), 'Command': TAG_String(j)})}))) - - # 将方块加入世界 - chunk.blocks[offset_x, 254 - i, offset_z] = level.block_palette.get_add_block(universal_block) - chunk.block_entities[(dire[0], 254 - i, dire[2])] = universal_block_entity - else: - # 定义方块实体 - universal_block_entity = BlockEntity('universal_minecraft', 'command_block', dire[0], dire[1] + i, dire[2], - amulet_nbt.NBTFile(TAG_Compound({'utags': TAG_Compound( - {'auto': TAG_Byte(1), 'Command': TAG_String(j)})}))) - - # 将方块加入世界 - chunk.blocks[offset_x, dire[1] + i, offset_z] = level.block_palette.get_add_block(universal_block) - chunk.block_entities[(dire[0], dire[1] + i, dire[2])] = universal_block_entity - # 设置为已更新区块 - chunk.changed = True - i += 1 - del i, cdl - # 保存世界并退出 - level.save() - level.close() - - -# 音符转成方块再加载到世界里头 -def Blocks2World(world: str, dire: list, Datas: list): - from nmcsup.const import Blocks - level = amulet.load_level(world) - i = 0 - - def setblock(block: str, pos: list): - """pos : list[int,int,int]""" - cx, cz = block_coords_to_chunk_coords(pos[0], pos[2]) - chunk = level.get_chunk(cx, cz, "minecraft:overworld") - offset_x, offset_z = pos[0] - 16 * cx, pos[2] - 16 * cz - chunk.blocks[offset_x, pos[1], offset_z] = level.block_palette.get_add_block(Block("minecraft", block)) - chunk.changed = True - - for j in Datas: - if dire[1] + 1 >= 255: - i = 0 - dire[0] += 1 - setblock(Blocks[j[0]], [dire[0], dire[1] + i, dire[2]]) - i = int(i + j[1] + 0.5) # 四舍五入 - level.save() - level.close() - - -# 传入音符列表制作播放器指令 -def Notes2Player(Note, dire: list, CmdData: dict): - """传入音符列表、坐标、指令数据,生成播放器指令""" - Notes = {} - for i in Note: - Notes[i[0]] = '' - Notes = list(Notes.keys()) - from nmcsup.const import Blocks - Cmds = [] - for j in Notes: - Cmds.append('execute @e[x=' + str(dire[0]) + ',y=' + str(dire[1]) + ',z=' + str(dire[2]) + ',dy=' + str( - 255 - dire[1]) + ',name=' + CmdData['Ent'] + '] ~ ~ ~ detect ~ ~ ~ ' + Blocks[j] + ' 0 execute @a ' + - CmdData['Pls'] + ' ~ ~ ~ playsound ' + CmdData['Ins'] + ' @s ~ ~ ~ 1000 ' + str(j) + ' 1000\n') - Cmds += ['#本函数由 金羿 音·创 生成\n', 'execute @e[y=' + str(dire[1]) + ',dy=' + str(255 - dire[1]) + ',name=' + CmdData[ - 'Ent'] + '] ~ ~ ~ tp ~ ~1 ~\n', - 'execute @e[y=255,dy=100,name=' + CmdData['Ent'] + '] ~ ~ ~ tp ~1 ' + str(dire[1]) + ' ~\n', - '#音·创 开发交流群 861684859'] - return Cmds - - -# 传入音符列表生成方块至世界 -def Datas2BlkWorld(NoteData, world: str, dire: list): - for i in range(len(NoteData)): - Blocks2World(world, [dire[0], dire[1], dire[2] + i], NoteData[i]) diff --git a/nmcsup/vers.py b/nmcsup/vers.py deleted file mode 100644 index f89ce58..0000000 --- a/nmcsup/vers.py +++ /dev/null @@ -1,86 +0,0 @@ -"""音创系列版本号和版本操作函数""" -# 统计:致命(三级)错误:0个;警告(二级)错误:0个;语法(一级)错误:24个 - - -from msctspt.bugReporter import version -import os - -# 以下下两个值请在 msctspt/bugReporter 的version类中修改 -VER = version.version -"""当前版本""" - -LIBS = version.libraries -"""当前所需库""" - - -# 判断版本、临时文件与补全库 -def compver(ver1, ver2): - """ - 传入不带英文的版本号,特殊情况:"10.12.2.6.5">"10.12.2.6" - :param ver1: 版本号1 - :param ver2: 版本号2 - :return: ver1< = >ver2返回-1/0/1 - """ - list1 = str(ver1).split(".") - list2 = str(ver2).split(".") - # 循环次数为短的列表的len - for i in range(len(list1)) if len(list1) < len(list2) else range(len(list2)): - if int(list1[i]) == int(list2[i]): - pass - elif int(list1[i]) < int(list2[i]): - return -1 - else: - return 1 - # 循环结束,哪个列表长哪个版本号高 - if len(list1) == len(list2): - return 0 - elif len(list1) < len(list2): - return -1 - else: - return 1 - - -# -# ———————————————— -# 版权声明:上面的函数compver为CSDN博主「基友死得早」的原创文章中的函数,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 -# 原文链接:https://blog.csdn.net/tinyjm/article/details/93514261 -# ———————————————— -# - - -def InstallLibs(now, LIBS1): - """比对库信息并安装库""" - from os import system as run - for i in LIBS1: - if i not in now: - print("安装库:" + i) - run("python -m pip install " + i + " -i https://pypi.tuna.tsinghua.edu.cn/simple") - - -def chkver(ver=VER, libs=LIBS): - """通过文件比对版本信息并安装库""" - if not os.path.exists(os.getenv('APPDATA') + '\\Musicreater\\msct.ActiveDatas.msct'): - print("新安装库") - os.makedirs(os.getenv('APPDATA') + '\\Musicreater\\') - with open(os.getenv('APPDATA') + '\\Musicreater\\msct.ActiveDatas.msct', 'w') as f: - f.write(ver[0] + '\n') - for i in libs: - f.write(i + '\n') - InstallLibs([], libs) - else: - with open(os.getenv('APPDATA') + '\\Musicreater\\msct.ActiveDatas.msct', 'r') as f: - v = f.readlines() - cp = compver(ver[0], v[0]) - if cp != 0: - InstallLibs(v[1:], libs) - with open(os.getenv('APPDATA') + '\\Musicreater\\msct.ActiveDatas.msct', 'w') as f: - f.write(ver[0] + '\n') - for i in libs: - f.write(i + '\n') - del cp - - -def resetver(): - """重置版本信息""" - import shutil - shutil.rmtree(os.getenv('APPDATA') + '\\Musicreater\\') diff --git a/resources/MSCT Dev Log.txt b/resources/MSCT Dev Log.txt deleted file mode 100644 index ed7f103..0000000 --- a/resources/MSCT Dev Log.txt +++ /dev/null @@ -1,239 +0,0 @@ -音·创(Musicreater)是由金羿(W-YI)开发的一款《我的世界》基岩版音乐生成辅助软件 -本软件源代码依照Apache 2.0软件协议公开。 - -Copyright © W-YI 2022 - -本软件是金羿前作函数音创和世界音创的集合版本,同时增加了大量功能更新。 - - - -=============== - 2022 年度挑战 -1.重构代码使全部变量皆使用类存储 -2.修改UI界面 -3.增加进度条 -4.修复生成bug -=============== - - - 新更新日志 - - Delta 0.2.0 -2022 2 10 ~ 2022 x -1.进行了大量的代码重构,使之更加易于开发 -2.对功能进行了精简优化,能够更加方便的开发新功能 -3.完善程序的一些外观与性能优化,使用了更多多线程板块 -4.在读取和写入的时候加入进度条,会实时反馈当前的加载进度 -5.能够使用可视化界面进行音乐的基本编辑 -6.提高用户感受,修复已知问题 -7.增强个性化设置,令用户能够用其所感 -8.更新读我文档,使之更用户化 -9.面对用户的操作加强 -10.新增下载器,无需用户从源代码安装 - - - Delta 0.1.5 -2022 4 4 -0.新增金羿生日祝福 -1.修复诸多问题 -2.正在往0.2版本迭代更新 -3.预计半年之内可以发布新版本 -4.支持使用自动安装器下载安装 -5. - - - Delta 0.1.5.2 -2022 2 1 农历大年初一 -0.程序图标完善 -1.修复了解析指令导致的错误 -2.注意!bug没有改完,也从未改完。 - - Delta 0.1.5.1 -2022 2 1 农历大年初一 -1.修复了部分midi文件无法读取的错误 - - Delta 0.1.5 -2022 2 1 农历大年初一 -1.修复所有用户在使用过程中可遇到的bug - - Delta 0.1.1 -2022 1 30 -1.新增设置调用方案,但未使用 -2.新增整个音乐生成单个BDX的功能,但必须用新方法解析 -3.发现陈年旧bug:在msctspt.funcOpera中makeFuncFiles生成的指令格式不对 -4.在nmcsup.trans中新增classList_conversion_SinglePlayer使用对于每个玩家的独立播放器 - - Delta 0.1.0 -2022 1 27 -1.完成了多音色的支持,但仍需修改 - - Delta 0.0.2 -2022 1 19 -1.纠正几乎所有语法 - - Delta 0.0.1 -2022 1 3 -1.新增对翻译字符串的支持 -2.把所有需要翻译的字符串用双引号字符串表示,其余全是单引号字符串 -2.2.累死我了,我错了我错了,饶了我吧,以后一定遵守代码规范 -3.新增多语言支持。 - - - Delta 0.0.0 -2022 1 2 -1.重新采用Tk作为窗口库 -2.优化界面布局 -3.修改部分按钮无响应的bug -4.新增启动时的Saying -5.删除命令行模式 -6.更新README文件,并增添英文README - - - Gamma 0.0.0 -2021 12 26~2021 12 31 -1.使用BeeWare作为窗口库 -2.兼容安卓,但是安卓上无法运行 -3.兼容窗口化系统,但是无法实现正常功能 -4.引申大量bug - - - Beta 0.0.4.3 -2021 11 3~2021 12 26 -1.不断改进包以及代码可读性 -2.修正部分源码错误 -3.修正部分格式错误 -4.加强对Linux系统的支持 -5.新增命令行模式 -6.代码中新增大量注释 - - - Beta 0.0.4 ~ Beta 0.0.4.2 -2021 11 20 ~ 2021 11 21 -1.完全支持Linux系统 -2.支持以.RyStruct导出结构 -3.修复大量bug -4.支持拖拽打开(参数1为.msct文件) - - - Beta 0.0.3.1~0.0.3.5 -2021 11 1~2021 11 2 -1.更新部分提示信息使之更加科学 -2.强制性限制不得使用非Win32平台打开此程序 -3.支持在Windwos7上使用此程序(发现错误并解决:DLL缺失MSVCP140.dll) -4.开始对结构导出进行部分支持 -5.发现红乐写入的错误,正在排查修复 - - - - - Beta 0.0.3 -2021 10 29 ~ 2021 10 31 -1.修改部分窗口排版 -2.修复指令载入地图的结构的错误 -3.修复指令生成出现的指令错误(感谢 昀梦 找出bug并指正) -4.支持生成红石音乐(以音符盒存储的音乐),并写入地图 -5.修复了生成指令音乐导致的错误 -6.修复bdx文件y轴过长导致无法生成完毕的错误,现在bdx的y轴为200格 - - - - - - Beta 0.0.2 -2021 10 25 -1.修复了邮件发送错误报告无法生成压缩包的问题 -2.修复了导入音轨时无法获得进程返回值的问题 -3.修复了.bdx文件生成时无法选择文件的问题 -4.修复了生成指令音乐(计分板)没有起始方块的问题 -5.新增了创建Websocket的功能,可以在localhost:8080创建websocket服务器播放音乐(感谢由 Fuckcraft “鸣凤鸽子”等 带来的我的世界websocket服务器功能(fcwslib) ) -6.解决了打包成可执行文件时无法正常退出的问题 - - - - Beta 0.0.1 -2021 10月 -1.支持生成.bdx文件(感谢由 Charlie_Ping “查理平” 带来的bdx转换功能) -2.逐步增强对安卓系统的支持 -3.逐步放弃对Windows的强行要求 -4.逐步提升性能,增加多线程 - - - - - - - - - - - Alpha部分更新日志 - - Alpha 0.0.0 -2021 8 20 -1.集合了 函数音创0.1.4.1 与 世界音创Beta0.0.1 的功能于本应用 -2.新增了可以生成 .mcpack 包的方法 - - Alpha 0.0.1 -2021 8 25 -1.新增两个彩蛋(就是函数音创命令行模式的彩蛋 - - Alpha 0.0.1.1 -2021 8 25 -1.修复大量已知问题 -2.修复了部分彩蛋bug,但是程序仍然不会正常退出 -3.菜单界面优化 - - Alpha 0.0.1.2 -2021.8.29 -1.修复大量已知问题 -2.现在可以操作指令文件了 -3.窗口界面优化 - - Alpha 0.0.2 -2021 9 5 -1.修复部分已知问题 -2.指令链导入之时仅生成链式方块且允许折转 -3.[Dev]正在逐步支持结构导出 - - Alpha 0.0.3 -2021 9 7 -1.修复指令链转入世界的摆放错误 -2.指令存储的音乐(包括函数)支持不同玩家不同的播放 -3.支持播放进度条 -4.删除彩蛋任务栏图标 -4.[Dev]已确定导出结构格式 - - Alpha 0.0.3.1 -2021 9 11 -1.取消输入玩家选择器时不会出现bug了 -2.删除日志文件修改为删除临时文件 -3.可以删除用于确认档案存在的文件了 - - Alpha 0.0.4 -2021 10 4-5 -1.可以将大函数导入世界(以一条链执行多个函数的方式) -2.关闭了试听音乐的功能,但是保留其函数于funOpera.py中 -3.修改部分代码,减少更多bug -4.发现指令链转入世界的摆放错误,但是没改正 - - 1.0.3 -2021 10 5-6 -1.解决一些已知问题 -2.解决了文件读取造成的字符编码问题 -3.使用PyPinyin库将汉字转化为拼音首字母 - - Alpha 0.0.4.1 -2021 10 9 -1.将清除日志功能设置为结束后统一清除,避免了清除过程中文件占用导致的问题 - - Alpha 0.0.5 -2021 10 10 -1.支持使用邮件方式发送错误报告(日志) - - Alpha 0.0.5.1 -1.修复了邮件发送错误报告无法发送的问题 -2.修复了打包成.exe文件之后无法正常退出的问题 - - - - diff --git a/resources/RyounLogo.png b/resources/RyounLogo.png deleted file mode 100644 index cb96d0f..0000000 Binary files a/resources/RyounLogo.png and /dev/null differ diff --git a/resources/donationCode.png b/resources/donationCode.png deleted file mode 100644 index 4758eb7..0000000 Binary files a/resources/donationCode.png and /dev/null differ diff --git a/resources/msctIcon.png b/resources/msctIcon.png deleted file mode 100644 index ecac602..0000000 Binary files a/resources/msctIcon.png and /dev/null differ diff --git a/resources/msctIcon_256px.png b/resources/msctIcon_256px.png deleted file mode 100644 index 3e36e97..0000000 Binary files a/resources/msctIcon_256px.png and /dev/null differ diff --git a/resources/msctIcon_512px.png b/resources/msctIcon_512px.png deleted file mode 100644 index ecac602..0000000 Binary files a/resources/msctIcon_512px.png and /dev/null differ diff --git a/resources/musicreater.ico b/resources/musicreater.ico deleted file mode 100644 index 4fbd5f3..0000000 Binary files a/resources/musicreater.ico and /dev/null differ diff --git a/resources/myWords.txt b/resources/myWords.txt deleted file mode 100644 index 6866d36..0000000 --- a/resources/myWords.txt +++ /dev/null @@ -1,130 +0,0 @@ -生命灵动 当用激情跃起奋发之力 -奇偶数阵 -学海无涯 应用爱意徜徉 -在生命的起源寻找灵魂的慰藉 -纪念那一段辉煌灿烂的青春年华 -以梦想为驱使 创造属于自己的未来 -集青春之力 绽放爱意之花 -那个曾与我相伴的人 依稀在我的心头留恋 -你是我灵魂中绽放出最艳丽的花朵 -心之所向 意之所属 -一个蛋从外面被敲开,注定被吃掉\n但从里面啄开,没准是只鹰 ——长津湖 -音·创 -辉煌的、璀璨的、无边无际、铺天盖地的晚霞\n洒下斑驳的金光,染红了整片山河 -《赫兰圣殿》 -风,摇曳着,轻抚着他的脸颊\n半壁残阳正留恋着人世最后一抹温暖 -清晨的阳光将吹散人间的雾霭 照亮每一寸土壤 -远方的山川 总会踏着白雾前来 -梦中的世界 总被现实相依存 -敌人都是自己树立的\n生存的道路上想要披荆斩棘,那就得学会化敌为友 -有光之处必有影 有影之处必有光 -一生所恋 相伴相随 -你的眼眸是剔透的晶灯 散发着醉人心扉的清光 -海波激出透人心脾的欢呼 -英雄何必要站在光中?\n深入黑暗,我自发光。 -如果我们有三生三世的时间\n那我们将渡过三百乘以三百六十个潮涨潮落 -善善不能用 恶恶不能去 -知行合一,格物致知;远沂博索,夕惕若厉;\n蕙心执质,嘉言懿行;怀瑾握瑜,心若芷萱。 -纪念 追忆 那段不平凡的青春 -守望黑夜的人,切莫忘记黎明的光彩 ——原神 -与邪佞战斗的人,切莫失掉正直的心 ——原神 -我的心 时刻系着祖国的山河 -生命 灵动 -坚如寒冰 烈似骄阳 -上了战场就是英雄 ——长津湖 -冰与火 恨与爱 静与情 -有些枪必须开,有些可以不开 ——长津湖 -夕阳西下,余辉将尽\n夜幕降临,寒风凛冽 ——原神 -愿风擦拭你的双眼,让你看清真相 ——原神 -心愿之结晶 而何能之宝贵 -神明,正倾诉着他辉煌的过去…… -一切过程与结果都不重要 重要的是热爱与真情 -给大家带来笑容 这就是我存在的使命 -不忘本源 牢记故地 -一厢情愿即是真 心海浮沉即为灵 -听戏时要点最红的名伶,\n遛鸟时要买最名贵的画眉\n——此即人生 ——原神 -「精巧」是千年的积淀,而其背后皆存于「意义」 -世事无常,悲喜难料 ——原神 -金钱在死亡面前毫不重要 -风雨兄弟情 -微笑面对现实 -人于磨难中练就 -Long live the People's Republic of China. -There is NO heroes, only honors. -A man achieve with challenges. -种果得果,等的就是这份收获的喜悦 ——原神 -事了拂衣去,深藏功与名 -万事开头虽难,倾注的情感也多;\n而欲永恒,仍需重新审视自身\n不小心处理,灵魂便留下裂纹无法挽回。 -历经历史的沉淀,留下希望的继承 -身为凡民,血脉脆弱,却也坚强 -民为本,社稷次之,君为轻 ——孟子 -不如归去 -你完成了你的职责,现在,去休息吧。 -一场长梦,梦醒之后,人就学会了诀别。 -你们——会祝福下一个时代吗? ——原神 -任何旅途中的旅伴同行,都会有分别的一日。 ——原神 -「永恒」最接近于天理 ——原神 -等旅途到达了终点,再考虑停留于何处吧。 ——原神 -人海中相遇,本是缘分。 ——原神 -凡缘朦朦仙缘滔 -因果红尘渺渺,烟消 ——原神 -未入尘世,而心远之 -灵心而静,莫问归期 -美酒宜人,宜人的却不只是美酒。 ——原神 -戏会落幕,人生却不会。 ——原神 -历史越久远,土地上的每一件事物就会承载更多价值。 ——原神 -深邃的灵魂唤起久远的回忆 -求索之人 当为奉之 -无论前路为星辰亦或深渊,皆需往而为之 -除了路途中的花与枫叶,还有心中的「道」 ——原神 -只有败北,才能感悟差距,才有机会成长 ——原神 -命运的邂逅,必定有其意义 ——原神 -万商云来,千船继至。\n百货迭出,诸海历览。\n ——原神 -现状越是难以置信,我们越是不能停下脚步。 ——原神 -古老的文明孕育着最美丽的传说 ——原神 -百川奔流 雨露不休 -梦,随着年月流逝而不断消散 -自由之风会指引前进的路,愿你与我们同行 -绯樱若解离别苦,自当常留驻。 ——原神 -犯错受罚,天经地义 -犯的错无法偿还,那便遭人嫉恨 -恨——埋藏在深深的地底,待到发出之时,直冲人心 -城市和风是有记忆的 ——原神 -传承,永远不变 -「由浅入深」,对万物的掌握皆是如此。 ——原神 -乘风破浪,勇往直前。 -时间的长河会见证过往的一切 -风沙的吹拂会证明遗失的散漠 -深冷的面具下埋藏着颤抖的心 -苦痛的旅程中盘错着举世的谎言 -欲落的花会告诉你我无尽的思念,而风会在此刻替我拥抱住你。 ——蝶<1361223398> -仰望这深邃的夜空,明星洒下的光,总是无尽斑驳 -欲知后事如何,唯有后世来分说 ——b站BV1jm4y1S76q -曲高未必人不识,自有知音和清词 ——原神 -接引春雷焚身骨,化灰以养万类荣 ——原神 -浮世景色百千年依旧,人之在世却如白露与泡影 ——原神 -今古诸事,激荡中流,宏图待看新秀 ——原神 -烟花易逝,人情长存 ——原神 -正因为我们都是须臾之人,才更应该珍惜须臾的美好 ——原神 -如果说,生命的脚印终有一天会被时间的尘埃掩埋,那么我们就永远不能停下脚步 ——明日方舟 -只要不停下脚步,道路就会不断延伸。 ——某B站用户 -红色光芒从遥远的地平线上浮现,影月留给人间的黑暗逐渐退潮 ——明日方舟 -如果没有人有了解真相的意愿,那就算把真相撒播在街道上,也不会发芽的 ——明日方舟 -永远不要否定善行,道德和良知永远不会错 ——明日方舟 -唯独死亡不可避免,唯独生命不可辜负 ——少女前线 -人即像树,枝叶越向往明亮的天空,根须越深入幽暗的地底 ——尼采 -沉默不代表服从,生活在黑暗里,不代表放弃光明 ——少女前线 -但行前路终无悔,只盼万事在人为 ——废墟图书馆 -我忘却了所有悲剧,所见之处皆是奇迹 ——空洞骑士 -只要坚信自己的道路,就无所谓天气是晴是雨。 ——原神 -在这个真实的太过分的世界里,每个人都需要仰望星空 ——原神 -当你重新踏上旅途之后,一定要记得旅途本身的意义 ——原神 -识花鸟之一趣,照月风之长路 ——原神 -只要不失去你的崇高,整个世界都会向你敞开 ——原神 -每个人都是一个自己的精神支柱 ——GitHub Copliot -I am a dreamer, but I am not a dreamer. ——GitHub Copliot -The only thing that makes a dream impossible is the fear of failure. ——GitHub Copliot -A dream is a wish that you have or something that you have dreamed of in your mind. ——GitHub Copliot -It is not the strongest of the species that survives, nor the most intelligent, nor the fastest. ——GitHub Copliot -To be a dreamer is to be a free spirit. ——GitHub Copliot -To be or not to be is a question. ——莎士比亚 diff --git a/查看代码数.py b/查看代码数.py deleted file mode 100644 index 4887557..0000000 --- a/查看代码数.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- conding: utf8 -*- - -import os -from msctspt.funcOpera import keepart - -m = 0 - -for path, dir_list, file_list in os.walk(r"./"): - for file_name in file_list: - if keepart(file_name, '.', None) == '.py': - file = os.path.join(path, file_name) - print("得到文件名:" + str(file)) - for i in open(file, 'r', encoding="utf-8"): - code = i.replace(' ', '').replace('\n', '') - - if code.startswith('#'): - continue - if code: - print("\t" + code) - m += 1 - else: - pass - -input("\n最终代码行数为:" + str(m)) diff --git a/测试用/Illusionary_Daytime_--------幻昼.mid b/测试用/Illusionary_Daytime_--------幻昼.mid deleted file mode 100644 index 5256369..0000000 Binary files a/测试用/Illusionary_Daytime_--------幻昼.mid and /dev/null differ diff --git a/测试用/RyounTeamSong.ry.nfc b/测试用/RyounTeamSong.ry.nfc deleted file mode 100644 index 6b1778a..0000000 --- a/测试用/RyounTeamSong.ry.nfc +++ /dev/null @@ -1,224 +0,0 @@ -{ - "mainset": { - "PackName": "RyounTeamSong", - "MusicTitle": "RyounUp", - "IsRepeat": false, - "PlayerSelect": "" - }, - "musics": [ - { - "set": { - "EntityName": "MusicSupport", - "ScoreboardName": "MusicSupport", - "Instrument": "harp", - "FileName": "RyounUp_RyounTeamSong" - }, - "notes": [ - [ - ".5", - 1.0 - ], - [ - "1", - 1.0 - ], - [ - "1", - 1.0 - ], - [ - "3", - 1.5 - ], - [ - "3", - 0.5 - ], - [ - "2", - 1.5 - ], - [ - "1", - 0.5 - ], - [ - "2", - 1.0 - ], - [ - "5", - 1.0 - ], - [ - "3", - 1.5 - ], - [ - "2", - 0.5 - ], - [ - ".6", - 1.0 - ], - [ - ".5", - 1.0 - ], - [ - "3", - 1.5 - ], - [ - "2", - 0.5 - ], - [ - "1", - 1.0 - ], - [ - "5", - 1.0 - ], - [ - "5", - 1.0 - ], - [ - "6", - 0.5 - ], - [ - "5", - 0.5 - ], - [ - "3", - 1.0 - ], - [ - "5", - 0.5 - ], - [ - "3", - 0.5 - ], - [ - "2", - 1.0 - ], - [ - "2", - 1.0 - ], - [ - "3", - 0.5 - ], - [ - "2", - 0.5 - ], - [ - "1", - 1.0 - ], - [ - "1", - 1.0 - ], - [ - "3", - 1.0 - ], - [ - "3", - 1.0 - ], - [ - "5", - 1.0 - ], - [ - "0", - 1.0 - ], - [ - ".5", - 0.5 - ], - [ - ".6", - 0.5 - ], - [ - "1", - 1.0 - ], - [ - "1", - 1.0 - ], - [ - "6", - 1.0 - ], - [ - "1", - 1.0 - ], - [ - "2", - 1.0 - ], - [ - "3", - 1.0 - ], - [ - "3", - 1.0 - ], - [ - "3", - 1.0 - ], - [ - "3", - 1.0 - ], - [ - "2", - 1.0 - ], - [ - "5", - 1.5 - ], - [ - ".5", - 0.5 - ], - [ - "1", - 1.0 - ], - [ - "1", - 1.0 - ], - [ - "0", - 1.0 - ], - [ - "0", - 1.0 - ] - ] - } - ] -} \ No newline at end of file diff --git a/测试用/hz.msctn b/测试用/hz.msctn deleted file mode 100644 index ef5ecea..0000000 Binary files a/测试用/hz.msctn and /dev/null differ diff --git a/测试用/tdst.msct b/测试用/tdst.msct deleted file mode 100644 index a0d9f24..0000000 --- a/测试用/tdst.msct +++ /dev/null @@ -1 +0,0 @@ -{"mainset": {"ReadMethod": "old", "PackName": "Ryoun", "MusicTitle": "Noname", "IsRepeat": false, "PlayerSelect": ""}, "musics": [{"set": {"EntityName": "MusicSupport", "ScoreboardName": "MusicSupport", "Instrument": "note.harp", "FileName": "Music"}, "notes": [[0.0, 1.0]]}, {"set": {"EntityName": "MusicSupport", "ScoreboardName": "MusicSupport", "Instrument": "note.harp", "FileName": "Music"}, "notes": [[1.5, 1.0], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 1.1854166666666666], [1.5, 0.06458333333333334], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [2.0, 0.014583333333333334], [1.5, 1.0], [2.0, 0.11041666666666666], [2.24, 0.0125], [2.24, 0.11041666666666666], [1.5, 0.0020833333333333333], [3.0, 0.0125], [1.12, 0.0020833333333333333], [3.0, 0.10833333333333334], [3.36, 0.016666666666666666], [3.36, 0.11041666666666666], [1.12, 1.0], [3.0, 0.0125], [1.0, 0.0020833333333333333], [3.0, 0.10833333333333334], [3.36, 0.014583333333333334], [3.36, 0.11041666666666666], [1.0, 0.0020833333333333333], [3.0, 0.014583333333333334], [1.33, 1.0], [3.0, 0.11041666666666666], [3.36, 0.0125], [3.36, 0.11041666666666666], [3.0, 0.014583333333333334], [3.0, 0.11041666666666666], [3.36, 0.016666666666666666], [3.36, 0.11041666666666666], [3.0, 0.0125], [3.0, 0.11041666666666666], [3.36, 0.014583333333333334], [3.36, 0.11041666666666666], [3.0, 0.016666666666666666], [3.0, 0.11041666666666666], [3.36, 0.0125], [3.36, 0.11041666666666666], [3.0, 0.014583333333333334], [3.0, 0.11041666666666666], [3.36, 0.016666666666666666], [1.33, 0.06041666666666667], [3.36, 0.05], [3.0, 0.0125], [1.5, 0.0020833333333333333], [3.0, 0.10833333333333334], [3.36, 0.014583333333333334], [3.36, 0.11041666666666666], [1.5, 0.0020833333333333333], [3.0, 0.014583333333333334], [1.12, 1.0], [3.0, 0.11041666666666666], [3.36, 0.0125], [3.36, 0.11041666666666666], [1.12, 0.0020833333333333333], [3.0, 0.0125], [1.0, 0.0020833333333333333], [3.0, 0.10833333333333334], [3.36, 0.016666666666666666], [3.36, 0.11041666666666666], [1.0, 1.0], [3.0, 0.0125], [1.33, 0.0020833333333333333], [3.0, 0.10833333333333334], [3.36, 0.014583333333333334], [3.36, 0.11041666666666666], [3.0, 0.016666666666666666], [3.0, 0.11041666666666666], [3.36, 0.0125], [1.33, 0.1], [3.36, 0.010416666666666666], [3.0, 0.014583333333333334], [1.5, 0.0020833333333333333], [3.0, 0.10833333333333334], [3.36, 0.016666666666666666], [3.36, 0.11041666666666666], [1.5, 1.0], [3.0, 0.0125], [1.12, 0.0020833333333333333], [3.0, 0.10833333333333334], [3.36, 0.014583333333333334], [3.36, 0.11041666666666666], [1.12, 0.0020833333333333333], [2.67, 0.014583333333333334], [1.0, 1.0], [2.67, 0.23541666666666666], [1.0, 1.0], [2.24, 0.014583333333333334], [1.5, 1.0], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.9479166666666666], [1.5, 0.052083333333333336], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [1.5, 0.014583333333333334], [2.24, 0.5479166666666667], [2.0, 0.20208333333333334], [1.5, 0.19791666666666666], [1.12, 0.052083333333333336], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 2.1354166666666665], [2.0, 0.4375], [1.0, 0.17708333333333334], [1.7, 1.0], [2.0, 1.0], [1.0, 0.47291666666666665], [1.7, 1.0], [2.0, 1.0], [2.24, 0.027083333333333334], [2.24, 0.9479166666666666], [1.5, 0.052083333333333336], [1.5, 0.9479166666666666], [2.67, 0.052083333333333336], [2.67, 0.47291666666666665], [3.0, 0.027083333333333334], [3.0, 0.23541666666666666], [2.67, 0.014583333333333334], [2.67, 0.7104166666666667], [2.24, 0.03958333333333333], [2.24, 0.47291666666666665], [2.0, 0.027083333333333334], [2.0, 0.47291666666666665], [1.8, 0.027083333333333334], [1.8, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.47291666666666665], [2.0, 0.027083333333333334], [2.0, 0.23541666666666666], [2.67, 0.014583333333333334], [2.67, 0.23541666666666666], [2.4, 0.014583333333333334], [2.4, 0.47291666666666665], [2.4, 0.027083333333333334], [2.4, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.47291666666666665], [2.24, 0.027083333333333334], [2.24, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.9479166666666666], [1.5, 0.052083333333333336], [1.5, 0.9479166666666666], [2.0, 0.052083333333333336], [2.0, 0.47291666666666665], [1.8, 0.027083333333333334], [1.8, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.7104166666666667], [2.67, 0.03958333333333333], [2.67, 0.47291666666666665], [2.4, 0.027083333333333334], [2.4, 0.47291666666666665], [2.24, 0.027083333333333334], [2.24, 0.23541666666666666], [2.4, 0.014583333333333334], [2.4, 0.7104166666666667], [2.67, 0.03958333333333333], [2.67, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 1.4229166666666666], [2.0, 0.07708333333333334], [2.0, 0.47291666666666665], [2.24, 0.027083333333333334], [2.24, 0.9479166666666666], [1.5, 0.052083333333333336], [1.5, 0.9479166666666666], [2.67, 0.052083333333333336], [2.67, 0.47291666666666665], [3.0, 0.027083333333333334], [3.0, 0.23541666666666666], [2.67, 0.014583333333333334], [2.67, 0.7104166666666667], [2.24, 0.03958333333333333], [2.24, 0.47291666666666665], [2.0, 0.027083333333333334], [2.0, 0.47291666666666665], [1.8, 0.027083333333333334], [1.8, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.47291666666666665], [2.0, 0.027083333333333334], [2.0, 0.23541666666666666], [2.67, 0.014583333333333334], [2.67, 0.23541666666666666], [2.4, 0.014583333333333334], [2.4, 0.47291666666666665], [2.4, 0.027083333333333334], [2.4, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.47291666666666665], [2.24, 0.027083333333333334], [2.24, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.9479166666666666], [1.5, 0.052083333333333336], [1.5, 0.9479166666666666], [1.7, 0.052083333333333336], [1.7, 0.47291666666666665], [1.8, 0.027083333333333334], [1.8, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.7104166666666667], [2.67, 0.03958333333333333], [2.67, 0.47291666666666665], [2.0, 0.027083333333333334], [2.24, 1.0], [3.0, 1.0], [2.0, 0.12291666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.0020833333333333333], [1.5, 0.12291666666666666], [2.0, 0.0020833333333333333], [2.24, 1.0], [3.0, 1.0], [2.0, 0.12291666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.0020833333333333333], [1.5, 0.12291666666666666], [2.0, 0.0020833333333333333], [2.24, 1.0], [3.0, 1.0], [2.0, 0.12291666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.0020833333333333333], [1.5, 0.12291666666666666], [2.0, 0.0020833333333333333], [2.24, 1.0], [3.0, 1.0], [2.0, 0.12291666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.0020833333333333333], [1.5, 0.12291666666666666], [2.0, 0.0020833333333333333], [2.24, 1.0], [3.0, 1.0], [2.0, 0.12291666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.0020833333333333333], [1.5, 0.12291666666666666], [2.0, 0.0020833333333333333], [2.24, 1.0], [3.0, 1.0], [2.0, 0.12291666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.0020833333333333333], [1.5, 0.12291666666666666], [2.0, 0.0020833333333333333], [2.24, 1.0], [3.0, 1.0], [2.0, 0.12291666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.0020833333333333333], [1.5, 0.12291666666666666], [2.0, 0.0020833333333333333], [2.24, 1.0], [3.0, 1.0], [2.0, 0.12291666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.0020833333333333333], [1.5, 0.12291666666666666], [2.0, 0.0020833333333333333], [2.24, 1.0], [3.0, 1.0], [2.0, 1.4229166666666666], [2.24, 1.0], [3.0, 1.0], [1.12, 0.07708333333333334], [1.12, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.33, 0.027083333333333334], [1.33, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.47291666666666665], [1.12, 0.027083333333333334], [1.12, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 2.6104166666666666], [1.0, 0.13958333333333334], [1.0, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.33, 0.027083333333333334], [1.33, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.47291666666666665], [1.12, 0.027083333333333334], [1.12, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 2.6104166666666666], [1.12, 0.13958333333333334], [1.12, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.33, 0.027083333333333334], [1.33, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.47291666666666665], [1.12, 0.027083333333333334], [1.12, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.7104166666666667], [0.67, 0.03958333333333333], [0.67, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 1.6604166666666667], [1.0, 0.08958333333333333], [1.0, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.33, 0.027083333333333334], [1.33, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.47291666666666665], [1.12, 0.027083333333333334], [1.12, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.9479166666666666], [1.8, 0.052083333333333336], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.12, 0.027083333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.0, 0.014583333333333334], [2.0, 1.0], [1.0, 0.47291666666666665], [2.0, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.47291666666666665], [2.67, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.7104166666666667], [2.24, 1.0], [0.75, 0.03958333333333333], [1.5, 1.0], [0.75, 0.47291666666666665], [1.5, 1.0], [1.12, 0.027083333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.12, 0.027083333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [0.9, 0.014583333333333334], [1.8, 1.0], [0.9, 1.1854166666666666], [1.8, 1.0], [1.8, 0.06458333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.12, 0.027083333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.0, 0.014583333333333334], [2.0, 1.0], [1.0, 0.47291666666666665], [2.0, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.7104166666666667], [3.0, 1.0], [1.12, 0.03958333333333333], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.4, 0.014583333333333334], [2.83, 1.0], [1.4, 0.23541666666666666], [1.4, 0.014583333333333334], [1.4, 1.0], [1.4, 1.0], [1.4, 0.11458333333333333], [1.5, 0.010416666666666666], [1.5, 1.0], [1.5, 1.0], [1.5, 0.11458333333333333], [1.6, 0.010416666666666666], [1.6, 1.0], [1.6, 1.0], [1.6, 0.11458333333333333], [1.7, 0.010416666666666666], [1.7, 1.0], [1.7, 1.0], [1.7, 0.11458333333333333], [1.8, 0.010416666666666666], [1.8, 1.0], [1.8, 1.0], [1.8, 0.11458333333333333], [1.9, 0.010416666666666666], [1.9, 1.0], [1.9, 1.0], [1.9, 0.11458333333333333], [2.0, 0.010416666666666666], [2.0, 1.0], [2.0, 1.0], [2.0, 0.11458333333333333], [2.1, 0.010416666666666666], [2.1, 1.0], [2.1, 1.0], [2.83, 0.06041666666666667], [2.1, 0.05416666666666667], [1.12, 0.010416666666666666], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.8, 0.027083333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.0, 0.014583333333333334], [2.0, 1.0], [1.0, 0.47291666666666665], [2.0, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.12, 0.027083333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.8, 0.027083333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.47291666666666665], [2.67, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.47291666666666665], [3.0, 1.0], [1.12, 0.5270833333333333], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.7104166666666667], [3.36, 1.0], [1.33, 0.03958333333333333], [2.67, 1.0], [1.33, 0.47291666666666665], [2.67, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [2.24, 0.014583333333333334], [3.56, 1.0], [2.24, 0.23541666666666666], [3.56, 1.0], [2.24, 0.014583333333333334], [3.56, 1.0], [2.24, 0.23541666666666666], [3.56, 1.0], [2.24, 0.014583333333333334], [3.56, 1.0], [2.24, 0.23541666666666666], [3.56, 1.0], [2.24, 0.014583333333333334], [3.56, 1.0], [2.24, 0.23541666666666666], [3.56, 1.0], [2.24, 0.014583333333333334], [3.56, 1.0], [2.24, 0.23541666666666666], [3.56, 1.0], [2.0, 0.014583333333333334], [3.36, 1.0], [2.0, 0.23541666666666666], [3.36, 1.0], [2.67, 0.014583333333333334], [4.5, 1.0], [2.67, 0.23541666666666666], [4.5, 1.0], [2.24, 0.014583333333333334], [3.56, 1.0], [2.24, 1.1854166666666666], [3.56, 1.0], [1.12, 0.06458333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.8, 0.027083333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.0020833333333333333], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.0, 0.014583333333333334], [2.0, 1.0], [1.0, 0.47291666666666665], [2.0, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.12, 0.027083333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.8, 0.027083333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.47291666666666665], [2.67, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.47291666666666665], [3.0, 1.0], [1.12, 0.5270833333333333], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.7104166666666667], [3.36, 1.0], [1.33, 0.03958333333333333], [2.67, 1.0], [1.33, 0.47291666666666665], [2.67, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [2.67, 0.014583333333333334], [5.34, 1.0], [2.67, 0.23541666666666666], [5.34, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [1.12, 0.26458333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [0.9, 0.014583333333333334], [0.9, 0.23541666666666666], [0.84, 0.014583333333333334], [0.84, 0.23541666666666666], [1.12, 0.014583333333333334], [0.9, 1.0], [1.12, 0.23541666666666666], [0.9, 1.0], [1.7, 0.014583333333333334], [0.84, 1.0], [1.7, 0.23541666666666666], [0.84, 1.0], [1.8, 0.014583333333333334], [0.67, 1.0], [1.8, 0.23541666666666666], [0.67, 1.0], [1.8, 0.014583333333333334], [1.8, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.47291666666666665], [1.12, 0.27708333333333335], [1.12, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 1.1854166666666666], [2.24, 0.06458333333333334], [2.24, 0.63125], [2.0, 0.035416666666666666], [2.0, 0.63125], [1.8, 0.035416666666666666], [1.8, 0.63125], [1.7, 0.035416666666666666], [1.7, 0.47291666666666665], [1.33, 0.027083333333333334], [1.33, 0.47291666666666665], [1.12, 0.027083333333333334], [1.12, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.47291666666666665], [1.5, 0.027083333333333334], [0.75, 1.0], [0.75, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 1.0], [1.12, 0.25], [1.12, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 1.0], [1.12, 0.25], [1.12, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 1.0], [1.12, 0.25], [1.12, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.5, 0.0125], [1.7, 0.0020833333333333333], [1.7, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [1.33, 0.014583333333333334], [1.12, 1.0], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.0125], [1.5, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 1.0], [1.12, 0.25], [1.5, 0.24791666666666667], [1.12, 1.0], [2.24, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [2.24, 0.24791666666666667], [1.7, 1.0], [2.24, 0.0020833333333333333], [1.7, 1.0], [1.7, 0.24791666666666667], [1.33, 0.0020833333333333333], [2.24, 0.24791666666666667], [1.33, 1.0], [2.67, 0.0020833333333333333], [1.12, 1.0], [2.67, 0.24791666666666667], [1.12, 1.0], [3.0, 0.0020833333333333333], [1.0, 1.0], [3.0, 0.24791666666666667], [1.0, 1.0], [2.5, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [2.5, 0.24791666666666667], [1.7, 1.0], [2.5, 0.0020833333333333333], [1.8, 1.0], [2.5, 0.24791666666666667], [1.8, 1.0], [2.67, 0.0020833333333333333], [1.7, 1.0], [2.67, 0.24791666666666667], [1.7, 1.0], [2.5, 0.0020833333333333333], [1.7, 1.0], [1.7, 0.24791666666666667], [1.33, 0.0020833333333333333], [2.5, 0.24791666666666667], [1.33, 1.0], [2.0, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [2.0, 0.24791666666666667], [1.0, 1.0], [2.24, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [2.24, 0.24791666666666667], [1.12, 1.0], [1.5, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 1.0], [1.33, 0.25], [1.33, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.7, 1.0], [1.5, 0.0020833333333333333], [1.7, 1.0], [1.7, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.33, 1.0], [1.33, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.0, 1.0], [1.5, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 1.0], [1.12, 0.25], [1.5, 0.24791666666666667], [1.12, 1.0], [2.24, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [2.24, 0.24791666666666667], [1.0, 1.0], [1.5, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 1.0], [1.12, 0.25], [1.5, 0.24791666666666667], [1.12, 1.0], [2.24, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.33, 0.0020833333333333333], [2.24, 0.24791666666666667], [1.33, 1.0], [2.67, 0.0020833333333333333], [1.12, 1.0], [2.67, 0.24791666666666667], [1.12, 1.0], [3.0, 0.0020833333333333333], [1.0, 1.0], [3.0, 0.24791666666666667], [1.0, 1.0], [2.5, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [2.5, 0.24791666666666667], [1.7, 1.0], [2.5, 0.0020833333333333333], [1.8, 1.0], [2.5, 0.24791666666666667], [1.8, 1.0], [2.67, 0.0020833333333333333], [1.7, 1.0], [2.67, 0.24791666666666667], [1.7, 1.0], [2.5, 0.0020833333333333333], [1.7, 1.0], [1.7, 0.24791666666666667], [1.33, 0.0020833333333333333], [2.5, 0.24791666666666667], [1.33, 1.0], [2.0, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [2.0, 0.24791666666666667], [1.0, 1.0], [2.24, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [2.24, 0.24791666666666667], [1.12, 1.0], [1.5, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 1.0], [1.33, 0.25], [1.33, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.8, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.7, 1.0], [1.5, 0.0020833333333333333], [1.7, 1.0], [1.7, 0.23541666666666666], [1.33, 0.014583333333333334], [1.5, 0.22291666666666668], [1.33, 0.0125], [1.33, 0.014583333333333334], [1.12, 1.0], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.0125], [1.5, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 1.0], [1.12, 0.25], [1.12, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 1.0], [1.33, 0.25], [1.33, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.33, 0.014583333333333334], [1.5, 0.22291666666666668], [1.33, 0.0125], [2.24, 0.014583333333333334], [1.12, 1.0], [2.24, 0.12291666666666666], [2.0, 0.0020833333333333333], [1.12, 0.11041666666666666], [2.0, 0.0125], [2.24, 0.0020833333333333333], [1.0, 1.0], [2.24, 0.12291666666666666], [2.67, 0.0020833333333333333], [1.0, 0.11041666666666666], [2.67, 0.0125], [3.0, 0.0020833333333333333], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 1.2479166666666666], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [3.0, 0.24791666666666667], [1.0, 1.0], [3.36, 0.0020833333333333333], [1.33, 1.0], [3.36, 0.12291666666666666], [3.56, 0.0020833333333333333], [3.56, 0.12291666666666666], [3.36, 0.0020833333333333333], [1.33, 0.24791666666666667], [3.36, 1.0], [2.67, 0.0020833333333333333], [1.5, 1.0], [2.67, 0.24791666666666667], [1.5, 1.0], [2.0, 0.0020833333333333333], [1.12, 1.0], [2.0, 0.24791666666666667], [1.12, 1.0], [2.67, 0.0020833333333333333], [1.0, 1.0], [2.67, 0.24791666666666667], [1.0, 1.0], [2.24, 0.0020833333333333333], [1.5, 1.0], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 1.1854166666666666], [1.5, 0.06458333333333334], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [2.24, 0.24791666666666667], [1.12, 1.0], [3.36, 0.0020833333333333333], [1.0, 1.0], [3.36, 0.24791666666666667], [1.0, 1.0], [3.56, 0.0020833333333333333], [1.33, 1.0], [3.56, 0.24791666666666667], [3.36, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.5, 0.0020833333333333333], [3.36, 0.24791666666666667], [1.5, 1.0], [2.67, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [2.67, 0.24791666666666667], [1.0, 1.0], [3.0, 0.0020833333333333333], [1.5, 1.0], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 1.1854166666666666], [1.5, 0.06458333333333334], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [3.0, 0.24791666666666667], [1.0, 1.0], [3.36, 0.0020833333333333333], [1.33, 1.0], [3.36, 0.12291666666666666], [3.56, 0.0020833333333333333], [3.56, 0.12291666666666666], [3.36, 0.0020833333333333333], [1.33, 0.24791666666666667], [3.36, 1.0], [2.67, 0.0020833333333333333], [1.5, 1.0], [2.67, 0.24791666666666667], [1.5, 1.0], [2.0, 0.0020833333333333333], [1.12, 1.0], [2.0, 0.24791666666666667], [1.12, 1.0], [2.67, 0.0020833333333333333], [1.0, 1.0], [2.67, 0.24791666666666667], [1.0, 1.0], [2.24, 0.0020833333333333333], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [2.24, 0.16458333333333333], [3.0, 0.0020833333333333333], [1.0, 0.08125], [1.33, 0.0020833333333333333], [3.0, 0.58125], [2.67, 0.0020833333333333333], [1.33, 0.6645833333333333], [2.67, 1.0], [2.67, 0.0020833333333333333], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [2.67, 0.24791666666666667], [1.12, 1.0], [2.24, 0.0020833333333333333], [1.0, 1.0], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [2.24, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 1.0], [1.5, 0.25], [1.33, 0.24791666666666667], [1.5, 1.0], [1.5, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.0, 1.0], [1.12, 0.0020833333333333333], [2.24, 1.0], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 1.0], [1.0, 0.25], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.12, 0.7479166666666667], [2.24, 1.0], [1.0, 0.0020833333333333333], [2.0, 1.0], [1.0, 0.24791666666666667], [2.0, 1.0], [1.33, 0.0020833333333333333], [1.33, 1.0], [2.67, 1.0], [1.5, 0.25], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 1.0], [1.5, 0.5], [1.33, 0.24791666666666667], [2.67, 1.0], [1.5, 1.0], [1.33, 0.0020833333333333333], [2.67, 1.0], [1.12, 1.0], [1.33, 0.24791666666666667], [2.67, 1.0], [1.12, 1.0], [1.5, 0.0020833333333333333], [3.0, 1.0], [1.0, 1.0], [1.5, 0.24791666666666667], [3.0, 1.0], [1.0, 1.0], [2.24, 0.0020833333333333333], [5.34, 1.0], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [2.24, 0.7479166666666667], [5.34, 1.0], [2.0, 0.0020833333333333333], [4.0, 1.0], [2.0, 0.24791666666666667], [4.0, 1.0], [1.7, 0.0020833333333333333], [3.36, 1.0], [1.33, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.014583333333333334], [1.7, 0.19791666666666666], [3.36, 1.0], [2.67, 0.052083333333333336], [1.33, 0.22291666666666668], [1.5, 0.027083333333333334], [1.5, 0.23541666666666666], [2.67, 0.0125], [3.0, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [3.0, 0.0125], [1.12, 0.0020833333333333333], [2.24, 1.0], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 1.0], [1.0, 0.25], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.12, 0.7479166666666667], [2.24, 1.0], [1.0, 0.0020833333333333333], [2.24, 1.0], [1.0, 0.24791666666666667], [2.24, 1.0], [1.5, 0.0020833333333333333], [3.0, 1.0], [1.33, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 1.0], [1.12, 0.25], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 1.0], [1.12, 0.25], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.5, 0.14791666666666667], [3.0, 1.0], [1.0, 0.0875], [2.24, 0.014583333333333334], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [2.24, 0.7479166666666667], [2.0, 0.0020833333333333333], [2.0, 0.24791666666666667], [3.36, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [3.36, 0.24791666666666667], [2.67, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.5, 0.0020833333333333333], [2.67, 0.24791666666666667], [1.5, 1.0], [3.0, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [3.0, 0.0125], [1.5, 0.0020833333333333333], [2.0, 0.0375], [2.24, 0.03958333333333333], [3.0, 0.0375], [2.0, 0.13125], [2.24, 1.0], [3.0, 1.0], [1.5, 0.0020833333333333333], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.4979166666666667], [1.33, 0.0020833333333333333], [1.33, 0.4979166666666667], [1.12, 0.0020833333333333333], [1.12, 0.7479166666666667], [1.0, 0.0020833333333333333], [1.0, 0.12291666666666666], [1.12, 0.0020833333333333333], [1.12, 0.12291666666666666], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [0.9, 0.0020833333333333333], [0.84, 0.25], [0.84, 0.24791666666666667], [0.67, 0.0020833333333333333], [0.67, 0.23541666666666666], [0.9, 0.010416666666666666], [0.75, 0.004166666666666667], [1.0, 0.0375], [1.12, 0.03958333333333333], [1.5, 0.0375], [0.75, 0.06041666666666667], [1.0, 0.07083333333333333], [1.12, 1.0], [1.5, 1.0], [1.12, 0.004166666666666667], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.4979166666666667], [1.33, 0.0020833333333333333], [1.33, 0.4979166666666667], [1.0, 0.0020833333333333333], [1.12, 1.0], [1.5, 1.0], [1.0, 0.7479166666666667], [1.12, 1.0], [1.5, 1.0], [1.33, 0.0020833333333333333], [1.33, 0.12291666666666666], [1.5, 0.0020833333333333333], [1.5, 0.12291666666666666], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.4979166666666667], [1.0, 0.0020833333333333333], [1.0, 0.4979166666666667], [1.12, 0.0020833333333333333], [1.12, 0.4979166666666667], [1.33, 0.0020833333333333333], [1.33, 0.4979166666666667], [1.12, 0.0020833333333333333], [1.12, 0.7479166666666667], [1.0, 0.0020833333333333333], [1.0, 0.12291666666666666], [1.12, 0.0020833333333333333], [1.12, 0.12291666666666666], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [0.9, 0.0020833333333333333], [0.9, 0.24791666666666667], [0.84, 0.0020833333333333333], [0.84, 0.24791666666666667], [0.67, 0.0020833333333333333], [0.67, 0.24583333333333332], [0.75, 0.004166666666666667], [0.75, 0.4979166666666667], [1.0, 0.0020833333333333333], [1.0, 0.4979166666666667], [1.12, 0.0020833333333333333], [1.12, 0.4979166666666667], [1.33, 0.0020833333333333333], [1.33, 0.4979166666666667], [1.5, 0.0020833333333333333], [1.5, 0.7479166666666667], [1.7, 0.0020833333333333333], [1.7, 0.12291666666666666], [1.8, 0.0020833333333333333], [1.8, 0.12291666666666666], [1.7, 0.0020833333333333333], [1.7, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [0.9, 0.0020833333333333333], [0.9, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [1.5, 0.008333333333333333], [1.5, 0.7104166666666667], [1.7, 0.03958333333333333], [1.7, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [1.5, 0.008333333333333333], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [1.5, 0.008333333333333333], [1.5, 0.7104166666666667], [1.7, 0.03958333333333333], [1.7, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [1.5, 0.008333333333333333], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [1.5, 0.008333333333333333], [1.5, 0.7104166666666667], [1.7, 0.03958333333333333], [1.7, 0.24791666666666667], [1.7, 0.0020833333333333333], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [1.5, 0.008333333333333333], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.23541666666666666], [0.9, 0.014583333333333334], [0.9, 0.24791666666666667], [0.9, 0.0020833333333333333], [0.9, 0.23541666666666666], [0.84, 0.014583333333333334], [0.84, 0.12291666666666666], [0.9, 0.0020833333333333333], [0.9, 0.11666666666666667], [0.84, 0.008333333333333333], [0.84, 0.11666666666666667], [0.67, 0.008333333333333333], [0.67, 0.11666666666666667], [0.75, 0.008333333333333333], [0.75, 0.12291666666666666], [0.84, 0.0020833333333333333], [0.84, 0.11666666666666667], [0.75, 0.008333333333333333], [0.75, 0.11666666666666667], [0.67, 0.008333333333333333], [0.67, 0.11666666666666667], [0.75, 0.008333333333333333], [0.75, 0.11666666666666667], [0.9, 0.008333333333333333], [0.9, 0.11666666666666667], [1.0, 0.008333333333333333], [1.0, 0.11666666666666667], [1.12, 0.008333333333333333], [1.12, 0.11666666666666667], [1.33, 0.008333333333333333], [1.33, 0.11666666666666667], [1.12, 0.008333333333333333], [1.12, 0.11666666666666667], [1.0, 0.008333333333333333], [1.0, 0.11666666666666667], [0.9, 0.008333333333333333], [0.9, 0.11666666666666667], [1.12, 0.008333333333333333], [1.12, 0.11666666666666667], [1.0, 0.008333333333333333], [1.0, 0.11666666666666667], [0.9, 0.008333333333333333], [0.9, 0.11666666666666667], [0.67, 0.008333333333333333], [0.67, 0.11666666666666667], [0.75, 0.008333333333333333], [0.75, 1.0], [0.75, 1.0], [0.56, 0.25], [0.75, 0.24791666666666667], [0.56, 1.0], [1.12, 0.0020833333333333333], [0.5, 1.0], [0.5, 1.0], [0.67, 0.25], [1.12, 1.2479166666666666], [0.67, 1.0], [0.75, 0.0020833333333333333], [0.75, 1.0], [0.75, 1.0], [0.56, 0.25], [0.56, 0.24791666666666667], [0.5, 0.0020833333333333333], [0.75, 0.16458333333333333], [1.0, 0.0020833333333333333], [0.5, 0.08125], [0.67, 0.0020833333333333333], [0.67, 0.4979166666666667], [0.75, 0.0020833333333333333], [1.0, 0.08125], [0.9, 0.0020833333333333333], [0.75, 0.16458333333333333], [0.56, 0.0020833333333333333], [0.56, 0.24791666666666667], [0.5, 0.0020833333333333333], [0.9, 0.24791666666666667], [0.5, 1.0], [0.84, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.24791666666666667], [0.56, 0.0020833333333333333], [0.56, 0.24791666666666667], [0.5, 0.0020833333333333333], [0.5, 0.24791666666666667], [0.67, 0.0020833333333333333], [0.84, 1.2479166666666666], [0.67, 1.0], [0.9, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.23541666666666666], [0.56, 0.014583333333333334], [0.56, 0.23541666666666666], [0.5, 0.014583333333333334], [0.5, 0.23541666666666666], [0.67, 0.014583333333333334], [0.9, 0.24791666666666667], [2.24, 0.0020833333333333333], [2.24, 0.08333333333333333], [2.67, 0.0020833333333333333], [0.67, 0.15], [0.75, 0.014583333333333334], [2.67, 0.24583333333333332], [0.75, 0.0020833333333333333], [2.0, 0.0020833333333333333], [0.56, 1.0], [2.0, 0.24791666666666667], [1.8, 0.0020833333333333333], [0.5, 1.0], [0.56, 0.19791666666666666], [1.8, 0.05], [0.5, 1.0], [1.12, 0.0020833333333333333], [2.24, 1.0], [0.75, 1.0], [0.75, 0.24791666666666667], [0.56, 0.0020833333333333333], [0.56, 0.24791666666666667], [0.5, 0.0020833333333333333], [0.5, 0.24791666666666667], [0.67, 0.0020833333333333333], [1.12, 1.2479166666666666], [2.24, 1.0], [0.67, 1.0], [0.75, 0.0020833333333333333], [0.75, 1.0], [0.75, 1.0], [0.56, 0.25], [0.56, 0.24791666666666667], [0.5, 0.0020833333333333333], [0.5, 1.0], [0.75, 0.16458333333333333], [1.0, 0.0020833333333333333], [0.67, 0.08333333333333333], [0.75, 0.5], [0.67, 0.19791666666666666], [0.75, 0.05], [0.56, 0.0020833333333333333], [1.0, 0.16458333333333333], [0.9, 0.0020833333333333333], [0.56, 0.08125], [0.5, 0.0020833333333333333], [0.9, 0.24791666666666667], [0.5, 1.0], [1.33, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.24791666666666667], [0.56, 0.0020833333333333333], [0.56, 0.24791666666666667], [0.5, 0.0020833333333333333], [0.5, 0.24791666666666667], [0.67, 0.0020833333333333333], [1.33, 1.2479166666666666], [0.67, 1.0], [1.12, 0.0020833333333333333], [0.75, 1.0], [0.75, 0.23541666666666666], [0.56, 0.014583333333333334], [0.56, 0.23541666666666666], [0.5, 0.014583333333333334], [0.5, 0.23541666666666666], [0.67, 0.014583333333333334], [1.12, 0.24791666666666667], [1.33, 0.0020833333333333333], [0.67, 0.23541666666666666], [0.75, 0.014583333333333334], [1.33, 0.24791666666666667], [0.75, 1.0], [2.0, 0.0020833333333333333], [0.56, 1.0], [0.56, 0.24791666666666667], [0.5, 0.0020833333333333333], [2.0, 0.24791666666666667], [0.5, 1.0], [1.8, 0.0020833333333333333], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.8, 1.2479166666666666], [1.33, 1.0], [2.0, 0.0020833333333333333], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.4979166666666667], [1.5, 0.0020833333333333333], [2.0, 0.24791666666666667], [1.5, 1.0], [1.8, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.0, 1.0], [1.7, 0.0020833333333333333], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.7, 1.2479166666666666], [1.33, 1.0], [1.8, 0.0020833333333333333], [1.5, 1.0], [1.5, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.33, 0.014583333333333334], [1.8, 0.24791666666666667], [2.67, 0.0020833333333333333], [1.33, 0.23541666666666666], [1.5, 0.014583333333333334], [2.67, 0.24791666666666667], [1.5, 1.0], [2.24, 0.0020833333333333333], [1.12, 1.0], [1.12, 0.23541666666666666], [2.24, 0.0125], [2.0, 0.0020833333333333333], [1.0, 1.0], [2.0, 0.24791666666666667], [1.0, 1.0], [2.0, 0.0020833333333333333], [1.5, 1.0], [2.0, 0.08333333333333333], [2.24, 0.0020833333333333333], [1.5, 0.1625], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [2.24, 1.2458333333333333], [1.33, 0.0020833333333333333], [1.5, 0.0020833333333333333], [1.5, 1.0], [1.5, 1.0], [1.12, 0.25], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.5, 0.16458333333333333], [2.0, 0.0020833333333333333], [1.0, 0.08125], [1.33, 0.0020833333333333333], [1.33, 0.4979166666666667], [1.5, 0.0020833333333333333], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [2.0, 0.16458333333333333], [1.8, 0.0020833333333333333], [1.12, 0.08125], [1.0, 0.0020833333333333333], [1.8, 0.24791666666666667], [1.0, 1.0], [2.67, 0.0020833333333333333], [1.5, 1.0], [1.5, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.24791666666666667], [1.33, 0.0020833333333333333], [2.67, 1.2479166666666666], [1.33, 1.0], [2.24, 0.0020833333333333333], [2.24, 0.9979166666666667], [2.0, 0.0020833333333333333], [4.0, 1.0], [2.0, 0.4979166666666667], [4.0, 1.0], [1.8, 0.0020833333333333333], [3.56, 1.0], [1.8, 0.4979166666666667], [3.56, 1.0], [3.0, 0.0020833333333333333], [6.0, 1.0], [3.0, 0.23541666666666666], [6.0, 1.0], [2.67, 0.014583333333333334], [5.34, 1.0], [2.67, 0.47291666666666665], [5.34, 1.0], [2.24, 0.027083333333333334], [4.5, 1.0], [2.24, 0.47291666666666665], [4.5, 1.0], [2.0, 0.027083333333333334], [4.0, 1.0], [2.0, 0.47291666666666665], [4.0, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.47291666666666665], [4.0, 1.0], [1.8, 0.027083333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.8, 0.027083333333333334], [1.8, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.06041666666666667], [1.5, 0.0020833333333333333], [1.5, 0.06041666666666667], [1.33, 0.0020833333333333333], [1.33, 0.11666666666666667], [1.12, 0.008333333333333333], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.33, 0.014583333333333334], [1.33, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.47291666666666665], [1.8, 0.027083333333333334], [1.8, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.11458333333333333], [2.4, 0.010416666666666666], [2.4, 0.11458333333333333], [2.24, 0.010416666666666666], [2.24, 0.11458333333333333], [2.4, 0.010416666666666666], [2.4, 0.11458333333333333], [2.24, 0.010416666666666666], [2.24, 0.11458333333333333], [2.4, 0.010416666666666666], [2.4, 0.11458333333333333], [2.24, 0.010416666666666666], [2.24, 0.11458333333333333], [2.4, 0.010416666666666666], [2.4, 0.11458333333333333], [3.0, 0.010416666666666666], [3.0, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.23541666666666666], [3.56, 0.014583333333333334], [3.56, 0.23541666666666666], [3.36, 0.014583333333333334], [3.36, 0.7104166666666667], [2.67, 0.03958333333333333], [2.67, 0.47291666666666665], [3.0, 0.027083333333333334], [3.0, 0.23541666666666666], [2.67, 0.014583333333333334], [2.67, 0.23541666666666666], [2.67, 0.014583333333333334], [2.67, 0.23541666666666666], [2.4, 0.014583333333333334], [2.4, 0.23541666666666666], [2.4, 0.014583333333333334], [2.4, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.23541666666666666], [2.0, 0.014583333333333334], [2.0, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.47291666666666665], [2.0, 0.027083333333333334], [2.0, 1.4229166666666666], [3.56, 0.07708333333333334], [3.56, 0.11666666666666667], [3.36, 0.008333333333333333], [3.36, 0.11666666666666667], [3.0, 0.008333333333333333], [3.0, 0.11666666666666667], [2.67, 0.008333333333333333], [2.67, 0.11666666666666667], [2.4, 0.008333333333333333], [2.4, 0.11666666666666667], [2.24, 0.008333333333333333], [2.24, 0.11666666666666667], [2.0, 0.008333333333333333], [2.0, 0.11666666666666667], [1.8, 0.008333333333333333], [1.8, 0.11666666666666667], [2.0, 0.008333333333333333], [2.0, 0.11666666666666667], [2.24, 0.008333333333333333], [2.24, 0.11666666666666667], [2.0, 0.008333333333333333], [2.0, 0.11666666666666667], [1.8, 0.008333333333333333], [1.8, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [1.25, 0.008333333333333333], [1.25, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [2.24, 0.008333333333333333], [2.24, 0.11666666666666667], [3.0, 0.008333333333333333], [3.0, 0.05625], [3.36, 0.00625], [3.36, 0.05625], [3.56, 0.00625], [3.56, 0.05625], [4.0, 0.00625], [4.0, 0.05625], [4.5, 0.00625], [4.5, 0.11458333333333333], [4.76, 0.008333333333333333], [4.76, 0.11458333333333333], [4.5, 0.010416666666666666], [4.5, 0.11458333333333333], [4.76, 0.0125], [4.76, 0.11458333333333333], [4.5, 0.008333333333333333], [4.5, 0.11458333333333333], [4.76, 0.010416666666666666], [4.76, 0.11458333333333333], [1.8, 0.0125], [2.24, 0.0875], [3.0, 0.0875], [3.56, 0.08958333333333333], [2.24, 0.73125], [3.0, 1.0], [3.56, 1.0], [1.8, 0.0020833333333333333], [1.7, 0.0020833333333333333], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [2.0, 0.027083333333333334], [4.0, 1.0], [2.0, 0.47291666666666665], [4.0, 1.0], [1.8, 0.027083333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.05625], [3.56, 1.0], [1.7, 0.00625], [3.36, 1.0], [1.7, 0.05625], [3.36, 1.0], [1.8, 0.00625], [3.56, 1.0], [1.8, 0.05625], [3.56, 1.0], [1.7, 0.00625], [3.36, 1.0], [1.7, 0.05625], [3.36, 1.0], [1.8, 0.00625], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [2.67, 0.014583333333333334], [5.34, 1.0], [2.67, 0.23541666666666666], [5.34, 1.0], [2.4, 0.014583333333333334], [4.76, 1.0], [2.4, 0.23541666666666666], [4.76, 1.0], [2.4, 0.014583333333333334], [4.76, 1.0], [2.4, 0.23541666666666666], [4.76, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.4, 0.014583333333333334], [4.76, 1.0], [2.4, 0.23541666666666666], [4.76, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.11666666666666667], [2.67, 1.0], [1.5, 0.008333333333333333], [3.0, 1.0], [1.5, 0.11666666666666667], [3.0, 1.0], [1.33, 0.008333333333333333], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.2, 0.014583333333333334], [2.4, 1.0], [1.2, 0.23541666666666666], [2.4, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.0, 0.014583333333333334], [2.0, 1.0], [1.0, 0.23541666666666666], [2.0, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.47291666666666665], [2.67, 1.0], [1.12, 0.027083333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.7104166666666667], [4.5, 1.0], [2.0, 0.03958333333333333], [4.0, 1.0], [2.0, 0.47291666666666665], [4.0, 1.0], [2.67, 0.027083333333333334], [2.67, 0.11666666666666667], [2.4, 0.008333333333333333], [2.4, 0.11666666666666667], [2.24, 0.008333333333333333], [2.24, 0.11666666666666667], [2.4, 0.008333333333333333], [2.4, 0.11666666666666667], [2.24, 0.008333333333333333], [2.24, 0.11666666666666667], [2.0, 0.008333333333333333], [2.0, 0.11666666666666667], [1.8, 0.008333333333333333], [1.8, 0.11666666666666667], [2.0, 0.008333333333333333], [2.0, 0.11666666666666667], [1.8, 0.008333333333333333], [1.8, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [1.5, 0.008333333333333333], [1.5, 0.11666666666666667], [1.7, 0.008333333333333333], [1.7, 0.11666666666666667], [1.5, 0.008333333333333333], [1.5, 0.11666666666666667], [1.33, 0.008333333333333333], [1.33, 0.11666666666666667], [1.2, 0.008333333333333333], [1.2, 0.11666666666666667], [1.12, 0.008333333333333333], [1.12, 0.11666666666666667], [0.84, 0.008333333333333333], [0.84, 0.11666666666666667], [0.75, 0.008333333333333333], [0.75, 0.11666666666666667], [0.67, 0.008333333333333333], [0.67, 0.11666666666666667], [0.75, 0.008333333333333333], [0.75, 0.12291666666666666], [0.9, 0.0020833333333333333], [0.9, 0.11666666666666667], [0.75, 0.008333333333333333], [0.75, 0.11666666666666667], [0.9, 0.008333333333333333], [0.9, 0.11666666666666667], [1.0, 0.008333333333333333], [1.0, 0.11666666666666667], [1.12, 0.008333333333333333], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.0, 0.014583333333333334], [1.12, 1.0], [1.0, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 1.0], [1.12, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.33, 0.027083333333333334], [1.33, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.47291666666666665], [1.12, 0.027083333333333334], [1.12, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.7104166666666667], [0.67, 0.03958333333333333], [0.67, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 1.6604166666666667], [1.12, 0.08958333333333333], [1.12, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 0.47291666666666665], [1.5, 0.027083333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.5, 0.014583333333333334], [1.5, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.7, 0.027083333333333334], [1.7, 0.23541666666666666], [1.8, 0.014583333333333334], [1.8, 0.23541666666666666], [1.7, 0.014583333333333334], [1.7, 0.47291666666666665], [1.33, 0.027083333333333334], [1.33, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.47291666666666665], [1.12, 0.027083333333333334], [1.12, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.47291666666666665], [0.75, 0.027083333333333334], [0.75, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 1.1854166666666666], [1.8, 0.06458333333333334], [2.24, 1.0], [3.56, 1.0], [1.8, 0.23541666666666666], [2.24, 1.0], [3.56, 1.0], [1.7, 0.014583333333333334], [2.0, 1.0], [3.36, 1.0], [1.7, 0.23541666666666666], [2.0, 1.0], [3.36, 1.0], [1.33, 0.014583333333333334], [1.7, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [1.7, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [1.33, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.33, 1.0], [2.24, 1.0], [1.5, 0.014583333333333334], [1.8, 1.0], [3.0, 1.0], [1.5, 0.23541666666666666], [1.8, 1.0], [3.0, 1.0], [1.12, 0.014583333333333334], [1.5, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.5, 1.0], [2.24, 1.0], [1.12, 0.014583333333333334], [1.5, 1.0], [2.24, 1.0], [1.12, 0.47291666666666665], [1.5, 1.0], [2.24, 1.0], [1.12, 0.027083333333333334], [1.5, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.5, 1.0], [2.24, 1.0], [1.0, 0.014583333333333334], [1.7, 1.0], [2.0, 1.0], [1.0, 0.47291666666666665], [1.7, 1.0], [2.0, 1.0], [1.33, 0.027083333333333334], [1.7, 1.0], [2.67, 1.0], [1.33, 0.47291666666666665], [1.7, 1.0], [2.67, 1.0], [1.5, 0.027083333333333334], [1.8, 1.0], [3.0, 1.0], [1.5, 0.23541666666666666], [1.8, 1.0], [3.0, 1.0], [1.33, 0.014583333333333334], [1.7, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [1.7, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [1.33, 1.0], [2.24, 1.0], [1.12, 0.7104166666666667], [1.33, 1.0], [2.24, 1.0], [0.75, 0.03958333333333333], [0.9, 1.0], [1.5, 1.0], [0.75, 0.47291666666666665], [0.9, 1.0], [1.5, 1.0], [1.12, 0.027083333333333334], [1.7, 1.0], [2.24, 1.0], [1.12, 0.47291666666666665], [1.7, 1.0], [2.24, 1.0], [1.12, 0.027083333333333334], [1.7, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.7, 1.0], [2.24, 1.0], [1.12, 0.014583333333333334], [1.7, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.7, 1.0], [2.24, 1.0], [1.12, 0.014583333333333334], [1.7, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.7, 1.0], [2.24, 1.0], [1.33, 0.014583333333333334], [1.7, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [1.7, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [1.33, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.33, 1.0], [2.24, 1.0], [0.9, 0.014583333333333334], [1.12, 1.0], [1.8, 1.0], [1.12, 0.23541666666666666], [0.9, 0.95], [1.8, 1.0], [1.8, 0.06458333333333334], [2.24, 1.0], [3.56, 1.0], [1.8, 0.23541666666666666], [2.24, 1.0], [3.56, 1.0], [1.7, 0.014583333333333334], [2.0, 1.0], [3.36, 1.0], [1.7, 0.23541666666666666], [2.0, 1.0], [3.36, 1.0], [1.33, 0.014583333333333334], [1.7, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [1.7, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [1.33, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.33, 1.0], [2.24, 1.0], [1.5, 0.014583333333333334], [1.8, 1.0], [3.0, 1.0], [1.5, 0.23541666666666666], [1.8, 1.0], [3.0, 1.0], [1.12, 0.014583333333333334], [1.5, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.5, 1.0], [2.24, 1.0], [1.12, 0.014583333333333334], [1.5, 1.0], [2.24, 1.0], [1.12, 0.47291666666666665], [1.5, 1.0], [2.24, 1.0], [1.12, 0.027083333333333334], [1.5, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.5, 1.0], [2.24, 1.0], [1.0, 0.014583333333333334], [1.7, 1.0], [2.0, 1.0], [1.0, 0.47291666666666665], [1.7, 1.0], [2.0, 1.0], [1.7, 0.027083333333333334], [2.0, 1.0], [3.36, 1.0], [1.7, 0.47291666666666665], [2.0, 1.0], [3.36, 1.0], [1.33, 0.027083333333333334], [1.7, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [1.7, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [1.33, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.33, 1.0], [2.24, 1.0], [1.5, 0.014583333333333334], [2.24, 1.0], [3.0, 1.0], [1.5, 0.7104166666666667], [2.24, 1.0], [3.0, 1.0], [1.12, 0.03958333333333333], [1.5, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.5, 1.0], [2.24, 1.0], [1.12, 0.014583333333333334], [1.5, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.5, 1.0], [2.24, 1.0], [1.5, 0.014583333333333334], [2.24, 1.0], [3.0, 1.0], [1.5, 0.23541666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.014583333333333334], [2.24, 1.0], [3.0, 1.0], [1.5, 0.23541666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.014583333333333334], [2.24, 1.0], [3.0, 1.0], [1.5, 0.23541666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.014583333333333334], [2.24, 1.0], [3.0, 1.0], [1.5, 0.23541666666666666], [2.24, 1.0], [3.0, 1.0], [1.5, 0.014583333333333334], [2.24, 1.0], [3.0, 1.0], [1.5, 0.23541666666666666], [2.24, 1.0], [3.0, 1.0], [1.7, 0.014583333333333334], [2.24, 1.0], [3.36, 1.0], [1.7, 0.23541666666666666], [2.24, 1.0], [3.36, 1.0], [1.5, 0.014583333333333334], [2.24, 1.0], [3.0, 1.0], [1.5, 0.23541666666666666], [2.24, 1.0], [3.0, 1.0], [1.4, 0.014583333333333334], [1.7, 1.0], [2.24, 1.0], [2.83, 1.0], [1.4, 1.1854166666666666], [1.7, 1.0], [2.24, 1.0], [2.83, 1.0], [0.75, 0.3145833333333333], [0.75, 0.24791666666666667], [0.9, 0.0020833333333333333], [0.9, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.12, 0.0020833333333333333], [1.12, 0.9979166666666667], [1.33, 0.0020833333333333333], [1.33, 0.4979166666666667], [1.12, 0.0020833333333333333], [1.12, 0.4979166666666667], [1.0, 0.0020833333333333333], [1.0, 0.6645833333333333], [0.9, 0.0020833333333333333], [0.9, 0.6645833333333333], [0.84, 0.0020833333333333333], [0.84, 0.6645833333333333], [1.0, 0.0020833333333333333], [1.0, 0.6645833333333333], [0.9, 0.0020833333333333333], [0.9, 0.6645833333333333], [1.0, 0.0020833333333333333], [1.0, 0.6645833333333333], [0.75, 0.0020833333333333333], [0.75, 0.9479166666666666], [0.75, 0.3020833333333333], [0.9, 0.25], [0.9, 0.24791666666666667], [1.33, 0.0020833333333333333], [0.75, 0.19791666666666666], [1.33, 0.05], [1.12, 0.0020833333333333333], [1.12, 0.9979166666666667], [1.33, 0.0020833333333333333], [1.33, 0.4979166666666667], [1.12, 0.0020833333333333333], [1.12, 0.24791666666666667], [1.33, 0.0020833333333333333], [1.33, 0.24791666666666667], [1.0, 0.0020833333333333333], [1.0, 0.6645833333333333], [0.9, 0.0020833333333333333], [0.9, 0.6645833333333333], [0.84, 0.0020833333333333333], [0.84, 0.6645833333333333], [1.0, 0.0020833333333333333], [1.0, 0.6645833333333333], [0.9, 0.0020833333333333333], [0.9, 0.6645833333333333], [1.0, 0.0020833333333333333], [1.0, 0.6645833333333333], [1.12, 0.0020833333333333333], [1.12, 1.4979166666666666], [1.12, 0.0020833333333333333], [2.24, 1.0], [1.12, 0.4979166666666667], [2.24, 1.0], [1.5, 0.0020833333333333333], [3.0, 1.0], [1.5, 1.9979166666666666], [3.0, 1.0], [1.5, 0.0020833333333333333], [3.0, 1.0], [1.5, 0.4979166666666667], [3.0, 1.0], [1.7, 0.0020833333333333333], [3.36, 1.0], [1.7, 0.24791666666666667], [3.36, 1.0], [1.5, 0.0020833333333333333], [3.0, 1.0], [1.5, 0.7479166666666667], [3.0, 1.0], [1.33, 0.0020833333333333333], [2.67, 1.0], [1.33, 0.4979166666666667], [2.67, 1.0], [1.12, 0.0020833333333333333], [1.7, 1.0], [2.24, 1.0], [1.12, 0.6645833333333333], [1.7, 1.0], [2.24, 1.0], [1.0, 0.0020833333333333333], [2.0, 1.0], [1.0, 0.6645833333333333], [2.0, 1.0], [1.12, 0.0020833333333333333], [1.7, 1.0], [2.24, 1.0], [1.12, 0.6645833333333333], [1.7, 1.0], [2.24, 1.0], [0.75, 0.0020833333333333333], [1.5, 1.0], [0.75, 1.4229166666666666], [1.5, 1.0], [0.75, 0.07708333333333334], [1.5, 1.0], [0.75, 0.4979166666666667], [1.5, 1.0], [1.0, 0.0020833333333333333], [2.0, 1.0], [1.0, 0.4979166666666667], [2.0, 1.0], [1.12, 0.0020833333333333333], [2.24, 1.0], [1.12, 0.24791666666666667], [2.24, 1.0], [1.33, 0.0020833333333333333], [2.67, 1.0], [1.33, 0.7479166666666667], [2.67, 1.0], [1.12, 0.0020833333333333333], [2.24, 1.0], [1.12, 0.4979166666666667], [2.24, 1.0], [1.0, 0.0020833333333333333], [2.0, 1.0], [1.0, 0.9979166666666667], [2.0, 1.0], [0.9, 0.0020833333333333333], [1.2, 1.0], [1.5, 1.0], [1.8, 1.0], [0.9, 0.9979166666666667], [1.2, 1.0], [1.5, 1.0], [1.8, 1.0], [1.12, 0.0020833333333333333], [1.4, 1.0], [2.0, 1.0], [2.24, 1.0], [1.12, 1.8979166666666667], [1.4, 1.0], [2.0, 1.0], [2.24, 1.0], [1.12, 1.1020833333333333], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.8, 0.027083333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [2.67, 1.0], [3.36, 1.0], [1.7, 0.23541666666666666], [2.67, 1.0], [3.36, 1.0], [1.33, 0.014583333333333334], [2.24, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [2.24, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [1.7, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.7, 1.0], [2.24, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.33, 0.027083333333333334], [2.24, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [2.24, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [1.33, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.33, 1.0], [2.24, 1.0], [1.0, 0.014583333333333334], [1.33, 1.0], [2.0, 1.0], [1.33, 0.23541666666666666], [1.0, 0.2375], [2.0, 1.0], [1.33, 0.027083333333333334], [2.24, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [2.24, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [1.7, 1.0], [2.24, 1.0], [1.12, 0.47291666666666665], [1.7, 1.0], [2.24, 1.0], [1.12, 0.027083333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.8, 0.027083333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [2.24, 1.0], [2.67, 1.0], [3.36, 1.0], [1.7, 0.23541666666666666], [2.24, 1.0], [2.67, 1.0], [3.36, 1.0], [1.33, 0.014583333333333334], [2.24, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [2.24, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [1.33, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.33, 1.0], [2.24, 1.0], [1.7, 0.014583333333333334], [2.67, 1.0], [3.36, 1.0], [1.7, 0.47291666666666665], [2.67, 1.0], [3.36, 1.0], [1.33, 0.027083333333333334], [2.24, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [2.24, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [1.33, 1.0], [2.24, 1.0], [1.12, 0.23541666666666666], [1.33, 1.0], [2.24, 1.0], [1.33, 0.014583333333333334], [2.24, 1.0], [2.67, 1.0], [1.33, 0.47291666666666665], [2.24, 1.0], [2.67, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.47291666666666665], [3.0, 1.0], [1.12, 0.5270833333333333], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.5, 0.014583333333333334], [2.4, 1.0], [3.0, 1.0], [1.5, 0.23541666666666666], [2.4, 1.0], [3.0, 1.0], [1.7, 0.014583333333333334], [2.67, 1.0], [3.36, 1.0], [1.7, 0.23541666666666666], [2.67, 1.0], [3.36, 1.0], [1.8, 0.014583333333333334], [3.0, 1.0], [3.56, 1.0], [1.8, 0.23541666666666666], [3.0, 1.0], [3.56, 1.0], [1.7, 0.014583333333333334], [2.67, 1.0], [3.36, 1.0], [1.7, 0.7104166666666667], [2.67, 1.0], [3.36, 1.0], [1.33, 0.03958333333333333], [2.24, 1.0], [2.67, 1.0], [1.33, 0.47291666666666665], [2.24, 1.0], [2.67, 1.0], [1.7, 0.027083333333333334], [2.67, 1.0], [3.36, 1.0], [1.7, 0.23541666666666666], [2.67, 1.0], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [2.0, 0.014583333333333334], [3.36, 1.0], [4.0, 1.0], [2.0, 0.23541666666666666], [3.36, 1.0], [4.0, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [2.67, 1.0], [3.36, 1.0], [1.7, 0.23541666666666666], [2.67, 1.0], [3.36, 1.0], [1.33, 0.014583333333333334], [2.24, 1.0], [2.67, 1.0], [1.33, 0.23541666666666666], [2.24, 1.0], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [2.24, 0.014583333333333334], [2.67, 1.0], [4.5, 1.0], [2.24, 0.23541666666666666], [2.67, 1.0], [4.5, 1.0], [2.24, 0.014583333333333334], [2.67, 1.0], [4.5, 1.0], [2.24, 0.23541666666666666], [2.67, 1.0], [4.5, 1.0], [2.24, 0.014583333333333334], [2.67, 1.0], [4.5, 1.0], [2.24, 0.23541666666666666], [2.67, 1.0], [4.5, 1.0], [2.24, 0.014583333333333334], [2.67, 1.0], [4.5, 1.0], [2.24, 0.23541666666666666], [2.67, 1.0], [4.5, 1.0], [2.24, 0.014583333333333334], [2.67, 1.0], [4.5, 1.0], [2.24, 0.23541666666666666], [2.67, 1.0], [4.5, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [2.67, 0.014583333333333334], [3.36, 1.0], [5.34, 1.0], [2.67, 0.23541666666666666], [3.36, 1.0], [5.34, 1.0], [2.24, 0.014583333333333334], [2.83, 1.0], [4.5, 1.0], [2.83, 0.23541666666666666], [4.5, 1.0], [4.5, 0.014583333333333334], [4.5, 1.0], [4.5, 1.0], [4.5, 0.035416666666666666], [4.24, 0.004166666666666667], [4.24, 1.0], [4.24, 1.0], [4.24, 0.035416666666666666], [4.0, 0.00625], [4.0, 1.0], [4.0, 1.0], [4.0, 0.035416666666666666], [3.78, 0.008333333333333333], [3.78, 1.0], [3.78, 1.0], [3.78, 0.035416666666666666], [3.56, 0.004166666666666667], [3.56, 1.0], [3.56, 1.0], [3.56, 0.035416666666666666], [3.36, 0.00625], [3.36, 1.0], [3.36, 1.0], [3.36, 0.035416666666666666], [3.17, 0.008333333333333333], [3.17, 1.0], [3.17, 1.0], [3.17, 0.035416666666666666], [3.0, 0.004166666666666667], [3.0, 1.0], [3.0, 1.0], [3.0, 0.035416666666666666], [2.83, 0.00625], [2.83, 1.0], [2.83, 1.0], [2.83, 0.035416666666666666], [2.67, 0.008333333333333333], [2.67, 1.0], [2.67, 1.0], [2.67, 0.035416666666666666], [2.5, 0.004166666666666667], [2.5, 1.0], [2.5, 1.0], [2.5, 0.035416666666666666], [2.4, 0.00625], [2.4, 1.0], [2.4, 1.0], [2.4, 0.035416666666666666], [2.24, 0.008333333333333333], [2.24, 1.0], [2.24, 1.0], [2.24, 1.0], [2.1, 0.03958333333333333], [2.1, 1.0], [2.1, 1.0], [2.1, 0.035416666666666666], [2.0, 0.00625], [2.0, 1.0], [2.0, 1.0], [2.0, 0.035416666666666666], [1.9, 0.008333333333333333], [1.9, 1.0], [1.9, 1.0], [1.9, 0.035416666666666666], [1.8, 0.004166666666666667], [1.8, 1.0], [1.8, 1.0], [1.8, 0.035416666666666666], [1.7, 0.00625], [1.7, 1.0], [1.7, 1.0], [1.7, 0.035416666666666666], [1.6, 0.008333333333333333], [1.6, 1.0], [1.6, 1.0], [1.6, 0.035416666666666666], [1.5, 0.004166666666666667], [1.5, 1.0], [1.5, 1.0], [1.5, 0.035416666666666666], [1.4, 0.00625], [1.4, 1.0], [1.4, 1.0], [1.4, 0.035416666666666666], [1.33, 0.008333333333333333], [1.33, 1.0], [1.33, 1.0], [1.33, 0.035416666666666666], [1.25, 0.004166666666666667], [1.25, 1.0], [1.25, 1.0], [2.24, 0.020833333333333332], [1.25, 0.014583333333333334], [1.2, 0.00625], [1.2, 1.0], [1.2, 1.0], [1.2, 0.035416666666666666], [1.12, 0.008333333333333333], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.8, 0.027083333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.0, 0.014583333333333334], [2.0, 1.0], [1.0, 0.47291666666666665], [2.0, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.12, 0.027083333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.8, 0.027083333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.47291666666666665], [2.67, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.47291666666666665], [3.0, 1.0], [1.12, 0.5270833333333333], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.7104166666666667], [3.36, 1.0], [1.33, 0.03958333333333333], [2.67, 1.0], [1.33, 0.47291666666666665], [2.67, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.47291666666666665], [3.56, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.33, 0.014583333333333334], [2.67, 1.0], [1.33, 0.23541666666666666], [2.67, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [2.67, 0.014583333333333334], [5.34, 1.0], [2.67, 0.23541666666666666], [5.34, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [1.12, 0.5], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.23541666666666666], [0.9, 0.014583333333333334], [2.24, 0.18541666666666667], [4.5, 1.0], [0.9, 0.05], [0.84, 0.014583333333333334], [0.84, 0.23541666666666666], [1.12, 0.014583333333333334], [2.24, 1.0], [0.9, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [0.9, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [0.84, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [0.84, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [0.67, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [0.67, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.12, 0.26458333333333334], [2.24, 1.0], [1.12, 0.23541666666666666], [2.24, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.8, 0.014583333333333334], [3.56, 1.0], [1.8, 0.23541666666666666], [3.56, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 1.1854166666666666], [3.0, 1.0], [2.24, 0.06458333333333334], [4.5, 1.0], [2.24, 0.63125], [4.5, 1.0], [2.0, 0.035416666666666666], [4.0, 1.0], [2.0, 0.63125], [4.0, 1.0], [1.8, 0.035416666666666666], [3.56, 1.0], [1.8, 0.63125], [3.56, 1.0], [1.7, 0.035416666666666666], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.33, 0.027083333333333334], [2.67, 1.0], [1.33, 0.47291666666666665], [2.67, 1.0], [1.12, 0.027083333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 1.9979166666666666], [3.0, 1.0], [1.4, 0.0020833333333333333], [2.83, 1.0], [1.4, 1.8979166666666667], [2.83, 1.0], [1.7, 0.10208333333333333], [3.36, 1.0], [1.7, 1.4229166666666666], [3.36, 1.0], [1.9, 0.07708333333333334], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [1.6, 0.014583333333333334], [3.17, 1.0], [1.6, 1.1854166666666666], [3.17, 1.0], [1.25, 0.06458333333333334], [2.5, 1.0], [1.25, 0.47291666666666665], [2.5, 1.0], [2.0, 0.027083333333333334], [4.0, 1.0], [2.0, 0.47291666666666665], [4.0, 1.0], [1.9, 1.0], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.9, 0.014583333333333334], [3.78, 1.0], [1.9, 0.47291666666666665], [3.78, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.47291666666666665], [2.5, 1.0], [1.25, 0.027083333333333334], [2.5, 1.0], [1.25, 0.47291666666666665], [2.5, 1.0], [2.0, 0.027083333333333334], [4.0, 1.0], [2.0, 0.47291666666666665], [4.0, 1.0], [1.9, 0.027083333333333334], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.9, 0.014583333333333334], [3.78, 1.0], [1.9, 0.47291666666666665], [3.78, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.47291666666666665], [3.0, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.25, 0.5270833333333333], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.9, 0.014583333333333334], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [1.9, 0.014583333333333334], [3.78, 1.0], [1.9, 0.7104166666666667], [3.78, 1.0], [1.5, 0.03958333333333333], [3.0, 1.0], [1.5, 0.47291666666666665], [3.0, 1.0], [1.9, 0.027083333333333334], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.47291666666666665], [4.0, 1.0], [1.9, 0.027083333333333334], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [2.5, 0.014583333333333334], [5.04, 1.0], [2.5, 0.23541666666666666], [5.04, 1.0], [2.5, 0.014583333333333334], [5.04, 1.0], [2.5, 0.23541666666666666], [5.04, 1.0], [2.5, 0.014583333333333334], [5.04, 1.0], [2.5, 0.23541666666666666], [5.04, 1.0], [2.5, 0.014583333333333334], [5.04, 1.0], [2.5, 0.23541666666666666], [5.04, 1.0], [2.5, 0.014583333333333334], [5.04, 1.0], [2.5, 0.23541666666666666], [5.04, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [3.0, 0.014583333333333334], [6.0, 1.0], [3.0, 0.23541666666666666], [6.0, 1.0], [2.5, 0.014583333333333334], [5.04, 1.0], [2.5, 1.1854166666666666], [5.04, 1.0], [1.25, 0.06458333333333334], [2.5, 1.0], [1.25, 0.47291666666666665], [2.5, 1.0], [2.0, 0.027083333333333334], [4.0, 1.0], [2.0, 0.47291666666666665], [4.0, 1.0], [1.9, 1.0], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.9, 0.014583333333333334], [3.78, 1.0], [1.9, 0.47291666666666665], [3.78, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.12, 0.014583333333333334], [2.24, 1.0], [1.12, 0.47291666666666665], [2.24, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.47291666666666665], [2.5, 1.0], [1.25, 0.027083333333333334], [2.5, 1.0], [1.25, 0.47291666666666665], [2.5, 1.0], [2.0, 0.027083333333333334], [4.0, 1.0], [2.0, 0.47291666666666665], [4.0, 1.0], [1.9, 0.027083333333333334], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.9, 0.014583333333333334], [3.78, 1.0], [1.9, 0.47291666666666665], [3.78, 1.0], [1.5, 0.027083333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.47291666666666665], [3.0, 1.0], [1.7, 0.027083333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.47291666666666665], [3.36, 1.0], [1.25, 0.5270833333333333], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [1.7, 0.014583333333333334], [3.36, 1.0], [1.7, 0.23541666666666666], [3.36, 1.0], [1.9, 0.014583333333333334], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [1.9, 0.014583333333333334], [3.78, 1.0], [1.9, 0.7104166666666667], [3.78, 1.0], [1.5, 0.03958333333333333], [3.0, 1.0], [1.5, 0.47291666666666665], [3.0, 1.0], [1.9, 0.027083333333333334], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.23541666666666666], [4.0, 1.0], [2.24, 0.014583333333333334], [4.5, 1.0], [2.24, 0.23541666666666666], [4.5, 1.0], [2.0, 0.014583333333333334], [4.0, 1.0], [2.0, 0.47291666666666665], [4.0, 1.0], [1.9, 0.027083333333333334], [3.78, 1.0], [1.9, 0.23541666666666666], [3.78, 1.0], [1.5, 0.014583333333333334], [3.0, 1.0], [1.5, 0.23541666666666666], [3.0, 1.0], [1.25, 0.014583333333333334], [2.5, 1.0], [1.25, 0.23541666666666666], [2.5, 1.0], [2.5, 0.014583333333333334], [4.0, 1.0], [5.04, 1.0], [2.5, 0.23541666666666666], [4.0, 1.0], [5.04, 1.0], [2.5, 0.014583333333333334], [4.0, 1.0], [5.04, 1.0], [2.5, 0.23541666666666666], [4.0, 1.0], [5.04, 1.0], [2.5, 0.014583333333333334], [4.0, 1.0], [5.04, 1.0], [2.5, 0.23541666666666666], [4.0, 1.0], [5.04, 1.0], [2.5, 0.014583333333333334], [4.0, 1.0], [5.04, 1.0], [2.5, 0.23541666666666666], [4.0, 1.0], [5.04, 1.0], [2.5, 0.014583333333333334], [4.0, 1.0], [5.04, 1.0], [2.5, 0.23541666666666666], [4.0, 1.0], [5.04, 1.0], [2.24, 0.014583333333333334], [3.78, 1.0], [4.5, 1.0], [2.24, 0.23541666666666666], [3.78, 1.0], [4.5, 1.0], [3.0, 0.014583333333333334], [5.04, 1.0], [6.0, 1.0], [3.0, 0.23541666666666666], [5.04, 1.0], [6.0, 1.0], [2.5, 0.014583333333333334], [3.17, 1.0], [3.78, 1.0], [5.04, 1.0], [1.25, 0.5], [1.25, 0.23541666666666666], [1.12, 0.014583333333333334], [1.12, 0.23541666666666666], [1.0, 0.014583333333333334], [2.5, 0.18541666666666667], [3.17, 1.0], [3.78, 1.0], [5.04, 1.0], [1.0, 0.05], [0.94, 0.014583333333333334], [0.94, 0.23541666666666666], [1.25, 0.014583333333333334], [2.0, 1.0], [2.5, 1.0], [1.0, 1.0], [1.25, 0.23541666666666666], [2.0, 1.0], [2.5, 1.0], [1.0, 1.0], [1.9, 0.014583333333333334], [2.24, 1.0], [3.78, 1.0], [0.94, 1.0], [1.9, 0.23541666666666666], [2.24, 1.0], [3.78, 1.0], [0.94, 1.0], [2.0, 0.014583333333333334], [2.5, 1.0], [4.0, 1.0], [0.75, 1.0], [2.0, 0.23541666666666666], [2.5, 1.0], [4.0, 1.0], [0.75, 1.0], [1.9, 0.014583333333333334], [2.24, 1.0], [3.78, 1.0], [1.9, 0.47291666666666665], [2.24, 1.0], [3.78, 1.0], [1.7, 0.027083333333333334], [2.0, 1.0], [3.36, 1.0], [1.7, 0.23541666666666666], [2.0, 1.0], [3.36, 1.0], [1.7, 0.014583333333333334], [2.0, 1.0], [3.36, 1.0], [1.7, 0.23541666666666666], [2.0, 1.0], [3.36, 1.0], [1.25, 0.26458333333333334], [2.0, 1.0], [2.5, 1.0], [1.25, 0.23541666666666666], [2.0, 1.0], [2.5, 1.0], [1.9, 0.014583333333333334], [2.24, 1.0], [3.78, 1.0], [1.9, 0.23541666666666666], [2.24, 1.0], [3.78, 1.0], [2.0, 0.014583333333333334], [2.5, 1.0], [4.0, 1.0], [2.0, 0.23541666666666666], [2.5, 1.0], [4.0, 1.0], [1.9, 0.014583333333333334], [2.24, 1.0], [3.78, 1.0], [1.9, 0.23541666666666666], [2.24, 1.0], [3.78, 1.0], [2.0, 0.014583333333333334], [2.5, 1.0], [4.0, 1.0], [2.0, 0.23541666666666666], [2.5, 1.0], [4.0, 1.0], [2.24, 0.014583333333333334], [2.67, 1.0], [4.5, 1.0], [2.24, 0.23541666666666666], [2.67, 1.0], [4.5, 1.0], [1.7, 0.014583333333333334], [2.0, 1.0], [3.36, 1.0], [1.7, 1.1854166666666666], [2.0, 1.0], [3.36, 1.0], [2.5, 0.06458333333333334], [4.0, 1.0], [5.04, 1.0], [2.5, 0.63125], [4.0, 1.0], [5.04, 1.0], [2.24, 0.035416666666666666], [3.78, 1.0], [4.5, 1.0], [2.24, 0.63125], [3.78, 1.0], [4.5, 1.0], [2.0, 0.035416666666666666], [3.36, 1.0], [4.0, 1.0], [2.0, 0.63125], [3.36, 1.0], [4.0, 1.0], [1.9, 0.035416666666666666], [3.0, 1.0], [3.78, 1.0], [1.9, 0.47291666666666665], [3.0, 1.0], [3.78, 1.0], [1.5, 0.027083333333333334], [2.5, 1.0], [3.0, 1.0], [1.5, 0.47291666666666665], [2.5, 1.0], [3.0, 1.0], [1.25, 0.027083333333333334], [2.0, 1.0], [2.5, 1.0], [1.25, 0.47291666666666665], [2.0, 1.0], [2.5, 1.0], [1.9, 0.027083333333333334], [2.5, 1.0], [3.0, 1.0], [1.9, 0.47291666666666665], [2.5, 1.0], [3.0, 1.0], [3.36, 0.027083333333333334], [1.7, 1.0], [3.78, 2.75], [3.78, 0.11666666666666667], [4.0, 0.008333333333333333], [4.0, 0.11666666666666667], [3.78, 0.008333333333333333], [3.78, 0.23541666666666666], [3.0, 0.014583333333333334], [3.0, 0.23541666666666666], [2.5, 0.014583333333333334], [2.5, 0.23541666666666666], [3.0, 0.014583333333333334], [3.36, 0.04791666666666667], [3.0, 0.1875], [2.5, 0.014583333333333334], [2.5, 2.6104166666666666], [3.78, 0.13958333333333334], [3.78, 0.23541666666666666], [4.0, 0.014583333333333334], [4.0, 0.47291666666666665], [4.5, 0.027083333333333334], [1.7, 0.09791666666666667], [4.5, 0.375], [5.04, 0.027083333333333334], [3.36, 1.0], [3.36, 0.23541666666666666], [2.5, 0.014583333333333334], [2.5, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.23541666666666666], [3.0, 0.014583333333333334], [3.0, 1.1854166666666666], [3.36, 0.06458333333333334], [3.36, 0.23541666666666666], [2.5, 0.014583333333333334], [2.5, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.23541666666666666], [3.0, 0.014583333333333334], [3.0, 0.47291666666666665], [3.36, 0.027083333333333334], [3.36, 0.23541666666666666], [2.5, 0.014583333333333334], [2.5, 0.23541666666666666], [5.04, 0.0125], [4.5, 0.0020833333333333333], [2.24, 1.0], [4.5, 0.12291666666666666], [4.0, 0.0020833333333333333], [2.24, 0.11041666666666666], [4.0, 0.0125], [4.5, 0.0020833333333333333], [3.36, 1.0], [3.36, 0.23541666666666666], [2.5, 0.014583333333333334], [2.5, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.23541666666666666], [3.0, 0.014583333333333334], [3.0, 1.1854166666666666], [3.36, 0.06458333333333334], [3.36, 0.23541666666666666], [2.5, 0.014583333333333334], [2.5, 0.23541666666666666], [4.5, 0.0125], [4.0, 0.0020833333333333333], [2.24, 1.0], [2.24, 0.23541666666666666], [3.0, 0.014583333333333334], [4.0, 0.24791666666666667], [3.78, 0.0020833333333333333], [3.0, 0.22291666666666668], [3.36, 0.027083333333333334], [3.36, 0.23541666666666666], [3.78, 0.0125], [3.0, 0.0020833333333333333], [2.5, 1.0], [2.5, 0.23541666666666666], [2.24, 0.014583333333333334], [2.24, 0.23541666666666666], [3.0, 0.0125], [1.7, 0.0020833333333333333], [3.36, 1.0], [1.7, 3.7979166666666666], [3.36, 1.0]]}, {"set": {"EntityName": "MusicSupport", "ScoreboardName": "MusicSupport", "Instrument": "note.harp", "FileName": "Music"}, "notes": [[0.37, 1.0], [0.56, 0.08333333333333333], [0.9, 0.0875], [0.56, 0.8208333333333333], [0.9, 1.0], [0.37, 0.0020833333333333333], [0.56, 0.0020833333333333333], [0.56, 0.9479166666666666], [0.75, 0.052083333333333336], [0.75, 0.9479166666666666], [0.56, 0.052083333333333336], [0.56, 0.9479166666666666], [0.3, 0.052083333333333336], [0.44, 0.08333333333333333], [0.75, 0.0875], [0.44, 0.8208333333333333], [0.75, 1.0], [0.3, 0.0020833333333333333], [0.44, 0.0020833333333333333], [0.44, 0.9479166666666666], [0.3, 0.052083333333333336], [0.44, 0.08541666666666667], [0.75, 0.08958333333333333], [0.44, 1.8208333333333333], [0.75, 1.0], [0.3, 0.0020833333333333333], [0.33, 0.0020833333333333333], [0.5, 1.0], [0.84, 1.0], [0.33, 0.94375], [0.5, 1.0], [0.84, 1.0], [0.5, 0.052083333333333336], [0.5, 0.9479166666666666], [0.67, 0.052083333333333336], [0.67, 0.9479166666666666], [0.5, 0.052083333333333336], [0.5, 0.9479166666666666], [0.3, 0.052083333333333336], [0.3, 0.23125], [0.44, 0.014583333333333334], [0.44, 0.23541666666666666], [0.6, 0.014583333333333334], [0.6, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.47291666666666665], [0.6, 0.027083333333333334], [0.6, 0.23541666666666666], [0.44, 0.014583333333333334], [0.44, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.5, 0.014583333333333334], [0.5, 0.23541666666666666], [0.67, 0.014583333333333334], [0.84, 1.0], [0.67, 0.23541666666666666], [0.84, 1.0], [0.75, 0.014583333333333334], [0.9, 1.0], [0.75, 0.23541666666666666], [0.9, 1.0], [0.84, 0.014583333333333334], [1.0, 1.0], [1.0, 0.5], [0.84, 0.4479166666666667], [0.37, 0.052083333333333336], [0.37, 0.4708333333333333], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.47291666666666665], [0.37, 0.027083333333333334], [0.37, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.33, 0.027083333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.67, 1.0], [0.9, 1.0], [0.44, 0.7104166666666667], [0.56, 1.0], [0.67, 1.0], [0.9, 1.0], [0.42, 0.03958333333333333], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.7104166666666667], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.03958333333333333], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.47291666666666665], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.37, 0.027083333333333334], [0.37, 0.47291666666666665], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.47291666666666665], [0.37, 0.027083333333333334], [0.37, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.33, 0.027083333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.67, 1.0], [0.9, 1.0], [0.44, 0.7104166666666667], [0.56, 1.0], [0.67, 1.0], [0.9, 1.0], [0.42, 0.03958333333333333], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.7104166666666667], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.03958333333333333], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.47291666666666665], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.37, 0.027083333333333334], [0.37, 0.47291666666666665], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.47291666666666665], [0.37, 0.027083333333333334], [0.37, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.33, 0.027083333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.67, 1.0], [0.9, 1.0], [0.44, 0.7104166666666667], [0.56, 1.0], [0.67, 1.0], [0.9, 1.0], [0.42, 0.03958333333333333], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.7104166666666667], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.03958333333333333], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.47291666666666665], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.67, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.67, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.67, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.67, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.23541666666666666], [0.19, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.19, 0.12291666666666666], [0.25, 1.0], [0.28, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.12291666666666666], [0.19, 0.0020833333333333333], [0.25, 1.0], [0.28, 1.0], [0.19, 0.12291666666666666], [0.25, 1.0], [0.28, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.12291666666666666], [0.19, 0.0020833333333333333], [0.25, 1.0], [0.28, 1.0], [0.19, 0.12291666666666666], [0.25, 1.0], [0.28, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.12291666666666666], [0.19, 0.0020833333333333333], [0.25, 1.0], [0.28, 1.0], [0.19, 0.12291666666666666], [0.25, 1.0], [0.28, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.12291666666666666], [0.19, 0.0020833333333333333], [0.25, 1.0], [0.28, 1.0], [0.19, 0.12291666666666666], [0.25, 1.0], [0.28, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.12291666666666666], [0.19, 0.0020833333333333333], [0.25, 1.0], [0.28, 1.0], [0.19, 0.12291666666666666], [0.25, 1.0], [0.28, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.12291666666666666], [0.19, 0.0020833333333333333], [0.25, 1.0], [0.28, 1.0], [0.19, 0.12291666666666666], [0.25, 1.0], [0.28, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.12291666666666666], [0.19, 0.0020833333333333333], [0.25, 1.0], [0.28, 1.0], [0.19, 0.12291666666666666], [0.25, 1.0], [0.28, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.12291666666666666], [0.19, 0.0020833333333333333], [0.37, 1.0], [0.19, 0.24791666666666667], [0.37, 1.0], [0.19, 0.0020833333333333333], [0.37, 1.0], [0.19, 0.24791666666666667], [0.37, 1.0], [0.19, 0.0020833333333333333], [0.37, 1.0], [0.19, 0.24791666666666667], [0.37, 1.0], [0.19, 0.0020833333333333333], [0.37, 1.0], [0.19, 0.24791666666666667], [0.37, 1.0], [0.19, 0.0020833333333333333], [0.37, 1.0], [0.19, 0.9479166666666666], [0.37, 1.0], [0.37, 0.052083333333333336], [0.37, 0.46875], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.33, 1.0145833333333334], [0.33, 0.47291666666666665], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.3, 1.0145833333333334], [0.3, 0.46875], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.33, 0.027083333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.37, 0.014583333333333334], [0.37, 0.23125], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.33, 1.0145833333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.3, 1.0145833333333334], [0.3, 0.46875], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.28, 0.014583333333333334], [0.28, 0.47291666666666665], [0.35, 0.027083333333333334], [0.42, 1.0], [0.56, 1.0], [0.35, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.28, 0.014583333333333334], [0.28, 0.47291666666666665], [0.28, 0.027083333333333334], [0.28, 0.23541666666666666], [0.35, 0.014583333333333334], [0.42, 1.0], [0.56, 1.0], [0.35, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.28, 0.014583333333333334], [0.28, 0.23541666666666666], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23125], [0.37, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.17, 1.0145833333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.3, 1.0145833333333334], [0.3, 0.46875], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.33, 0.027083333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.37, 0.014583333333333334], [0.37, 0.23125], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.33, 1.0145833333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.3, 1.0145833333333334], [0.3, 0.46875], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.28, 0.014583333333333334], [0.28, 0.47291666666666665], [0.35, 0.027083333333333334], [0.42, 1.0], [0.56, 1.0], [0.35, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.28, 0.014583333333333334], [0.28, 0.23541666666666666], [0.28, 0.014583333333333334], [0.35, 1.0], [0.5, 1.0], [0.28, 0.47291666666666665], [0.35, 1.0], [0.5, 1.0], [0.28, 0.027083333333333334], [0.35, 1.0], [0.5, 1.0], [0.28, 0.47291666666666665], [0.35, 1.0], [0.5, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.46875], [0.37, 1.0], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.46875], [0.33, 1.0], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.17, 0.027083333333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.22, 0.014583333333333334], [0.33, 1.0], [0.44, 1.0], [0.22, 0.47291666666666665], [0.33, 1.0], [0.44, 1.0], [0.22, 0.027083333333333334], [0.33, 1.0], [0.44, 1.0], [0.22, 0.47291666666666665], [0.33, 1.0], [0.44, 1.0], [0.21, 0.027083333333333334], [0.33, 1.0], [0.42, 1.0], [0.21, 0.47291666666666665], [0.33, 1.0], [0.42, 1.0], [0.21, 0.027083333333333334], [0.33, 1.0], [0.42, 1.0], [0.21, 0.47291666666666665], [0.33, 1.0], [0.42, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.46875], [0.28, 1.0], [0.28, 0.027083333333333334], [0.35, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.35, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.14, 0.027083333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.25, 0.014583333333333334], [0.31, 1.0], [0.5, 1.0], [0.25, 0.23541666666666666], [0.31, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.28, 1.0145833333333334], [0.56, 1.0], [0.28, 0.47291666666666665], [0.56, 1.0], [0.14, 0.027083333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.46875], [0.37, 1.0], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.19, 0.014583333333333334], [0.28, 1.0], [0.37, 1.0], [0.19, 0.47291666666666665], [0.28, 1.0], [0.37, 1.0], [0.17, 0.027083333333333334], [0.28, 1.0], [0.33, 1.0], [0.17, 0.47291666666666665], [0.28, 1.0], [0.33, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.25, 1.0], [0.15, 0.23541666666666666], [0.25, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.25, 1.0], [0.15, 0.23541666666666666], [0.25, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.28, 0.027083333333333334], [0.33, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.33, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.14, 0.027083333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.25, 0.014583333333333334], [0.33, 1.0], [0.5, 1.0], [0.25, 0.23541666666666666], [0.33, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.14, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.14, 0.23541666666666666], [0.25, 1.0], [0.28, 1.0], [0.14, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.14, 0.23541666666666666], [0.25, 1.0], [0.28, 1.0], [0.14, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.14, 0.23541666666666666], [0.25, 1.0], [0.28, 1.0], [0.14, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.14, 0.23541666666666666], [0.25, 1.0], [0.28, 1.0], [0.14, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.14, 0.9479166666666666], [0.25, 1.0], [0.28, 1.0], [0.19, 0.052083333333333336], [0.37, 1.0], [0.19, 0.46875], [0.37, 1.0], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.19, 0.014583333333333334], [0.28, 1.0], [0.37, 1.0], [0.19, 0.47291666666666665], [0.28, 1.0], [0.37, 1.0], [0.17, 0.027083333333333334], [0.28, 1.0], [0.33, 1.0], [0.17, 0.47291666666666665], [0.28, 1.0], [0.33, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.25, 1.0], [0.15, 0.23541666666666666], [0.25, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.25, 1.0], [0.15, 0.23541666666666666], [0.25, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.28, 0.027083333333333334], [0.33, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.33, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.14, 0.027083333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.25, 0.014583333333333334], [0.33, 1.0], [0.5, 1.0], [0.25, 0.23541666666666666], [0.33, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.14, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.14, 0.23125], [0.25, 1.0], [0.28, 1.0], [0.14, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.14, 0.23541666666666666], [0.25, 1.0], [0.28, 1.0], [0.14, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.14, 0.23541666666666666], [0.25, 1.0], [0.28, 1.0], [0.14, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.14, 0.23541666666666666], [0.25, 1.0], [0.28, 1.0], [0.14, 0.014583333333333334], [0.25, 1.0], [0.28, 1.0], [0.14, 0.9479166666666666], [0.25, 1.0], [0.28, 1.0], [0.37, 2.0520833333333335], [0.56, 1.0], [0.75, 1.0], [0.37, 0.94375], [0.56, 1.0], [0.75, 1.0], [0.35, 0.052083333333333336], [0.56, 1.0], [0.7, 1.0], [0.35, 0.9479166666666666], [0.56, 1.0], [0.7, 1.0], [0.33, 0.052083333333333336], [0.56, 1.0], [0.67, 1.0], [0.33, 0.9479166666666666], [0.56, 1.0], [0.67, 1.0], [0.31, 0.052083333333333336], [0.44, 1.0], [0.63, 1.0], [0.31, 0.9479166666666666], [0.44, 1.0], [0.63, 1.0], [0.3, 0.052083333333333336], [0.3, 0.46875], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.47291666666666665], [0.33, 0.027083333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.19, 0.014583333333333334], [0.28, 0.07916666666666666], [0.56, 0.0875], [0.28, 3.825], [0.56, 1.0], [0.19, 0.0020833333333333333], [0.19, 0.0020833333333333333], [0.28, 0.07916666666666666], [0.56, 0.0875], [0.28, 3.825], [0.56, 1.0], [0.19, 0.0020833333333333333], [0.19, 0.0020833333333333333], [0.28, 0.07916666666666666], [0.56, 0.0875], [0.28, 3.825], [0.56, 1.0], [0.19, 0.0020833333333333333], [0.19, 0.0020833333333333333], [0.19, 0.99375], [0.56, 0.0020833333333333333], [0.56, 0.9979166666666667], [0.75, 0.0020833333333333333], [0.75, 0.9979166666666667], [0.56, 0.0020833333333333333], [0.56, 0.9479166666666666], [0.25, 0.052083333333333336], [0.25, 0.94375], [0.37, 0.052083333333333336], [0.37, 0.9479166666666666], [0.75, 0.052083333333333336], [0.75, 0.9479166666666666], [0.56, 0.052083333333333336], [0.56, 0.9479166666666666], [0.19, 0.052083333333333336], [0.19, 0.99375], [0.56, 0.0020833333333333333], [0.56, 0.9979166666666667], [0.75, 0.0020833333333333333], [0.75, 0.9979166666666667], [0.56, 0.0020833333333333333], [0.56, 0.9479166666666666], [0.19, 0.052083333333333336], [0.19, 0.99375], [0.56, 0.0020833333333333333], [0.56, 0.9979166666666667], [0.75, 0.0020833333333333333], [0.75, 0.9979166666666667], [0.56, 0.0020833333333333333], [0.56, 0.9479166666666666], [0.19, 0.052083333333333336], [0.19, 0.99375], [0.56, 0.0020833333333333333], [0.56, 0.9979166666666667], [0.75, 0.0020833333333333333], [0.75, 0.9979166666666667], [0.56, 0.0020833333333333333], [0.56, 0.9479166666666666], [0.25, 0.052083333333333336], [0.25, 0.94375], [0.37, 0.052083333333333336], [0.37, 0.9479166666666666], [0.75, 0.052083333333333336], [0.75, 0.9479166666666666], [0.56, 0.052083333333333336], [0.56, 0.9479166666666666], [0.19, 0.052083333333333336], [0.19, 0.99375], [0.56, 0.0020833333333333333], [0.56, 0.9979166666666667], [0.75, 0.0020833333333333333], [0.75, 0.9979166666666667], [0.56, 0.0020833333333333333], [0.56, 0.9479166666666666], [0.19, 0.052083333333333336], [0.19, 0.99375], [0.56, 0.0020833333333333333], [0.56, 0.9979166666666667], [0.75, 0.0020833333333333333], [0.75, 0.9979166666666667], [0.56, 0.0020833333333333333], [0.56, 0.9479166666666666], [0.19, 0.052083333333333336], [0.19, 0.23125], [0.28, 0.014583333333333334], [0.28, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.44, 0.014583333333333334], [0.44, 0.23541666666666666], [0.56, 0.014583333333333334], [0.56, 0.47291666666666665], [0.67, 0.027083333333333334], [0.67, 0.47291666666666665], [0.75, 0.027083333333333334], [0.75, 1.8979166666666667], [0.22, 0.10208333333333333], [0.22, 0.23125], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.44, 0.014583333333333334], [0.44, 0.23541666666666666], [0.5, 0.014583333333333334], [0.5, 0.23541666666666666], [0.56, 0.014583333333333334], [0.56, 0.47291666666666665], [0.67, 0.027083333333333334], [0.67, 0.47291666666666665], [0.56, 0.027083333333333334], [0.56, 1.8979166666666667], [0.28, 0.10208333333333333], [0.28, 0.23125], [0.44, 0.014583333333333334], [0.44, 0.23541666666666666], [0.6, 0.014583333333333334], [0.6, 0.23541666666666666], [0.67, 0.014583333333333334], [0.67, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.47291666666666665], [0.9, 0.027083333333333334], [0.9, 0.47291666666666665], [0.75, 0.027083333333333334], [0.75, 1.8979166666666667], [0.3, 0.10208333333333333], [0.6, 1.0], [0.3, 0.94375], [0.6, 1.0], [0.44, 0.052083333333333336], [0.6, 1.0], [0.75, 1.0], [0.44, 0.9479166666666666], [0.6, 1.0], [0.75, 1.0], [0.33, 0.052083333333333336], [0.67, 1.0], [0.33, 0.9479166666666666], [0.67, 1.0], [0.5, 0.052083333333333336], [0.67, 1.0], [0.84, 1.0], [0.5, 0.9479166666666666], [0.67, 1.0], [0.84, 1.0], [0.37, 0.052083333333333336], [0.37, 0.46875], [0.56, 0.027083333333333334], [0.56, 0.47291666666666665], [0.67, 0.027083333333333334], [0.67, 0.47291666666666665], [0.75, 0.027083333333333334], [0.75, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.47291666666666665], [0.44, 0.027083333333333334], [0.44, 0.47291666666666665], [0.6, 0.027083333333333334], [0.6, 0.47291666666666665], [0.67, 0.027083333333333334], [0.67, 0.47291666666666665], [0.33, 0.027083333333333334], [0.33, 0.46875], [0.5, 0.027083333333333334], [0.5, 0.47291666666666665], [0.67, 0.027083333333333334], [0.67, 0.47291666666666665], [0.84, 0.027083333333333334], [0.84, 0.47291666666666665], [0.28, 0.027083333333333334], [0.28, 0.47291666666666665], [0.42, 0.027083333333333334], [0.42, 0.47291666666666665], [0.56, 0.027083333333333334], [0.56, 0.47291666666666665], [0.67, 0.027083333333333334], [0.67, 0.47291666666666665], [0.37, 0.027083333333333334], [0.37, 0.46875], [0.56, 0.027083333333333334], [0.56, 0.47291666666666665], [0.67, 0.027083333333333334], [0.67, 0.47291666666666665], [0.75, 0.027083333333333334], [0.75, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.47291666666666665], [0.44, 0.027083333333333334], [0.44, 0.47291666666666665], [0.6, 0.027083333333333334], [0.6, 0.47291666666666665], [0.67, 0.027083333333333334], [0.67, 0.47291666666666665], [0.33, 0.027083333333333334], [0.33, 0.46875], [0.5, 0.027083333333333334], [0.5, 0.47291666666666665], [0.67, 0.027083333333333334], [0.67, 0.47291666666666665], [0.84, 0.027083333333333334], [0.84, 0.47291666666666665], [0.28, 0.027083333333333334], [0.28, 0.47291666666666665], [0.42, 0.027083333333333334], [0.42, 0.47291666666666665], [0.56, 0.027083333333333334], [0.56, 0.47291666666666665], [0.67, 0.027083333333333334], [0.67, 0.47291666666666665], [0.37, 0.027083333333333334], [0.56, 0.07916666666666666], [0.9, 0.0875], [0.9, 3.0791666666666666], [0.56, 0.7458333333333333], [0.37, 0.0020833333333333333], [0.3, 0.0020833333333333333], [0.44, 0.08125], [0.75, 0.08958333333333333], [0.44, 1.8208333333333333], [0.75, 1.0], [0.3, 0.0020833333333333333], [0.33, 0.0020833333333333333], [0.5, 0.08541666666666667], [0.84, 0.08958333333333333], [0.5, 1.8208333333333333], [0.84, 1.0], [0.33, 0.0020833333333333333], [0.37, 0.0020833333333333333], [0.56, 0.08125], [0.9, 0.08958333333333333], [0.56, 1.8208333333333333], [0.9, 1.0], [0.37, 0.0020833333333333333], [0.3, 0.0020833333333333333], [0.44, 0.0875], [0.75, 0.0875], [0.44, 0.8208333333333333], [0.75, 1.0], [0.3, 0.0020833333333333333], [0.33, 0.0020833333333333333], [0.5, 0.0875], [0.67, 0.0875], [0.67, 0.575], [0.5, 0.24583333333333332], [0.33, 0.0020833333333333333], [0.37, 0.0020833333333333333], [0.56, 0.08125], [0.9, 0.08958333333333333], [0.56, 1.8208333333333333], [0.9, 1.0], [0.37, 0.0020833333333333333], [0.3, 0.0020833333333333333], [0.44, 0.0875], [0.75, 0.0875], [0.44, 0.8208333333333333], [0.75, 1.0], [0.3, 0.0020833333333333333], [0.33, 0.0020833333333333333], [0.5, 0.0875], [0.67, 0.0875], [0.5, 0.8208333333333333], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.37, 0.0020833333333333333], [0.37, 0.4708333333333333], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.9479166666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.052083333333333336], [0.37, 0.47291666666666665], [0.3, 0.027083333333333334], [0.3, 0.47291666666666665], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.9479166666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.052083333333333336], [0.3, 0.47291666666666665], [0.33, 0.027083333333333334], [0.33, 0.47291666666666665], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.9479166666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.052083333333333336], [0.33, 0.47291666666666665], [0.33, 0.027083333333333334], [0.33, 0.47291666666666665], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.9479166666666666], [0.5, 1.0], [0.67, 1.0], [0.28, 0.052083333333333336], [0.28, 0.47291666666666665], [0.25, 0.027083333333333334], [0.25, 0.47291666666666665], [0.3, 0.027083333333333334], [0.37, 1.0], [0.5, 1.0], [0.3, 0.9479166666666666], [0.37, 1.0], [0.5, 1.0], [0.25, 0.052083333333333336], [0.25, 0.47291666666666665], [0.25, 0.027083333333333334], [0.25, 0.47291666666666665], [0.3, 0.027083333333333334], [0.37, 1.0], [0.5, 1.0], [0.3, 0.9479166666666666], [0.37, 1.0], [0.5, 1.0], [0.25, 0.052083333333333336], [0.25, 0.47291666666666665], [0.28, 0.027083333333333334], [0.33, 1.0], [0.5, 1.0], [0.28, 0.94375], [0.33, 1.0], [0.5, 1.0], [0.33, 0.052083333333333336], [0.42, 1.0], [0.56, 1.0], [0.33, 0.9479166666666666], [0.42, 1.0], [0.56, 1.0], [0.37, 0.052083333333333336], [0.56, 1.0], [0.37, 1.8979166666666667], [0.56, 1.0], [0.125, 0.10208333333333333], [0.25, 1.0], [0.125, 0.46875], [0.25, 1.0], [0.31, 0.027083333333333334], [0.37, 1.0], [0.5, 1.0], [0.31, 0.9479166666666666], [0.37, 1.0], [0.5, 1.0], [0.125, 0.052083333333333336], [0.25, 1.0], [0.125, 0.47291666666666665], [0.25, 1.0], [0.14, 0.027083333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.33, 0.027083333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.9479166666666666], [0.42, 1.0], [0.56, 1.0], [0.14, 0.052083333333333336], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.94375], [0.37, 1.0], [0.37, 0.052083333333333336], [0.44, 1.0], [0.56, 1.0], [0.37, 0.9479166666666666], [0.44, 1.0], [0.56, 1.0], [0.19, 0.052083333333333336], [0.37, 1.0], [0.19, 0.9479166666666666], [0.37, 1.0], [0.37, 0.052083333333333336], [0.44, 1.0], [0.56, 1.0], [0.56, 0.5], [0.37, 0.4479166666666667], [0.44, 1.0], [0.15, 0.052083333333333336], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.9479166666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.052083333333333336], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.17, 0.027083333333333334], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.67, 0.25], [0.42, 0.6979166666666666], [0.5, 1.0], [0.17, 0.052083333333333336], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.94375], [0.37, 1.0], [0.37, 0.052083333333333336], [0.44, 1.0], [0.56, 1.0], [0.37, 0.9479166666666666], [0.44, 1.0], [0.56, 1.0], [0.17, 0.052083333333333336], [0.33, 1.0], [0.17, 0.9479166666666666], [0.33, 1.0], [0.33, 0.052083333333333336], [0.42, 1.0], [0.5, 1.0], [0.5, 0.75], [0.33, 0.19791666666666666], [0.42, 1.0], [0.15, 0.052083333333333336], [0.3, 1.0], [0.15, 0.94375], [0.3, 1.0], [0.3, 0.052083333333333336], [0.37, 1.0], [0.44, 1.0], [0.3, 0.9479166666666666], [0.37, 1.0], [0.44, 1.0], [0.17, 0.052083333333333336], [0.33, 1.0], [0.17, 0.9479166666666666], [0.33, 1.0], [0.33, 0.052083333333333336], [0.42, 1.0], [0.5, 1.0], [0.33, 0.9479166666666666], [0.42, 1.0], [0.5, 1.0], [0.14, 0.052083333333333336], [0.28, 1.0], [0.14, 0.94375], [0.28, 1.0], [0.28, 0.052083333333333336], [0.33, 1.0], [0.42, 1.0], [0.28, 0.9479166666666666], [0.33, 1.0], [0.42, 1.0], [0.19, 0.052083333333333336], [0.37, 1.0], [0.19, 0.9479166666666666], [0.37, 1.0], [0.37, 0.052083333333333336], [0.44, 1.0], [0.56, 1.0], [0.37, 0.9479166666666666], [0.44, 1.0], [0.56, 1.0], [0.125, 0.052083333333333336], [0.25, 1.0], [0.125, 0.94375], [0.25, 1.0], [0.25, 0.052083333333333336], [0.3, 1.0], [0.37, 1.0], [0.25, 0.9479166666666666], [0.3, 1.0], [0.37, 1.0], [0.14, 0.052083333333333336], [0.28, 1.0], [0.14, 0.9479166666666666], [0.28, 1.0], [0.28, 0.052083333333333336], [0.33, 1.0], [0.42, 1.0], [0.28, 0.9479166666666666], [0.33, 1.0], [0.42, 1.0], [0.15, 0.052083333333333336], [0.3, 1.0], [0.15, 0.94375], [0.3, 1.0], [0.3, 0.052083333333333336], [0.37, 1.0], [0.44, 1.0], [0.3, 0.9479166666666666], [0.37, 1.0], [0.44, 1.0], [0.17, 0.052083333333333336], [0.33, 1.0], [0.17, 0.9479166666666666], [0.33, 1.0], [0.33, 0.052083333333333336], [0.42, 1.0], [0.5, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.33, 0.014583333333333334], [0.42, 1.0], [0.5, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.33, 0.014583333333333334], [0.42, 1.0], [0.5, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.33, 0.014583333333333334], [0.42, 1.0], [0.5, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.37, 0.014583333333333334], [0.37, 0.24375], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.56, 1.0], [0.33, 0.014583333333333334], [0.33, 0.24375], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.67, 1.0], [0.9, 1.0], [0.44, 0.7479166666666667], [0.56, 1.0], [0.67, 1.0], [0.9, 1.0], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.7479166666666667], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.47291666666666665], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.37, 0.027083333333333334], [0.37, 0.24375], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.56, 1.0], [0.33, 0.014583333333333334], [0.33, 0.24375], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.67, 1.0], [0.9, 1.0], [0.44, 0.7479166666666667], [0.56, 1.0], [0.67, 1.0], [0.9, 1.0], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.7479166666666667], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.42, 0.47291666666666665], [0.5, 1.0], [0.7, 1.0], [0.84, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.56, 1.0], [0.75, 1.0], [0.37, 0.49375], [0.44, 1.0], [0.56, 1.0], [0.75, 1.0], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.4979166666666667], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.4979166666666667], [0.56, 1.0], [0.75, 1.0], [0.33, 0.0020833333333333333], [0.42, 1.0], [0.5, 1.0], [0.67, 1.0], [0.33, 0.4979166666666667], [0.42, 1.0], [0.5, 1.0], [0.67, 1.0], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.4979166666666667], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.47291666666666665], [0.5, 1.0], [0.67, 1.0], [0.3, 0.027083333333333334], [0.37, 1.0], [0.44, 1.0], [0.6, 1.0], [0.3, 0.49375], [0.37, 1.0], [0.44, 1.0], [0.6, 1.0], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.6, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.6, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.4979166666666667], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.4979166666666667], [0.44, 1.0], [0.56, 1.0], [0.33, 0.0020833333333333333], [0.42, 1.0], [0.5, 1.0], [0.67, 1.0], [0.33, 0.4979166666666667], [0.42, 1.0], [0.5, 1.0], [0.67, 1.0], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.4979166666666667], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.47291666666666665], [0.5, 1.0], [0.67, 1.0], [0.3, 0.027083333333333334], [0.3, 0.24375], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.44, 1.0], [0.56, 1.0], [0.37, 0.24791666666666667], [0.44, 1.0], [0.56, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.24791666666666667], [0.5, 1.0], [0.67, 1.0], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.37, 0.014583333333333334], [0.37, 0.24375], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.75, 0.125], [0.44, 0.12291666666666666], [0.56, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.24791666666666667], [0.56, 1.0], [0.75, 1.0], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23125], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.3, 0.014583333333333334], [0.3, 0.23125], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.37, 0.014583333333333334], [0.37, 0.23125], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.37, 0.014583333333333334], [0.37, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.33, 0.014583333333333334], [0.33, 0.23541666666666666], [0.3, 0.014583333333333334], [0.3, 0.23125], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.3, 0.23541666666666666], [0.28, 0.014583333333333334], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.28, 0.23541666666666666], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.28, 0.014583333333333334], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.28, 0.23541666666666666], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.28, 0.014583333333333334], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.28, 0.23541666666666666], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.28, 0.014583333333333334], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.28, 0.23541666666666666], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.28, 0.014583333333333334], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.28, 0.9479166666666666], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.19, 0.052083333333333336], [0.37, 1.0], [0.19, 0.46875], [0.37, 1.0], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.46875], [0.33, 1.0], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.17, 0.027083333333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.22, 0.014583333333333334], [0.28, 1.0], [0.44, 1.0], [0.22, 0.47291666666666665], [0.28, 1.0], [0.44, 1.0], [0.22, 0.027083333333333334], [0.28, 1.0], [0.44, 1.0], [0.22, 0.47291666666666665], [0.28, 1.0], [0.44, 1.0], [0.21, 0.027083333333333334], [0.25, 1.0], [0.28, 1.0], [0.42, 1.0], [0.21, 0.47291666666666665], [0.25, 1.0], [0.28, 1.0], [0.42, 1.0], [0.21, 0.027083333333333334], [0.25, 1.0], [0.28, 1.0], [0.42, 1.0], [0.21, 0.47291666666666665], [0.25, 1.0], [0.28, 1.0], [0.42, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.33, 0.027083333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.14, 0.027083333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.33, 0.014583333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.125, 0.014583333333333334], [0.28, 1.0], [0.125, 0.23541666666666666], [0.28, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.28, 0.014583333333333334], [0.35, 1.0], [0.42, 1.0], [0.56, 1.0], [0.28, 0.9479166666666666], [0.35, 1.0], [0.42, 1.0], [0.56, 1.0], [0.15, 1.0520833333333333], [0.15, 0.24375], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.44, 0.24791666666666667], [0.6, 0.0020833333333333333], [0.6, 0.9979166666666667], [0.17, 0.0020833333333333333], [0.17, 0.24791666666666667], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.42, 0.24791666666666667], [0.5, 0.0020833333333333333], [0.5, 0.24791666666666667], [0.67, 0.0020833333333333333], [0.67, 0.9979166666666667], [0.19, 0.0020833333333333333], [0.19, 0.24375], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.44, 0.24791666666666667], [0.56, 0.0020833333333333333], [0.56, 0.24791666666666667], [0.75, 0.0020833333333333333], [0.75, 0.9979166666666667], [0.19, 0.0020833333333333333], [0.19, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.44, 0.24791666666666667], [0.56, 0.0020833333333333333], [0.56, 0.24791666666666667], [0.75, 0.0020833333333333333], [0.75, 0.25], [0.15, 0.75], [0.15, 0.24375], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.44, 0.24791666666666667], [0.6, 0.0020833333333333333], [0.6, 0.9979166666666667], [0.14, 0.0020833333333333333], [0.14, 0.24791666666666667], [0.28, 0.0020833333333333333], [0.28, 0.24791666666666667], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.42, 0.24791666666666667], [0.56, 0.0020833333333333333], [0.56, 0.9979166666666667], [0.15, 0.0020833333333333333], [0.15, 0.24375], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.44, 0.24791666666666667], [0.6, 0.0020833333333333333], [0.6, 0.9979166666666667], [0.14, 0.0020833333333333333], [0.14, 0.24791666666666667], [0.28, 0.0020833333333333333], [0.28, 0.24791666666666667], [0.35, 0.0020833333333333333], [0.35, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.42, 0.24791666666666667], [0.56, 0.0020833333333333333], [0.56, 0.9479166666666666], [0.15, 0.052083333333333336], [0.15, 0.24375], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.44, 0.24791666666666667], [0.6, 0.0020833333333333333], [0.6, 0.9979166666666667], [0.14, 0.0020833333333333333], [0.14, 0.24791666666666667], [0.28, 0.0020833333333333333], [0.28, 0.24791666666666667], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.42, 0.24791666666666667], [0.56, 0.0020833333333333333], [0.56, 0.9979166666666667], [0.14, 0.0020833333333333333], [0.14, 0.24375], [0.28, 0.0020833333333333333], [0.28, 0.24791666666666667], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.42, 0.24791666666666667], [0.56, 0.0020833333333333333], [0.56, 0.9979166666666667], [0.15, 0.0020833333333333333], [0.15, 0.24791666666666667], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.44, 0.24791666666666667], [0.6, 0.0020833333333333333], [0.6, 0.9479166666666666], [0.17, 0.052083333333333336], [0.17, 0.24375], [0.33, 0.0020833333333333333], [0.33, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.42, 0.24791666666666667], [0.5, 0.0020833333333333333], [0.5, 0.24791666666666667], [0.67, 0.0020833333333333333], [0.67, 0.9979166666666667], [0.15, 0.0020833333333333333], [0.15, 0.24791666666666667], [0.3, 0.0020833333333333333], [0.3, 0.24791666666666667], [0.37, 0.0020833333333333333], [0.37, 0.24791666666666667], [0.44, 0.0020833333333333333], [0.44, 0.24791666666666667], [0.6, 0.0020833333333333333], [0.6, 0.9979166666666667], [0.14, 0.0020833333333333333], [0.14, 0.24375], [0.21, 0.0020833333333333333], [0.21, 0.24791666666666667], [0.28, 0.0020833333333333333], [0.28, 0.24791666666666667], [0.35, 0.0020833333333333333], [0.35, 0.24791666666666667], [0.42, 0.0020833333333333333], [0.42, 0.4979166666666667], [0.5, 0.0020833333333333333], [0.5, 0.4979166666666667], [0.28, 0.0020833333333333333], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.28, 0.9479166666666666], [0.35, 1.0], [0.5, 1.0], [0.56, 1.0], [0.37, 1.0520833333333333], [0.44, 1.0], [0.56, 1.0], [0.75, 1.0], [0.37, 2.84375], [0.44, 1.0], [0.56, 1.0], [0.75, 1.0], [0.37, 0.15208333333333332], [0.44, 1.0], [0.75, 1.0], [0.37, 0.47291666666666665], [0.44, 1.0], [0.75, 1.0], [0.33, 0.027083333333333334], [0.42, 1.0], [0.67, 1.0], [0.33, 0.47291666666666665], [0.42, 1.0], [0.67, 1.0], [0.3, 0.027083333333333334], [0.37, 1.0], [0.44, 1.0], [0.6, 1.0], [0.3, 2.84375], [0.37, 1.0], [0.44, 1.0], [0.6, 1.0], [0.3, 0.15208333333333332], [0.37, 1.0], [0.44, 1.0], [0.6, 1.0], [0.3, 0.47291666666666665], [0.37, 1.0], [0.44, 1.0], [0.6, 1.0], [0.3, 0.027083333333333334], [0.37, 1.0], [0.44, 1.0], [0.6, 1.0], [0.3, 0.47291666666666665], [0.37, 1.0], [0.44, 1.0], [0.6, 1.0], [0.125, 0.027083333333333334], [0.25, 1.0], [0.125, 0.46875], [0.25, 1.0], [0.3, 0.027083333333333334], [0.37, 1.0], [0.5, 1.0], [0.3, 0.23541666666666666], [0.37, 1.0], [0.5, 1.0], [0.125, 0.014583333333333334], [0.25, 1.0], [0.125, 0.47291666666666665], [0.25, 1.0], [0.125, 0.027083333333333334], [0.25, 1.0], [0.125, 0.23541666666666666], [0.25, 1.0], [0.3, 0.014583333333333334], [0.37, 1.0], [0.5, 1.0], [0.3, 0.23541666666666666], [0.37, 1.0], [0.5, 1.0], [0.125, 0.014583333333333334], [0.21, 1.0], [0.125, 0.23541666666666666], [0.21, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.28, 0.027083333333333334], [0.33, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.33, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.25, 0.014583333333333334], [0.33, 1.0], [0.5, 1.0], [0.25, 0.23541666666666666], [0.33, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.3, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.3, 0.23125], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.3, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.3, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.3, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.3, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.3, 1.8979166666666667], [0.44, 1.0], [0.6, 1.0], [0.28, 0.10208333333333333], [0.42, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.28, 0.014583333333333334], [0.42, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.28, 0.014583333333333334], [0.42, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.28, 0.014583333333333334], [0.42, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.46875], [0.37, 1.0], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.19, 0.014583333333333334], [0.28, 1.0], [0.37, 1.0], [0.19, 0.47291666666666665], [0.28, 1.0], [0.37, 1.0], [0.17, 0.027083333333333334], [0.28, 1.0], [0.33, 1.0], [0.17, 0.47291666666666665], [0.28, 1.0], [0.33, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.25, 1.0], [0.15, 0.23541666666666666], [0.25, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.25, 1.0], [0.15, 0.23541666666666666], [0.25, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.28, 0.027083333333333334], [0.33, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.33, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.14, 0.027083333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.25, 0.014583333333333334], [0.33, 1.0], [0.5, 1.0], [0.25, 0.23541666666666666], [0.33, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.25, 1.0], [0.15, 0.23541666666666666], [0.25, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.28, 0.014583333333333334], [0.42, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.28, 0.014583333333333334], [0.42, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.28, 0.014583333333333334], [0.42, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.42, 1.0], [0.5, 1.0], [0.28, 0.014583333333333334], [0.42, 1.0], [0.5, 1.0], [0.28, 0.9479166666666666], [0.42, 1.0], [0.5, 1.0], [0.37, 0.052083333333333336], [0.56, 1.0], [0.75, 1.0], [0.37, 0.94375], [0.56, 1.0], [0.75, 1.0], [0.35, 0.052083333333333336], [0.56, 1.0], [0.7, 1.0], [0.35, 0.9479166666666666], [0.56, 1.0], [0.7, 1.0], [0.33, 0.052083333333333336], [0.56, 1.0], [0.67, 1.0], [0.33, 0.9479166666666666], [0.56, 1.0], [0.67, 1.0], [0.31, 0.052083333333333336], [0.44, 1.0], [0.63, 1.0], [0.31, 0.9479166666666666], [0.44, 1.0], [0.63, 1.0], [0.15, 0.052083333333333336], [0.3, 1.0], [0.15, 0.46875], [0.3, 1.0], [0.37, 0.027083333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.3, 1.0], [0.15, 0.47291666666666665], [0.3, 1.0], [0.15, 0.027083333333333334], [0.3, 1.0], [0.15, 0.23541666666666666], [0.3, 1.0], [0.37, 0.014583333333333334], [0.44, 1.0], [0.6, 1.0], [0.37, 0.23541666666666666], [0.44, 1.0], [0.6, 1.0], [0.15, 0.014583333333333334], [0.25, 1.0], [0.15, 0.23541666666666666], [0.25, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.17, 0.027083333333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.46875], [0.37, 1.0], [0.44, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.44, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.44, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.28, 0.027083333333333334], [0.35, 1.0], [0.5, 1.0], [0.28, 0.23541666666666666], [0.35, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.14, 0.027083333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.25, 0.014583333333333334], [0.31, 1.0], [0.5, 1.0], [0.25, 0.23541666666666666], [0.31, 1.0], [0.5, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.21, 0.014583333333333334], [0.42, 1.0], [0.21, 0.46875], [0.42, 1.0], [0.21, 0.027083333333333334], [0.31, 1.0], [0.42, 1.0], [0.21, 0.23541666666666666], [0.31, 1.0], [0.42, 1.0], [0.21, 0.014583333333333334], [0.31, 1.0], [0.42, 1.0], [0.21, 0.23541666666666666], [0.31, 1.0], [0.42, 1.0], [0.21, 0.014583333333333334], [0.31, 1.0], [0.42, 1.0], [0.21, 0.23541666666666666], [0.31, 1.0], [0.42, 1.0], [0.21, 0.014583333333333334], [0.31, 1.0], [0.42, 1.0], [0.21, 0.23541666666666666], [0.31, 1.0], [0.42, 1.0], [0.21, 0.014583333333333334], [0.31, 1.0], [0.42, 1.0], [0.21, 0.23541666666666666], [0.31, 1.0], [0.42, 1.0], [0.21, 0.014583333333333334], [0.31, 1.0], [0.42, 1.0], [0.21, 0.23541666666666666], [0.31, 1.0], [0.42, 1.0], [0.16, 0.014583333333333334], [0.31, 1.0], [0.16, 0.23541666666666666], [0.31, 1.0], [0.31, 0.014583333333333334], [0.4, 1.0], [0.47, 1.0], [0.31, 0.23541666666666666], [0.4, 1.0], [0.47, 1.0], [0.31, 0.014583333333333334], [0.4, 1.0], [0.47, 1.0], [0.31, 0.23541666666666666], [0.4, 1.0], [0.47, 1.0], [0.31, 0.014583333333333334], [0.4, 1.0], [0.47, 1.0], [0.31, 0.23541666666666666], [0.4, 1.0], [0.47, 1.0], [0.31, 0.014583333333333334], [0.63, 1.0], [0.31, 0.47291666666666665], [0.63, 1.0], [0.16, 0.027083333333333334], [0.31, 1.0], [0.16, 0.47291666666666665], [0.31, 1.0], [0.21, 1.0], [0.42, 1.0], [0.21, 0.23125], [0.42, 1.0], [0.5, 0.014583333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.5, 0.014583333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.21, 0.014583333333333334], [0.42, 1.0], [0.21, 0.47291666666666665], [0.42, 1.0], [0.5, 0.027083333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.5, 0.014583333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.21, 0.014583333333333334], [0.42, 1.0], [0.21, 0.47291666666666665], [0.42, 1.0], [0.5, 0.027083333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.5, 0.014583333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.21, 0.014583333333333334], [0.42, 1.0], [0.21, 0.23541666666666666], [0.42, 1.0], [0.21, 0.014583333333333334], [0.42, 1.0], [0.21, 0.47291666666666665], [0.42, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.17, 1.0], [0.33, 1.0], [0.17, 0.23125], [0.33, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.16, 0.014583333333333334], [0.31, 1.0], [0.16, 0.47291666666666665], [0.31, 1.0], [0.16, 0.027083333333333334], [0.31, 1.0], [0.16, 0.47291666666666665], [0.31, 1.0], [0.14, 0.027083333333333334], [0.28, 1.0], [0.14, 0.23125], [0.28, 1.0], [0.33, 0.014583333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.33, 0.014583333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.33, 0.027083333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.33, 0.014583333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.16, 0.014583333333333334], [0.31, 1.0], [0.16, 0.23541666666666666], [0.31, 1.0], [0.37, 0.014583333333333334], [0.47, 1.0], [0.63, 1.0], [0.37, 0.23541666666666666], [0.47, 1.0], [0.63, 1.0], [0.37, 0.014583333333333334], [0.47, 1.0], [0.63, 1.0], [0.37, 0.23541666666666666], [0.47, 1.0], [0.63, 1.0], [0.16, 0.014583333333333334], [0.31, 1.0], [0.16, 0.47291666666666665], [0.31, 1.0], [0.37, 0.027083333333333334], [0.47, 1.0], [0.63, 1.0], [0.37, 0.23541666666666666], [0.47, 1.0], [0.63, 1.0], [0.37, 0.014583333333333334], [0.47, 1.0], [0.63, 1.0], [0.37, 0.23541666666666666], [0.47, 1.0], [0.63, 1.0], [0.16, 0.014583333333333334], [0.31, 1.0], [0.16, 0.23541666666666666], [0.31, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.23125], [0.33, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.16, 0.014583333333333334], [0.31, 1.0], [0.16, 0.23541666666666666], [0.31, 1.0], [0.31, 0.014583333333333334], [0.4, 1.0], [0.47, 1.0], [0.31, 0.23541666666666666], [0.4, 1.0], [0.47, 1.0], [0.31, 0.014583333333333334], [0.4, 1.0], [0.47, 1.0], [0.31, 0.23541666666666666], [0.4, 1.0], [0.47, 1.0], [0.31, 0.014583333333333334], [0.4, 1.0], [0.47, 1.0], [0.31, 0.23541666666666666], [0.4, 1.0], [0.47, 1.0], [0.31, 0.014583333333333334], [0.63, 1.0], [0.31, 0.47291666666666665], [0.63, 1.0], [0.16, 0.027083333333333334], [0.31, 1.0], [0.16, 0.47291666666666665], [0.31, 1.0], [0.21, 1.0], [0.42, 1.0], [0.21, 0.23125], [0.42, 1.0], [0.5, 0.014583333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.5, 0.014583333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.21, 0.014583333333333334], [0.42, 1.0], [0.21, 0.47291666666666665], [0.42, 1.0], [0.5, 0.027083333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.5, 0.014583333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.21, 0.014583333333333334], [0.42, 1.0], [0.21, 0.47291666666666665], [0.42, 1.0], [0.5, 0.027083333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.5, 0.014583333333333334], [0.63, 1.0], [0.84, 1.0], [0.5, 0.23541666666666666], [0.63, 1.0], [0.84, 1.0], [0.21, 0.014583333333333334], [0.42, 1.0], [0.21, 0.23541666666666666], [0.42, 1.0], [0.21, 0.014583333333333334], [0.42, 1.0], [0.21, 0.47291666666666665], [0.42, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.17, 1.0], [0.33, 1.0], [0.17, 0.23125], [0.33, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.16, 0.014583333333333334], [0.31, 1.0], [0.16, 0.47291666666666665], [0.31, 1.0], [0.16, 0.027083333333333334], [0.31, 1.0], [0.16, 0.47291666666666665], [0.31, 1.0], [0.14, 0.027083333333333334], [0.28, 1.0], [0.14, 0.23125], [0.28, 1.0], [0.33, 0.014583333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.33, 0.014583333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.47291666666666665], [0.28, 1.0], [0.33, 0.027083333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.33, 0.014583333333333334], [0.42, 1.0], [0.56, 1.0], [0.33, 0.23541666666666666], [0.42, 1.0], [0.56, 1.0], [0.14, 0.014583333333333334], [0.28, 1.0], [0.14, 0.23541666666666666], [0.28, 1.0], [0.16, 0.014583333333333334], [0.31, 1.0], [0.16, 0.23541666666666666], [0.31, 1.0], [0.37, 0.014583333333333334], [0.47, 1.0], [0.63, 1.0], [0.37, 0.23541666666666666], [0.47, 1.0], [0.63, 1.0], [0.37, 0.014583333333333334], [0.47, 1.0], [0.63, 1.0], [0.37, 0.23541666666666666], [0.47, 1.0], [0.63, 1.0], [0.16, 0.014583333333333334], [0.31, 1.0], [0.16, 0.47291666666666665], [0.31, 1.0], [0.37, 0.027083333333333334], [0.47, 1.0], [0.63, 1.0], [0.37, 0.23541666666666666], [0.47, 1.0], [0.63, 1.0], [0.37, 0.014583333333333334], [0.47, 1.0], [0.63, 1.0], [0.37, 0.23541666666666666], [0.47, 1.0], [0.63, 1.0], [0.16, 0.014583333333333334], [0.31, 1.0], [0.16, 0.23541666666666666], [0.31, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.23125], [0.33, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.16, 0.014583333333333334], [0.2, 1.0], [0.235, 1.0], [0.31, 1.0], [0.16, 1.8979166666666667], [0.2, 1.0], [0.235, 1.0], [0.31, 1.0], [0.21, 0.10208333333333333], [0.25, 1.0], [0.31, 1.0], [0.42, 1.0], [0.84, 1.0], [0.21, 0.94375], [0.25, 1.0], [0.31, 1.0], [0.42, 1.0], [0.84, 1.0], [0.19, 0.052083333333333336], [0.25, 1.0], [0.31, 1.0], [0.37, 1.0], [0.75, 1.0], [0.19, 0.9479166666666666], [0.25, 1.0], [0.31, 1.0], [0.37, 1.0], [0.75, 1.0], [0.18, 0.052083333333333336], [0.21, 1.0], [0.25, 1.0], [0.35, 1.0], [0.7, 1.0], [0.18, 0.9479166666666666], [0.21, 1.0], [0.25, 1.0], [0.35, 1.0], [0.7, 1.0], [0.17, 0.052083333333333336], [0.21, 1.0], [0.25, 1.0], [0.67, 1.0], [0.17, 0.9479166666666666], [0.21, 1.0], [0.25, 1.0], [0.67, 1.0], [0.17, 0.052083333333333336], [0.33, 1.0], [0.17, 0.46875], [0.33, 1.0], [0.42, 0.027083333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.47291666666666665], [0.33, 1.0], [0.17, 0.027083333333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.42, 0.014583333333333334], [0.5, 1.0], [0.67, 1.0], [0.42, 0.23541666666666666], [0.5, 1.0], [0.67, 1.0], [0.17, 0.014583333333333334], [0.33, 1.0], [0.17, 0.23541666666666666], [0.33, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.47, 0.027083333333333334], [0.56, 1.0], [0.75, 1.0], [0.47, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.47291666666666665], [0.37, 1.0], [0.19, 0.027083333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.47, 0.014583333333333334], [0.56, 1.0], [0.75, 1.0], [0.47, 0.23541666666666666], [0.56, 1.0], [0.75, 1.0], [0.19, 0.014583333333333334], [0.37, 1.0], [0.19, 0.23541666666666666], [0.37, 1.0], [0.21, 0.014583333333333334], [0.42, 1.0], [0.21, 0.23125], [0.42, 1.0], [0.56, 0.014583333333333334], [0.56, 0.23541666666666666], [0.63, 0.014583333333333334], [0.63, 0.23541666666666666], [0.56, 0.014583333333333334], [0.56, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.23541666666666666], [0.63, 0.014583333333333334], [0.63, 0.23541666666666666], [0.56, 0.014583333333333334], [0.56, 0.23541666666666666], [0.5, 0.014583333333333334], [0.5, 0.23541666666666666], [0.21, 0.014583333333333334], [0.21, 0.47291666666666665], [0.31, 0.027083333333333334], [0.31, 0.47291666666666665], [0.42, 0.027083333333333334], [0.42, 0.47291666666666665], [0.5, 0.027083333333333334], [0.5, 0.47291666666666665], [0.25, 0.027083333333333334], [0.5, 1.0], [0.25, 0.23125], [0.5, 1.0], [0.63, 0.014583333333333334], [0.63, 0.23541666666666666], [0.75, 0.014583333333333334], [0.75, 0.23541666666666666], [1.0, 0.014583333333333334], [1.0, 0.7104166666666667], [1.12, 0.03958333333333333], [1.12, 0.47291666666666665], [1.25, 0.027083333333333334], [1.25, 1.8979166666666667], [0.21, 0.10208333333333333], [0.42, 1.0], [0.21, 0.46875], [0.42, 1.0], [0.56, 0.027083333333333334], [0.56, 0.47291666666666665], [0.75, 0.027083333333333334], [0.75, 0.47291666666666665], [0.63, 0.027083333333333334], [0.63, 0.47291666666666665], [0.21, 0.027083333333333334], [0.42, 1.0], [0.21, 0.47291666666666665], [0.42, 1.0], [0.56, 0.027083333333333334], [0.56, 0.47291666666666665], [0.75, 0.027083333333333334], [0.75, 0.47291666666666665], [0.63, 0.027083333333333334], [0.63, 0.47291666666666665], [0.17, 0.027083333333333334], [0.33, 1.0], [0.17, 0.94375], [0.33, 1.0], [0.33, 0.052083333333333336], [0.67, 1.0], [0.33, 0.9479166666666666], [0.67, 1.0], [0.19, 0.052083333333333336], [0.37, 1.0], [0.19, 0.9479166666666666], [0.37, 1.0], [0.37, 0.052083333333333336], [0.75, 1.0], [0.37, 0.9479166666666666], [0.75, 1.0], [0.21, 0.052083333333333336], [0.42, 1.0], [0.21, 3.79375], [0.42, 1.0]]}]} \ No newline at end of file diff --git a/测试用/【ff14双人大合奏】僵王处刑曲Brainiac Maniac.mid b/测试用/【ff14双人大合奏】僵王处刑曲Brainiac Maniac.mid deleted file mode 100644 index 8792dcc..0000000 Binary files a/测试用/【ff14双人大合奏】僵王处刑曲Brainiac Maniac.mid and /dev/null differ diff --git a/测试用/义勇军进行曲.mid b/测试用/义勇军进行曲.mid deleted file mode 100644 index 3349f31..0000000 Binary files a/测试用/义勇军进行曲.mid and /dev/null differ diff --git a/测试用/义勇军进行曲.msct b/测试用/义勇军进行曲.msct deleted file mode 100644 index a6e4d2c..0000000 --- a/测试用/义勇军进行曲.msct +++ /dev/null @@ -1 +0,0 @@ -{"mainset": {"PackName": "\u4e49\u52c7\u519b\u8fdb\u884c\u66f2", "MusicTitle": "\u56fd\u6b4c", "IsRepeat": false, "PlayerSelect": "[tag=play]"}, "musics": [{"set": {"EntityName": "MusicSupport", "ScoreboardName": "MusicSupport", "Instrument": "note.harp", "FileName": "\u7b2c\u4e00\u97f3\u8f68"}, "notes": [[1.8, 1.0], [1.8, 1.0], [2.24, 1.0], [1.12, 1.0], [0.84, 1.0], [0.7, 1.0], [0.56, 1.0], [2.24, 1.0], [1.12, 1.0], [0.84, 1.0], [0.7, 1.0], [1.12, 1.0], [2.83, 0.125], [1.4, 1.0], [2.83, 1.0], [1.4, 1.0], [3.36, 0.12708333333333333], [1.7, 1.0], [1.12, 1.0], [3.36, 1.0], [1.7, 1.0], [1.12, 1.0], [0.56, 0.26875], [1.12, 1.0], [3.36, 1.0], [0.84, 1.0], [1.12, 1.0], [0.7, 1.0], [1.7, 1.0], [3.36, 1.0], [0.84, 1.0], [1.12, 1.0], [0.7, 1.0], [1.7, 1.0], [1.8, 0.2875], [1.8, 1.0], [0.56, 1.0], [1.12, 1.0], [3.78, 1.0], [0.94, 1.0], [1.9, 1.0], [1.12, 1.0], [0.75, 1.0], [3.78, 1.0], [0.94, 1.0], [1.9, 1.0], [1.12, 1.0], [0.75, 1.0], [0.56, 0.37916666666666665], [1.12, 1.0], [3.36, 1.0], [0.84, 1.0], [1.7, 1.0], [0.7, 1.0], [3.36, 1.0], [0.84, 1.0], [1.7, 1.0], [0.7, 1.0], [1.8, 0.35833333333333334], [1.8, 1.0], [0.56, 1.0], [1.12, 1.0], [2.83, 1.0], [1.4, 1.0], [0.84, 1.0], [1.12, 1.0], [0.7, 1.0], [2.83, 1.0], [1.4, 1.0], [0.84, 1.0], [1.12, 1.0], [0.7, 1.0], [2.24, 0.12916666666666668], [1.12, 1.0], [2.24, 1.0], [1.12, 1.0], [1.25, 0.10625], [0.84, 1.0], [0.84, 1.0], [3.36, 1.0], [1.7, 1.0], [1.05, 1.0], [3.36, 1.0], [1.7, 1.0], [1.05, 1.0], [0.63, 1.0], [1.25, 0.1375], [0.84, 1.0], [0.84, 1.0], [3.36, 1.0], [1.7, 1.0], [1.05, 1.0], [3.36, 1.0], [1.7, 1.0], [1.05, 1.0], [0.63, 1.0], [1.25, 0.20416666666666666], [0.84, 1.0], [0.84, 1.0], [3.36, 1.0], [1.7, 1.0], [1.05, 1.0], [3.36, 1.0], [1.7, 1.0], [1.05, 1.0], [0.63, 1.0], [1.8, 0.11041666666666666], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [2.83, 1.0], [0.7, 1.0], [1.4, 1.0], [1.12, 1.0], [2.83, 1.0], [0.7, 1.0], [1.4, 1.0], [1.12, 1.0], [2.24, 0.26458333333333334], [1.12, 1.0], [2.24, 1.0], [1.12, 1.0], [1.7, 0.07708333333333334], [1.7, 1.0], [1.8, 0.15208333333333332], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [0.84, 1.0], [0.7, 1.0], [0.84, 1.0], [0.7, 1.0], [1.7, 1.0], [1.7, 1.0], [0.84, 0.029166666666666667], [0.84, 1.0], [1.7, 1.0], [1.7, 1.0], [0.84, 0.14791666666666667], [0.84, 1.0], [1.7, 1.0], [1.7, 1.0], [1.25, 0.0020833333333333333], [0.84, 1.0], [0.84, 1.0], [0.84, 1.0], [0.84, 1.0], [0.63, 1.0], [1.7, 1.0], [1.7, 1.0], [0.84, 0.16458333333333333], [0.84, 1.0], [1.7, 1.0], [1.7, 1.0], [0.84, 0.0375], [0.84, 1.0], [1.7, 1.0], [1.7, 1.0], [1.8, 0.020833333333333332], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [0.84, 1.0], [0.7, 1.0], [1.12, 1.0], [0.84, 1.0], [0.7, 1.0], [1.12, 1.0], [1.7, 0.5583333333333333], [1.7, 1.0], [0.84, 1.0], [0.84, 1.0], [1.8, 0.33125], [1.8, 1.0], [1.12, 1.0], [0.7, 1.0], [0.7, 1.0], [2.24, 1.0], [2.24, 1.0], [0.84, 1.0], [1.12, 1.0], [0.84, 1.0], [1.12, 1.0], [1.12, 0.32916666666666666], [0.7, 1.0], [0.7, 1.0], [2.24, 1.0], [2.24, 1.0], [1.12, 1.0], [0.84, 1.0], [1.12, 1.0], [0.84, 1.0], [1.8, 0.39375], [1.8, 1.0], [1.12, 1.0], [0.7, 1.0], [0.7, 1.0], [2.24, 1.0], [2.24, 1.0], [1.12, 1.0], [0.84, 1.0], [1.12, 1.0], [0.84, 1.0], [2.24, 0.18541666666666667], [2.24, 1.0], [0.84, 1.0], [1.12, 1.0], [0.84, 1.0], [1.12, 1.0], [1.25, 0.04583333333333333], [0.84, 1.0], [0.84, 1.0], [1.7, 1.0], [1.7, 1.0], [0.84, 1.0], [0.63, 1.0], [0.84, 1.0], [1.9, 0.11875], [1.9, 1.0], [0.94, 1.0], [0.94, 1.0], [2.1, 0.0625], [2.1, 1.0], [1.05, 1.0], [1.05, 1.0], [1.8, 0.09166666666666666], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [2.24, 1.0], [2.24, 1.0], [1.12, 1.0], [0.7, 1.0], [0.84, 1.0], [1.12, 1.0], [0.7, 1.0], [0.84, 1.0], [1.12, 0.35], [1.12, 1.0], [2.24, 1.0], [2.24, 1.0], [0.7, 1.0], [1.12, 1.0], [0.84, 1.0], [0.7, 1.0], [1.12, 1.0], [0.84, 1.0], [1.8, 0.32708333333333334], [1.8, 1.0], [2.83, 0.225], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [2.24, 0.13541666666666666], [2.24, 1.0], [1.12, 1.0], [1.12, 1.0], [2.5, 0.029166666666666667], [2.5, 1.0], [1.25, 1.0], [1.25, 1.0], [2.83, 0.03958333333333333], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [1.12, 0.03958333333333333], [1.12, 1.0], [1.8, 1.0], [1.8, 1.0], [3.36, 1.0], [3.36, 1.0], [1.12, 1.0], [0.7, 1.0], [1.7, 1.0], [1.12, 1.0], [0.7, 1.0], [1.7, 1.0], [1.12, 0.21666666666666667], [1.12, 1.0], [3.36, 1.0], [3.36, 1.0], [0.84, 1.0], [1.12, 1.0], [1.7, 1.0], [0.7, 1.0], [0.84, 1.0], [1.12, 1.0], [1.7, 1.0], [0.7, 1.0], [1.8, 0.22083333333333333], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [2.83, 1.0], [2.83, 1.0], [1.4, 1.0], [0.84, 1.0], [0.7, 1.0], [1.4, 1.0], [0.84, 1.0], [0.7, 1.0], [2.83, 0.3875], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [2.24, 0.07916666666666666], [2.24, 1.0], [1.12, 1.0], [1.12, 1.0], [2.83, 0.1], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [1.8, 0.27708333333333335], [1.8, 1.0], [3.36, 1.0], [3.36, 1.0], [1.4, 1.0], [1.7, 1.0], [1.4, 1.0], [1.7, 1.0], [1.12, 0.18125], [1.12, 1.0], [2.83, 1.0], [2.83, 1.0], [0.7, 1.0], [1.4, 1.0], [1.12, 1.0], [0.7, 1.0], [1.4, 1.0], [1.12, 1.0], [1.25, 0.0125], [0.84, 1.0], [0.84, 1.0], [2.5, 1.0], [2.5, 1.0], [1.25, 1.0], [0.84, 1.0], [1.25, 1.0], [0.84, 1.0], [0.63, 1.0], [1.8, 0.3854166666666667], [1.8, 1.0], [1.25, 1.0], [0.75, 1.0], [0.94, 1.0], [0.75, 1.0], [2.5, 1.0], [2.5, 1.0], [1.25, 1.0], [0.94, 1.0], [0.63, 1.0], [1.25, 1.0], [0.94, 1.0], [1.8, 0.5583333333333333], [1.8, 1.0], [1.25, 1.0], [0.75, 1.0], [1.05, 1.0], [0.75, 1.0], [3.78, 1.0], [3.78, 1.0], [1.9, 1.0], [1.25, 1.0], [1.5, 1.0], [1.05, 1.0], [1.9, 1.0], [1.25, 1.0], [1.5, 1.0], [0.63, 1.0], [1.05, 1.0], [1.12, 0.06458333333333334], [0.84, 1.0], [0.7, 1.0], [0.7, 1.0], [3.36, 1.0], [3.36, 1.0], [1.12, 1.0], [1.7, 1.0], [0.84, 1.0], [1.12, 1.0], [1.7, 1.0], [0.84, 1.0], [1.8, 0.275], [1.8, 1.0], [1.25, 1.0], [0.84, 1.0], [0.84, 1.0], [2.5, 1.0], [2.5, 1.0], [1.25, 1.0], [0.84, 1.0], [1.05, 1.0], [1.25, 1.0], [0.84, 1.0], [0.63, 1.0], [1.05, 1.0], [1.12, 0.125], [1.12, 1.0], [2.83, 1.0], [2.83, 1.0], [1.4, 1.0], [1.12, 1.0], [0.7, 1.0], [0.84, 1.0], [1.4, 1.0], [1.12, 1.0], [0.7, 1.0], [0.84, 1.0], [1.8, 0.058333333333333334], [1.8, 1.0], [0.56, 1.0], [0.84, 1.0], [0.56, 1.0], [3.36, 1.0], [3.36, 1.0], [1.7, 1.0], [1.7, 1.0], [2.83, 0.15], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [3.36, 0.39375], [3.36, 1.0], [1.7, 1.0], [1.7, 1.0], [1.8, 0.22708333333333333], [1.8, 1.0], [2.83, 1.0], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [2.5, 0.20833333333333334], [2.5, 1.0], [1.25, 1.0], [1.25, 1.0], [2.83, 0.15208333333333332], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [2.24, 0.075], [2.24, 1.0], [1.12, 1.0], [1.12, 1.0], [1.8, 0.4083333333333333], [1.8, 1.0], [2.83, 1.0], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [1.12, 0.6229166666666667], [1.12, 1.0], [1.8, 1.0], [1.8, 1.0], [1.7, 1.0], [1.7, 1.0], [0.84, 1.0], [0.84, 1.0], [1.9, 0.03333333333333333], [1.9, 1.0], [0.94, 1.0], [0.94, 1.0], [2.24, 0.2875], [2.24, 1.0], [1.12, 1.0], [1.12, 1.0], [1.05, 0.2625], [1.05, 1.0], [2.24, 1.0], [2.24, 1.0], [1.12, 1.0], [1.12, 1.0], [1.8, 0.14791666666666667], [1.8, 1.0], [0.94, 1.0], [0.94, 1.0], [2.83, 1.0], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [2.83, 0.4375], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [0.84, 0.06666666666666667], [0.84, 1.0], [3.36, 1.0], [3.36, 1.0], [1.7, 1.0], [1.7, 1.0], [3.36, 0.2708333333333333], [3.36, 1.0], [1.7, 1.0], [1.7, 1.0], [1.8, 0.08333333333333333], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [2.5, 1.0], [2.5, 1.0], [1.25, 1.0], [1.25, 1.0], [2.5, 0.20625], [2.5, 1.0], [1.25, 1.0], [1.25, 1.0], [2.5, 0.1875], [2.5, 1.0], [1.25, 1.0], [1.25, 1.0], [1.9, 0.14375], [1.9, 1.0], [0.94, 1.0], [0.94, 1.0], [1.8, 0.10625], [1.8, 1.0], [2.5, 1.0], [2.5, 1.0], [1.25, 1.0], [1.25, 1.0], [1.05, 0.041666666666666664], [1.05, 1.0], [1.7, 0.4125], [1.7, 1.0], [0.84, 1.0], [0.84, 1.0], [1.8, 0.06041666666666667], [1.8, 1.0], [1.12, 1.0], [0.7, 1.0], [0.7, 1.0], [2.24, 1.0], [2.24, 1.0], [0.84, 1.0], [1.12, 1.0], [0.84, 1.0], [1.12, 1.0], [0.7, 0.4083333333333333], [1.12, 1.0], [0.7, 1.0], [2.24, 1.0], [2.24, 1.0], [0.84, 1.0], [1.12, 1.0], [0.84, 1.0], [1.12, 1.0], [1.8, 0.2625], [1.8, 1.0], [1.12, 1.0], [0.56, 1.0], [0.84, 1.0], [0.56, 1.0], [2.83, 1.0], [2.83, 1.0], [0.84, 1.0], [1.12, 1.0], [1.4, 1.0], [0.84, 1.0], [1.12, 1.0], [1.4, 1.0], [1.12, 0.32083333333333336], [0.56, 1.0], [0.84, 1.0], [0.56, 1.0], [2.83, 1.0], [2.83, 1.0], [1.4, 1.0], [1.12, 1.0], [0.84, 1.0], [1.4, 1.0], [1.12, 1.0], [0.84, 1.0], [1.8, 0.25], [1.8, 1.0], [1.25, 1.0], [0.84, 1.0], [0.84, 1.0], [3.36, 1.0], [3.36, 1.0], [1.7, 1.0], [1.05, 1.0], [1.7, 1.0], [0.63, 1.0], [1.05, 1.0], [1.8, 0.21041666666666667], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [2.24, 1.0], [2.24, 1.0], [1.12, 1.0], [0.84, 1.0], [0.7, 1.0], [1.12, 1.0], [0.84, 1.0], [0.7, 1.0], [2.83, 0.27291666666666664], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [3.36, 0.06666666666666667], [3.36, 1.0], [1.7, 1.0], [1.7, 1.0], [1.12, 0.3416666666666667], [1.12, 1.0], [3.36, 1.0], [3.36, 1.0], [1.7, 1.0], [0.84, 1.0], [0.7, 1.0], [1.7, 1.0], [0.84, 1.0], [0.7, 1.0], [1.8, 0.2833333333333333], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [3.78, 1.0], [3.78, 1.0], [1.9, 1.0], [0.94, 1.0], [0.75, 1.0], [1.9, 1.0], [0.94, 1.0], [0.75, 1.0], [1.12, 0.16875], [1.12, 1.0], [3.36, 1.0], [3.36, 1.0], [0.84, 1.0], [1.7, 1.0], [0.7, 1.0], [0.84, 1.0], [1.7, 1.0], [0.7, 1.0], [1.8, 0.3229166666666667], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [2.83, 1.0], [2.83, 1.0], [1.4, 1.0], [0.84, 1.0], [0.7, 1.0], [1.4, 1.0], [0.84, 1.0], [0.7, 1.0], [1.12, 0.00625], [1.12, 1.0], [2.24, 0.13125], [2.24, 1.0], [1.25, 0.09583333333333334], [0.84, 1.0], [0.84, 1.0], [1.05, 1.0], [1.7, 1.0], [1.05, 1.0], [1.7, 1.0], [0.63, 1.0], [3.36, 1.0], [3.36, 1.0], [1.25, 0.15625], [0.84, 1.0], [0.84, 1.0], [1.7, 1.0], [1.05, 1.0], [1.7, 1.0], [1.05, 1.0], [0.63, 1.0], [3.36, 1.0], [3.36, 1.0], [1.25, 0.25416666666666665], [0.84, 1.0], [0.84, 1.0], [1.7, 1.0], [1.05, 1.0], [1.7, 1.0], [1.05, 1.0], [0.63, 1.0], [3.36, 1.0], [3.36, 1.0], [1.8, 0.03958333333333333], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [0.7, 1.0], [1.12, 1.0], [1.4, 1.0], [0.7, 1.0], [1.12, 1.0], [1.4, 1.0], [2.83, 1.0], [2.83, 1.0], [1.12, 0.3], [1.12, 1.0], [2.24, 1.0], [2.24, 1.0], [1.8, 0.4895833333333333], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [0.84, 1.0], [0.7, 1.0], [0.84, 1.0], [0.7, 1.0], [1.7, 1.0], [1.7, 1.0], [1.12, 0.2916666666666667], [1.12, 1.0], [2.24, 1.0], [2.24, 1.0], [1.12, 0.1125], [1.12, 1.0], [1.8, 0.25], [1.8, 1.0], [2.83, 1.0], [2.83, 1.0], [1.4, 1.0], [1.4, 1.0], [1.12, 0.020833333333333332], [1.12, 1.0], [2.24, 0.022916666666666665], [2.24, 1.0], [1.25, 0.05416666666666667], [0.84, 1.0], [0.84, 1.0], [1.7, 1.0], [1.05, 1.0], [1.7, 1.0], [0.63, 1.0], [1.05, 1.0], [3.36, 1.0], [3.36, 1.0], [1.25, 0.14375], [0.84, 1.0], [0.84, 1.0], [1.7, 1.0], [1.05, 1.0], [1.7, 1.0], [1.05, 1.0], [0.63, 1.0], [3.36, 1.0], [3.36, 1.0], [1.25, 0.20625], [0.84, 1.0], [0.84, 1.0], [1.7, 1.0], [1.05, 1.0], [1.7, 1.0], [1.05, 1.0], [0.63, 1.0], [3.36, 1.0], [3.36, 1.0], [1.8, 0.08958333333333333], [1.8, 1.0], [1.12, 1.0], [1.12, 1.0], [0.7, 1.0], [1.12, 1.0], [1.4, 1.0], [0.7, 1.0], [1.12, 1.0], [1.4, 1.0], [2.83, 1.0], [2.83, 1.0], [1.12, 0.42083333333333334], [1.12, 1.0], [2.24, 1.0], [2.24, 1.0], [1.8, 0.4479166666666667], [1.8, 1.0], [1.12, 1.0], [0.84, 1.0], [0.56, 1.0], [0.56, 1.0], [0.7, 1.0], [0.84, 1.0], [0.7, 1.0], [0.84, 1.0], [1.7, 1.0], [1.7, 1.0], [1.12, 0.4270833333333333], [1.12, 1.0], [2.24, 1.0], [2.24, 1.0], [1.8, 0.49166666666666664], [1.8, 1.0], [1.12, 1.0], [0.84, 1.0], [0.56, 1.0], [0.56, 1.0], [0.84, 1.0], [0.7, 1.0], [0.84, 1.0], [0.7, 1.0], [1.7, 1.0], [1.7, 1.0], [1.12, 0.45], [1.12, 1.0], [2.24, 1.0], [2.24, 1.0], [1.8, 0.48541666666666666], [1.8, 1.0], [1.12, 1.0], [0.84, 1.0], [0.56, 1.0], [0.56, 1.0], [0.84, 1.0], [0.7, 1.0], [0.84, 1.0], [0.7, 1.0], [1.7, 1.0], [1.7, 1.0], [1.12, 0.4625], [1.12, 1.0], [2.24, 1.0], [2.24, 1.0], [0.56, 0.5833333333333334], [0.56, 1.0], [0.7, 1.0], [0.42, 1.0], [1.12, 1.0], [0.28, 1.0], [0.7, 1.0], [1.12, 1.0], [2.24, 1.0], [2.24, 1.0], [1.8, 0.05625], [1.8, 1.0]]}]} \ No newline at end of file diff --git a/测试用/同道殊途.msctx b/测试用/同道殊途.msctx deleted file mode 100644 index 4046c09..0000000 Binary files a/测试用/同道殊途.msctx and /dev/null differ diff --git a/测试用/同道殊途标准.mid b/测试用/同道殊途标准.mid deleted file mode 100644 index 9ea9df9..0000000 Binary files a/测试用/同道殊途标准.mid and /dev/null differ diff --git a/测试用/国歌.msctn b/测试用/国歌.msctn deleted file mode 100644 index e798a98..0000000 Binary files a/测试用/国歌.msctn and /dev/null differ diff --git a/测试用/国歌2.msctn b/测试用/国歌2.msctn deleted file mode 100644 index 472df31..0000000 Binary files a/测试用/国歌2.msctn and /dev/null differ diff --git a/补全库.py b/补全库.py deleted file mode 100644 index 7c4783e..0000000 --- a/补全库.py +++ /dev/null @@ -1,2 +0,0 @@ -from msctspt.bugReporter import version -print(version().__call__())