CN116434725B - 一种嵌入式视听触同步呈现的音乐盲符转换系统 - Google Patents
一种嵌入式视听触同步呈现的音乐盲符转换系统 Download PDFInfo
- Publication number
- CN116434725B CN116434725B CN202310702701.9A CN202310702701A CN116434725B CN 116434725 B CN116434725 B CN 116434725B CN 202310702701 A CN202310702701 A CN 202310702701A CN 116434725 B CN116434725 B CN 116434725B
- Authority
- CN
- China
- Prior art keywords
- node
- braille
- note
- music
- chord
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 79
- 230000001360 synchronised effect Effects 0.000 title claims abstract description 16
- 230000000007 visual effect Effects 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 36
- 230000008569 process Effects 0.000 claims description 25
- 230000008859 change Effects 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 13
- 201000004569 Blindness Diseases 0.000 claims description 4
- 230000009191 jumping Effects 0.000 claims description 3
- 239000003550 marker Substances 0.000 claims description 2
- 230000001351 cycling effect Effects 0.000 claims 1
- 230000001771 impaired effect Effects 0.000 abstract description 15
- 230000006870 function Effects 0.000 abstract description 13
- 230000004888 barrier function Effects 0.000 abstract description 6
- 230000000694 effects Effects 0.000 abstract description 6
- 238000004364 calculation method Methods 0.000 abstract description 3
- 239000000463 material Substances 0.000 abstract description 2
- 239000011295 pitch Substances 0.000 description 24
- 210000003811 finger Anatomy 0.000 description 7
- 238000001228 spectrum Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000004438 eyesight Effects 0.000 description 4
- 238000011160 research Methods 0.000 description 4
- 230000000630 rising effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000033764 rhythmic process Effects 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 239000010752 BS 2869 Class D Substances 0.000 description 1
- 208000010415 Low Vision Diseases 0.000 description 1
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 1
- 244000046052 Phaseolus vulgaris Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 210000004247 hand Anatomy 0.000 description 1
- 210000004932 little finger Anatomy 0.000 description 1
- 230000004303 low vision Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10G—REPRESENTATION OF MUSIC; RECORDING MUSIC IN NOTATION FORM; ACCESSORIES FOR MUSIC OR MUSICAL INSTRUMENTS NOT OTHERWISE PROVIDED FOR, e.g. SUPPORTS
- G10G3/00—Recording music in notation form, e.g. recording the mechanical operation of a musical instrument
- G10G3/04—Recording music in notation form, e.g. recording the mechanical operation of a musical instrument using electrical means
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09B—EDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
- G09B21/00—Teaching, or communicating with, the blind, deaf or mute
- G09B21/001—Teaching or communicating with blind persons
- G09B21/003—Teaching or communicating with blind persons using tactile presentation of the information, e.g. Braille displays
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10H—ELECTROPHONIC MUSICAL INSTRUMENTS; INSTRUMENTS IN WHICH THE TONES ARE GENERATED BY ELECTROMECHANICAL MEANS OR ELECTRONIC GENERATORS, OR IN WHICH THE TONES ARE SYNTHESISED FROM A DATA STORE
- G10H1/00—Details of electrophonic musical instruments
- G10H1/0008—Associated control or indicating means
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- General Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Business, Economics & Management (AREA)
- Educational Administration (AREA)
- Educational Technology (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Auxiliary Devices For Music (AREA)
Abstract
本发明公开了一种嵌入式视听触同步呈现的音乐盲符转换系统,包括获取模块、转换模块,输出模块;所述获取模块用于获取MusicXML格式的乐谱;所述转换模块用于将MusicXML格式的乐谱转换为由盲文点序组成的盲文乐谱;所述输出模块用于将盲文乐谱同时以视听触三种方式输出。该转换系统计算速度快、准确率高,为盲文乐谱的信息无障碍提供了新的可行途径;同时,同时能够实现盲文乐谱的嵌入式视听触同步呈现功能,视觉显示清晰正确,听觉播放完整,触觉明显,呈现效果较好,能够能进一步提高视障者学习乐谱的效率,为视障者群体获取和摸读海量音乐材料提供了便利。
Description
技术领域
本发明属于计算机科学的盲文乐谱处理与分析技术领域,尤其涉及一种嵌入式视听触同步呈现的音乐盲符转换系统。
背景技术
盲文或称点字、凸字,是专为盲人设计、靠触觉感知的文字。透过点字板、电字机、点字打印机等在纸张上制作出不同组合的凸点而组成,一般每一个方块的点字是由六点组成,左侧从上到下为123,右侧为456,叫一方。
盲文是视障者群体语言文字权益的核心,也是提高盲人群体文化教育水平的关键,是保障盲人共享文化权益和教育权益的重要途径。目前,国内众多汉盲转换系统的研究虽取得了一定成就,但盲文乐谱及相关资料主要依靠人工翻译,无法满足视障者群体对盲文乐谱的海量需求。同时大多数研究成果只能通过转换系统得到电子盲文点序,需要配置点显器或其他设备摸读盲文乐谱,而没有实现视听触同步呈现的效果。这意味着,盲人学习盲文乐谱时,只能通过触摸点显器来感知音符和节奏,无法同时听到音乐的声音和感受节奏的韵律,这限制了他们的学习效果和体验。
公开号为CN105931621A的专利文献公开了一种由MIDI到盲文乐谱的翻译方法及系统,该技术方案仅仅能够实现MIDI到盲文乐谱的翻译,但是MIDI不容易清晰准确地记录下可被人阅读和理解的乐谱信息,乐谱的还原度低,易丢失乐符,难以满足音乐记谱需求。
公开号为CN110390859A的专利文献公开了一种基于MusicXML乐谱到盲文的转换方法及系统,该技术方案仅完成了MusicXML数据读取和解析,并没有进行到五线谱的转换以及乐谱声音的再现,无法通过五线谱与盲文乐谱的对照显示给予盲文乐谱出版和使用以便利。
乐谱的盲文转换是盲文数字化的关键环节,以上方法都是依靠软件和云计算来实现,并未集成到嵌入式环境中,无法做到在公共场合中便捷的、高效的应用。
发明内容
鉴于上述,本发明的目的是提供一种嵌入式视听触同步呈现的音乐盲符转换系统,能够实现在嵌入式环境下将五线谱自动转换为中国盲文乐谱,并拥有视听触同步呈现的功能,以满足视障人士学习乐谱的需求,实现盲文乐谱多模态感知的数字化呈现。
为实现上述发明目的,本发明提供的嵌入式视听触同步呈现的音乐盲符转换系统,包括获取模块、转换模块,输出模块;
所述获取模块用于获取MusicXML格式的乐谱;
所述转换模块用于将MusicXML格式的乐谱转换为由盲文点序组成的盲文乐谱;
所述输出模块用于将盲文乐谱同时以视听触三种方式输出。
优选地,所述将MusicXML格式的乐谱转换为由盲文点序组成的盲文乐谱,包括:
步骤1,读取并解析表示乐谱的MusicXML文件,得到MusicXML文件内容对应的树模型;
步骤2,从树模型中获得MusicXML文件结构的根节点,以根节点为初始遍历树模型的节点,找到需要盲文转换的节点并获得节点标签内容;
步骤3,根据中国盲文音乐符号对照库将节点标签内容转换到盲文点序,得到所述盲文乐谱。
优选地,所述以根节点为初始遍历树模型的节点,找到需要盲文转换的节点并获得节点标签内容,包括:
判断当前节点是否为乐章节点,若满足条件,进一步判断乐章的子节点是否为空,若为空,遍历乐章的下一个兄弟节点;如果乐章的子节点不为空且子节点为小节节点,依次解析小节节点的属性节点和动态标志节点,获得属性节点标签内容和动态标志节点标签内容;如果小节节点的子节点为音符节点,则解析音符节点的子孙节点并获得子孙节点标签内容;在小节节点的子孙节点遍历完成后遍历小节节点的下一个兄弟节点。
优选地,当对动态标志节点标签内容中的速度信息进行盲文点序转换时,包括以下过程:获取速度节点的速度值,并将速度值转化为整型数值,将整型数值的个、十、百位数字转换为单独数字,将每个单独数字转换为对应的盲文点序。
优选地,对音符进行盲文点序转换的流程包括:
对于输入的音符节点,判断音符节点的子节点中是否存在变化音节点,如果存在变化音则记录变化音的相关信息;如果不存在变化音,则继续判断是否存在音高节点;
当存在音高节点时,则获取并临时保存音符的音阶节点的属性值和八度节点的属性值,接着获取并临时保存音符时值节点的属性值,并进行音组号处理,然后根据变化音的记录情况决定添加变化音类型或者不添加变化音对应的盲文点序,接下来根据临时保存的音阶和音符时值决定音符对应的盲文点序,再判断是否添加附点对应的盲文点序,最后返回盲文点序结果;
当不存在音高节点时,则判断是否存在休止符节点,如果存在休止符节点则跳转到存在音高节点时记录音符时值节点的属性值的步骤,并继续执行后续步骤,如果不存在休止符,进行报错处理。
优选地,所述进行音组号处理,包括:
获取上一个音符的音阶和八度和当前音符的音阶和八度,接着基于相邻两音符的八度是否相等来判断是否属于同一音组;
当相邻两音符属于同一音组时,则判断两个音符度数差的绝对值是否大于5,大于5时在当前音符前加上音组号,否则不加音组号;
当相邻两音符属于不同音组时,若两个音符相差两个音组以上则在当前音符前上音组号,若两个音符属于两个相邻音组,且在判断音符度数差大于3时在当前音符前加上音组号,否则不加音组号,最后输出音组号的盲文点序。
优选地,对音符中和弦进行盲文点序转换的流程包括:
判断下一音符中是否存在和弦节点,在存在和弦节点时,获取当前音符的音阶节点、八度节点和音符时值节点并采用临时变量记录相应属性值值,接下来将记录音阶属性值和八度属性值的临时变量分别入栈s1和s2,并将和弦标志位置为1,如此循环;
在不存在和弦节点时,需要判断和弦标志位是否为1,若和弦标志位未被置为1,则按照正常音符进行盲文点序转换,若和弦标志位为1,将当前音符标记为根音,结合音符时值的属性值对根音进行盲文点序转换,栈内音符依次出栈,同时计算出栈音符与根音的度数差,依据度数差对出栈音符进行盲文点序转换,并将和弦标志位置为0,一直循环出栈直到栈为空为止,输出盲文点序。
优选地,对音符中同音连线进行盲文点序转换的流程包括:
判断记谱法节点的的子节点中是否存在同音连线节点,若存在同音连线节点遍历下个节点,在下个节点不为空且是音符节点时,判断音符节点中同时存在同音连线节点和和弦节点时,将和弦标志位和复连线标志位均置为1,并添加复连线标志,判断音符节点中不同时存在同音连线节点和和弦节点时,需要添加同音连线标志;
若下个节点为空,将和弦标志位置为0,添加同音连线标志,最后,对同音连线标志和复连线标志输出盲文点序结果。
优选地,对音符中琶音和延长号进行盲文点序转换的流程包括:
当和弦与琶音同时存在时,需在根音前添加琶音标志,具体为:若下一个音符中没有和弦节点,则在当前节点的琶音增加琶音标志,并输出琶音标志的盲文点序;
当和弦与延长号同时存在时,需在根音前添加延长号标志,具体为:若下一个音符中没有和弦节点,则在当前节点的延长号增加延长号标志,并输出延长号标志的盲文点序。
优选地,所述输出模块将盲文乐谱以视觉方式输出时,进行乐谱呈现和盲文点呈现;
乐谱呈现过程为:将盲文乐谱与盲文音乐符号库匹配得到每个小节的音乐序列,当阅读到当前小节时,音乐序列作为输入,经过程序运行输出小节的乐谱图像并同步显示到屏幕;
盲文点呈现过程为:对盲文乐谱中盲文点序进行长度补齐,并以固定长度对补齐的盲文点序进行字符串截取并存储,为每段字符串绘制图形盲文点并同步显示到屏幕;
所述输出模块将盲文乐谱以听觉方式输出时,将盲文乐谱与盲文音乐符号库匹配得到每个小节的音乐序列,当阅读到当前小节时,音乐序列作为输入,经过程序运行输出小节的音频并保存成midi音频格式进行播放并同步显示到屏幕。
优选地,所述输出模块将盲文乐谱以触觉方式输出时,嵌入系统的上位机和下位机之间的通信以串口为接口,上位机串口通信协议中,数据包由43位十六进制数据组成,分别是:1位数据头高位,1位数据头低位,1位CRC校验位和40位数据位;下位机串口通信协议中,数据包由4位十六进制数据组成,分别是:1位数据头高位,1位数据头低位,1位CRC校验位和1位数据位。
优选地,所述转换模块还用于将盲文点序转换为盲文ASCII码,基于盲文ASCII码进行盲文点呈现。
与现有技术相比,本发明具有的有益效果至少包括:
本发明提供的音乐盲符转换系统计算速度快、准确率高,为盲文乐谱的信息无障碍提供了新可行途径;同时能够实现盲文乐谱的嵌入式视听触同步呈现功能,视觉显示清晰正确,听觉播放完整,触觉明显,呈现效果较好,能够能进一步提高视障者学习乐谱的效率,为视障者群体获取和摸读海量音乐材料提供了便利。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。
图1是实施例提供的音乐盲符转换系统的结构示意图;
图2是实施例提供的音乐盲符转换系统的转换流程框图;
图3是实施例提供的小节的结构图;
图4是实施例提供的MusicXML文件遍历流程图;
图5是实施例提供的速度信息数值的转换处理流程图;
图6是实施例提供的小节部分子节点提取顺序示意图;
图7是实施例提供的音符节点的盲文点序转换流程图;
图8是实施例提供的音组号的盲文点阵转换流程图;
图9是实施例提供的和弦的盲文点阵转换流程图;
图10是实施例提供的同音连线的盲文点阵转换流程图;
图11是实施例提供的琶音和延长号的盲文点阵转换流程图;
图12是实施例提供的视觉呈现流程图;
图13是实施例提供的盲文点阵绘制流程图;
图14是实施例提供的听觉呈现流程图;
图15是实施例提供的触觉呈现流程图;
图16是实施例提供的《Canon in D》第1小节显示结果。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
图1是实施例提供的嵌入式视听触同步呈现的音乐盲符转换系统的结构示意图。如图1所示,该音乐盲符转换系统包括获取模块、转换模块以及输出模块,通过获取模块获取MusicXML格式的乐谱,并通过转换模块将MusicXML格式的乐谱转换为盲文乐谱,最后通过输出模块将盲文乐谱同时以视听触三种方式输出,通过这三个模块实现如图2所示的转换流程。
实施例中,获取模块用于获取MusicXML格式的乐谱。具体地,可以直接从网站下载MusicXML格式的乐谱,或者通过Artinfuser Exercise等软件将其他格式的音乐格式转换为MusicXML格式。
实施例中,转换模块用将MusicXML格式转换为由盲文点序组成的盲文乐谱,还用于将转换的盲文点序转为盲文ASCII码。其中,将MusicXML格式转换为由盲文点序组成的盲文乐谱的流程包括:
步骤1,读取并解析MusicXML文件,得到MusicXML文件结构对应的树模型。具体地,使用xmlReadFile函数读取MusicXML文件的文档指针,通过DOM解析器的解析并建立逻辑上的树模型。
步骤2,从树模型中获取MusicXML文件结构的根节点。具体地,使用xmlDocGetRootElement函数获取MusicXML文件结构的根节点curNode。
步骤3,以根节点为初始遍历树模型的节点,找到需要盲文转换的节点并获得节点标签内容。具体地,对遍历的所需节点采用xmlNodeGetContent函数获取节点标签内容。curNode->xmlChildrenNode是根节点的子节点集合。
步骤4,根据中国盲文音乐符号对照库将节点标签内容转换到盲文点序。具体地,根据MusicXML文件中节点元素与盲文点序的对应关系,将MusicXML 文件中的标签内容转换为对应的盲文点序,然后对遍历的节点根据需要进行基于简化规则的处理。其中有些节点的转换结果需要放置在整首乐谱的最前面,比如有的乐谱开始时会有整篇乐谱速度信息的提示信息,这个速度信息就需要放置于乐谱开始前,给视障者提示弹奏的速度,另外和弦部分也需另外处理,高音谱的MusicXML文件遍历顺序和需要显示的盲文点序的顺序恰恰相反,换句话说,根音处于最后位置,用栈进行处理;中、高音乐谱的MusicXML文件遍历顺序和需要显示的盲文点序顺序一致,不需另外处理,顺序遍历即可。
步骤5,使用xmlFreeDoc函数关闭文档指针,清除MusicXML文件中所有节点动态申请的内存。
MusicXML文件结构中,最外层的根节点是乐谱部分(score-partwise),除包含版权信息、结构布局等信息外,主要包含至少一个乐章(part)。每个乐章中主要包含至少一个小节(measure)。小节包含乐谱的属性信息(attributes)、动态标志(direction)、交换左右手标志(backup)、小节线(barline)、音符(note)等众多标签,如图3所示。一首乐曲主要是由小节组成的,而小节主要由至少一个音符或休止符(rest)组成,因此,整个乐曲基本上由乐章、小节和音符标签组成,它们共同构成了MusicXML文件的逐层嵌套结构,具体为:最外层标签是乐章,里面标签是小节,而每个小节包含音符标签。因此,遍历过程先遍历外部标签,然后遍历嵌套的内部标签。具体遍历流程如图4所示,包括:首先判断当前节点是否为乐章节点,若满足条件,进一步判断乐章的子节点是否为空,若为空,遍历乐章的下一个兄弟节点。接着,如果乐章的子节点不为空且子节点为小节节点,依次解析小节节点的属性节点和动态标志节点,并获得属性节点标签内容和动态标志节点标签内容,同时当小节节点的子节点为音符节点,则解析音符节点的子孙节点并获得子孙节点标签内容,在小节节点的子孙节点遍历完成后遍历小节节点的下一个兄弟节点。
其中,属性节点用于确定五线谱的基调,包含每个音符的标准四分音符时值(divisions)、调号(key)、拍号(time)、五线谱数量(staves)、谱号(clef)等乐谱标签。标准四分音符时值用于度量音符的时值。标准四分音符时值元素本身以四分音符为基本单位,每个音符都有一个标准四分音符时值元素,任何音符都以标准四分音符时值元素的值作为四分音符的标准值进行计算其持续时间。例如,如果divisions= 2,而音符中的持续时间(duration)= 1,则该音符为八分音符。当音符为休止符时,程序主要依靠标准四分音符时值和持续时间的值来计算此时的休止符是几分休止符。调号紧接着标准四分音符时值元素放置,用7个音名以及升降号表示调的主音高度。当表示五线谱固定调号时,可以在拍号前加若干升、降号来表示。变化音(fifths)是调号的子节点,用来表示升降调,正值表示升调,负值表示降调,0表示不升不降。拍号通常用分数来表示,在MusicXML文件中,拍号有拍数(beats)和拍式(beat-type)两个子标签,其中beats用分子表示,beat-type用分母表示,直观地说明了乐谱中一小节有几拍(分子),每一拍是几分音符(分母)。在中国盲文音乐符号对照库中,拍号一般用盲文的分数表示,分子按照阿拉伯数字的盲文正常书写,分母按照阿拉伯数字盲文降点位写分母数。如果属性中没有五线谱数量元素,则默认只有一行五线谱。谱号用于确定音符的音高位置,在MusicXML文件中,谱号用标准值(sign)和线号(line)两个标签表示。例如高音谱号通常用G表示,所在线为2;低音谱号通常用F表示,所在线为4;中音谱号通常用C表示,所在线为3。
动态标志节点可为多个,不一定必须附加在音符上,其主要子节点是动态标志类型(direction-type),动态标志类型节点包含重复省略号(coda)、重复符号(segno)、动态(dynamics)、渐强和渐弱(wedge)、速度(metronome)、踏板(pedal)等多个子节点。其中,针对重复省略号,如果乐谱中出现反复省略号一般有一个code段落,会出现两个符号,前面那个反复省略符号在乐谱上会带上To code,后面那个符号会带上code,表示反复以后要跳过其中的段落。渐强渐弱是力度信息的一种,包括13个符号,这些符号通常标在音符的前面,而wedge标签中渐强和渐弱符号则写在音符的开始和结尾处。速度信息有两种表示方式,一种是使用意大利语单词作为数值,放置在单词(word)标签中,另一种形式是“四分音符=数字”,这类形式通常使用速度标签标识。程序中对速度信息数值的转换流程如图5所示,包括:获取速度节点的速度值,并将速度值转化为整型数值,将整型数值的个、十、百位数字转换为单独数字,将每个单独数字转换为对应的盲文点序。踏板的“踏下”和“提起”都在踏板标签中显示,通过类型属性值的不同来区分。
针对小节线节点,小节线有多种表现形式,使用不同的小节类型(bar-style)值来表示这些不同的小节线形式,包括全曲终止号(light-heavy)、虚小节线号(dashed)、乐段终止号(light-light)等。当乐谱有多个结尾时,可以只用单结尾(如“1.”)或逗号分隔的多个结尾(如“1.,2.”)表示。MusicXML文件中用结尾(ending)中的类型(type)属性值来表示结尾的起止。当乐谱中出现任意一种反复号时,第一个音符都要加音组号。当反复号和结尾联合使用时,在不同的部分用降位数字区分,降位数字与后面的符号混淆时,加“(3)”隔开。反复起止号在MusicXML文件中用小节线形式heavy-light表示。在MusicXML文件中,升降号信息、拍号信息和动态标志都是按照顺序依次出现的。与此对应的盲文点序顺序也与在MusicXML文件中的先后顺序一致,除了速度信息需要提前。
在此需要强调两点:第一,除了音符元素以外,小节节点下的其他子节点与盲文符号大多是一一对应的关系;第二,盲文点序的先后顺序和节点的出现次序在盲文乐谱中是一致的,除了速度信息。因此,可以采用图6所示的简单方案来提取小节标签内容。
针对音符节点,按照中国盲文音乐符号对照库对音符处理,直到小节的子节点遍历结束。音符有一些常用的子节点用来表示当前音符的特性。音符节点包括休止符(rest)、音高(pitch)、和弦(chord)、变化音(accidental)、音符时值(type)、附点(dot)、持续时间(duration)、声部(voice)、符尾方向(stem)、所属行(staff)和连音标志(beam)等基本标签,音符想要得到所对应的盲文点序,需要音高中的音阶和音符时值节点的属性值一起配合使用。音阶用于确定是哪个音符,音符时值用于确定音符的时值(几分音符),都确定后才能匹配盲文点序。除基本标签外,音符也包含对音符的修饰标签,体现在记谱法(notations)标签中。音符节点的提取和转换主要分为三部分:①与音符密切相关的音高等关键标签的提取和转换,②对音符和弦部分的提取和实现,③其他节点的提取和转换,比如:琶音(arpeggiate)、延长号(fermata)、同音连线/复连线(tied)、连线(slur)等。
音高标签表示当前音符在五线谱上的位置,其子标签包括音阶(step)、八度(octave)和升降调(alter)。音阶包括C、D、E、F、G、A、B七个音,而八度则对应着钢琴上的9个音组,由数字0到8表示,其中4表示由中间C开始的八度。升降调用于标识半音变化,负数表示降调,正数表示升调。五线谱可以明显感受到音的高低,但对于视障人群来说,他们无法感受到这种音的高低。为了让盲人区分高低音,需要在音符前面加上音组号。然而,并不是每个音符都需要加音组号。按照《中国盲文音乐符号》规定了音组符号的使用方法:1.必须在乐谱或乐段的第一个音符前加上音组号;2.音组号和音符之间不能有其他符号;3.同一音组内相邻的两个音符,如果它们之间的距离在五度以内,则不需要加上音组号;如果距离在六度或六度以上,则需要加上音组号;4.不同音组内相邻的两个音符,如果它们之间的距离在三度以内,则不需要加上音组号;如果距离在四度或四度以上,则需要加上音组号。添加音组号和音符的音高有关,需要根据前一个音符的音阶和当前音符音阶的差值进行判断,同时还需要考虑前一个音符所在的八度是否与当前音符所在的八度相同。
如图7所示,音符节点的关键元素的盲文点序转换流程包括:从获取的音符节点开始,首先判断音符子节点中是否存在变化音节点,如果存在变化音则记下变化音的相关信息;如果不存在变化音,则继续判断是否存在音高节点,这里可以分为两种情况:①当存在音高节点时,则证明存在C,D,E,F,G,A,B中的一个音,获取并临时保存音符的音阶节点和八度节点的属性值,接着获取并临时记录音符时值节点的属性值,并根据图8的流程图进行音组号处理,然后根据变化音的记录情况进行变化音处理,即决定添加变化音类型或者不添加变化音对应的盲文点序,接下来根据临时保存的音阶和音符时值决定音符对应的盲文点序,再者判断是否添加附点(dot)对应的盲文点序,即进行附点音节点的盲文转换处理,最后返回盲文点序结果;(2)当不存在音高节点时,则需要判断是否存在休止符,如果存在休止符,则跳转跳转到存在音高节点时记录音符时值节点的属性值的步骤,并继续执行后续步骤,如果不存在休止符,说明MusicXML文件有误,需要进行报错处理。
如图8所示,音组号的处理流程包括:首先记下上一个音符的音阶和八度,分别记为step_before和octave_before,当前音符的音阶和八度记为step_after和octave_after,接着判断octave_before和octave_after是否相等,即判断是否属于同一音组,若相同,说明两个音符属于同一音组,否则属于不同音组。这里分为两种情况:(1)两个音符属于同一音组。按照规则,同一音组五度之内的不加音组号,因此这里需要判断两个音符度数差的绝对值是否大于5,大于5的情况下在当前音符前加上对应的音组号,否则不加音组号;(2)两个音符属于不同音组。这里属于不同音组又可以分为两种情况:a.两个音符八度差大于1,也就是不属于相邻音组的情况下,音符度数肯定大于4,必须要在当前音符前加上对应的音组号;b.两个音符属于两个相邻音组,可能存在音符度数差小于3度的情况,所以这里需要判断音符度数差是否大于3,大于3的情况需要在当前音符前加上对应的音组号,否则不加音组号,最后输出音组号的盲文点序。
针对休止符,当音符中存在休止符节点时,就不能有音高节点,因为音高和休止符不能同时存在,MusicXML文件中休止符直接代替音高。休止符和音符一样,也有全休止符、二分休止符、四分休止符、八分休止符等不同类型。另外,整小节休止时,需要使用全休止符。当音符中存在休止符时,同样需要音符时值的属性值来确定休止符的时值。
音符或休止符的时值不仅仅取决于音符时值(type),还取决于标准四分音符时值(divisions)和持续时间(duration)的属性值。divisions表示标准四分音符的时值单位,而duration表示当前音符或休止符的时值,如果duration的值是divisions的两倍,那么当前音符或休止符是二分音符;如果duration的值等于divisions的值,那么当前音符是四分音符,以此类推。
附点dot通常放在音符的后面。加附点的音符实际时值为延长当前音符的1/2,加复附点的音符实际时值为延长当前音符的3/4,其中,两个附点音符叫复附点。前文描述属性(attribute)时提过变化音(升号、降号、重升号、重降号),其实升降号和还原号也会出现在音符中,通过变化音标签不同的值来表示升降号。在盲文乐谱中,升号、降号、还原号写在音符前面,表示临时升、降半音。每个升、降号在一小节内对同音名音有效,当同一小节某音不升、不降时,要在音符之前加还原号。因此,在处理音符子节点时,首先判断有没有变化音存在。
和弦的处理是系统中的一难点。和弦是指按照三度或非三度音程关系堆叠的音高组合。这些音可以先后发声,也可以同时发声。一个和弦少则三个音,多至七个音。明眼人学习和弦的时候可以看到三和弦、七和弦等的差别,视障者学习的和弦是靠音程度数来计算。音程是指两个音之间的音高差距,用“度数”来表示这个差距。换句话说,度数是用来衡量音高关系的,度数就是音程所包含的音的数目,在五线谱上表现为两个音所包含的线与间的数目。例如两个和弦C-E(从do到mi)的度数为三度,可以是两线一间或者两间一线的形式,但都代表着三度的距离。音程度数只能说明差了几度,并不代表完全相同。如:D-E和F-G都是二度,但是却是两种完全不同的音程,他们只是度数相同而已。所以,单根据度数是无法确定音程的名称的,还需要结合音数。
和弦音是指构成和弦的各个音。在一个和弦中,最高的音被称为冠音,最低的音被称为根音,其他音则根据它们与根音之间的音程关系来命名。三和弦中,按照三度音程排列,最下面的音叫做根音(标记为1),中间那个音与根音构成三度音程关系,所以叫做三音(标记为3),最上面那个音与根音构成五度音程关系,所以叫做是五音(标记为5)。
盲文乐谱中,当出现和弦时,会选取一个音符作为和弦的根音,并根据其他音符与根音的音程度数来表示。五线谱中,音程一般自下向上计算度数,即最下面一个因为根音。但是在分声部记谱时,低音谱由下向上计算度数;高音谱由上向下计算度数。换句话说就是,在分左右手谱时,高音谱部分最上面一个音做根音,从上往下计算度数;低音谱部分最下面一个音做根音,从下往上计算度数。一般音程号写在音符之后,9度及9度音程以内的音程号不需要加音组号,但是9度以上需要加写音程号,表示9度以上的复音程。
如图9所示,音符和弦部分的盲文点阵转换流程包括:输入当前音符节点的标签内容信息。由于音符的确定需要音阶和音符时值结合起来判断,而音组号判断需要八度值,所以如果存在和弦,获取当前音符的音阶标签、八度标签和音符时值标签,并用临时变量step_before、octave_before和t记录相应的值;接下来将临时变量step_before、octave_before分别入栈s1和s2,并将和弦标志位chord置为1,如此一直循环,直到下一个音符中不存在和弦为止。如果不存在和弦,需要判断和弦标志位是否为1,若和弦标志位未被置为1,说明整个过程没有和弦,则按照如图7所示的正常音符处理步骤处理。如果和弦标志位为1,说明存在和弦并且是第一次出栈,栈顶是根音的下一个音符,因此将当前音符标记为根音,将step_before的值赋值给临时变量root_step、octave_before的值赋值给临时变量root_octave,结合t的值对根音进行盲文点序转换。最后栈内元素依次出栈,同时计算出栈音符与根音的度数差(interval),依据度数差对出栈音符进行盲文点序转换,并将和弦标志位置为0,一直循环出栈,直到栈为空,输出盲文点序,整个流程结束。其中,interval的计算方式包括:同音组音符,interval等于step_before与root_step差的绝对值再加1;不同音组的音符,interval等于最高音与root_step差的绝对值加1,再加上step_before与最低音差的绝对值加1。
MusicXML文件中和弦都是从下往上依次描述的,而且最下面的音不带和弦<chord/>标志,所以当五线谱分声部记谱时,高音谱和弦部分刚好是相反的,低音谱顺序是相同的。因此在盲文乐谱中高音谱部分的和弦需要另外处理,本发明中利用栈先进后出的特性,从最下面的一个音从下往上依次进栈,当最后一个和弦入栈后再依次出栈,出栈的第一个音符就是根音。
这里需要说明的是,由于和弦开始的第一个音不带<chord/>标志,所以本发明是通过判断下一个音符是否存在和弦进行入栈的,下个音符若存在和弦就将当前音符信息入栈,也就是说,到和弦的最后一个音时,最后一个音是没有入栈的,但是最后一个音恰好是根音,所以本发明直接标记最后一个音为根音,并将根音按照正常音符处理之后,再将栈内的音符信息进行出栈并计算和弦根音的度数。
同音连线(tied)也称为延音线,用来连接相同音高的音符。当两个或两个以上相同的音程(或和弦)相连时,需要使用复连线。因此,在判断同音连线和复连线之前,需要先判断下一个音符节点是否包含和弦节点和同音连线(tied)节点。若含有同音连线节点,标志位记为tied_notation,若存在和弦,标志位记为fermata_chord。
如图10所示,对音符中同音连线的进行盲文点序转换的流程包括:对输入的notations子节点进行遍历,若存在同音连线/复连线节点,遍历下个节点,若下个节点不为空且是音符(note)节点时,判断音符节点中是否同时存在同音连线/复连线节点和和弦节点,若同时存在,将和弦标志位fermata_chord和复连线标志位tied_notation均置为1,并添加复连线标志,若没有同时存在,则需添加同音连线标志。若下个节点为空,说明下个节点中可能存在和弦但是和弦已经结束了或者根本不存在和弦,这两种情况都要将和弦标志位fermata_chord置为0,添加同音连线标志。最后,对同音连线标志和复连线标志输出盲文点序结果,流程结束。
如图11所示,当和弦与琶音同时存在、或者弦与延长号同时存在时,只需在根音前添加相应的盲文标志,即琶音或延长号对应的标志。这意味着,判断琶音和延长音盲文标志是否添加需要使用fermata_chord标志位。如果下一个音符节点中没有<chord/>,则正常添加琶音和延长号的盲文标记,否则不添加。
连线(slur)也称为弧线,用于连接音符,使得乐谱中多个音符能够被连续演奏。在MusicXML文件中,连线通过type属性来判断连线的开始和结束,其中“start”表示开始,“stop”表示连线结束。在盲文乐谱中,连接两个音符需要加一个 (14)标志,连接三个音符需要加两个/> (14)标志。因此,连线标志的添加需要结合type属性,从出现slur,type=“start”开始,每个音符后面都需要添加/> (14)标志,只有当type属性值是“stop”的时候,音符后面不加/> (14)标志。此外,《中国盲文音乐符号》中规定:当连接两个至四个音符时,使用连线;当连接五个及五个以上的音符时,使用大连线,盲文为/> (14,14)……(14)。如果连线或大连线跨越两小节,小节之间需要空出一方,也就是添加/> (空方)。
装饰音(articulations)节点包括子节点强音(accent)、促顿音(staccatissimo)、顿音(staccato)、保持音(tenuto)、后上滑音(doit)、后下滑音(falloff)、前上滑音(plop)等。这些节点和盲文点是一一对应的关系,可以在程序中直接匹配转换。需要注意的是它们所放的位置:顿音、促顿音、次顿音、保持音、特强音均写在音符的前面;颤音、上颤音、下颤音三个符号均写在音符的前面;前上滑音和前下滑音的符号也在音符前面标注,而后上滑音和后下滑音的符号则在音符后面标注。
在装饰音节点下,还有一个常用的子节点弹技(technical),弹技的子节点fingering表示指法记号,由1,2,3,4,5表示。第一指是拇指,记为1;第二指是食指,记为2;第三指是中指,记为3;第四指是无名指,记为4;第五指是小指,记为5。这些指号的盲文标志均写在音符后面,节点和盲文点也是一一对应的关系。
在分左右手记谱时,需要在左手谱开始前加上左手记号 (456,345),在右手谱开始前加上右手记号/> (46,345)。需要注意的是,音符前应标注左右手记号,而且左右手记号连写的第一个音符前必须加上音组号。如果左右手记号后面的符号含有/> (1)点、/>(2)点、/> (3)点,应该加上/> (3)符号。本发明所使用的记谱方式是逐节记谱法,即先记录一小节的低音部乐谱,然后再记录一小节的高音部乐谱。因此,在写小节的音符信息之前,需要先写左手记号,然后再写右手记号,最后写右手谱里的音符信息。如此逐节写下去,直到一个乐段或整首乐曲结束。
另外,小节(measure)节点中有的子孙节点需要进行更深层次的遍历,比如标签fifths处于标签key下,标签beats、beat-type处于标签time下,标签sign、line处于标签clef下,而key、time和clef又处于measure下的attributes标签下,这时候就需要先对measure下相关的标签进行访问,正确获取乐谱信息并根据《中国盲文音乐符号》进行正确表达后,再返回上一层,开始遍历下一个measure节点,直到整个part节点中的measure遍历完成。
整个过程循环遍历,直到乐章(part)节点遍历结束且下一个不再有乐章节点之后,整首乐谱全部遍历完成。
实施例中,每首乐谱S由至少一个乐章P组成,表示为式(1-1),F为构成函数。每个乐章P由至少一个小节M组成,表示为式(1-2),其中,Pi表示乐曲的第i部分,Mi表示第i小节,每个小节的乐谱M表示为式(1-3),Mattributes表示乐谱属性的集合,Mdirection表示乐谱动态信息的集合,Mnote表示乐谱音符信息的集合,Mbarline表示乐谱结束符,Mbackup表示乐谱时间移到最开始,也就是交换左右手标志,Mothers表示乐谱中其他节点集合,它们的集合表示为式(1-4)。
(1-1)
(1-2)
(1-3)/>
(1-4)
MusicXML格式转换为盲文点序所遵循的转换规则记为R,音乐乐谱S转换为盲文点序Bri_Dot的关系如式(1-5),转换规则表示为式(1-6),其中,Mwrite表示书写规则,Mconversion表示乐谱到盲文乐谱的转换规则,Msimplify为乐谱到盲文乐谱转换的简化规则。
(1-5)
(1-6)
通过对MusicXML文件结构和转换的盲文点序的研究发现,MusicXML节点和盲文点序的对应关系并不是只有一对一的存在,还有一对多,多对一的关系,甚至多对多的情况出现。转换的顺序结构描述为公式(1-7)。其中,(< >)表示节点间的父子关系,p是MusicXML文件中父节点的集合,pi表示集合p中一个父节点,si表示pi的子节点,bi、bi’表示生成的盲文点序,(i=1,2,3,...)。
(1-7)
钢琴左右手的盲文点序转换描述为式(1-8):
(1-8)
音组号到盲文点序的转换描述为式(1-9):
(1-9)
连音号到盲文点序的转换描述为式(1-10):
(1-10)
音符分组记法的简化规则描述为式(1-11):
(1-11)/>
实施例中,在获得乐谱的盲文点序后,对照盲文点序与盲文ASCII码对照表将盲文点序转为盲文ASCII码。
实施例中,输出模块用于在嵌入式系统实现视觉、听觉和触觉三种感觉同时输出。视觉是在10寸IPSHDMI屏幕上以乐谱小节为单位显示,并在乐谱下方呈现所对应的电子盲文点序,方便明眼人对视障用户的辅助学习。听觉是以乐谱小节为单位生成音频文件,在ALC5640语音芯片上双通道播放,为视障用户在触摸盲文点学习的时候添加听感,更易于理解和感受音乐。触觉是在40方盲文点阵上呈现的,通过摸读凸起的盲文点来学习乐谱。为了方便在其他设备上学习盲文乐谱,本发明采用两种输出形式:盲文点序和盲文ASCII码。同时通过构建盲文点序与盲文ASCII码对照表,可以将盲文点序转换为盲文ASCII码。
针对视觉呈现,主要分为乐谱呈现和盲文点呈现两部分,采用10寸IPSHDMI屏幕作为乐谱显示的载体,乐谱以图片格式显示,每张图片显示一小节乐谱信息。Linux系统可以驱动IPSHDMI屏幕,在屏幕上显示出乐谱内容,可以实现高清晰度和良好的色彩还原效果,从而使乐谱更加清晰易读。在乐谱的下方,系统会显示相应的盲文点序,以方便视障用户理解乐谱的内容。盲文点序与乐谱信息的配合呈现,为视障用户提供了更加全面的乐谱理解体验。
关于乐谱呈现,目前可以编辑MusicXML文件的打谱软件有很多。例如MuseScore,它是一款开源的打谱软件,不仅可以导出MusicXML格式的乐谱,还可以保存PNG、MP3等格式的乐谱。重要的是,MuseScore可以兼容Linux系统且是开源的。为了实现自动化并准确地获取每一小节的乐谱信息,系统利用了MuseScore的这一优势,并通过导入music21库与MuseScore关联起来,使用Python语言进行编程,用户可以以图形化的形式看到乐谱。
乐谱图像的形成需要拍号、音符等构成的序列,这些序列是根据MusicXML文件到中国盲文乐谱转换系统生成的。如图12所示,视觉呈现流程包括:首先,通过DOM解析MusicXML文件生成树形结构。在遍历DOM树结构时,匹配中国盲文音乐符号库,并以小节为单位输出视觉呈现乐谱所需的音乐序列,该音乐序列包括拍号、升降调、音高等信息,并将音乐序列保存在临时数组中,当阅读到当前小节时,Python程序会以该音乐序列作为输入,经过程序运行输出该小节的乐谱,并将其以图片格式保存,并同步显示到IPSHDMI屏幕上。系统会依次循环遍历每个小节,直到乐谱文件遍历结束。
关于盲文点呈现,通过音乐盲符转换系统得到的盲文点序或对应的盲文ASCII码结果,主要通过盲文点阵显示让视障者准确理解输出结果的含义。但是,视障有全盲和低视力两类,本系统为了方便视障群体中的低视力群体的使用,利用其剩余视力,特意通过可视化界面将乐谱所转换的盲文点序以布莱尔盲文的形式展现出来,同时也更有利于明眼人进行盲文辅导。盲文点阵的绘制是通过QT绘图事件来实现的。系统根据获取的盲文点序将其转换为相应的凸起位置,并进行绘制。盲文乐谱在嵌入式系统上以小节为单位进行显示,因此乐谱一小节的盲文可能不足40方。然而,系统是以40方为一行进行排列,因此可能存在一些盲文点字符串无法完全利用的情况。为了解决这个问题,需要将不足40方的盲文点字符串以“0”进行补齐,使其长度达到240。
如图13所示,盲文点阵绘制流程包括:创建QPainter对象并初始化画笔和画刷,将MusicXML格式的乐谱转换得到盲文点序后,将长度不足240的盲文点序以0补齐,按长度6定长截取盲文点序中字符串并存储到字符串数组列表中,当盲文点序中字符串长度i小于40时,取对应的字符串数组,并根据字符串绘制图形盲文点。盲文点绘制函数为drawBraille(QPoint d, QPainter *p, QString s),它的返回值为空。该函数首先传入起始点的坐标QPoint值、对象QPainter以及本次需要画的盲文点序,该函数会执行40次绘画盲文操作,从而实现盲文点在可视化界面的显示。
针对听觉呈现,实施例选择了ALC5640语音芯片,该语音芯片是一款双I2S接口音频解码器,可用于音频集线器。它集成了动态范围控制器和七波段参数均衡器,同时具有100dBA信噪比的数模转换器和94dBA信噪比的模数转换器,具有高性能低功耗的优势。在嵌入式系统内部,可以将ALC5640语音芯片的I2S引脚与主控芯片RK3399的I2S引脚相连接,并通过Class-D输出直接驱动1.5w单通道或2.5w单通道音频。音频可以通过外部3.5mm耳机接口输出,也可以通过双通道音频输出进行输出。由于音乐听觉输出与文字的语音输出不同,因此需要进行不同的处理。采用导入music21库并关联MuseScore的方式,使用python语言编程,将由MusicXML到中国盲文乐谱转换系统得到的音乐序列输入到程序中,通过程序生成midi格式的乐谱音频文件。
如图14所示,听觉呈现流程包括:首先需要输入MusicXML文件,然后通过DOM解析生成树结构,在遍历DOM树的过程中,根据节点信息匹配中国盲文音乐符号对照库。同时,以小节为单位输出视觉呈现乐谱所需的音乐序列,并保存在临时数组中。当播放到当前小节时,python程序以此序列作为输入,通过程序运行,输出一小节乐谱的音频,并将其保存成midi音频格式进行播放。系统会依次循环遍历每个小节,直到MusicXML乐谱文件遍历结束。
针对触觉呈现,使用两条40方的盲文点显装置,共有640个盲文点需要被驱动。而音乐盲文转换程序输出的盲文是以每6个点为一方,其中第4点和第8点用于定位盲文输入位置。因此,通过转换程序得到的盲文01点序需要进行二次处理,将6点盲文转换为8点盲文。在6点盲文和8点盲文中,8方盲文每方比6方盲文多4个点和8个点。将6点盲文转为8点盲文需要在获取每方的盲文点时,将第4位和第8位补为0,这样就可以将6点盲文转换为对应的8点盲文。
上位机和下位机之间的通信主要以串口为接口,同时也是上下位机协议数据传输的重要接口。为了保证数据传输的可靠性和通信效率,本发明制定了串口通信协议。通过UART串口将盲文点序以16进制进行数据存放并发送到下位机,同时,需要设置一种检错机制来判断接收的数据是否正确。本发明选择使用CRC8机制进行校验,CRC8校验可以全面检测出所有奇数个随机错误以及长度小于等于8的突发错误。
在上位机串口通信协议中,数据包由43位十六进制数据组成,分别是:1位数据头高位,1位数据头低位,1位CRC校验位和40位数据位。起始位标志着协议数据帧的开始,该串口通信协议规定数据帧的排列顺序依次为:0x7A、0x6A。CRC8校验是对数据位进行校验的结果,数据位则表示数据的具体内容。由于下位机只需要在收到数据后校验是否正确,不需要有过多的信息发送,因此下位机的数据包相对较为简单,只包含1位数据头高位、1位数据头低位、1位CRC校验位和1位数据位。
如图15所示,触觉呈现流程包括:首先,定义了用于串口通信发送数据的数组protocolArray,并定义了一个包含盲文点序数据和计算CRC8校验值的数组dataArray。在串口通信开始时,protocolArray数组存放了数据头的高低位信息,即为第1位赋值为0x7A,第2位赋值为0x6A,同时设置盲文点序长度为len,变量i=0,并依次遍历盲文点序,当i小于len时,每次只处理长度为6位的盲文字符串,并在第3位和第7位添加0,以转为8点盲文。然后,将8点盲文字符串以二进制读取,并将其转换为hex数据,以十六进制的格式保存在dataArray数组中。依次往后遍历,如果盲文点序转换为16进制结束,且移动指针大于本次盲文点序的长度的标志位,系统就根据dataArray中的数据以查表的方式计算CRC8校验值,并将校验值存入protocolArray数组中。接下来,将dataArray数组的值和protocolArray数组中的值进行拼接,并发送到下位机。下位机收到数据后,进行数据头高低位的比较,再通过数据位计算CRC8的值。将计算的值和上位机发送的CRC8校验值进行比较,若校验结果不同,将下位机发送数据位置置为0x00并返回。如果校验结果相同,则将下位机发送数据位置置为0x01,并驱动盲文点阵显示。
实施例中,嵌入式视听触同步呈现的总体效果以《Canon in D》的第1小节为例,将乐谱、电子点序、音频波形和盲文点序在嵌入式系统上各部分显示结果如图16所示。
上述实施例提供的嵌入式视听触同步呈现的音乐盲符转换系统,为盲文乐谱的信息无障碍提供了新的可行途径,可以广泛应用于各种嵌入式场合和盲人使用的环境中,便捷、高效地生成海量盲文数字化资源,有效降低开发成本、缩短开发流程、提高开发效率,具有较高的实用性。同时,开发的盲文乐谱的嵌入式视听触同步呈现的功能,能够能进一步提高视障者学习乐谱的效率,展现了人工智能在无障碍领域应用的新思路。同时也可为其他无障碍领域的研究提供借鉴和参考。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种嵌入式视听触同步呈现的音乐盲符转换系统,其特征在于,包括获取模块、转换模块,输出模块;
所述获取模块用于获取MusicXML格式的乐谱;
所述转换模块用于将MusicXML格式的乐谱转换为由盲文点序组成的盲文乐谱,包括:步骤1,读取并解析表示乐谱的MusicXML文件,得到MusicXML文件内容对应的树模型;步骤2,从树模型中获得MusicXML文件结构的根节点,以根节点为初始遍历树模型的节点,找到需要盲文转换的节点并获得节点标签内容,包括:判断当前节点是否为乐章节点,若满足条件,进一步判断乐章的子节点是否为空,若为空,遍历乐章的下一个兄弟节点;如果乐章的子节点不为空且子节点为小节节点,依次解析小节节点的属性节点和动态标志节点,获得属性节点标签内容和动态标志节点标签内容;如果小节节点的子节点为音符节点,则解析音符节点的子孙节点并获得子孙节点标签内容;在小节节点的子孙节点遍历完成后遍历小节节点的下一个兄弟节点;步骤3,根据中国盲文音乐符号对照库将节点标签内容转换到盲文点序,得到所述盲文乐谱;
对音符中和弦进行盲文点序转换的流程包括:判断下一音符中是否存在和弦节点,在存在和弦节点时,获取当前音符的音阶节点、八度节点和音符时值节点并采用临时变量记录相应属性值,接下来将记录音阶属性值和八度属性值的临时变量分别入栈s1和s2,并将和弦标志位置为1,如此循环;在不存在和弦节点时,需要判断和弦标志位是否为1,若和弦标志位未被置为1,则按照正常音符进行盲文点序转换,若和弦标志位为1,将当前音符标记为根音,结合音符时值的属性值对根音进行盲文点序转换,栈内音符依次出栈,同时计算出栈音符与根音的度数差,依据度数差对出栈音符进行盲文点序转换,并将和弦标志位置为0,一直循环出栈直到栈为空为止,输出盲文点序;
所述输出模块用于将盲文乐谱同时以视听触三种方式输出。
2.根据权利要求1所述的嵌入式视听触同步呈现的音乐盲符转换系统,其特征在于,当对动态标志节点标签内容中的速度信息进行盲文点序转换时,包括以下过程:获取速度节点的速度值,并将速度值转化为整型数值,将整型数值的个、十、百位数字转换为单独数字,将每个单独数字转换为对应的盲文点序。
3.根据权利要求1所述的嵌入式视听触同步呈现的音乐盲符转换系统,其特征在于,对音符进行盲文点序转换的流程包括:
对于输入的音符节点,判断音符节点的子节点中是否存在变化音节点如果存在变化音则记录变化音的相关信息;如果不存在变化音,则继续判断是否存在音高节点;
当存在音高节点时,则获取并临时保存音符的音阶节点的属性值和八度节点的属性值,接着获取并临时保存音符时值节点的属性值,并进行音组号处理,然后根据变化音的记录情况决定添加变化音类型或者不添加变化音对应的盲文点序,接下来根据临时保存的音阶和音符时值决定音符对应的盲文点序,再判断是否添加附点对应的盲文点序,最后返回盲文点序结果;
当不存在音高节点时,则判断是否存在休止符节点,如果存在休止符节点则跳转到存在音高节点时记录音符时值节点的属性值的步骤,并继续执行后续步骤,如果不存在休止符,进行报错处理。
4.根据权利要求3所述的嵌入式视听触同步呈现的音乐盲符转换系统,其特征在于,所述进行音组号处理,包括:
获取上一个音符的音阶和八度和当前音符的音阶和八度,接着基于相邻两音符的八度是否相等来判断是否属于同一音组;
当相邻两音符属于同一音组时,则判断两个音符度数差的绝对值是否大于5,大于5时在当前音符前加上音组号,否则不加音组号;
当相邻两音符属于不同音组时,若两个音符相差两个音组以上则在当前音符前加上音组号,若两个音符属于两个相邻音组,且在判断音符度数差大于3时在当前音符前加上音组号,否则不加音组号,最后输出音组号的盲文点序。
5.根据权利要求1所述的嵌入式视听触同步呈现的音乐盲符转换系统,其特征在于,对音符中同音连线进行盲文点序转换的流程包括:
判断记谱法节点的子节点中是否存在同音连线节点,若存在同音连线节点遍历下个节点,在下个节点不为空且是音符节点时,判断音符节点中同时存在同音连线节点和和弦节点时,将和弦标志位和复连线标志位均置为1,并添加复连线标志,判断音符节点中不同时存在同音连线节点和和弦节点时,需要添加同音连线标志;
若下个节点为空,将和弦标志位置为0,添加同音连线标志,最后,对同音连线标志和复连线标志输出盲文点序结果。
6.根据权利要求1所述的嵌入式视听触同步呈现的音乐盲符转换系统,其特征在于,对音符中琶音和延长号进行盲文点序转换的流程包括:
当和弦与琶音同时存在时,需在根音前添加琶音标志,具体为:若下一个音符中没有和弦节点,则在当前节点的琶音增加琶音标志,并输出琶音标志的盲文点序;
当和弦与延长号同时存在时,需在根音前添加延长号标志,具体为:若下一个音符中没有和弦节点,则在当前节点的延长号增加延长号标志,并输出延长号标志的盲文点序。
7.根据权利要求1所述的嵌入式视听触同步呈现的音乐盲符转换系统,其特征在于,所述输出模块将盲文乐谱以视觉方式输出时,进行乐谱呈现和盲文点呈现;
乐谱呈现过程为:将盲文乐谱与盲文音乐符号库匹配得到每个小节的音乐序列,当阅读到当前小节时,音乐序列作为输入,经过程序运行输出小节的乐谱图像并同步显示到屏幕;
盲文点呈现过程为:对盲文乐谱中盲文点序进行长度补齐,并以固定长度对补齐的盲文点序进行字符串截取并存储,为每段字符串绘制图形盲文点并同步显示到屏幕;
所述输出模块将盲文乐谱以听觉方式输出时,将盲文乐谱与盲文音乐符号库匹配得到每个小节的音乐序列,当阅读到当前小节时,音乐序列作为输入,经过程序运行输出小节的音频并保存成midi音频格式进行播放并同步显示到屏幕。
8.根据权利要求1所述的嵌入式视听触同步呈现的音乐盲符转换系统,其特征在于,所述输出模块将盲文乐谱以触觉方式输出时,嵌入系统的上位机和下位机之间的通信以串口为接口,上位机串口通信协议中,数据包由43位十六进制数据组成,分别是:1位数据头高位,1位数据头低位,1位CRC校验位和40位数据位;下位机串口通信协议中,数据包由4位十六进制数据组成,分别是:1位数据头高位,1位数据头低位,1位CRC校验位和1位数据位。
9.根据权利要求1所述的嵌入式视听触同步呈现的音乐盲符转换系统,其特征在于,所述转换模块还用于将盲文点序转换为盲文ASCII码,基于盲文ASCII码进行盲文点呈现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310702701.9A CN116434725B (zh) | 2023-06-14 | 2023-06-14 | 一种嵌入式视听触同步呈现的音乐盲符转换系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310702701.9A CN116434725B (zh) | 2023-06-14 | 2023-06-14 | 一种嵌入式视听触同步呈现的音乐盲符转换系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116434725A CN116434725A (zh) | 2023-07-14 |
CN116434725B true CN116434725B (zh) | 2023-09-08 |
Family
ID=87080151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310702701.9A Active CN116434725B (zh) | 2023-06-14 | 2023-06-14 | 一种嵌入式视听触同步呈现的音乐盲符转换系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116434725B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2101314U (zh) * | 1991-05-09 | 1992-04-08 | 北京电子专科学校 | 简谱录入自动演奏音乐装置 |
CN101128859A (zh) * | 2004-12-20 | 2008-02-20 | 马克·派屈克·伊甘 | Morpheus(梦神)音乐符号系统 |
CN105931621A (zh) * | 2016-04-19 | 2016-09-07 | 北京理工大学 | 一种由midi到盲文乐谱的翻译方法及系统 |
CN108986841A (zh) * | 2018-08-08 | 2018-12-11 | 百度在线网络技术(北京)有限公司 | 音频信息处理方法、装置及存储介质 |
CN110390859A (zh) * | 2018-04-19 | 2019-10-29 | 兰州大学 | 一种基于MusicXML乐谱到盲文的转换方法及系统 |
CN113035026A (zh) * | 2021-03-10 | 2021-06-25 | 之江实验室 | 一种盲文信息无障碍的视听触感知匹配方法 |
CN114419634A (zh) * | 2022-03-28 | 2022-04-29 | 之江实验室 | 一种基于特征规则的曲谱解析方法与装置 |
US11361677B1 (en) * | 2021-11-10 | 2022-06-14 | King Abdulaziz University | System for articulation training for hearing impaired persons |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140260898A1 (en) * | 2013-03-14 | 2014-09-18 | Joshua Ryan Bales | Musical Note Learning System |
-
2023
- 2023-06-14 CN CN202310702701.9A patent/CN116434725B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2101314U (zh) * | 1991-05-09 | 1992-04-08 | 北京电子专科学校 | 简谱录入自动演奏音乐装置 |
CN101128859A (zh) * | 2004-12-20 | 2008-02-20 | 马克·派屈克·伊甘 | Morpheus(梦神)音乐符号系统 |
CN105931621A (zh) * | 2016-04-19 | 2016-09-07 | 北京理工大学 | 一种由midi到盲文乐谱的翻译方法及系统 |
CN110390859A (zh) * | 2018-04-19 | 2019-10-29 | 兰州大学 | 一种基于MusicXML乐谱到盲文的转换方法及系统 |
CN108986841A (zh) * | 2018-08-08 | 2018-12-11 | 百度在线网络技术(北京)有限公司 | 音频信息处理方法、装置及存储介质 |
CN113035026A (zh) * | 2021-03-10 | 2021-06-25 | 之江实验室 | 一种盲文信息无障碍的视听触感知匹配方法 |
US11361677B1 (en) * | 2021-11-10 | 2022-06-14 | King Abdulaziz University | System for articulation training for hearing impaired persons |
CN114419634A (zh) * | 2022-03-28 | 2022-04-29 | 之江实验室 | 一种基于特征规则的曲谱解析方法与装置 |
Non-Patent Citations (1)
Title |
---|
Towards Passive Haptic Learning of Piano Songs;Caitlyn Seim et al.;《World Haptics Conference》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116434725A (zh) | 2023-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bell et al. | Integrating computational thinking with a music education context | |
WO2007109944A2 (fr) | Partition vierge et partition concrétisant des portées, et notation musicale chiffrée et correspondant visuellement à un clavier de piano | |
BRPI0715466A2 (pt) | aparelho e mÉtodo para visualizaÇço de mésica e outros sons | |
CN110390859B (zh) | 一种基于MusicXML乐谱到盲文的转换方法及系统 | |
US7607918B2 (en) | Method and system for spatial, appearance and acoustic coding of words and sentences | |
US10013961B1 (en) | Musical notation system for piano | |
US20050172780A1 (en) | Fingering guide displaying apparatus for musical instrument and computer program therefor | |
CN112258932B (zh) | 一种乐器演奏辅助练习装置、方法及系统 | |
CN107316536A (zh) | 一种基于乐器数字接口的虚拟扬琴系统 | |
CN116434725B (zh) | 一种嵌入式视听触同步呈现的音乐盲符转换系统 | |
CN113707111A (zh) | 将多行展示的乐谱数据处理为播放数据的方法及计算机程序 | |
US10431191B2 (en) | Method and apparatus for analyzing characteristics of music information | |
US8697974B1 (en) | Musical notation system | |
WO2022143679A1 (zh) | 谱面分析和标注方法、装置及电子设备 | |
Goto et al. | A transcription system from MusicXML format to Braille music notation | |
Renz | Algorithms and data structures for a music notation system based on guido music notation | |
US20070000373A1 (en) | Method of conveying musical information | |
CN111354327A (zh) | 一种辅助弹奏方法、介质及智能钢琴 | |
CN1920898A (zh) | 一种乐谱信息的简易记谱方法 | |
US20050076771A1 (en) | Method of conveying musical information | |
Shepherd | Let’s Calculate Bach: Applying Information Theory and Statistics to Numbers in Music | |
Brown | “Notehead Shorthand”: A Rhythmic Shorthand Method for Melodic Dictation Exercises | |
WO2022244403A1 (ja) | 楽譜作成装置、訓練装置、楽譜作成方法および訓練方法 | |
WO2022202297A1 (ja) | 文章提供方法、プログラムおよび文章提供装置 | |
Misra | SANGEETTEX: A LATEX ENGINE FOR TRANSCRIBING AND RENDERING INDIC MUSIC |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |