Musicreater/msctLib/开发说明兼指南.md

8.8 KiB
Raw Permalink Blame History

开发说明|指南

此文件旨在使后期欲参与开发之人员减轻其开发负担,同时也为了我们正在开发的人员详细说明功能与用法 掌握开发指南之后,在调用函数等的过程中将会更加方便

文件结构

从主文件调用display.py以实现显示调用functions.py以使用功能

functions.py中会调取./addon/目录下的全部功能文件,这些功能文件必须先由./addon/addons.pkl来预先定义好

详细说明

msctLib

用于支持主要功能

display.py

  1. class disp

    • 参数

      1. **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':{},
                },
            }
        
    • 变量

      1. infoBar

        信息显示栏,一个字符串,用于显示一些信息。

      2. title

        窗口标题,字符串

      3. menuWidgets

        对于窗口菜单的设定,其格式如下:

            menuWidgets: dist = { # 菜单项目
                str"菜单名" : dict{
                    str"选项名"|None : <function>选项函数
                },
                ...
            }
        

        注: 菜单名 : str 显示在菜单上的字符串 选项名 : str 显示在菜单选项上的字符串 选项函数 : function 菜单调取的函数(无返回值,无入参) 当 选项名 的布尔值判定为 False 的时候,无论 选项函数 为何,皆插入一段分割线,但 选项函数 不得为空

      4. wordView

        显示在言论上的文字,字符串

      5. buttons

        快捷功能按钮的列表列表的元素为字典字典的键是按钮的名称值为一个元组元组中含有两个元素其中元组的第1个元素为按钮图标是一个图片的路径第2个元素为执行的函数其值应当是一个函数对象。

        button: list = [ # 操作按钮部分
            dict{
                str"按钮名称" : tuple(
                    按钮图标,
                    执行函数
                )
            },
            ...
        ],
        
      6. settingBox

        设置框,用于设置音乐的基本属性,例如词作者,曲作者等,设置格式如下:

        settingbox: list = [ #设置部分显示的字样及其对应的设置函数
                tuple(
                    设置名称:str,
                    值类型:tuple,
                    显示内容:str,
                    设置操作函数:<function>,
                ),
                ...
            ]
        

        其中,值类型可以是如下几个项

        1. ('str',) 字符串类型,使用文本框输入数据
        2. ('bool',) 布尔类型,使用复选框输入数据
        3. ('num',最小值:float,最大值:float,步长:float = 1) 数值类型,使用数值滑动条输入数据
        4. ('list',列表项:list) 单选类型,即列表中多选一,使用单选框输入数据

        其中,值操作函数需要有一个参数,用于传递用户提供的设置值。

      7. notemap

        音符数据表,用于存储曲谱信息,存储格式如下

        notemap: list = [ # 音轨列表
            dict{ # 单个音轨
                'instrument' : str"乐器",
                'velocity' : int 响度,
                # 这里理论上需要写一个小节多少个X分音符
                # 以及小节里的都是几分音符
                # 但是这个留给以后来支持
                int 小节编号 : [ # 一个小节
                    tuple( # 一个音符
                        时间 : int,
                        持续 : int,
                        乐器 : str,
                        采样 : float,
                        响度 : int,
                    ),
                    ...
                ],
                ...
            },
            ...
        ]
        

        其中,对于每个音符:

        1. 时间 单位:帧 当前音符开始时,距离当前小节开始所经过的帧数
        2. 持续 单位:帧 当前音符持续的帧数
        3. 乐器 当前音符使用的乐器,需要在乐器列表中有所注册
        4. 采样 当前音符在MC的采样音高(不含打击乐器)
        5. 响度 单位:格的-1次方 音符播放源距离播放者的距离的倒数
    • 函数

      1. setMenu对菜单的基础设定

            {
                菜单名 : {
                    选项名 : 选项函数
                }
            }
        

        注: 菜单名 : str 显示在菜单上的字符串 选项名 : str 显示在菜单选项上的字符串 选项函数 : function 菜单调取的函数(无返回值,无入参) 当 选项名 的布尔值判定为 False 的时候,无论 选项函数 为何,皆插入一段分割线,但 选项函数 不得为空

      2. setWidget对窗口部件的放置

            wordview: dict = { #言论部分显示的字样
                'text': str = 显示内容,
                # ... 即可用 tk.Label 的参数
            },
            button: list = [ 
                dict = {
                    按钮名称 : tuple(按钮图标,执行函数)
                },
            ],
            settingbox: list = [ #设置部分显示的字样及其对应的设置函数
                (
                    设置名称:str,
                    值类型:tuple,
                    显示内容:str,
                    设置操作函数:<function>,
                )
            ],
            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 ] 当前的音符列表

全曲的设置应该如下:

标题 : str = '无名'
副标题 : str = ''
作曲 : str = '佚名'
作词 : str = ''
歌曲版权信息 : str = ''
# bpm 暂时不需要