没有做任何更改,上传一下做备份。

This commit is contained in:
EillesWan 2022-03-06 23:40:31 +08:00
parent 320114533d
commit ed28fc4866
9 changed files with 119 additions and 35 deletions

View File

@ -5,7 +5,7 @@ Musicreater(音·创) is an Eilles(*W-YI*)'s app that is used for creating music
Welcome to join our QQ group: 861684859 Welcome to join our QQ group: 861684859
###Author ### Author
Eilles (金羿)The main author, who developed the most and especially the principal parts of Musicreater, and its predecessors, which has been called as "*Minecraft Function Music Maker*", "*Note Fun Creater*", "*Note World Creater*"(now ,they are united as ***Musicreater***!) Eilles (金羿)The main author, who developed the most and especially the principal parts of Musicreater, and its predecessors, which has been called as "*Minecraft Function Music Maker*", "*Note Fun Creater*", "*Note World Creater*"(now ,they are united as ***Musicreater***!)

View File

@ -1,12 +1,22 @@
import mido import mido
import numpy import numpy
'''
bpm
bites per minutes
每分钟的拍数
'''
def mt2gt(mt, tpb_a, bpm_a): def mt2gt(mt, tpb_a, bpm_a):
return round(mt / tpb_a / bpm_a * 60) return round(mt / tpb_a / bpm_a * 60)
def get(mid:mido.MidiFile): def get(mid:mido.MidiFile) -> int:
'''传入一个 MidiFile, 返回其音乐的bpm
:param mid : mido.MidFile
mido库识别的midi文件数据
:return bpm : int
'''
# mid = mido.MidiFile(mf) # mid = mido.MidiFile(mf)
long = mid.length long = mid.length
tpb = mid.ticks_per_beat tpb = mid.ticks_per_beat

View File

@ -126,6 +126,24 @@ class uniteIO:
return self._data return self._data
if __name__ == '__main__': if __name__ == '__main__':
from sys import argv from sys import argv

View File

@ -40,9 +40,11 @@ class disp:
raise KeyError(f'无法定位函数{func}') raise KeyError(f'无法定位函数{func}')
def setTitle(self,title:str = '') -> None: def setTitle(self,title:str = '') -> None:
'''设置窗口标题'''
self.root.title = title self.root.title = title
def setGeometry(self,geometry) -> None: def setGeometry(self,geometry) -> None:
'''设置窗口大小'''
self.root.geometry(geometry) self.root.geometry(geometry)
def setIcon(self,*icon) -> None: def setIcon(self,*icon) -> None:
@ -62,8 +64,13 @@ class disp:
menus.append(menu) menus.append(menu)
def setWidget(self,**kwgs) -> None: def setWidget(self,**kwgs) -> None:
self._wordviewBar = tk.Label(self.root)
pass pass
def setWordView(self, **kwgs) -> None:
for key,value in kwgs.items():
self._wordviewBar[key] = value

View File

@ -1,16 +1,18 @@
开发说明\|指南
# 开发说明\|指南 ==============
此文件旨在使后期欲参与开发之人员减轻其开发负担,同时也为了我们正在开发的人员详细说明功能与用法 此文件旨在使后期欲参与开发之人员减轻其开发负担,同时也为了我们正在开发的人员详细说明功能与用法
掌握开发指南之后,在调用函数等的过程中将会更加方便 掌握开发指南之后,在调用函数等的过程中将会更加方便
## 文件结构 文件结构
--------
从主文件调用display.py以实现显示调用functions.py以使用功能 从主文件调用display.py以实现显示调用functions.py以使用功能
functions.py中会调取./addon/目录下的全部功能文件,这些功能文件必须先由./addon/addons.pkl来预先定义好 functions.py中会调取./addon/目录下的全部功能文件,这些功能文件必须先由./addon/addons.pkl来预先定义好
## 详细说明 详细说明
--------
### msctLib ### msctLib
@ -19,11 +21,12 @@ functions.py中会调取./addon/目录下的全部功能文件,这些功能文
#### display.py #### display.py
1. class disp 1. class disp
- 参数 - 参数
1. `**kwgs`对窗口的基础设定
`{ '组件名称' : 函数自设定 }` 1. `**kwgs`对窗口的基础设定 `{ '组件名称' : 函数自设定 }` 例如:
例如:
```python ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ python
{ {
'version': '0.0.1', # version指的是当前配置格式的版本 'version': '0.0.1', # version指的是当前配置格式的版本
'title': "音·创", 'title': "音·创",
@ -38,8 +41,6 @@ functions.py中会调取./addon/目录下的全部功能文件,这些功能文
'widget': { #对窗口部件又详细说明 'widget': { #对窗口部件又详细说明
'wordview':{ 'wordview':{
'text':'言·论', 'text':'言·论',
'bg':'black',
'fg':'white'
}, },
'settingbox':{}, #后文详细说明 'settingbox':{}, #后文详细说明
'tracklist':{}, 'tracklist':{},
@ -47,34 +48,60 @@ functions.py中会调取./addon/目录下的全部功能文件,这些功能文
'map':{}, 'map':{},
}, },
} }
``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 函数 - 函数
1. `setMenu`对菜单的基础设定 1. `setMenu`对菜单的基础设定
```python
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ python
{ {
菜单名 : { 菜单名 : {
选项名 : 选项函数 选项名 : 选项函数
} }
} }
``` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
注: 注:
`菜单名` : `str` 显示在菜单上的字符串 `菜单名` : `str` 显示在菜单上的字符串
`选项名` : `str` 显示在菜单选项上的字符串 `选项名` : `str` 显示在菜单选项上的字符串
`选项函数` : `function` 菜单调取的函数(无返回值,无入参) `选项函数` : `function` 菜单调取的函数(无返回值,无入参)
2. `setWidget`对窗口部件的放置 `选项名` 的布尔值判定为 `False` 的时候,无论 `选项函数` 为何,皆插入一段分割线
2. `setWidget`对窗口部件的放置
```python ```python
wordview:dict = { wordview: dict = { #言论部分显示的字样
'text':'言·论', 'text': str = 显示内容,
'bg':'black', # ... 即可用 tk.Label 的参数
'fg':'white'
}, },
settingbox:{}, #后文详细说明 settingbox: list = [ #设置部分显示的字样及其对应的设置函数
tracklist:{}, (设置名称:str,值类型,显示内容:str,设置操作函数:function,)
operation:{}, ]
map:{}, tracklist: int = 音轨数量 #音轨选择框
operation: dict = {
按钮名称 : 执行函数
}
map: list = [
音符: class Note
]
``` ```
注: 注:
上文中,值类型可以是如下几个项
1. `('str',)` 字符串类型,使用文本框输入数据
2. `('bool',)` 布尔类型,使用复选框输入数据
3. `('num',最小值:int,最大值:int,步长:int = 1)` 数值类型,使用数值滑动条输入数据
4. `('list',列表项:list)` 单选类型,即列表中多选一,使用单选框输入数据
值得注意的是在kwgs中修改的部件设置可以在其变量中读取或热修改对应的变量如下
| 参数 | 对应类中的变量 | 变量类型 | 说明 |
|------------|------------------|---------------------------|---------------------|
| wordview | wordview | str | 显示在 言·论 区域的文字 |
| settingbox | settings | list[ Any ] | 设置项目中的值 |
| tracklist | tracknum | tuple(int,int) | 当前选择到的音轨与音轨总数|
| operation | buttons | list[ tkinter.Button ] | 按钮列表 |
| map | notes | list[ class Note ] | 当前的音符列表 |
@ -82,4 +109,13 @@ functions.py中会调取./addon/目录下的全部功能文件,这些功能文
# 这里是全局设置
'name' : str, #项目名,即包名
'title': str, #音乐名称
'repeation': bool, #是否开启重复播放
'player_selection': str, #玩家选择器,用于选择播放的的玩家
# 下面是音轨独立设置
'track_name': str, #此音轨的名字
'track_sbname': str, #此音轨所使用的计分板
- 变量
使用类中的变量可以对类中的内容进行实时修改

View File

@ -97,7 +97,7 @@ class version:
) )
"""当前所需库,有一些是开发用的,用户不需要安装""" """当前所需库,有一些是开发用的,用户不需要安装"""
version = ('0.1.5.1', 'Delta',) version = ('0.2.0', 'Delta',)
"""当前版本""" """当前版本"""
def __init__(self) -> None: def __init__(self) -> None:

View File

@ -1,5 +1,5 @@
音·创(Musicreater)是由金羿(W-YI)开发的一款《我的世界》基岩版音乐生成辅助软件 音·创(Musicreater)是由金羿(W-YI)开发的一款《我的世界》基岩版音乐生成辅助软件
本软件源代码依照Apache软件协议公开。 本软件源代码依照Apache 2.0软件协议公开。
Copyright © W-YI 2022 Copyright © W-YI 2022
@ -19,11 +19,12 @@ Copyright © W-YI 2022
10.支持采用延时的播放器 10.支持采用延时的播放器
11.支持使用bdx导出结构 11.支持使用bdx导出结构
12.支持采用tp的方法播放 12.支持采用tp的方法播放
13.支持识别曲谱图片解析音乐 13.支持识别曲谱(简谱)图片解析音乐
14.支持使用瀑布流的方式播放音乐 14.支持使用瀑布流的方式播放音乐
15.支持读入Everyone Piano的曲谱文件.eop
16.支持读入Musescore的曲谱文件.mscz、.mscx
17.支持自动搜寻地图目录位置(网易&微软) 17.支持自动搜寻地图目录位置(网易&微软)
18.支持读入JPword曲谱文件.jpd
=============== ===============
2022 年度挑战 2022 年度挑战
@ -36,6 +37,9 @@ Copyright © W-YI 2022
新更新日志 新更新日志
Delta 0.2.0
2022 2 10 ~ 2022 3
Delta 0.1.5.2 Delta 0.1.5.2
2022 2 1 农历大年初一 2022 2 1 农历大年初一

View File

@ -73,3 +73,13 @@ A man achieve with challenges.
美酒宜人,宜人的却不只是美酒。 ——原神 美酒宜人,宜人的却不只是美酒。 ——原神
戏会落幕,人生却不会。 ——原神 戏会落幕,人生却不会。 ——原神
历史越久远,土地上的每一件事物就会承载更多价值。 ——原神 历史越久远,土地上的每一件事物就会承载更多价值。 ——原神
深邃的灵魂唤起久远的回忆
求索之人 当为奉之
无论前路为星辰亦或深渊,皆需往而为之
除了路途中的花与枫叶,还有心中的「道」 ——原神
只有败北,才能感悟差距,才有机会成长 ——原神
命运的邂逅,必定有其意义 ——原神
万商云来,千船继至。\n百货迭出诸海历览。\n ——原神
现状越是难以置信,我们越是不能停下脚步。 ——原神
古老的文明孕育着最美丽的传说 ——原神
百川奔流 雨露不休

View File

@ -12,10 +12,9 @@ for path, dir_list, file_list in os.walk(r"./"):
print("得到文件名:" + str(file)) print("得到文件名:" + str(file))
for i in open(file, 'r', encoding="utf-8"): for i in open(file, 'r', encoding="utf-8"):
code = i.replace(' ', '').replace('\n', '') code = i.replace(' ', '').replace('\n', '')
try:
code -= code[code.index('#'):] if code.startswith('#'):
except: continue
pass
if code: if code:
print("\t" + code) print("\t" + code)
m += 1 m += 1