元素定义 音符、休止符、谱号、拍号、调号、小节线、终止线 都是元素 1.光标 元素光标(长方形的,与音符的宽度同宽,高度为一行五线谱的最高点到最低点,半透明,闪烁状态) 垂直光标(线状,红色,,2px,高度为一行五线谱的最高点到最低点,半透明,闪烁状态) 2.点击五线谱动作 (1)每个输入的元素都有一个蓝色的点击区域,长方形的,与音符的宽度同宽,高度为一行五线谱的最高点到最低点,半透明,简称为点击区域,点击任意元素的点击区域,则在对应的元素上显示 元素光标,蓝色点击区域仅作开发时参考位置使用,后期需要注释隐藏。 (2)点击五线谱的空白区域,则将光标定位左边相邻的最近的元素,呈现为垂直光标 3.光标左右移动按钮 点击光标向右,光标就往右边移动,点击向左就往左边移动, 移动规律为 元素光标和垂直光标交替。当光标为元素光标,点击光标向右则变成垂直光标吸附在元素右边,再次点击则移动到下一个元素,呈现为元素光标,以此类推 4.换行 点击换行按钮,在光标所在位置进行换行 5.空行加X 保持占位 如果一行内容为空时,自动加一个X,当对应的输入了内容则删除这个X 整个五线谱的乐谱部分全部被删除后,也要自动添加一个X,输入内容后自动删除这个X 这个功能没有实现,需要新增。 6.音符输入功能:通过 C、D、E、F、G、A、B七个按钮输入用音符,总共五个组别,每个组别的七个字母分别映射不同的abcjs的 音符的对应的字母 通过键盘上第一行的六个音符按钮选择时值数字 六个音符按钮 时值分别为 64 32 16 8 4 2 7.音符组别(八度)切换功能:可在小字5组到大字2组之间切换,共9个八度范围 8.变音记号功能:可添加升号(♯)、重升号(𝄪)、降号(♭)、重降号(𝄫)和还原记号(♮) 选中音符可以输入 这五个变音记号,如果已有与输入的变音记号相同的记号,则删除对应的变音记号,如果已有与输入的变音记号不同的变音记号,则直接替换。 9.小节线输入功能:点击小节线按钮可以在光标所在位置输入小节线,小节线输入时,在小节线前后abcjs代码各带一个空格 双击小节线按钮,在光标所在位置输入 |] 同时前后需要带一个空格。 (这个功能未实现) 10.休止符替换功能:将已选中的音符替换为相同时值的休止符 ,也就是讲对应的音符的字母改成z 数字不变 11.音符替换功能, 选中音符后,再输入音符,则将选中的音符替换(光标为元素光标状态) 12.删除功能 :点击删除按钮,删除元素光标所在的元素或删除垂直光标左边的元素 13.音高调整功能:向上或向下调整音符的音高 实际就是替换字母 例如 升高c 就是 变成d 后面的数字 不变 14.附点功能 当音符不存在附点是,将点击附点按钮,音符的数字乘以1.5 如果已经存在一个附点,则点击附点按钮,是将音符的数字除以1.5然后乘以1.75 如果音符有两个附点,那么就将音符的数字除以1.75 达到删除附点目的 15.撤销功能:撤销上一步操作恢复到之前的状态 音符的按钮组别与实际abcjs代码映射关系 小字5组: 输入代码:音名 + 四个单引号(如 C'''') 按钮显示:小写字母 + 上标5(如 c⁵) 小字4组: 输入代码:音名 + 三个单引号(如 C''') 按钮显示:小写字母 + 上标4(如 c⁴) 小字3组: 输入代码:音名 + 两个单引号(如 C'') 按钮显示:小写字母 + 上标3(如 c³) 小字2组: 输入代码:音名 + 一个单引号(如 C') 按钮显示:小写字母 + 上标2(如 c²) 小字1组: 输入代码:音名(如 C) 按钮显示:小写字母 + 上标1(如 c¹) 小字组: 输入代码:音名 + 一个逗号(如 C,) 按钮显示:小写字母(如 c) 大字组: 输入代码:音名 + 两个逗号(如 C,,) 按钮显示:大写字母(如 C) 大字1组: 输入代码:音名 + 三个逗号(如 C,,,) 按钮显示:大写字母 + 下标1(如 C₁) 大字2组: 输入代码:音名 + 四个逗号(如 C,,,,) 按钮显示:大写字母 + 下标2(如 C₂) bug:音高太高的时候或者音高太低的时候,音符未被识别会元素,光标无法定位。 待实现功能: 1.双击小节线,输入终止线 2.乐谱行为空,自动添加一个X 3.空行自动添加一个X 4.延音线添加和删除,光标在两个音高相同(也就是字母相同的)音符中间的时候,且两个音符之间没有 - ,延音线按钮 显示 加延音 点击加延音按钮,则在两个音符之间 插入一个 X ,如果两个音符之间已经存在- 则延音线按钮显示 删延音,点击删延音按钮,删除 两个音符之间的 - 如果光标两边的音符音高不同,则延音线按钮处于禁用状态 5.符尾的链接与断开, 当光标在两个音符之间,且两个音符的时值同时数字小于等于8,且两个音符之间没有空格,则符尾处理按钮 显示 断符尾,点击断符尾按钮。则在这两个音符之间加一个空格, 如果两个音符之间本来就有空格,则按钮显示 连符尾,点击连符尾按钮,删除这两个音符之间的所有空格