改进的电子乐谱数据结构一Word格式.docx
- 文档编号:21709400
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:15
- 大小:510.38KB
改进的电子乐谱数据结构一Word格式.docx
《改进的电子乐谱数据结构一Word格式.docx》由会员分享,可在线阅读,更多相关《改进的电子乐谱数据结构一Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
typedefstructmeasure{
inttotalnumber;
//音符的总数
//组合音符看成一个音符时的音符总数,为确定连接线位置做基准
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)
//调号线位置
}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{
//连音符的类型,几连音
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;
//记录符头形状(空心或实心)
//记录符头谱线位置
ACCID_TYPEaccidental;
记录变音记号类型;
升音、降音和还原记号
inta_location;
记录变音记号谱线位置
}Head;
enumhead_type{hollowness,solid};
floatduration;
structnote*flink;
structnote*blink;
intnaugdots;
//记录附点数
//记录特征音符和休止符的类型(如0表示全音符)
//记录符头谱线位置
ACCID_TYPEtype;
//记录变音记号类型;
intnflags;
//记录符尾个数
intvarlocation;
//记录变音记号谱线位置
BOOLornament;
//有无装饰音
Intornamenttype;
//装饰音的类型
BOOLellipsis;
//有无省略符号
Intellipsis;
//省略符号的类型
BOOLcommon;
//有无常用记号
Intcommon;
//常用记号类型
BOOLyiyin;
//有无倚音;
YIYINnote;
//倚音信息;
}Note;
…………………………..和弦数据结构………………………..
typedefstructchord{
intnnotes;
//记录和弦中音符个数
structnoteCnote[nnotes];
//构成和弦的音符
intlocation[nnotes];
//记录各音符符头在五线谱中的位置
}CHORD;
…………………………..休止符数据结构………………………..
typedefstructrest{
rest_typertype;
BOOLedot;
(1,1/2,1/4)
structnote*link;
}Rest
enumrest_type{}
…………………………..附点数据结构………………………..
typedefstructdot{
Dot_typedot;
//记录附点类型(单附点,复符点)
}Dot
enumdot_type{singledot,doubledot};
…………………………..
typedefstructstrongweak{
inttype;
//由强变弱,还是弱变强
intstart[2],end[2];
//起点、终点位置,位置定义由小节,音符决定
intlength;
//长度(几个音符)
}STRONGWEAK
Typedefstructpause{
typedefstructyiyin{
//倚音的类型,
intnotetype[2];
//倚音中的音符类型
intlocation[2];
//倚音音符号位置(在第几线上)
}YIYIN
-----------------------------------
typedefstructmordent{
//波音的类型
//波音中的音符类型
//波音音符的位置
}Mordent
typedefstructtrill{
//颤音的类型
//颤音中的音符类型
//颤音音符的位置
}Trill
typedefstructinvertedturn{
//回音的类型
//回音中的音符类型
//回音音符的位置
}Turn
typedefstructoctave{
//八度记号的类型
//八度记号的音符类型
//八度记号音符的位置
}Octave
typedefstructtrembolo{
//震音记号的类型
//震音记号的音符类型
//震音记号音符的位置
}Trembolo//(震音记号的斜线数目和尾符相同)
typedefstructrptnotation{
//反复记号的类型
//反复记号的音符类型
//反复记号音符的位置
Enumrepeat{
typedefstructstaccato{
//断音记号的类型
//断音记号的音符类型
//断音记号音符的位置
typedefstructsostenuto{
//保持音记号
typedefstructarpeggio{//琶音记号只用在和弦中
//琶音记号
typedefstructglissando{
//滑音记号
typedefstructbreath{
//呼吸记号
typedefstructaccent{
//重音记号
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];
BATS*e3[40];
CHORDS*e4[40];
BARLINES*e5[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度,总在主要音的前面);
波音(记录在音符上方,顺波,复顺波,逆波,复逆波);
颤音(
音符的上方,显示的时候,只有颤音一种装饰音,使用第二种表示方法,否则使用第一种表示方法);
回音(
顺回音或逆回音,记录在音符的上方或两个音符之间)
省略记号:
移动八度记号(高八度和低八度)(标记在声部信息内),重复八度(标记在音符的上方或者下方,标记作为音符装饰音的一种类型)
震音记号:
(用斜线表示,数目与符尾数目相同)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 改进 电子 乐谱 数据结构