改进的电子乐谱数据结构一.docx

上传人:b****5 文档编号:8573184 上传时间:2023-01-31 格式:DOCX 页数:15 大小:510.38KB
下载 相关 举报
改进的电子乐谱数据结构一.docx_第1页
第1页 / 共15页
改进的电子乐谱数据结构一.docx_第2页
第2页 / 共15页
改进的电子乐谱数据结构一.docx_第3页
第3页 / 共15页
改进的电子乐谱数据结构一.docx_第4页
第4页 / 共15页
改进的电子乐谱数据结构一.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

改进的电子乐谱数据结构一.docx

《改进的电子乐谱数据结构一.docx》由会员分享,可在线阅读,更多相关《改进的电子乐谱数据结构一.docx(15页珍藏版)》请在冰豆网上搜索。

改进的电子乐谱数据结构一.docx

改进的电子乐谱数据结构一

电子乐谱数据结构设想

(二)

树型结构:

…………….多首歌曲数据结构……………………..

Typedefstructmultisong{

intnumber;//歌曲号

SYSTEMS*systems//歌曲链表

}MULTISONG;

………………一曲钢琴曲数据结构………………..

Typedefstructsystem{

Intlinedistance;//五线谱谱线间距离

Intstavecontype;//五线谱声部连接符号类型1,花括号2中括号

Intnumber;//五线谱数

STAVES*staves;

}SYSTEM

………………五线谱数据结构………………………

typedefstructstave{

intv_distance;//声部距离

intnumber;//声部数

VOICE*voice;//五线谱声部链表

}STAVE

………………声部数据结构……………………….

typedefstructvoice{

intnumber;//小节数

MEASURE*fmeasure;//指向前一小节

MEASURE*bmeasure;//指向后一小节

}VOICE

………………小节数据结构………………………….

typedefstructmeasure{

inttotalnumber;//音符的总数

intnumber;//组合音符看成一个音符时的音符总数,为确定连接线位置做基准

CLEF*clef;//谱号

KEYSIGATURE*keysignature;//调号

BAT*bats;//拍号

NOTATION*fnotation;//音符链表,指向第一个音符

NOTATION*bnotation;//指向最后一个音符

BARLINE*barline;//小节线

……………………………

CONNECTS*connect;//音符连接线

CONNECTS*connectsyin//连音符

TRAILBRIDGES*trailbridges;//尾桥队列

BOOLrepeat;//有无重复符号

intrepeattype;//重复符号的类型

intstart[4],end[4];//重复符号的起点,终点位置;位置五线谱号,声部,

小节和音符(组合音符看成一个音符)决定.

}MEASURE;

 

…………………….谱号数据结构……………………….

typedefstructclef{

CLEF_TPYEtype;//谱号类型

intlocation;//谱号线位置(从下加三线到上加三线,第一线位置设定为0)

}CLEF;

EnumCLEF_TYPE{G,F,C}

………………………调号数据结构…………………….

typedefstructkeysignature{

inttype;//调号值(-7—7)

intlocation;//调号线位置

}KEYSIGNATURE;

…………………………拍号数据结构……………………..

typedefstructbat{

inttop,down;//拍号上、下数字

intposx,posy//拍号线坐标

}BAT

…………………………..小节线数据结构…………………….

typedefstructbatline{

BARTLINE_TPYEtype;//小节线的类型

BOOLdecoration;//有无装饰符号

intdecorationtype[2];//小节线装饰符号类型,如延长音,换气符号等。

}BATLINE;

enumbarline{barline,dbline,sline}BARLINE_TYPE;//小节线类型,小节线,复纵线,终止线

 

typedefstructlegato{

BOOLtype;//连接线的类型,ture完全在一个小节内

intstart[4],end[4];//连接线起点和重点位置,位置定义同重复符号

}LEGATO

typedefstructconnectyin{

BOOLtype;//连音符的类型,几连音

intstart[4];//连接音起点位置,

}CONNECT

 

Typedefstructtrailbridge{

intstart[4],end[4],;//尾桥起点位置

}TRAILBRIDGE

………………………..特征音符数据结构………………………..

…………………………..基类符号数据结构………………………..

typedefstructnotation{

intlocation;

structnotation*flink;

structnotation*blink;

}

…………………………..单个音符数据结构………………………..

typedefstructnote{

BOOLe_stem;//标示音符有无符干

BOOLstemup;//标志符干的方向

BOOLhook;//标志有无符尾

intnflag;//记录符尾的数目

HEAD*head;

BOOLdot;

}Note

…………………………..符头数据结构………………………..

typedefstructhead{

HEAD_TYPEh_type;//记录符头形状(空心或实心)

intlocation;//记录符头谱线位置

ACCID_TYPEaccidental;记录变音记号类型;升音、降音和还原记号

inta_location;记录变音记号谱线位置

}Head;

enumhead_type{hollowness,solid};

…………………………..单个音符数据结构………………………..

typedefstructnote{

floatduration;

structnote*flink;

structnote*blink;

intnaugdots;//记录附点数

inttype;//记录特征音符和休止符的类型(如0表示全音符)

intlocation;//记录符头谱线位置

BOOLstemup;//标志符干的方向

ACCID_TYPEtype;//记录变音记号类型;升音、降音和还原记号

intnflags;//记录符尾个数

intvarlocation;//记录变音记号谱线位置

BOOLornament;//有无装饰音

Intornamenttype;//装饰音的类型

BOOLellipsis;//有无省略符号

Intellipsis;//省略符号的类型

BOOLcommon;//有无常用记号

Intcommon;//常用记号类型

BOOLyiyin;//有无倚音;

YIYINnote;//倚音信息;

}Note;

…………………………..和弦数据结构………………………..

typedefstructchord{

intnnotes;//记录和弦中音符个数

structnoteCnote[nnotes];//构成和弦的音符

intlocation[nnotes];//记录各音符符头在五线谱中的位置

intnaugdots;//记录附点数

inttype;//记录特征音符和休止符的类型(如0表示全音符)

intlocation;//记录符头谱线位置

BOOLstemup;//标志符干的方向

ACCID_TYPEtype;//记录变音记号类型;升音、降音和还原记号

intnflags;//记录符尾个数

intvarlocation;//记录变音记号谱线位置

BOOLornament;//有无装饰音

Intornamenttype;//装饰音的类型

BOOLellipsis;//有无省略符号

Intellipsis;//省略符号的类型

BOOLcommon;//有无常用记号

Intcommon;//常用记号类型

BOOLyiyin;//有无倚音;

YIYINnote;//倚音信息;

}CHORD;

 

…………………………..休止符数据结构………………………..

typedefstructrest{

intlocation;

rest_typertype;

BOOLedot;

floatduration;(1,1/2,1/4)

structnote*link;

}Rest

enumrest_type{}

…………………………..附点数据结构………………………..

typedefstructdot{

intlocation;

Dot_typedot;//记录附点类型(单附点,复符点)

}Dot

enumdot_type{singledot,doubledot};

…………………………..

typedefstructstrongweak{

inttype;//由强变弱,还是弱变强

intstart[2],end[2];//起点、终点位置,位置定义由小节,音符决定

intlength;//长度(几个音符)

}STRONGWEAK

Typedefstructpause{

intlocation;

}

typedefstructyiyin{

inttype;//倚音的类型,

intnotetype[2];//倚音中的音符类型

intlocation[2];//倚音音符号位置(在第几线上)

}YIYIN

-----------------------------------

typedefstructmordent{

inttype;//波音的类型

intnotetype[2];//波音中的音符类型

intlocation[2];//波音音符的位置

}Mordent

 

typedefstructtrill{

inttype;//颤音的类型

intnotetype[2];//颤音中的音符类型

intlocation[2];//颤音音符的位置

}Trill

typedefstructinvertedturn{

inttype;//回音的类型

intnotetype[2];//回音中的音符类型

intlocation[2];//回音音符的位置

}Turn

typedefstructoctave{

inttype;//八度记号的类型

intnotetype[2];//八度记号的音符类型

intlocation[2];//八度记号音符的位置

}Octave

typedefstructtrembolo{

inttype;//震音记号的类型

intnotetype[2];//震音记号的音符类型

intlocation[2];//震音记号音符的位置

}Trembolo//(震音记号的斜线数目和尾符相同)

typedefstructrptnotation{

inttype;//反复记号的类型

intnotetype[2];//反复记号的音符类型

intlocation[2];//反复记号音符的位置

}

Enumrepeat{

typedefstructstaccato{

inttype;//断音记号的类型

intnotetype[2];//断音记号的音符类型

intlocation[2];//断音记号音符的位置

}

typedefstructsostenuto{

intlocation;//保持音记号

}

typedefstructarpeggio{//琶音记号只用在和弦中

inttype;//琶音记号

intnotetype[2];

intlocation;

}

typedefstructglissando{

inttype;

intlocation;//滑音记号

}

typedefstructbreath{

intlocation;//呼吸记号

}

typedefstructaccent{

intlocation;//重音记号

}

typedefstructtie{

BOOLinterbar;//延音线是否在一个小节内

intstart[4],end[4];

}

(前奏prelude,间奏interlude,后奏coda)

Typedefstructinterval{

Interval_typetype;

}//音程

 

 

以悲怆交响乐第一乐章的五线谱为例,其五线谱数据结构可以表示为:

SYSTEMa;a.linedistance=20;//表示该歌曲五线谱谱线间隔为20个象素

a.stavecontype=1;//表示该歌曲五线谱两个声部之间由花括号相连

a.number=5;//表示该歌曲由五个五线谱构成

a.staves=b[0];//b[0]为其中一个五线谱,该歌曲中一共有五个,因为是描述第一五线谱,//所以取b[0],如果描述第2个,则取b[1]

STAVE*b[4];//五个五线谱

b[0].number=2;//表示第1个五线谱包含2个声部

b[0].voiceparts=&c[0];//c[0]为乐谱中的第一个声部,该歌曲中一共有10个,因为是描述第一个声部,//所以取c[0],如果描述第2个,则取c[1]

VOICEPART*c[10];//五个五线谱

c[0].number=4;//表示第1个声部包含4个小节

c[0].voiceparts=&d[0];//d[0]为乐谱中的一个小节,该歌曲中一共有40个,因为是描述//第一个小节,//所以取d[0],

MEASURE*d[40];//40个小节

d[0].pedigrees=&e1[0];//表示第1个谱号

d[0].signatures=&e2[0];//表示第1个调号

d[0].bats=&e3[0];//表示第1个拍号

d[0].chords=&e4[0];//表示第1个音符

d[0].barlines=&e5[0];//表示第1个小节线

d[0].connects=&f1[0];//表示有1个连接线,f1[0]表示

PEDIGREE*e1[40];//一共有40个谱号

SIGATURE*e2[40];//一共有40个谱号

BATS*e3[40];//一共有40个谱号

CHORDS*e4[40];//一共有40个谱号

BARLINES*e5[40];//一共有40个谱号

e1[0].type=1;//表示高音谱号

e1[0].location=3;//表示起点位置在第二线

调号,拍号,小节线的描述方法都相类型,只需对照数据结构即可很轻易的描述出来,在这里不再描述,下面把第一个乐谱符号表达如下:

e4[0].Naugdots=0;//表示没有附点数

e4[0].length=50;//表示符干的长度为50

e4[0].type=6;//表示4分休止符

e4[0].location=3;//位置在第二线上

e4[0].type=0;//表示无变音记号

e4[0].nflags=0;//表示无符尾

e4[0].varlocation=0;//表示无位置信息

e4[0].bflags;=0;//表示无尾桥

e4[0].decoration=false;//表示无装饰符号

CONNECT*f[10];

f1[0].type=false;//不在一个小节内

f1[0].start=false;//不在一个小节内

f1[0].end=false;//不在一个小节内

 

谱号的类型:

G谱,F谱,C一线谱C二线谱,C三线谱(中音谱表),C四线谱(次中音谱),C五线谱,

连谱号中的由括号(分为直括号和花括号两种)和起线(连接数行五线谱的垂直线)组成。

小节线类型:

单一垂直线,复纵线,终止线

音符类型:

全音符…..1/32音符,全休止符(四线下)二分休止符(三线上)…..1/32休止符,其他长休止符(表示整小节休止)(连续休止数小节时可在长休止符上方加小节号表示)

附点:

个数

连接线:

上括号或下括号,根据符头的位置来确定类型

延长记号:

放在休止符、音符的上方或下方,

连音符:

包括单纯音符构成的连音符和附点音符构成的连音符,常见的单纯音连音符有三连音,五连音,七连音,九连音,十连音(还有十一……十五)等,常见的附点音符构成的连音符有二连音和四连音(即将附点音符(即带附点的音符)分成两部分,四部分,代替三部分)。

变音符号:

升高,降低,重升,重降,还原

拍号:

分为分子和分母两部分

装饰音:

倚音(前倚音(记录在主要音的前面)和后倚音(记录在主要音的后面))、长倚音(符干向上,与主要音相隔2度,总在主要音的前面);波音(记录在音符上方,顺波,复顺波,逆波,复逆波);颤音(

音符的上方,显示的时候,只有颤音一种装饰音,使用第二种表示方法,否则使用第一种表示方法);回音(

顺回音或逆回音,记录在音符的上方或两个音符之间)

省略记号:

移动八度记号(高八度和低八度)(标记在声部信息内),重复八度(标记在音符的上方或者下方,标记作为音符装饰音的一种类型)

震音记号:

(用斜线表示,数目与符尾数目相同)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 思想汇报心得体会

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1