将多行展示的乐谱数据处理为播放数据的方法及计算机程序

申请号 CN202110991205.0 申请日 2021-08-26 公开(公告)号 CN113707111B 公开(公告)日 2024-04-02
申请人 北京金三惠科技有限公司; 发明人 李现峰; 魏宏惠; 魏宏茹;
摘要 本 发明 涉及一种将多行展示的乐谱 数据处理 为播放数据的方法及 计算机程序 ,其中的方法主要包括:获取乐谱数据和播放命令,遍历每个单谱表中的每行,遍历每行的每个小节,遍历每个小节的各声部,计算每个声部中的音符在当前单谱中的序并将每个声部中的音符的数据按序保存在当前播放数据中;若当前音符和其上一个音符不在同一个复谱里,从头开始记录当前音符的序;若当前声部中存在符号,按照符号将其对应的音符的播放数据处理为带有符号状态的音符。本发明可以实现将复调音乐涉及的结构复杂的分成多行显示的复谱的显示数据整合并转为可播放的数据。
权利要求

1.一种将多行展示的乐谱数据处理为播放数据的方法,其特征在于,包括以下步骤:
获取乐谱数据;
读取播放命令,所述播放命令包括播放的起点和终点信息;
从所述起点至所述终点的区间内,遍历所述起点所标记的单谱的各行;遍历所述行内的各小节,记录每个所述小节在当前单谱中的序;
遍历所述小节的各声部,计算每个所述声部中的音符在所述当前单谱中的序并将每个所述声部中的音符的数据按序保存在当前播放数据中;
若当前音符和其上一个音符不在同一个复谱里,从头开始记录所述当前音符的序;
若当前声部中存在符号,按照所述符号将其对应的音符的播放数据处理为带有所述符号状态的音符。
2.如权利要求1所述的方法,其特征在于,所述符号包括八度号,踏板号,强弱号中的一种或几种。
3.如权利要求2所述的方法,其特征在于,所述音符的播放数据包括时值数据和强弱数据中的一种或两种。
4.如权利要求3所述的方法,其特征在于,还包括以下步骤:若当前小节中无拍号数据,则依次查找所述当前小节之前的若干个小节的拍号数据,将获取的第一个拍号数据作为所述当前小节的拍号数据。
5.如权利要求4所述的方法,其特征在于,还包括一种处理八度号的方法,所述处理八度号的方法包括以下步骤:
计算所述八度号结束时间点,所述结束时间点等于所述八度号出现时间点加所述八度号对应的音符的时值;
记录所述八度号结束的小节在所述当前单谱中的序;
将所有所述八度号按照所述序记录为八度号数组。
6.如权利要求4所述的方法,其特征在于,还包括一种处理踏板号的方法,所述处理踏板号的方法包括以下步骤:
记录所述踏板号开始位置对应的音符在所述当前单谱中的序;
记录所述踏板号结束位置对应的音符在所述当前单谱中的序;
将所有踏板号按照所述序记录为踏板号数组。
7.如权利要求4所述的方法,其特征在于,还包括一种处理强弱号的方法,所述处理强弱号的方法包括以下步骤:
将所有强弱号按照其对应的音符在所述当前单谱中的序记录为强弱号数组。
8.如权利要求4所述的方法,其特征在于,还包括一种处理琶音的方法,所述处理琶音的方法包括以下步骤:
将所述琶音的和弦音个数;
将所述和弦音按照所述琶音对应的音符的升降方向排序;
计算每个所述和弦音的时值,所述每个和弦音的时值为该音符的时值减去所述和弦音的补偿值,所述和弦音的补偿值按式I计算:
其中,Offset为补偿值,i为和弦音在所述琶音中的序,Duration为一个音符的时值;
为在 和240两者间取最小值。
9.一种基于交互式窗口的音乐教学系统,其特征在于,该系统被运行时实现权利要求
1‑8所述的任一种方法的步骤。

说明书全文

将多行展示的乐谱数据处理为播放数据的方法及计算机程序

技术领域

[0001] 本发明涉及音乐教学软件领域,尤其涉及一种将多行展示的乐谱数据处理为播放数据的方法及计算机程序。

背景技术

[0002] 传统教学模式下的音乐教学主要通过教师现场演示实现,不仅对于教师的素质要求较高,而且学生们往往缺乏实践学习的参与。而在信息技术的融合之下,市场上出现了一些具有交互功能的音乐教学软件和智能设备,让学生们更多地参与到音乐学习中,感受到不同的学习体验。
[0003] 现有用于音乐教学的交互智能设备中通常乐谱显示数据播由乐谱的播放数据生成。当乐谱显示数据已生成,尤其是复调音乐涉及的结构复杂的复谱通常将一个单谱分成多行显示,需要将多行乐谱显示数据整合并转为可播放的数据。

发明内容

[0004] 基于以上技术问题,本发明的技术方案涉及以下三个方面,
[0005] 第一方面提出一种将多行展示的乐谱数据处理为播放数据的方法,包括以下步骤:
[0006] 获取乐谱数据;
[0007] 读取播放命令,所述播放命令包括播放的起点和终点信息;
[0008] 从所述起点至所述终点的区间内,遍历所述起点所标记的单谱的各行;
[0009] 遍历所述行内的各小节,记录每个所述小节在当前单谱中的序;
[0010] 遍历所述小节的各声部,计算每个所述声部中的音符在所述当前单谱中的序并将每个所述声部中的音符的数据按序保存在所述当前播放数据中;
[0011] 若所述当前音符和其上一个音符不在同一个复谱里,从头开始记录所述当前音符的序;
[0012] 若所述当前声部中存在符号,按照所述符号将其对应的音符的播放数据处理为带有所述符号状态的音符。
[0013] 第二方面,本发明提出一种计算机程序产品,包括程序和/或指令,该程序和/或指令被处理器执行时实现本发明的方法中的步骤。
[0014] 第三方面,本发明提出一种基于交互式窗口的音乐教学系统,该系统被运行时实现本发明的方法中的步骤。
[0015] 本发明可以实现将复调音乐涉及的结构复杂的分成多行显示的复谱的显示数据整合并转为可播放的数据。附图说明
[0016] 图1、一些实施方式中的方法的流程图

具体实施方式

[0017] 一些实施方式涉及的方法流程如图1,包括以下步骤:
[0018] 获取乐谱数据;
[0019] 读取播放命令,播放命令包括播放的起点和终点信息;
[0020] 从起点至终点的区间内,
[0021] 遍历起点所标记的单谱的各行:
[0022] 遍历行内的各小节:记录每个小节在当前单谱中的序;
[0023] 遍历小节的各声部:
[0024] 计算每个声部中的音符在当前单谱中的序并将每个声部中的音符的数据按序保存在当前播放数据中;
[0025] 若当前音符和其上一个音符不在同一个复谱里,从头开始记录当前音符的序;
[0026] 若当前声部中存在符号,按照符号将其对应的音符的播放数据处理为带有符号状态的音符。
[0027] 其中,术语“乐谱数据”包括全局乐谱数据和/或其中的一部分乐谱数据,该数据的表现形式包括(但不限于)五线谱和简谱。该“乐谱数据”包括XML格式或JSON格式的对象。优选地,该数据保存为JSON格式,该JSON对象包括全局乐谱类,每个全局乐谱类的数据中包括若干个复谱表类的数据组成的数组,每个复谱表类数据中包括若干个单谱表类的数据组成的数组,每个单谱表类数据中包括若干小节数据组成的数组,其中:有一些小节类数据包括若干声部,有一些小节类数据包括与小节对应的副旋律数据。以下是对一部分JSON数据的字段的具体描述的举例:
[0028]
[0029] 乐谱XML文件已经被业界广泛的使用,乐谱JSON文件才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是乐谱XML文件让位于乐谱JSON文件。乐谱JSON文件相对乐谱XML文件,数据的体积小。乐谱JSON文件与JavaScript的交互更加方便,读取和查找速度要远远快于乐谱XML文件。
[0030] 需要说明的是,播放命令还包括的信息:播放时间数据,循环次数数据,开始播放的行下标,开始播放的行里开始的小节下标,开始播放的行里开始的小节里的开始音符下标,开始播放的段落,结束播放的行下标,结束播放的行里开始的小节下标,结束播放的行里开始的小节里的开始音符下标,结束播放的段落。如果播放命令中没有出现开始播放的起点信息,则从全局乐谱数据的起点作为播放起点;如果播放命令中没有出现结束播放的终点信息,则从全局乐谱数据的终点作为播放终点。
[0031] 在遍历复谱的各个单谱的步骤需要先查询最大的单行并记录其长度,然后将遍历的次数按照该数值设置,以确保每一个单谱表都可以查询并且设置到播放数据内。
[0032] 一些实施方式中,符号包括八度号,踏板号,强弱记号中的一种或几种。
[0033] 一些实施方式中,音符的播放数据包括时值数据和强弱数据中的一种或两种。
[0034] 一些实施方式还包括:若当前小节中无拍号数据,依次查找当前小节之前的若干个小节的拍号数据,将获取的第一个拍号数据作为当前小节的拍号数据。因为小节的拍号所管辖的区间是连续的,依次向前查询可以获取拍号。
[0035] 一些更具体的实施方式还包括一种处理八度号的方法,具体包括以下步骤:
[0036] 计算八度号结束时间点,结束时间点等于八度号出现时间点加八度号对应的音符的时值;
[0037] 记录八度号结束的小节在当前单谱中的序。
[0038] 一些更具体的实施方式还包括一种处理踏板号的方法,处理踏板号的方法包括以下步骤:
[0039] 记录踏板号开始位置对应的音符在当前单谱中的序;
[0040] 记录踏板号结束位置对应的音符在当前单谱中的序;
[0041] 将所有踏板号按照序记录为踏板号数组。
[0042] 需要说明的是,八度的详细信息都是存在一个八度的对象里,对象里分了当前的八度类型,比如高八度低八度等,字段是八度里的type字段,里面是一个枚举,0高八度,1表示低八度等。
[0043] 一些更具体的实施方式还包括一种处理强弱号的方法,处理强弱号的方法包括以下步骤:将所有强弱号按照其对应的音符在所述当前单谱中的序记录为强弱号数组。
[0044] 一些更具体的实施方式还包括处理琶音的方法,所述处理琶音的方法包括以下步骤:
[0045] 将所述琶音的和弦音个数;
[0046] 将所述和弦音按照所述琶音对应的音符的升降方向排序;
[0047] 计算每个所述和弦音的时值,所述每个和弦音的时值为该音符的时值减去所述和弦音的补偿值,所述和弦音的补偿值按式I计算:
[0048]
[0049] 其中,Offset为补偿值,i为所述和弦音在所述琶音中的序,Duration为一个音符的时值; 为求两的者最小值。
[0050] 乐谱数据展示的时候,分为复谱表和单谱表,每个复谱表中有多个单谱表,每个单谱表多行展示;谱子内可能带有反复号,DS、DC等符号,将某一个段落反复播放;谱子内还有房子符号,在多段播放的时候某一段只播放某一个小节,其他的小节不播放,在播放另一段的时候再播放另一个小节。
[0051] 一些更具体的实施方式涉及的将多行展示的乐谱数据处理为播放数据的方法采用包括以下C#程序设计语言实现:
[0052]
[0053]
[0054] 一些实施方式将本发明应用于一种多功能数字音乐教学系统,该系统还可以实现:一种对复谱的拉伸显示方法;根据乐谱中音符的位置绘制连音线。
[0055] 其中,复谱的拉伸显示方法包括以下步骤:
[0056] 获取乐谱数据和拉伸指令,乐谱数据包括复谱表;
[0057] 遍历复谱表中的所有单谱表,对于当前单谱表:
[0058] 获取当前单谱表的每个小节的初始宽度;
[0059] 将拉伸指令中的宽度变量按照每个小节内容纳的音符个数平均分配后,取其与音符的原占位宽度的比值得到当前单谱表的线性拉伸比例;
[0060] 遍历当前单谱表中的所有小节,对于当前小节:
[0061] 将当前小节的原宽度以线性拉伸比例修改并加上个小节的终点坐标,得到当前小节拉伸后的终点坐标;
[0062] 重新分配每个小节内的符号的坐标;
[0063] 将拉伸后的单谱表的每个小节和其中的符号显示在交互式窗口上。
[0064] 最终得到的播放数据将多行的展示数据整理成一个JSON播放数据的数组对象来进行循环处理。多功能数字音乐教学系统的曲谱播放单元用于在谱曲播放时解析谱子数据,调用JSON播放数据,循环最外层的谱表行数据,再循环每行中的复谱表数据、小节数据,从小节数据中循环音符数据,通过音符的音高数据、当前谱子的调号、当前用户选择的调号获得当前音符的MIDI值,通过MIDIApi(优选windows midi api)播放当前音符。以下是一部分JSON播放数据具体样例:例1:
[0065]
[0066]
[0067] 例2:
[0068]
[0069]
[0070] 其中,“lianYinObject:(...)”为连音线;“duration:(...)”为音符的时值长度;八度记号,踏板记号,强弱记号都是单独的数组存储,分别为baDu,qiangRuo,taBan。
[0071] 本发明的技术方案实现了将分行显示的乐谱展示数据整理为乐谱播放数据。
[0072] 本说明书中描述的主题的实施方式可以被实施为一个或多个计算机程序,即,一个或多个有形非暂时性程序载体上编码的计算机程序指令的一个或多个模,用以被数据处理设备执行或者控制数据处理设备的操作。计算机程序(还可以被称为或者描述为程序、软件、软件应用、模块、软件模块、脚本或者代码)可以以任意形式的编程语言而被写出,包括编译语言或者解释语言或者声明性语言或过程式语言,并且计算机程序可以以任意形式展开,包括作为独立程序或者作为模块、组件、子程序或者适于在计算环境中使用的其他单元。计算机程序可以但不必须对应于文件系统中的文件。程序可以被存储在保存其他程序或者数据的文件的一部分中,例如,存储在如下中的一个或多个脚本:在标记语言文档中;在专用于相关程序的单个文件中;或者在多个协同文件中,例如,存储一个或多个模块、子程序或者代码部分的文件。计算机程序可以被展开为执行在一个计算机或者多个计算机上,计算机位于一处,或者分布至多个场所并且通过通信网络而互相连接。
[0073] 在本说明书中描述的处理和逻辑流程可以由一个或多个可编程计算机执行,该计算机通过运算输入数据并且生成输出而执行一个或多个的计算机程序,以运行函数。处理和逻辑流程还可以由专用逻辑电路,例如,FPGA(可现场编程阵列)或者ASIC(专用集成电路)执行,并且设备也可以被实施为专用逻辑电路
[0074] 适于实行计算机程序的计算机包括并且示例性地可以基于通用微处理器或者专用微处理器或者上述处理器两者,或者任意其他种类的中央处理单元。通常地,中央处理单元将接收来自只读存储器或者随机存取存储器或者这两者的指令和数据。计算机的主要元件是用于运行或者执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器装置。通常地,计算机还将包括或者是可操作性地耦合,以从用于存储数据的一个或多个大容量存储装置接收数据或者传递数据到大容量存储装置,或者接收和传递两者,该大容量存储器例如为磁盘、磁光盘或者光盘。适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失存储器、介质和存储器装置。
[0075] 为了发送与用户的交互,本说明书中描述的主题的实施方式可以被实施在计算机上,该计算机具有:显示装置,例如,CRT(阴极射线管)或者LCD(液晶显示器)监控器,用于向用户显示信息;以及键盘和例如鼠标或者追踪球这样的定位装置,用户利用它们可以将输入发送到计算机。其他种类的装置也可以用于发送与用户的交互;例如,提供给用户的反馈可以是任意形式的传感反馈,例如,视觉反馈、听觉反馈或者触觉反馈;以及来自用户的输入可以以任意形式接收到,包括声响输入、语音输入或者触觉输入。
[0076] 本说明书中描述的主题的实施方式可以在计算系统中实施,该计算系统包括例如数据服务器这样的后端组件,或者包括例如应用服务器这样的中间组件,或者包括例如客户端计算机这样的前端组件,该客户端计算机具有图形用户界面或者网络浏览器,用户可以通过图形用户界面或者网络浏览器而与本说明书中描述的主题的实施进行交互,或者该计算机系统包括一个或多个这种后端组件、中间组件或者前端组件的任意组合。系统中的组件可以通过例如通信网络的任意形式或介质的数字数据通信而互相连接。通信网络的实例包括局域网络(“LAN”)和广域网络(“WAN”),例如,因特网。该计算机系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络而交互。客户端与服务器之间的关系利用在各自的计算机上运行并且具有彼此之间的客户端‑服务器关系的计算机程序而产生。
[0077] 虽然本说明书包含很多具体的实施细节,但是这些不应当被解释为对任何发明的范围或者对可以要求保护的内容的范围的限制,而是作为可以使特定发明的特定实施方式具体化的特征的说明。在独立的实施方式的语境中的本说明书中描述的特定特征还可以与单个实施方式组合地实施。相反地,在单个实施方式的语境中描述的各种特征还可以独立地在多个实施方式中实施,或者在任何合适的子组合中实施。此外,虽然以上可以将特征描述为组合作用并且甚至最初这样要求,但是来自要求的组合的一个或多个特征在一些情况下可以从该组合去掉,并且要求的组合可以转向子组合或者子组合的变形
QQ群二维码
意见反馈