一种简谱显示方法及系统与流程

1.本发明涉及数据处理技术领域,具体涉及一种简谱显示方法及系统。
背景技术:
2.目前通常是将musicxml格式文件导入软件来展示曲谱并且软件也支持曲谱的修改;但是,音乐制谱人会因灵感涌现而随时随地手写或通过电脑软件制作简谱图片,现有软件不支持导入简谱图片进行展示,因此如何将简谱图片转换成电子文档简谱进行展示,是目前亟需待解决的问题。
技术实现要素:
3.有鉴于此,本发明实施例提供一种简谱显示方法及系统,以将简谱图片转换成电子文档简谱进行展示。
4.为实现上述目的,本发明实施例提供如下技术方案:
5.本发明实施例第一方面公开一种简谱显示方法,所述方法包括:
6.识别待处理的简谱图片中的音符和其它指定信息,所述其它指定信息至少包含以下任意一项或多项:标题、调式、拍号、拍速、作者信息;
7.将所述音符和所述其它指定信息转换为自定义编码;
8.根据所述自定义编码生成musicxml格式文件;
9.解析所述musicxml格式文件以计算所述音符和所述其它指定信息在指定画布中的显示位置;
10.根据所述音符和所述其它指定信息在所述指定画布中的显示位置,在所述指定画布中绘制所述音符和所述其它指定信息以展示所述简谱图片对应的简谱。
11.优选的,解析所述musicxml格式文件以计算所述音符和所述其它指定信息在指定画布中的显示位置,包括:
12.将所述musicxml格式文件解析成scorepartwise类对象;
13.解析所述scorepartwise类对象以提取所述其它指定信息和所述音符;
14.计算所述其它指定信息在指定画布中的显示位置,所述其它指定信息在指定画布中的显示位置至少包含:所述其它指定信息的高度;
15.计算每个所述音符在所述指定画布中的显示位置。
16.优选的,计算每个所述音符在所述指定画布中的显示位置,包括:
17.根据预设音符宽度和最大的行音符数,计算所述指定画布的宽度,其中,所述预设音符宽度基于显示所述指定画布的智能设备的屏幕宽度确定得到,所述最大的行音符数为所述简谱图片对应的简谱中音符数量最多的行中的音符数;
18.通过所述指定画布的宽度和所述简谱的每一行中音符高度的最大值,计算每个所述音符在所述指定画布中的显示位置。
19.优选的,通过所述指定画布的宽度和所述简谱的每一行中音符高度的最大值,计
算每个所述音符在所述指定画布中的显示位置,包括:
20.通过所述指定画布的宽度和所述简谱的每一行中音符高度的最大值,计算所述简谱的每一行中最后一个所述音符在所述指定画布中的显示位置;
21.通过所述指定画布的宽度计算剩余宽度,并基于所述剩余宽度计算除所述简谱的每一行中最后一个所述音符以外的其它所述音符的宽度;
22.基于计算得到的其它所述音符的宽度,结合所述简谱的每一行中音符高度的最大值,计算其它所述音符在所述指定画布中的显示位置。
23.优选的,在所述指定画布中绘制所述音符和所述其它指定信息以展示所述简谱图片对应的简谱之后,所述方法还包括:
24.响应于用户在显示所述指定画布的智能设备中所触发的缩放指令,对所展示的所述简谱图片对应的简谱进行放大或缩小。
25.本发明实施例第二方面公开一种简谱显示系统,所述系统包括:
26.识别单元,用于识别待处理的简谱图片中的音符和其它指定信息,所述其它指定信息至少包含以下任意一项或多项:标题、调式、拍号、拍速、作者信息;
27.转换单元,用于将所述音符和所述其它指定信息转换为自定义编码;
28.生成单元,用于根据所述自定义编码生成musicxml格式文件;
29.解析单元,用于解析所述musicxml格式文件以计算所述音符和所述其它指定信息在指定画布中的显示位置;
30.绘制单元,用于根据所述音符和所述其它指定信息在所述指定画布中的显示位置,在所述指定画布中绘制所述音符和所述其它指定信息以展示所述简谱图片对应的简谱。
31.优选的,所述解析单元包括:
32.第一解析模块,用于将所述musicxml格式文件解析成scorepartwise类对象;
33.第二解析模块,用于解析所述scorepartwise类对象以提取所述其它指定信息和所述音符;
34.第一计算模块,用于计算所述其它指定信息在指定画布中的显示位置,所述其它指定信息在指定画布中的显示位置至少包含:所述其它指定信息的高度;
35.第二计算模块,用于计算每个所述音符在所述指定画布中的显示位置。
36.优选的,所述第二计算模块包括:
37.第一计算子模块,用于根据预设音符宽度和最大的行音符数,计算所述指定画布的宽度,其中,所述预设音符宽度基于显示所述指定画布的智能设备的屏幕宽度确定得到,所述最大的行音符数为所述简谱图片对应的简谱中音符数量最多的行中的音符数;
38.第二计算子模块,用于通过所述指定画布的宽度和所述简谱的每一行中音符高度的最大值,计算每个所述音符在所述指定画布中的显示位置。
39.优选的,所述第二计算子模块具体用于:通过所述指定画布的宽度和所述简谱的每一行中音符高度的最大值,计算所述简谱的每一行中最后一个所述音符在所述指定画布中的显示位置;
40.通过所述指定画布的宽度计算剩余宽度,并基于所述剩余宽度计算除所述简谱的每一行中最后一个所述音符以外的其它所述音符的宽度;
41.基于计算得到的其它所述音符的宽度,结合所述简谱的每一行中音符高度的最大值,计算其它所述音符在所述指定画布中的显示位置。
42.优选的,所述系统还包括:
43.缩放单元,用于响应于用户在显示所述指定画布的智能设备中所触发的缩放指令,对所展示的所述简谱图片对应的简谱进行放大或缩小。
44.基于上述本发明实施例提供的一种简谱显示方法及系统,该方法为:识别待处理的简谱图片中的音符和其它指定信息;将音符和其它指定信息转换为自定义编码;根据自定义编码生成musicxml格式文件;解析musicxml格式文件以计算音符和其它指定信息在指定画布中的显示位置;根据音符和其它指定信息在指定画布中的显示位置,在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱。本方案中,从简谱图片中识别音符和其它指定信息,并将音符和其它指定信息转换为自定义编码。根据自定义编码生成musicxml格式文件,解析musicxml格式文件以计算音符和其它指定信息在指定画布中的显示位置。根据计算得到的显示位置在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱,从而实现将简谱图片转换成电子文档简谱进行展示。
附图说明
45.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
46.图1为本发明实施例提供的一种简谱显示方法的流程图;
47.图2为本发明实施例提供的简谱图片的部分内容示例图;
48.图3为本发明实施例提供的musicxml格式文件部分内容的第一示例图;
49.图4为本发明实施例提供的musicxml格式文件部分内容的第二示例图;
50.图5为本发明实施例提供的musicxml格式文件部分内容的第三示例图;
51.图6为本发明实施例提供的musicxml格式文件部分内容的第四示例图;
52.图7为本发明实施例提供的musicxml格式文件部分内容的第五示例图;
53.图8为本发明实施例提供的musicxml格式文件部分内容的第六示例图;
54.图9为本发明实施例提供的计算音符和其它指定信息在指定画布中的显示位置的流程图;
55.图10为本发明实施例提供的一种简谱显示系统的结构框图。
具体实施方式
56.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
57.在本技术中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有
明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
58.由背景技术可知,目前通常是将musicxml格式文件导入软件来展示曲谱并且软件也支持曲谱的修改;但是,音乐制谱人会因灵感涌现而随时随地手写或通过电脑软件制作简谱图片,现有软件并不支持导入简谱图片进行展示。
59.因此,本发明实施例提供一种简谱显示方法及系统,从简谱图片中识别音符和其它指定信息,并将音符和其它指定信息转换为自定义编码。根据自定义编码生成musicxml格式文件,解析musicxml格式文件以计算音符和其它指定信息在指定画布中的显示位置。根据计算得到的显示位置在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱,从而实现将简谱图片转换成电子文档简谱进行展示。
60.参见图1,示出了本发明实施例提供的一种简谱显示方法的流程图,该简谱显示方法包括:
61.步骤s101:识别待处理的简谱图片中的音符和其它指定信息。
62.需要说明的是,其它指定信息至少包含以下任意一项或多项:简谱图片对应的简谱(曲谱)的标题、调式、拍号、拍速、作者信息(词曲作者信息)等。
63.在具体实现步骤s101的过程中,获取待处理的简谱图片,该简谱图片中至少包含了音符和其它指定信息,例如图2示出的简谱图片的部分内容示例图,图2示出的简谱图片的部分内容中至少包含了音符;从所获取的简谱图片中识别出音符和其它指定信息。
64.步骤s102:将音符和其它指定信息转换为自定义编码。
65.在具体实现步骤s102的过程中,从简谱图片中识别出音符和其它指定信息后,将所识别出的音符和其它指定信息转换为自定义编码;
66.需要说明的是,在将音符转换成自定义编码的过程中,先确定基本音符的编码,然后围绕基本音符的上下左右四个方位符号确定其附属编码,前述所确定的编码最终形成了一个音符编码表。
67.例如:从图2示出的简谱图片中识别出音符后,将所识别的音符转换成如下自定义编码:1_{$dot}2^{$dot}3_{$dot$dot}4^{$dot$dot}|。
68.步骤s103:根据自定义编码生成musicxml格式文件。
69.在具体实现步骤s103的过程中,将音符和其它指定信息转换为自定义编码之后,根据该自定义编码生成musicxml格式文件;具体来说,根据自定义编码与musicxml的对应关系,生成musicxml格式文件。
70.例如图3和图4为所生成的musicxml格式文件的部分内容;以下分别对图3和图4中示出的musicxml格式文件中的主要标签进行解释说明。
71.《?xml version="1.0"encoding="utf-8"?》:指示这是一个xml文档,图3和图4示出的内容使用的是utf-8编码。
72.《!doctype score-partwise public"-//recordare//dtd musicxml 3.1partwise//en""http://www.musicxml.org/dtds/partwise.dtd"》:定义了文档类型(document type definition),指明了xml文档所使用的标记和结构。
73.《score-partwise》:根元素,表示整个乐谱。
74.《part》:表示乐谱中的一个部分,比如一种乐器的声部。
75.《measure》:表示乐谱中的一个小节。
76.《attributes》:定义小节的属性,如调性、拍号等。
77.《divisions》:表示一个音符的时值分割,这里的值是6,表示一个音符的时值等于六分之一拍。
78.《key》:定义小节的调性。
79.《fifths》:在调性中表示升降号的数量,这里的值是0,表示没有升降号。
80.《time》:定义小节的拍号。
81.《beats》:表示每小节的拍数,这里是4,表示每小节有四拍。
82.《beat-type》:表示每拍的时值,这里是4,表示每拍的时值是四分之一拍。
83.《note》:表示一个音符。
84.《pitch》:定义音符的音高。
85.《step》:表示音符的音名,这里是c、d、e、f。
86.《octave》:表示音符的八度,这里是3、5、2、6。
87.《duration》:表示音符的时值,这里是6,意味着时值为六分之一拍。
88.《type》:表示音符的类型,这里是quarter,表示四分音符。
89.《beam/》:表示音符的连音线。
90.《barline》:表示小节线。
91.《bar-style》:表示小节线的样式,这里是regular,表示常规小节线。
92.图3和图4中的编码语法为:减时线为主,其它符号围绕其展开,在其上下左右周围,连音符以“$lyh”开始以“$lyt”结束。当没有减时线时,以逆时针从下到左的顺序编码。上记为“^”,下记为“_”,左记为“《”,右记为“》”。
93.例如:$dl{35^{$dot}}代表音符3和5下边有减时线,并且音符5上边有高音。3_{$dot}^{$lyh}代表音符3有低音,并且音符3有连音线的开始标记。
94.为更好解释说明自定义编码与标签的对应关系,通过以下内容进行举例说明。
95.设自定义编码为:1_{$dot}2^{$dot}3_{$dot$dot}4|。该自定义编码的含义为:数字1下边有一个低音;数字2上边有一个高音;数字3下边有2个低音;数字4既没有高音也没有低音;最后是一个小节线符号。
[0096]“数字1下边有一个低音”在musicxml格式文件中的表示如图5示出的内容所示。
[0097]
图5中,step标签的值c代表数字1,需要说明的是,在musicxml格式文件中,1对应c、2对应d、3对应e、4对应f、5对应g、6对应a、7对应b。
[0098]
octave标签的值为3,其表示数字下边有个一个低音,在musicxml格式文件中,《octave》代表音符的八度取值范围:[0-9];其中4表示正常音,[0-3]表示低音0为最低的音,[5-9]表示高音9为最高的音。
[0099]
duration标签代表演奏时长,其与《type》和《per-minute》标签相关联,duration和per_minute之间的关系为:duration=(60/per_minute)
×
(时值单位的倒数)。
[0100]
其中,60是每分钟的秒数,per_minute是每分钟的拍子数,时值单位的倒数是表示音符时值的倒数(例如,四分音符的时值单位是4,其倒数为1/4)。用于表示duration和per_minute之间的关系的公式,可以用来计算在给定的per_minute值下不同时值单位的音符应
该持续多长时间。例如,如果per_minute值为120bpm,对于四分音符(时值单位为4),可以计算得到:duration=(60/120)x(1/4)=0.5秒,这意味着在每分钟120拍的速度下一个四分音符应该持续0.5秒。
[0101]
type标签代表音符时值类型,在musicxml格式文件中常见的几种音符类型如下内容。
[0102]
whole(全音符):音符占据整个小节的时间。half(二分音符):音符的时长是全音符的一半。quarter(四分音符):音符的时长是全音符的四分之一,也是大部分乐谱中最常见的时值单位。eighth(八分音符):音符的时长是全音符的八分之一。16th(十六分音符):音符的时长是全音符的十六分之一。
[0103]“数字2上边有一个高音”在musicxml格式文件中的表示如图6示出的内容所示。
[0104]
图6中,step标签的值d代表数字2;octave标签的值为5,表示数字上边有一个高音;type标签的值为quarter,表示四分音符;
[0105]“数字3下边有2个低音”在musicxml格式文件中的表示如图7示出的内容所示。
[0106]
图7中,step标签的值e代表数字3;octave标签的值为2,表示数字下边有两个低音;type标签的值为quarter,表示四分音符。
[0107]
如果数字4上边有两个高音,那么“数字4上边有2个高音”在musicxml格式文件中的表示如图8示出的内容所示。
[0108]
图8中,step标签的值f代表数字4;octave标签的值为6,表示数字上边有两个高音;type标签的值为quarter,表示四分音符。
[0109]
步骤s104:解析musicxml格式文件以计算音符和其它指定信息在指定画布中的显示位置。
[0110]
在具体实现步骤s104的过程中,解析musicxml格式文件,并根据解析内容计算音符和其它指定信息在指定画布中的显示位置。
[0111]
需要说明的是,由于音符的显示位置是在标题、调式、拍号、拍速、作者信息等信息的下方位置,因此在计算音符在指定画布中的显示位置之前,需要先计算其它指定信息在指定画布中的显示位置。
[0112]
步骤s105:根据音符和其它指定信息在指定画布中的显示位置,在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱。
[0113]
在具体实现步骤s105的过程中,计算得到简谱图片对应的简谱中各个音符和其它指定信息在指定画布中的显示位置之后,根据各个音符和其它指定信息在指定画布中的显示位置,在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱。
[0114]
可以理解的是,一个音符存在力度强弱、音的高低、连音、跳房子、装饰音等音符符号;故在指定画布中绘制音符时,绘制的顺序依序为:力度渐强渐弱、跳房子、连音线、力度符号、装饰音、小节线上边的特殊符号、强音、倚音、音符数字、减时线、弱音、歌词。
[0115]
一些实施例中,指定画布可以是canvas画布;在canvas画布中绘制音符和其它指定信息时,可以调用canvas特定的api来进行绘制。音符的绘制顺序详见上述内容。
[0116]
指定画布显示在智能设备(如智能手机)中,由于诸如canvas画布等指定画布的宽度通常超过了该智能设备的屏幕宽度,因此在该智能设备的显示界面预览指定画布(已绘制简谱)时会导致显示不全;为解决前述问题,一些实施例中,响应于用户在显示指定画布
的智能设备中所触发的缩放指令,对所展示的简谱图片对应的简谱进行放大或缩小。
[0117]
例如:若智能设备为android手机,通过android.graphics.matrix类来实现对指定画布中所绘制的简谱进行放大或缩小。
[0118]
在本发明实施例中,从简谱图片中识别音符和其它指定信息,并将音符和其它指定信息转换为自定义编码。根据自定义编码生成musicxml格式文件,解析musicxml格式文件以计算音符和其它指定信息在指定画布中的显示位置。根据计算得到的显示位置在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱,从而实现将简谱图片转换成电子文档简谱进行展示。
[0119]
应用本方案,可以将音乐制谱人手写或通过电脑软件制作的简谱图片转换成手机版(仅举例)的电子档简谱以方便携带和展示,同时也能导出musicxml格式文件。
[0120]
上述本发明实施例图1步骤s104中涉及的计算音符和其它指定信息在指定画布中的显示位置,参见图9,示出了本发明实施例提供的计算音符和其它指定信息在指定画布中的显示位置的流程图,包括以下步骤:
[0121]
步骤s901:将musicxml格式文件解析成scorepartwise类对象。
[0122]
在具体实现步骤s901的过程中,根据自定义编码生成musicxml格式文件之后,通过xml解析器将该musicxml格式文件解析成scorepartwise类对象。
[0123]
步骤s902:解析scorepartwise类对象以提取其它指定信息和音符。
[0124]
在具体实现步骤s902的过程中,解析scorepartwise类对象以提取其它指定信息和音符;具体来说,解析scorepartwise类对象,从而提取得到简谱图片对应的简谱中的标题、调式、拍号、拍速、作者信息中任意一项或多项,以及提取得到简谱图片对应的简谱中的音符列表,该音符列表包含音符。
[0125]
例如:解析scorepartwise类对象,从而提取得到标题、调式、拍号、拍速、作者信息、音符列表。
[0126]
步骤s903:计算其它指定信息在指定画布中的显示位置。
[0127]
需要说明的是,其它指定信息在指定画布中的显示位置至少包含:其它指定信息的高度。
[0128]
在具体实现步骤s903的过程中,在计算每个音符在指定画布中的显示位置之前,先计算其它指定信息在指定画布中的显示位置。具体来说,至少先计算得到其它指定信息在指定画布中的高度。
[0129]
其它指定信息在指定画布中的高度的部分计算规则如下:
[0130]
标题的高度=标题文字的高度;标题左下方的高度=拍号文字高度+拍速文字高度;标题右下方的高度=作词文字高度+作曲文字高度+演奏者高度。
[0131]
标题下方的高度=标题左下方的高度或标题右下方的高度,具体来说,如果标题左下方的高度》标题右下方的高度,则标题下方的高度=标题左下方的高度;否则标题下方的高度=标题右下方的高度。
[0132]
总高度=标题的高度+标题下方的高度。
[0133]
步骤s904:计算每个音符在指定画布中的显示位置。
[0134]
需要说明的是,简谱图片对应的简谱中的行数,可以通过自定义编码中的“music_notes”这个参数确定得到;简谱的每行中的音符内容取决于“music_notes”这个参数的每
一条数据内容。
[0135]
在具体实现步骤s904的过程中,由于简谱展示时会以每行的形式进行展示,对于简谱图片对应的简谱,比较该简谱中每一行的音符数,确定音符数量最多的行,进而确定音符数量最多的行中的音符数;音符数量最多的行中的音符数称为“最大的行音符数”。即最大的行音符数为简谱图片对应的简谱中音符数量最多的行中的音符数。
[0136]
基于显示指定画布的智能设备的屏幕宽度,确定预设音符宽度(每个音符的预设宽度);即预设音符宽度基于显示指定画布的智能设备的屏幕宽度确定得到。例如:假设简谱的每行最多展示20个音符(仅举例,实际情况中每行的音符会超过20个),则预设音符宽度=手机屏幕的宽度/20。
[0137]
根据预设音符宽度和最大的行音符数,计算指定画布的宽度(如canvas的画布宽度);具体来说,指定画布的宽度=预设音符宽度*最大的行音符数。
[0138]
一些实施例中,指定画布的高度可以通过简谱图片对应的简谱的每一行中音符高度的最大值(即每一行的最大的音符高度)计算得到。
[0139]
具体来说,指定画布的高度=第1行中音符高度的最大值+第2行中音符高度的最大值+
…
+第n行中音符高度的最大值。
[0140]
需要说明的是,某一行中音符高度的最大值即为该行中最大的音符高度。
[0141]
音符高度=力度渐强渐弱高度+跳房子高度+连音线高度+力度符号高度+装饰音高度+小节线上边的特殊符号高度+强音高度+倚音高度+音符数字高度+减时线高度+弱音高度+歌词高度。
[0142]
需要说明的是,上述计算音符高度的顺序与上述步骤s105中提及的音符的绘制顺序一致。
[0143]
通过指定画布的宽度和简谱的每一行中音符高度的最大值,计算每个音符在指定画布中的显示位置,具体计算方式如下:
[0144]
为了让简谱预览时每一行的最后一个小节线对齐显示(最后一个小节线垂直方向对齐),先通过指定画布的宽度和简谱的每一行中音符高度的最大值,计算简谱的每一行中最后一个音符在指定画布中的显示位置,最后一个音符在指定画布中的显示位置由x坐标和y坐标构成。
[0145]
具体来说,通过公式(1)和公式(2)计算简谱的每一行中最后一个音符在指定画布中的x坐标和y坐标。
[0146]
xn=指定画布的宽度-a(1)
[0147]yn
=y
n-1
+第n-1行中音符高度的最大值(2)
[0148]
在公式(1)和公式(2)中,xn为第n行中最后一个音符在指定画布中的x坐标,a为最后一个小节线的宽度,a可以设置为100(仅举例)。yn为第n行中最后一个音符在指定画布中的y坐标,y
n-1
为第n-1行(也就是第n行的上一行)中最后一个音符在指定画布中的y坐标;“第n-1行中音符高度的最大值”表示第n-1行的音符高度,通常取每一行中音符高度的最大值作为该行的音符高度。
[0149]
例如:第2行中最后一个音符的y坐标=第1行中最后一个音符的y坐标+第1行的音符高度,需要说明的是,第1行中最后一个音符在指定画布中的y坐标为0。
[0150]
又例如:第3行中最后一个音符的y坐标=第2行中最后一个音符的y坐标+第2行的
音符高度。
[0151]
计算每一行中最后一个音符在指定画布中的显示位置之后,通过指定画布的宽度计算剩余宽度,并基于剩余宽度计算除简谱的每一行中最后一个音符以外的其它音符的宽度,此处的其它音符即为除最后一个音符以外的音符。
[0152]
具体来说,通过公式(3)计算剩余宽度,通过公式(4)计算每一行中最后一个音符以外的其它音符的宽度。
[0153]
剩余宽度=指定画布的宽度-a(3)
[0154]kn
=剩余宽度/(第n行的音符数-1)(4)
[0155]
在公式(3)和公式(4)中,a为最后一个小节线的宽度,a可以设置为100(仅举例);kn为第n行中其它音符的宽度。
[0156]
基于计算得到的其它音符的宽度,结合简谱的每一行中音符高度的最大值,计算其它音符在指定画布中的显示位置。具体来说,通过公式(5)计算其它音符在指定画布中的x坐标,通过公式(6)计算其它音符在指定画布中的y坐标。
[0157]
x
n,m
=x
n,m-1
+kn(5)
[0158]yn
=y
n-1
+第n-1行的音符高度(6)
[0159]
在公式(5)中,x
n,m
为第n行第m个其它音符的x坐标,x
n,m-1
为第n行第m-1个其它音符的x坐标,其中,第m-1个其它音符相当于第m个其它音符的上一个音符(或者说前一个音符);yn为第n行其它音符的y坐标,y
n-1
为第n-1行其它音符的y坐标。
[0160]
通过上述内容,即可计算得到简谱的其它指定信息在指定画布中的显示位置,以及计算得到简谱的每一行中各个音符在指定画布中的显示位置。根据计算得到的显示位置在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱,从而实现将简谱图片转换成电子文档简谱进行展示。
[0161]
与上述本发明实施例提供的一种简谱显示方法相对应,参见图10,本发明实施例还提供了一种简谱显示系统的结构框图,该简谱显示系统包括:识别单元100、转换单元200、生成单元300、解析单元400、绘制单元500;
[0162]
识别单元100,用于识别待处理的简谱图片中的音符和其它指定信息,其它指定信息至少包含以下任意一项或多项:标题、调式、拍号、拍速、作者信息。
[0163]
转换单元200,用于将音符和其它指定信息转换为自定义编码。
[0164]
生成单元300,用于根据自定义编码生成musicxml格式文件。
[0165]
解析单元400,用于解析musicxml格式文件以计算音符和其它指定信息在指定画布中的显示位置。
[0166]
绘制单元500,用于根据音符和其它指定信息在指定画布中的显示位置,在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱。
[0167]
在本发明实施例中,从简谱图片中识别音符和其它指定信息,并将音符和其它指定信息转换为自定义编码。根据自定义编码生成musicxml格式文件,解析musicxml格式文件以计算音符和其它指定信息在指定画布中的显示位置。根据计算得到的显示位置在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱,从而实现将简谱图片转换成电子文档简谱进行展示。
[0168]
优选的,结合图10示出的内容,解析单元400包括第一解析模块、第二解析模块、第
一计算模块、第二计算模块;各个模块的执行原理如下:
[0169]
第一解析模块,用于将musicxml格式文件解析成scorepartwise类对象。
[0170]
第二解析模块,用于解析scorepartwise类对象以提取其它指定信息和音符。
[0171]
第一计算模块,用于计算其它指定信息在指定画布中的显示位置,其它指定信息在指定画布中的显示位置至少包含:其它指定信息的高度。
[0172]
第二计算模块,用于计算每个音符在指定画布中的显示位置。
[0173]
一些实施例中,第二计算模块包括第一计算子模块、第二计算子模块;各个子模块的执行原理如下:
[0174]
第一计算子模块,用于根据预设音符宽度和最大的行音符数,计算指定画布的宽度,其中,预设音符宽度基于显示指定画布的智能设备的屏幕宽度确定得到,最大的行音符数为简谱图片对应的简谱中音符数量最多的行中的音符数;
[0175]
第二计算子模块,用于通过指定画布的宽度和简谱的每一行中音符高度的最大值,计算每个音符在指定画布中的显示位置。
[0176]
具体实现中,第二计算子模块具体用于:通过指定画布的宽度和简谱的每一行中音符高度的最大值,计算简谱的每一行中最后一个音符在指定画布中的显示位置;通过指定画布的宽度计算剩余宽度,并基于剩余宽度计算除简谱的每一行中最后一个音符以外的其它音符的宽度;基于计算得到的其它音符的宽度,结合简谱的每一行中音符高度的最大值,计算其它音符在指定画布中的显示位置。
[0177]
优选的,结合图10示出的内容,该简谱显示系统还包括:
[0178]
缩放单元,用于响应于用户在显示指定画布的智能设备中所触发的缩放指令,对所展示的简谱图片对应的简谱进行放大或缩小。
[0179]
综上所述,本发明实施例提供一种简谱显示方法及系统,从简谱图片中识别音符和其它指定信息,并将音符和其它指定信息转换为自定义编码。根据自定义编码生成musicxml格式文件,解析musicxml格式文件以计算音符和其它指定信息在指定画布中的显示位置。根据计算得到的显示位置在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱,从而实现将简谱图片转换成电子文档简谱进行展示。
[0180]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0181]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应
认为超出本发明的范围。
[0182]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
技术特征:
1.一种简谱显示方法,其特征在于,所述方法包括:识别待处理的简谱图片中的音符和其它指定信息,所述其它指定信息至少包含以下任意一项或多项:标题、调式、拍号、拍速、作者信息;将所述音符和所述其它指定信息转换为自定义编码;根据所述自定义编码生成musicxml格式文件;解析所述musicxml格式文件以计算所述音符和所述其它指定信息在指定画布中的显示位置;根据所述音符和所述其它指定信息在所述指定画布中的显示位置,在所述指定画布中绘制所述音符和所述其它指定信息以展示所述简谱图片对应的简谱。2.根据权利要求1所述的方法,其特征在于,解析所述musicxml格式文件以计算所述音符和所述其它指定信息在指定画布中的显示位置,包括:将所述musicxml格式文件解析成scorepartwise类对象;解析所述scorepartwise类对象以提取所述其它指定信息和所述音符;计算所述其它指定信息在指定画布中的显示位置,所述其它指定信息在指定画布中的显示位置至少包含:所述其它指定信息的高度;计算每个所述音符在所述指定画布中的显示位置。3.根据权利要求2所述的方法,其特征在于,计算每个所述音符在所述指定画布中的显示位置,包括:根据预设音符宽度和最大的行音符数,计算所述指定画布的宽度,其中,所述预设音符宽度基于显示所述指定画布的智能设备的屏幕宽度确定得到,所述最大的行音符数为所述简谱图片对应的简谱中音符数量最多的行中的音符数;通过所述指定画布的宽度和所述简谱的每一行中音符高度的最大值,计算每个所述音符在所述指定画布中的显示位置。4.根据权利要求3所述的方法,其特征在于,通过所述指定画布的宽度和所述简谱的每一行中音符高度的最大值,计算每个所述音符在所述指定画布中的显示位置,包括:通过所述指定画布的宽度和所述简谱的每一行中音符高度的最大值,计算所述简谱的每一行中最后一个所述音符在所述指定画布中的显示位置;通过所述指定画布的宽度计算剩余宽度,并基于所述剩余宽度计算除所述简谱的每一行中最后一个所述音符以外的其它所述音符的宽度;基于计算得到的其它所述音符的宽度,结合所述简谱的每一行中音符高度的最大值,计算其它所述音符在所述指定画布中的显示位置。5.根据权利要求1-4中任一所述的方法,其特征在于,在所述指定画布中绘制所述音符和所述其它指定信息以展示所述简谱图片对应的简谱之后,所述方法还包括:响应于用户在显示所述指定画布的智能设备中所触发的缩放指令,对所展示的所述简谱图片对应的简谱进行放大或缩小。6.一种简谱显示系统,其特征在于,所述系统包括:识别单元,用于识别待处理的简谱图片中的音符和其它指定信息,所述其它指定信息至少包含以下任意一项或多项:标题、调式、拍号、拍速、作者信息;转换单元,用于将所述音符和所述其它指定信息转换为自定义编码;
生成单元,用于根据所述自定义编码生成musicxml格式文件;解析单元,用于解析所述musicxml格式文件以计算所述音符和所述其它指定信息在指定画布中的显示位置;绘制单元,用于根据所述音符和所述其它指定信息在所述指定画布中的显示位置,在所述指定画布中绘制所述音符和所述其它指定信息以展示所述简谱图片对应的简谱。7.根据权利要求6所述的系统,其特征在于,所述解析单元包括:第一解析模块,用于将所述musicxml格式文件解析成scorepartwise类对象;第二解析模块,用于解析所述scorepartwise类对象以提取所述其它指定信息和所述音符;第一计算模块,用于计算所述其它指定信息在指定画布中的显示位置,所述其它指定信息在指定画布中的显示位置至少包含:所述其它指定信息的高度;第二计算模块,用于计算每个所述音符在所述指定画布中的显示位置。8.根据权利要求7所述的系统,其特征在于,所述第二计算模块包括:第一计算子模块,用于根据预设音符宽度和最大的行音符数,计算所述指定画布的宽度,其中,所述预设音符宽度基于显示所述指定画布的智能设备的屏幕宽度确定得到,所述最大的行音符数为所述简谱图片对应的简谱中音符数量最多的行中的音符数;第二计算子模块,用于通过所述指定画布的宽度和所述简谱的每一行中音符高度的最大值,计算每个所述音符在所述指定画布中的显示位置。9.根据权利要求8所述的系统,其特征在于,所述第二计算子模块具体用于:通过所述指定画布的宽度和所述简谱的每一行中音符高度的最大值,计算所述简谱的每一行中最后一个所述音符在所述指定画布中的显示位置;通过所述指定画布的宽度计算剩余宽度,并基于所述剩余宽度计算除所述简谱的每一行中最后一个所述音符以外的其它所述音符的宽度;基于计算得到的其它所述音符的宽度,结合所述简谱的每一行中音符高度的最大值,计算其它所述音符在所述指定画布中的显示位置。10.根据权利要求6-9中任一所述的系统,其特征在于,所述系统还包括:缩放单元,用于响应于用户在显示所述指定画布的智能设备中所触发的缩放指令,对所展示的所述简谱图片对应的简谱进行放大或缩小。
技术总结
本发明提供了一种简谱显示方法及系统,该方法为:识别待处理的简谱图片中的音符和其它指定信息;将音符和其它指定信息转换为自定义编码;根据自定义编码生成MusicXML格式文件;解析MusicXML格式文件以计算音符和其它指定信息在指定画布中的显示位置;根据音符和其它指定信息在指定画布中的显示位置,在指定画布中绘制音符和其它指定信息以展示简谱图片对应的简谱,从而实现将简谱图片转换成电子文档简谱进行展示。简谱进行展示。简谱进行展示。
技术研发人员:杨康 石剑锋 石钊
受保护的技术使用者:武汉网幂科技有限公司
技术研发日:2023.06.16
技术公布日:2023/9/20
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/