8.8 KiB
开发说明|指南
此文件旨在使后期欲参与开发之人员减轻其开发负担,同时也为了我们正在开发的人员详细说明功能与用法 掌握开发指南之后,在调用函数等的过程中将会更加方便
文件结构
从主文件调用display.py以实现显示,调用functions.py以使用功能
functions.py中会调取./addon/目录下的全部功能文件,这些功能文件必须先由./addon/addons.pkl来预先定义好
详细说明
msctLib
用于支持主要功能
display.py
-
class disp
-
参数
-
**kwgs
对窗口的基础设定{ '组件名称' : 函数自设定 }
例如:{ 'version': '0.0.1', # version指的是当前配置格式的版本 'title': "音·创", 'geometry': '1200x900', 'iconbitmap': ('./resources/musicreater.ico', './resources/musicreater.ico'), 'menu' : { #对setMenu有特殊说明 '文件': { '新建': <function>, '打开': <function>, }, }, 'widget': { #对窗口部件又详细说明 'wordview':{ 'text':'言·论', }, 'settingbox':{}, #后文详细说明 'tracklist':{}, 'operation':{}, 'map':{}, }, }
-
-
变量
-
infoBar
信息显示栏,一个字符串,用于显示一些信息。
-
title
窗口标题,字符串
-
menuWidgets
对于窗口菜单的设定,其格式如下:
menuWidgets: dist = { # 菜单项目 str"菜单名" : dict{ str"选项名"|None : <function>选项函数 }, ... }
注:
菜单名
:str
显示在菜单上的字符串选项名
:str
显示在菜单选项上的字符串选项函数
:function
菜单调取的函数(无返回值,无入参) 当选项名
的布尔值判定为False
的时候,无论选项函数
为何,皆插入一段分割线,但选项函数
不得为空 -
wordView
显示在言论上的文字,字符串
-
buttons
快捷功能按钮的列表,列表的元素为字典,字典的键是按钮的名称,值为一个元组,元组中含有两个元素,其中元组的第1个元素为按钮图标,是一个图片的路径;第2个元素为执行的函数,其值应当是一个函数对象。
button: list = [ # 操作按钮部分 dict{ str"按钮名称" : tuple( 按钮图标, 执行函数 ) }, ... ],
-
settingBox
设置框,用于设置音乐的基本属性,例如词作者,曲作者等,设置格式如下:
settingbox: list = [ #设置部分显示的字样及其对应的设置函数 tuple( 设置名称:str, 值类型:tuple, 显示内容:str, 设置操作函数:<function>, ), ... ]
其中,值类型可以是如下几个项
('str',)
字符串类型,使用文本框输入数据('bool',)
布尔类型,使用复选框输入数据('num',最小值:float,最大值:float,步长:float = 1)
数值类型,使用数值滑动条输入数据('list',列表项:list)
单选类型,即列表中多选一,使用单选框输入数据
其中,值操作函数需要有一个参数,用于传递用户提供的设置值。
-
notemap
音符数据表,用于存储曲谱信息,存储格式如下
notemap: list = [ # 音轨列表 dict{ # 单个音轨 'instrument' : str"乐器", 'velocity' : int 响度, # 这里理论上需要写一个小节多少个X分音符 # 以及小节里的都是几分音符 # 但是这个留给以后来支持 int 小节编号 : [ # 一个小节 tuple( # 一个音符 时间 : int, 持续 : int, 乐器 : str, 采样 : float, 响度 : int, ), ... ], ... }, ... ]
其中,对于每个音符:
- 时间 单位:帧 当前音符开始时,距离当前小节开始所经过的帧数
- 持续 单位:帧 当前音符持续的帧数
- 乐器 当前音符使用的乐器,需要在乐器列表中有所注册
- 采样 当前音符在MC的采样音高(不含打击乐器)
- 响度 单位:格的-1次方 音符播放源距离播放者的距离的倒数
-
-
函数
-
setMenu
对菜单的基础设定{ 菜单名 : { 选项名 : 选项函数 } }
注:
菜单名
:str
显示在菜单上的字符串选项名
:str
显示在菜单选项上的字符串选项函数
:function
菜单调取的函数(无返回值,无入参) 当选项名
的布尔值判定为False
的时候,无论选项函数
为何,皆插入一段分割线,但选项函数
不得为空 -
setWidget
对窗口部件的放置wordview: dict = { #言论部分显示的字样 'text': str = 显示内容, # ... 即可用 tk.Label 的参数 }, button: list = [ dict = { 按钮名称 : tuple(按钮图标,执行函数) }, ], settingbox: list = [ #设置部分显示的字样及其对应的设置函数 ( 设置名称:str, 值类型:tuple, 显示内容:str, 设置操作函数:<function>, ) ], map: list = [ 音符数据 ]
注:
上文中,值类型可以是如下几个项
('str',)
字符串类型,使用文本框输入数据('bool',)
布尔类型,使用复选框输入数据('num',最小值:int,最大值:int,步长:int = 1)
数值类型,使用数值滑动条输入数据('list',列表项:list)
单选类型,即列表中多选一,使用单选框输入数据
值得注意的是,在kwgs中修改的部件设置,可以在其变量中读取或热修改,对应的变量如下
参数 对应类中的变量 变量类型 说明 wordview wordview str 显示在 言·论 区域的文字 button button list[dict{}] 操作按钮 settingbox settings list[ Any ] 设置项目中的值 tracklist tracknum tuple(int,int) 当前选择到的音轨与音轨总数 map notes list[ class Note ] 当前的音符列表
-
-
???
全曲的设置应该如下:
标题 : str = '无名'
副标题 : str = ''
作曲 : str = '佚名'
作词 : str = ''
歌曲版权信息 : str = ''
# bpm 暂时不需要