1、music项目资料Music项目资料1、Music项目的目标该项目由音乐乐谱编辑、音乐乐谱显示和打印、以及音乐播放三个部分组成:音乐编辑:类似一般的文本编辑程序,开发一个平台帮助用户方便产生一个跨平台格式乐谱文件(用XML表示,类似MusicXML文件);音乐乐谱显示和打印:产生一个显示乐谱(简谱或五线谱)的文件,可以供用户打印出或显示出乐谱;音乐播放:利用跨平台格式的乐谱文件产生声卡可用的数据文件(比如.wav文件或其他可直接用声卡播放的文件)。每人可以根据自身的状况,按照以下步骤开发这个项目:起始步:基本c语言知识可以做音乐播放的简单部分,例如产生按音阶顺序逐个播放所有单音的文件,根据不同
2、的乐曲速度产生不同的播放文件,windows下面的播放文件就是.wav文件,下面介绍产生这样文件的基础知识。以后可以产生一个熟悉的歌曲文件,播放歌曲。加强步:该项目可以从容易到难逐步扩展,例如开发音乐编辑程序,然后用音乐编辑的乐谱文件直接转换成音乐播放文件,播放文件就可以按乐谱播放音乐。音乐编辑程序可以修改乐谱文件,根据不同人的要求产生不同的乐谱文件,观察播放效果:例如同样的歌曲,有的人能唱高音部分、有人能唱低音部分、还有人能唱中音部分,对于歌曲的速度,同样的歌曲有人适合唱快调子,有人适合唱中速调子,还有人喜欢唱慢调子。升华步:进一步提升开发水平可以开发图形界面,根据乐谱文件产生音乐乐谱的显示
3、或将其转化为其他可以打印的文件,这样可以打印出五线谱或简谱,以便用户可以在乐器上弹唱。2、基本声音信息音乐的每个音都是单个或多个基准频率正弦波信号合成的周期信号,电子琴的每个音可以看成单个正弦波构成的,可以用函数s(t)=Asin(2ft)来表示,其中,1、 A表示音强,即波形震动的幅度,例如乐谱中一个音乐小节中的节拍有强弱之分,强的幅度值大、弱的幅度值小;2、 f用于区分不同的音,称为音高,即通常叫频率,即相同波形重复的次数,重复周期为周期T= 1/f,即s(t+T)=s(t),例如标准调音音高440赫兹,即f=440,也就是每秒钟波形重复440次;3、 音乐播放时,每个音根据乐谱的要求持续
4、的时间t是不同的,也就是说周期信号持续的时间有限,这个涉及速度、节拍等概念,是音乐旋律的基础。例如,速度为每秒60拍,则一个四分音符的时长(固定频率信号持续时间)为1秒,而速度为每秒120拍,则一个四分音符的时长为0.5秒。其他音符参照四分音符给出不同的时长。3、音乐基本信息介绍音乐知识参见:1、 音符音名(音符的名字):两个音符之间若频率相差整数倍,则听起来非常相似。因此,我们将这些音放在同一个音高集合(pitch class)中。两个音符间若相差一倍的频率,则我们称两者之间相差一个八度。要完整描述一个音符,则必须同时说出它的类别以及它在哪个八度之中。在传统音乐理论中,我们使用前七个拉丁字母
5、:A、B、C、D、E、F、G(按此顺序则音高循序而上)以及一些变化来标示不同的音符。这些字母名字不断的重复,在G上面又是A(比起前一个A高八度)。为了标示同名(在同一个音高集合中)但不同高度的音符,科学音调记号法(scientific pitch notation)利用字母及一个用来表示所在八度的阿拉伯数字,明确指出音符的位置。比如说,现在的标准调音音高440赫兹名为A4,往上高八度则为A5,继续向上可无限延伸;至于A4往下,则为A3、A2。传统上,八度的数字标注由C音符开始,结束于B。举例而言,C4上方的D为D4,而C4下方的B则为B3(也就是说,两者在不同的八度内)。另外一种的标示法称为绝
6、对音名,这种标示方法是以C-B为一组(C、D、E、F、G、A、B),现在的标准调音音高为a1,中央C则是c1,而往下一个八度为c,再往下一个八度则为大写的C,继续往下则是C1、C2.等。而从中央C继续往上八度则是c2、c3、c4等。音高(音符的频率):基本上,音乐乃是各种频率的音符组成的,对于这些频率,并没有特别的限制(只要在人耳的感受频率范围内)。由于在物理上,声音的成因乃是力学系统中的震动所造成的,因此我们通常用赫兹(Hz)来测量频率大小,每秒震动一次即为一赫兹。但在西方音乐中,由于历史因素,通常在一个八度中(也就是在某一频率至该频率的两倍之间)我们只使用十二个特定频率的音符。这些固定频率
7、之间彼此有数学关系,而最基本的音符则为A4。目前该音符的标准音高为440赫兹,不过在实际使用上可能会略有差异。按照惯例,音名包含了一个字母、变音记号以及一个用来代表在第几八度的数字。所有的音符都可以用中央A(A4)的整数倍来代表。我们可以把这个距离记为n。若一个音符高于A4,则n为正;反之则为负。因此,音符的频率(记为f,以赫兹表示)可记为:f= 2n/12 440 赫兹如音符C5,最接近A4且高于A4的C音,其距离A4有三个半音的距离(A4 A4 B4 C5)且高于A4,所以C5的n值为+3。由此可知音符的频率为:f= 23/12 440 Hz 523.2511 赫兹另外,若所求的音低于A4
8、,则n为负。如F4音,其低于A4且相差四个半音(A4 A4 G4 G4 F4),因此n值为-4。因此得到此音的频率:f= 24/12 440 Hz 349.2290 赫兹依照此公式,我们可以看出相差一个或多个八度的两音,其频率自然差距整数倍。因为n这时一定是12的倍数(12k, 这里k为相差的八度总数),这个公式可以简化成:f= 212k/12 440 Hz = 2k 440 赫兹差距2的次方。实际上,正是这个关系加上均分律的假设让我们导出这个公式。在均分律关系下的半音差为100分。因此1200分便是一个八度:相差1200分的两音频率比为2:1。这代表1分恰等于2的1200根号,约等于1.00
9、05777895。使用MIDI标准时,频率的对应则为:对于A440均分律的音符们,这个公式可以把这些音符对应到MIDI音符号码。至于那些介于两个整数之间的频率则利用小数代表。这点让MIDI乐器可以将音准调整到任何细微的尺度,甚至包含适应非西方的音准系统。变音记号:有时我们也会在音名旁加上变音记号,如升号和降号。这些符号代表将原音升高或降低半音,在十二平均律(现在最广泛使用的调音法)中则是将原频率乘或除以1.0594.(21/12)倍,即升高n个半音就将原频率乘2n/12倍,降低n个半音则乘2-n/12倍 。升音符号为,降音符号则为。它们通常写在音名之后,如F表示升F,而B表示降B。其它的变音符
10、号如重升或重降(将原音升高或降低一个全音,即两个半音),在传统乐理中也会用到。在等音音程(enharmonicity)的情况下,我们可以利用变音记号把同一个音高记成不同的音符。举例而言,把B升半音成为B,其实就与C同音。不过,在删去这些异名同音的情况后,完整的半音阶在原来的七个音上添加了五个音高集合,且任两个相邻的音高集合都相差半音。属于一自然音阶(diatonic scale)中的音符有时称为自然音(diatonic notes);至于其他不符合这个条件的音符有时则称为半音(chromatic notes)。在音乐记谱法中,要表示从原来七个音名经过升降改变音高的其他音,通常是在原音的后面紧接
11、上一个变音符号,或是使用调号(key signature)。还原符号通常安插在一个音符前面,用来取消原本指定的升降。音符时值:音符时值并不是表示一个音符的绝对时间长度,而是用来使人了解它与其他音符之间的相对时间长度。在下表中每个音符的持续时间,都是下一个音符的两倍长度。音符中文名称休止符中文名称时值(四分音符1拍)长音符长休止符16短音符/二全音二全休止符8全音符全休止符4二分音符二分休止符2四分音符四分休止符1八分音符八分休止符1/2十六分音符十六分休止符1/4三十二分音符三十二分休止符1/8六十四分音符六十四分休止符1/16一百二十八分音符一百二十八分休止符1/32乐谱的记谱:可以用简谱或
12、五线谱描述音乐章节2、 节拍节拍是指强拍和弱拍的组合规律。有很多有强有弱的音,在长度相同的时间内,按照一定的次序反复出现,形成有规律的强弱变化,例如:每隔一个弱拍,出现一个强拍时,这是一种节拍,而每当有两个弱拍或有三个弱拍再出现一个强拍时,这些又是另外的一些节拍,它运用了小节线和拍子号标记出来,看起来很具体。在有强有弱,一定长度相同的时间内按着一定的长短次序,由小节线划分,反复的有规律的重复,形成了有规律的强弱变化,这就是节拍的作用。 “强”与“弱”看似简单,但是人们可以根据这些简单的“强”与“弱”变化出很多种拍子来,从而形成各种情绪,各种不同风格的乐曲来。因此“节拍”是非常重要的,它等于是音
13、乐大厦的基石,必须是有规律并且是有秩序的。 音乐的拍子,是根据乐曲的要求而定的,比如当乐曲寻求规定的速度是每分钟60拍,那么每拍占的时间是每分钟的60分之一,也就是一秒,(半拍为二分之一秒),如果规定的速度为每分钟120拍的时候,那么每一拍占的时间是半秒钟(半拍是1/4秒),现在是半秒钟打一拍,前面是一秒钟打一拍,显然后者要比前者快,(后面讲速度一节中我们还会讲到),以此类推。这也就是拍子的时值,当拍子的时值定下来之后,比如四分音符为一拍时,八分音符就相当于半拍,全音符相当于4拍,二分音符相当于二拍。而十六分音符则是1/4拍,换句话说,也就是一拍里有一个四分音符,有两个八分音符,有4个16分音
14、符。再比如以八分音符为一拍,四分音符就是两拍,二分音符是四拍,全音符是八拍,而十六分音符即半拍,这样,当拍子的时值确定后,各种时值的音符就与拍子连在一起。 如2/4拍。是以四分音符为一拍,每小节有2拍。叫做2/4拍,一小节里有两拍,第一拍是强拍,第二拍是弱拍。在一个小节里,只有一个强拍,一个弱拍出现,然后每小节不断重复出现。这种2/4的节奏很适合队列行进的时候使用,所以大部分进行曲都采用这种2/4拍的形式。 3/4拍,是以四分音符为一拍,一小节有3拍,叫做3/4拍。也就是一小节有一个强拍和两个弱拍出现,每小节重复出现,第一拍是强拍,第二三拍是弱拍,这就是3/4拍。这种节奏很适合旋转,因此常常用
15、在圆舞曲里(华尔兹)。象大家熟悉的圆舞曲之王 约翰斯特劳斯,他的作品有大部分是三拍子的。 3、 速度(每个音符可能固定绝对时长,或中间根据需要临时改变时长)一首乐曲的速度实在乐曲的开始标记的,通常表示节拍/每分钟beats per minute(BPM)。这意味着,它规定了一拍的特定的音值(例如四分音符对应x/4、八分音符对应x/8或其他),且标记指示这些节拍一定数目必须在每分钟演奏的。速度越大,一分钟内必须演奏的的节拍数越大,因而乐曲必须演奏得越快。基本的速度标记: Largo 缓慢地 (4060 BPM) Largheeto 稍缓地 (6066 BPM) Adagio 款款柔情地 (667
16、6 BPM) Andante 行板地 (76108 BPM) Moderato 中板地 (108120 BPM) Allegro快板地 (120168 BPM) Presto 急板地 (168200 BPM) Prestissimo 狂板地 (200204 BPM) 音乐进行的速度分为两种,一种是基本速度,还有一种是临时变化速度,基本速度就是前面讲的,乐曲固定要求的速度,或者是比较大段使用的速度。还有那种临时变化速度,是根据乐曲需要临时标记的,比如:渐快、突慢、还原等等。 音乐的速度很重要,因为同一首曲子处理的速度不同,曲子的性质会是完全两样的,收到的艺术效果完全不同。 4、 力度引用一个音符
17、/乐曲/声音的音量。除了节拍中音有强拍、弱拍以及次强拍等之分,在过程中也有,强弱变化的过渡,如:Fortissimo (ff) 很强 Forte (f) 强 Mezzo Forte (mf) 中强 Piano (p) 弱 Mezzo Piano (mp) 中弱 Pianissimo (pp) 很弱 Sforzando (sf) 突强 Fortepiano (fp) 强后突弱 Pianoforte (pf) 先弱后强 Diminuendo (dim) 渐弱 Crescendo (cresc) 渐强 Ritardando (rit) 渐慢;突慢 Calando 渐弱;渐安静 smorzando 渐
18、弱并渐慢、逐渐消失(常用于结尾处) Con forza 有力的 Con tutta forza 用全部力量、尽可能响亮地 4、PCM文件格式简介 最简单来说,音乐中的每个音符可以用函数s(t)=Asin(2ft)来表示一个模拟波形,而计算机中是数字化,也就是说要将这个模拟波形按照下面的PCM要求获得数字化的格式,以便计算机声卡播放出声音出来。PCM文件:模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。Windows的Convert工具可以把PCM音频格式的文件转换成Microsoft的WAV格式的文件。 将音频数字化,其实就是将声音数字化。最常见
19、的方式是透过脉冲编码调制PCM(Pulse Code Modulation) 。运作原理如下。首先我们考虑声音经过麦克风,转换成一连串电压变化的信号,如图一所示。这张图的横座标为秒,纵座标为电压大小。要将这样的信号转为 PCM 格式的方法,是使用三个参数来表示声音,它们是:声道数、采样位数和采样频率。 采样频率:即取样频率,指每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多。由于人耳的分辨率很有限,太高的频率并不能分辨出来。在16位声卡中有22KHz、44KHz等几级,其中,22KHz相当于普通FM广播的音质,44KHz已相当于CD音质了
20、,目前的常用采样频率都不超过48KHz。 采样位数:即采样值或取样值(就是将采样样本幅度量化)。它是用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。 声道数:很好理解,有单声道和立体声之分,单声道的声音只能使用一个喇叭发声(有的也处理成两个喇叭输出同一个声道的声音),立体声的pcm可以使两个喇叭都发声(一般左右声道有分工) ,更能感受到空间效果。 下面再用图解来看看采样位数和采样频率的概念。让我们来看看这几幅图。图中的黑色曲线表示的是pcm文件录制的自然界的声波,红色曲线表示的是pcm文件输出的声波,横坐标便是采样频率;纵坐标便是采样
21、位数。这几幅图中的格子从左到右,逐渐加密,先是加大横坐标的密度,然后加大纵坐标的密度。显然,当横坐标的单位越小即两个采样时刻的间隔越小,则越有利于保持原始声音的真实情况,换句话说,采样的频率越大则音质越有保证;同理,当纵坐标的单位越小则越有利于音质的提高,即采样的位数越大越好。 在计算机中采样位数一般有8位和16位之分,但有一点请大家注意,8位不是说把纵坐标分成8份,而是分成2的8次方即256份; 同理16位是把纵坐标分成2的16次方65536份; 而采样频率一般有11025HZ(11KHz),22050HZ(22KHz)、44100Hz(44KHz)三种。 样点 t1 t2 t3 t4 t5
22、 t6 t7 . t16 t17 t18 t19 t20 幅值 0011 0101 0111 1001 1011 1101 1110 . 0110 0110 0101 0011 0000 那么,现在我们就可以得到pcm文件所占容量的公式:存储量=(采样频率*采样位数*声道)*时间/8(单位:字节数)例如,数字激光唱盘(CDDA,红皮书标准)的标准采样频率为44.lkHz,采样数位为16位,立体声(2声道),可以几乎无失真地播出频率高达22kHz的声音,这也是人类所能听到的最高频率声音。激光唱盘一分钟音乐需要的存储量为:(44.1*1000*l6*2)*60/8=10,584,000(字节)=1
23、0.584MBytes这个数值就是pcm声音文件在硬盘中所占磁盘空间的存储量。计算机音频文件的格式决定了其声音的品质,日常生活中电话、收音机等均为模拟音频信号,即不存在采样频率和采样位数的概念,我们可以这样比较一下: 44KHz,16BIT的声音称作:CD音质; 22KHz、16Bit的声音效果近似于立体声(FM Stereo)广播,称作:广播音质; 11kHz、8Bit的声音,称作:电话音质。 微软的WAV文件就是pcm编码的一种5、WAV文件结构 WAVE是录音时用的标准的WINDOWS文件格式,文件的扩展名为“WAV”,数据本身的格式为PCM或压缩型。 WAV文件格式是一种由微软和IBM
24、联合开发的用于音频数字存储的标准,它采用RIFF文件格式结构,非常接近于AIFF和IFF格式。符合RIFF Resource Interchange File Format规范。所有的WAV都有一个文件头,这个文件头音频流的编码参数。 WAV文件作为最经典的Windows多媒体音频格式,应用非常广泛,它使用三个参数来表示声音:采样位数、采样频率和声道数。 声道有单声道和立体声之分,采样频率一般有11025Hz(11kHz)、22050Hz(22kHz)和44100Hz(44kHz)三种。WAV文件所占容量=(采样频率采样位数声道)时间/8(1字节=8bit)。 WAV对音频流的编码没有硬性规定
25、,除了PCM之外,还有几乎所有支持ACM规范的编码都可以为WAV的音频流进行编码。多媒体应用中使用了多种数据, 包括位图、音频数据、视频数据以及外围设备控制信息等。RIFF为存储这些类型的数据提供了一种方法,RIFF文件所包含的数据类型由该文件的扩展名来标识,能以RIFF文件存储的数据包括:音频视频交错格式数据(.AVI) 、波形格式数据(.WAV) 、位图格式数据(.RDI) 、MIDI格式数据(.RMI) 、调色板格式(.PAL) 、多媒体电影(.RMN) 、动画光标(.ANI) 、其它RIFF文件(.BND)。 WAVE文件可以存储大量格式的数据,通常采用的音频编码方式是脉冲编码调制(P
26、CM)。由于WAV格式源自Windows/Intel环境,因而采用Little-Endian字节顺序进行存储。WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。WAVE文件由文件头和数据体两大部分组成。其中文件头又分为RIFFWAV文件 标识段和声音数据格式说明段两部分。WAVE文件各部分内容及格式见附表。常见的声音文件主要有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采
27、样 值)。采样率是指:声音信号在“模数”转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。 WAVE文件数据块包含以脉冲编码调制(PCM)格式表示的样本。WAVE文件是由样本组织而成的。在单声道WAVE文件中,声道0代表左声道,声道1代表右声道。在多声道WAVE文件中,样本是交替出现的。WAVE文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。首先存
28、储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0,这样8位和16位的PCM波形样本的数据格式。WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括:RIFF WAVE Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。具体见下图:.Wav 文件的四个组成部分:RIFF WAVE Chunk ID = RIFFRif
29、fType= WAVEFormat Chunk ID = fmt Fact Chunk (optional) ID = factData ChunkID =data 其中RIFF WAVE Chunk: 名称 长度 内容ID4 BytesRIFFSize4 BytesFileLen-8,整个文件大小-8Type4 BytesWAVEstruct RIFF_HEADER char szRiffID4; / R,I,F,F DWORD dwRiffSize;整个文件长度减8,即接下来整个文件后面部分的大小 char szRiffFormat4; / W,A,V,E;其中Format Chunk:名
30、称长度 内容ID 4 Bytesfmt Size4 Bytes18/16 (有无附加信息)本结构大小(除ID,Size)FormatTag2 Bytes通常0x0001(PCM)编码方式Channels2 Bytes1-单声道;2-双声道立体声声道数目SamplesPerSec4 Bytes11025,22050, 44100采样频率AvgBytesPerSec 4 Bytes波形音频数据传送速率,其值为通道数每秒数据位数每样本的数 据位数8。播放软件利用此值可以估计缓冲区的大小每秒所需字节数BlockAlign 2 Bytes数据块的调整数(按字节算的),其值为通道数每样本的数据位值8数据块对齐单位BitsPerSample 2 Bytes8或16每个采样需要的位bit数 附加信息2 Bytes(可选,通过Size来判断有无)附加信息结构定义如下:参见mmsystem.h文件定义typedef struct waveformat_tag WORD wFormatTag
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1